@tshifhiwa/ohrm-ui-automation-framework
Version:
Playwright and TypeScript–based test automation framework for validating core UI features and workflows of the OrangeHRM demo application.
36 lines (30 loc) • 1.25 kB
text/typescript
import type { Browser, BrowserContext, Page } from "@playwright/test";
import type { BrowserContextWithPage } from "./browserContext.type.js";
export class BrowserContextManager {
private readonly browser: Browser;
private page?: Page;
constructor(browser: Browser) {
this.browser = browser;
}
public async createDefaultContext(): Promise<BrowserContextWithPage> {
const context = await this.browser.newContext();
const page = await context.newPage();
return { context, page };
}
public async createIsolatedContext(): Promise<BrowserContextWithPage> {
// @ts-expect-error: Explicitly setting storageState to undefined to ensure isolated context
const context = await this.browser.newContext({ storageState: undefined });
const page = await context.newPage();
return { context, page };
}
public async close(context: BrowserContext): Promise<void> {
if (context) {
await context.close();
}
}
public async clickAndWaitForNewPage(page: Page, clickFn: () => Promise<void>): Promise<Page> {
const [newPage] = await Promise.all([page.context().waitForEvent("page"), clickFn()]);
await newPage.waitForLoadState();
return newPage;
}
}