import { Page, expect, Locator } from "@playwright/test"; export default abstract class BasePage { readonly rootPage: Page; abstract get(args: any): Locator; constructor(rootPage: Page) { this.rootPage = rootPage; } async toastWait ({message}: {message: string}){ // const toast = await this.page.locator('.ant-message .ant-message-notice-content', {hasText: message}).last(); // await toast.waitFor({state: 'visible'}); // todo: text of toastr shows old one in the test assertion await this.rootPage.locator('.ant-message .ant-message-notice-content', {hasText: message}).last().textContent() .then((text) => expect(text).toContain(message)); } async assertInnerTextWithRetry({locator, text, retryCount = 5, retryInterval = 100}: {locator: Locator, text: string, retryCount?: number, retryInterval?: number}) { for(let i = 0; i < retryCount; i++) { const innerText = await locator.innerText(); if(innerText === text) { break; } await this.rootPage.waitForTimeout(retryInterval); } return expect(await locator.innerText()).toBe(text); } async assertNotInnerTextWithRetry({locator, text, retryCount = 5, retryInterval = 100}: {locator: Locator, text: string, retryCount?: number, retryInterval?: number}) { for(let i = 0; i < retryCount; i++) { const innerText = await locator.innerText(); if(innerText !== text) { break; } await this.rootPage.waitForTimeout(retryInterval); } return expect(await locator.innerText()).not.toBe(text); } }