import { Page, expect, Locator } from "@playwright/test"; type ResponseSelector = (json: any) => boolean; export default abstract class BasePage { readonly rootPage: Page; abstract get(args: any): Locator; constructor(rootPage: Page) { this.rootPage = rootPage; } async toastWait({ message }: { message: string }) { // todo: text of toaster 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)); // await this.rootPage // .locator(".ant-message .ant-message-notice-content", { hasText: message }) // .last() // .waitFor({ state: "detached" }); } async waitForResponseJson({ responseSelector, }: { responseSelector: ResponseSelector; }) { await this.rootPage.waitForResponse(async (res) => { try { return responseSelector(await res.json()); } catch (e) { return false; } }); } }