using JdeScoping.Ui.Tests.Helpers; using JdeScoping.Ui.Tests.Support; namespace JdeScoping.Ui.Tests; /// /// Playwright UI smoke tests for the Cache Refresh Status page. /// Validates that the page loads and shows the "Cache Refresh Status" heading or redirects to search. /// Requires a running Docker host (Category: RequiresDockerHost). /// public sealed class RefreshStatusPageTests(PlaywrightFixture fixture) : UiTestBase(fixture) { /// /// Verifies the Refresh Status page loads at /refresh-status and displays the expected heading. /// /// /// Steps: /// 1. Navigate to the Refresh Status page. /// 2. Assert the URL ends with /refresh-status or /search (redirect). /// 3. If on the refresh page, assert "Cache Refresh Status" heading is visible. /// 4. If redirected, assert "Search Details" is visible. /// [Fact] [Trait("Category", "RequiresDockerHost")] public async Task RefreshStatus_Loads() { await RunAsync(async page => { await UiNavigationHelper.NavigateToRefreshStatusAsync(page); string url = page.Url; bool onRefreshStatus = url.EndsWith("/refresh-status", StringComparison.OrdinalIgnoreCase); bool redirectedToSearch = url.EndsWith("/search", StringComparison.OrdinalIgnoreCase); Assert.True(onRefreshStatus || redirectedToSearch, $"Unexpected URL: {url}"); if (onRefreshStatus) await Assertions.Expect(page.GetByText("Cache Refresh Status")) .ToBeVisibleAsync(new LocatorAssertionsToBeVisibleOptions { Timeout = 15_000 }); else await Assertions.Expect(page.GetByText("Search Details")) .ToBeVisibleAsync(new LocatorAssertionsToBeVisibleOptions { Timeout = 15_000 }); }); } }