import { expect, type Locator, type Page } from '@playwright/test'; export class BasePage { readonly page: Page; readonly continueButton: Locator; readonly pageSpinner: Locator; readonly buttonLoadSpin: Locator; constructor(page: Page){ this.page = page; this.continueButton = page.locator('[id="infoBox"]').getByRole('button'); this.pageSpinner = page.getByRole('status'); this.buttonLoadSpin = page.getByRole('alert'); } async nextPage() { const startingUrl = this.page.url(); await expect(async () => { const currentUrl = this.page.url(); if (currentUrl === startingUrl) { await this.continueButton.click({ timeout: 1000 }); } //this causes the schedule page to fail //await expect(this.buttonLoadSpin).toHaveCount(0, {timeout: 180000}); expect(currentUrl).not.toEqual(startingUrl); }).toPass({ timeout: 240_000 }); } async validateURL(url:string){ await expect(this.pageSpinner).toHaveCount(0, {timeout: 60000}); await this.page.waitForURL(url); } async fillAndValidate(element: Locator, value: string){ await expect(async () => { await element.clear(); await element.fill(value); await expect(element).toHaveValue(value); }).toPass(); } }