import { Page, Locator } from "@playwright/test"; /** * Wait for the page to reach network idle state * This is commonly used after navigation or page reload to ensure all network requests have completed */ export async function waitForNetworkIdle(page: Page): Promise { await page.waitForLoadState("networkidle"); } /** * Wait for an element with a specific data-testid to appear */ export async function waitForElement( page: Page, testId: string, options?: { timeout?: number; state?: "attached" | "visible" | "hidden" } ): Promise { const element = page.locator(`[data-testid="${testId}"]`); await element.waitFor({ timeout: options?.timeout ?? 5000, state: options?.state ?? "visible", }); return element; } /** * Wait for an element with a specific data-testid to be hidden */ export async function waitForElementHidden( page: Page, testId: string, options?: { timeout?: number } ): Promise { const element = page.locator(`[data-testid="${testId}"]`); await element.waitFor({ timeout: options?.timeout ?? 5000, state: "hidden", }); }