From 2a9f79261a0fe261c0d1865718f463b63819d727 Mon Sep 17 00:00:00 2001 From: StuartFerguson Date: Thu, 15 Oct 2026 20:16:01 +0100 Subject: [PATCH 1/5] nuget updates --- Directory.Packages.props | 48 ++++++++++--------- ...gementUI.BlazorFastIntegrationTests.csproj | 1 + ...tateManagementUI.BlazorServer.Tests.csproj | 1 + 3 files changed, 27 insertions(+), 23 deletions(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index 2307d262..c8b11b19 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -3,45 +3,47 @@ true + - - - + + + - - + + - - - - - - - + + + + + + + - - - + + + - - - - - - - + + + + + + + + - + \ No newline at end of file diff --git a/EstateManagementUI.BlazorFastIntegrationTests/EstateManagementUI.BlazorFastIntegrationTests.csproj b/EstateManagementUI.BlazorFastIntegrationTests/EstateManagementUI.BlazorFastIntegrationTests.csproj index bdda16e0..956bbee9 100644 --- a/EstateManagementUI.BlazorFastIntegrationTests/EstateManagementUI.BlazorFastIntegrationTests.csproj +++ b/EstateManagementUI.BlazorFastIntegrationTests/EstateManagementUI.BlazorFastIntegrationTests.csproj @@ -22,6 +22,7 @@ + diff --git a/EstateManagementUI.BlazorServer.Tests/EstateManagementUI.BlazorServer.Tests.csproj b/EstateManagementUI.BlazorServer.Tests/EstateManagementUI.BlazorServer.Tests.csproj index b6cda5d7..f3084d9d 100644 --- a/EstateManagementUI.BlazorServer.Tests/EstateManagementUI.BlazorServer.Tests.csproj +++ b/EstateManagementUI.BlazorServer.Tests/EstateManagementUI.BlazorServer.Tests.csproj @@ -14,6 +14,7 @@ + From 735d36cacd841cb96f6aa159746485e517793f4d Mon Sep 17 00:00:00 2001 From: StuartFerguson Date: Thu, 15 Oct 2026 21:12:56 +0100 Subject: [PATCH 2/5] Fix bUnit AngleSharp dependency --- Directory.Packages.props | 3 +-- .../EstateManagementUI.BlazorServer.Tests.csproj | 1 - 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index c8b11b19..e3ac90fe 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -3,7 +3,6 @@ true - @@ -46,4 +45,4 @@ - \ No newline at end of file + diff --git a/EstateManagementUI.BlazorServer.Tests/EstateManagementUI.BlazorServer.Tests.csproj b/EstateManagementUI.BlazorServer.Tests/EstateManagementUI.BlazorServer.Tests.csproj index f3084d9d..b6cda5d7 100644 --- a/EstateManagementUI.BlazorServer.Tests/EstateManagementUI.BlazorServer.Tests.csproj +++ b/EstateManagementUI.BlazorServer.Tests/EstateManagementUI.BlazorServer.Tests.csproj @@ -14,7 +14,6 @@ - From 155a69725eabf6fe25cf004d15c4b8c8e047e954 Mon Sep 17 00:00:00 2001 From: StuartFerguson Date: Thu, 15 Oct 2026 22:04:55 +0100 Subject: [PATCH 3/5] Wait for Blazor interactivity before UI form input --- .../Common/DashboardPageHelper.cs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/EstateManagementUI.BlazorFastIntegrationTests/Common/DashboardPageHelper.cs b/EstateManagementUI.BlazorFastIntegrationTests/Common/DashboardPageHelper.cs index 0b135a47..3fd0cba2 100644 --- a/EstateManagementUI.BlazorFastIntegrationTests/Common/DashboardPageHelper.cs +++ b/EstateManagementUI.BlazorFastIntegrationTests/Common/DashboardPageHelper.cs @@ -962,6 +962,11 @@ await RunWithFailureArtifactsAsync(async () => } await _page.WaitForLoadStateAsync(LoadState.DOMContentLoaded); + await _page.WaitForFunctionAsync(@"() => { + const merchantNameInput = document.querySelector(""input[placeholder='Enter merchant name']""); + return merchantNameInput && Array.from(merchantNameInput.attributes) + .some(attribute => attribute.name.startsWith('_bl_')); + }"); await _page.Locator("input[placeholder='Enter merchant name']").FillAsync(merchant.MerchantName); await _page.Locator(SettlementScheduleSelector).SelectOptionAsync(merchant.SettlementSchedule); From 575956e0ae85413283dd5f2128993e6e9973d27a Mon Sep 17 00:00:00 2001 From: StuartFerguson Date: Fri, 16 Oct 2026 08:37:16 +0100 Subject: [PATCH 4/5] Wait for estate overview content in UI tests --- .../Common/DashboardPageHelper.cs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/EstateManagementUI.BlazorFastIntegrationTests/Common/DashboardPageHelper.cs b/EstateManagementUI.BlazorFastIntegrationTests/Common/DashboardPageHelper.cs index 3fd0cba2..ac1b2ba2 100644 --- a/EstateManagementUI.BlazorFastIntegrationTests/Common/DashboardPageHelper.cs +++ b/EstateManagementUI.BlazorFastIntegrationTests/Common/DashboardPageHelper.cs @@ -1747,9 +1747,14 @@ private async Task WaitForAnyVisibleAsync(params string[] selectors) private async Task WaitForEstateOverviewAsync() { - await _page.Locator(".animate-spin").WaitForAsync(new LocatorWaitForOptions + await _page.GetByRole(AriaRole.Heading, new() { Name = EstateManagementHeading }).WaitForAsync(new LocatorWaitForOptions { - State = WaitForSelectorState.Hidden, + State = WaitForSelectorState.Visible, + Timeout = 30000 + }); + await _page.GetByText("Total Merchants").WaitForAsync(new LocatorWaitForOptions + { + State = WaitForSelectorState.Visible, Timeout = 30000 }); } From 44aff80f3a0d5525c17fc6080857602246da97c0 Mon Sep 17 00:00:00 2001 From: StuartFerguson Date: Fri, 16 Oct 2026 09:00:32 +0100 Subject: [PATCH 5/5] Use dashboard readiness checks for dashboard tests --- .../Common/DashboardPageHelper.cs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/EstateManagementUI.BlazorFastIntegrationTests/Common/DashboardPageHelper.cs b/EstateManagementUI.BlazorFastIntegrationTests/Common/DashboardPageHelper.cs index ac1b2ba2..e7762c89 100644 --- a/EstateManagementUI.BlazorFastIntegrationTests/Common/DashboardPageHelper.cs +++ b/EstateManagementUI.BlazorFastIntegrationTests/Common/DashboardPageHelper.cs @@ -1761,7 +1761,16 @@ await _page.GetByText("Total Merchants").WaitForAsync(new LocatorWaitForOptions private async Task WaitForDashboardContentAsync() { - await WaitForEstateOverviewAsync(); + await _page.GetByRole(AriaRole.Heading, new() { Name = "Dashboard" }).WaitForAsync(new LocatorWaitForOptions + { + State = WaitForSelectorState.Visible, + Timeout = 30000 + }); + await _page.GetByText("Welcome to Estate Management System").WaitForAsync(new LocatorWaitForOptions + { + State = WaitForSelectorState.Visible, + Timeout = 30000 + }); await _page.WaitForLoadStateAsync(LoadState.NetworkIdle); }