Migrate Playwright suite to .NET UI tests and deprecate TS project
This commit is contained in:
@@ -0,0 +1,108 @@
|
||||
import { Page } from '@playwright/test';
|
||||
import { login } from './auth.helper';
|
||||
|
||||
/**
|
||||
* Wait for Blazor WASM application to be fully loaded
|
||||
* @param page - Playwright page object
|
||||
* @param timeout - Maximum time to wait in milliseconds (default: 120000)
|
||||
*/
|
||||
export async function waitForBlazorReady(page: Page, timeout: number = 120000): Promise<void> {
|
||||
// Wait for network to be idle (all WASM files loaded)
|
||||
await page.waitForLoadState('networkidle', { timeout: 60000 });
|
||||
|
||||
// Wait for Radzen components or main content to be visible
|
||||
await page.locator('.rz-dropdown').or(page.locator('text=Search Details')).or(page.locator('.rz-data-grid')).first().waitFor({
|
||||
state: 'visible',
|
||||
timeout: timeout
|
||||
});
|
||||
|
||||
// Additional wait for Radzen components to fully initialize
|
||||
await page.waitForTimeout(2000);
|
||||
}
|
||||
|
||||
/**
|
||||
* Navigate to the search page and wait for it to be ready
|
||||
* @param page - Playwright page object
|
||||
*/
|
||||
export async function navigateToSearchPage(page: Page): Promise<void> {
|
||||
await page.goto('/search');
|
||||
await page.waitForLoadState('networkidle', { timeout: 60000 });
|
||||
await login(page);
|
||||
await waitForBlazorReady(page);
|
||||
}
|
||||
|
||||
/**
|
||||
* Navigate to a specific search by ID
|
||||
* @param page - Playwright page object
|
||||
* @param searchId - The ID of the search to view
|
||||
*/
|
||||
export async function navigateToSearch(page: Page, searchId: number): Promise<void> {
|
||||
await page.goto(`/search/${searchId}`);
|
||||
await page.waitForLoadState('networkidle', { timeout: 60000 });
|
||||
await login(page);
|
||||
await waitForBlazorReady(page);
|
||||
}
|
||||
|
||||
/**
|
||||
* Navigate to the searches dashboard (home page)
|
||||
* @param page - Playwright page object
|
||||
*/
|
||||
export async function navigateToSearchesDashboard(page: Page): Promise<void> {
|
||||
await page.goto('/searches');
|
||||
await page.waitForLoadState('networkidle', { timeout: 60000 });
|
||||
await login(page);
|
||||
await waitForBlazorReady(page);
|
||||
}
|
||||
|
||||
/**
|
||||
* Navigate to the search queue page
|
||||
* @param page - Playwright page object
|
||||
*/
|
||||
export async function navigateToSearchQueue(page: Page): Promise<void> {
|
||||
await page.goto('/search/queue');
|
||||
await page.waitForLoadState('networkidle', { timeout: 60000 });
|
||||
await login(page);
|
||||
await waitForBlazorReady(page);
|
||||
}
|
||||
|
||||
/**
|
||||
* Navigate to the refresh status page
|
||||
* @param page - Playwright page object
|
||||
*/
|
||||
export async function navigateToRefreshStatus(page: Page): Promise<void> {
|
||||
await page.goto('/refresh-status');
|
||||
await page.waitForLoadState('networkidle', { timeout: 60000 });
|
||||
await login(page);
|
||||
await waitForBlazorReady(page);
|
||||
}
|
||||
|
||||
/**
|
||||
* Navigate to the data sync requests page
|
||||
* @param page - Playwright page object
|
||||
*/
|
||||
export async function navigateToDataSync(page: Page): Promise<void> {
|
||||
await page.goto('/data-sync/requests');
|
||||
await page.waitForLoadState('networkidle', { timeout: 60000 });
|
||||
await login(page);
|
||||
await waitForBlazorReady(page);
|
||||
}
|
||||
|
||||
/**
|
||||
* Navigate to the login page
|
||||
* @param page - Playwright page object
|
||||
*/
|
||||
export async function navigateToLoginPage(page: Page): Promise<void> {
|
||||
await page.goto('/login');
|
||||
await page.waitForLoadState('networkidle', { timeout: 60000 });
|
||||
}
|
||||
|
||||
/**
|
||||
* Click a navigation link in the header
|
||||
* @param page - Playwright page object
|
||||
* @param linkText - The text of the navigation link to click
|
||||
*/
|
||||
export async function clickNavLink(page: Page, linkText: string): Promise<void> {
|
||||
await page.locator(`a:has-text("${linkText}")`).click();
|
||||
await page.waitForLoadState('networkidle', { timeout: 30000 });
|
||||
await waitForBlazorReady(page);
|
||||
}
|
||||
Reference in New Issue
Block a user