mirror of
https://github.com/logos-messaging/logos-messaging-js.git
synced 2026-01-15 06:23:09 +00:00
54 lines
1.2 KiB
TypeScript
54 lines
1.2 KiB
TypeScript
import { Browser, chromium, Page } from "@playwright/test";
|
|
|
|
let browser: Browser | undefined;
|
|
let page: Page | undefined;
|
|
|
|
export async function initBrowser(appPort: number): Promise<void> {
|
|
try {
|
|
const launchArgs = ["--no-sandbox", "--disable-setuid-sandbox"];
|
|
|
|
browser = await chromium.launch({
|
|
headless: true,
|
|
args: launchArgs
|
|
});
|
|
|
|
if (!browser) {
|
|
throw new Error("Failed to initialize browser");
|
|
}
|
|
|
|
page = await browser.newPage();
|
|
|
|
await page.goto(`http://localhost:${appPort}/app/index.html`, {
|
|
waitUntil: "networkidle",
|
|
});
|
|
|
|
await page.waitForFunction(
|
|
() => {
|
|
return window.wakuApi && typeof window.wakuApi.createWakuNode === "function";
|
|
},
|
|
{ timeout: 30000 }
|
|
);
|
|
|
|
console.log("Browser initialized successfully with wakuApi");
|
|
} catch (error) {
|
|
console.error("Error initializing browser:", error);
|
|
throw error;
|
|
}
|
|
}
|
|
|
|
export function getPage(): Page | undefined {
|
|
return page;
|
|
}
|
|
|
|
export function setPage(pageInstance: Page | undefined): void {
|
|
page = pageInstance;
|
|
}
|
|
|
|
export async function closeBrowser(): Promise<void> {
|
|
if (browser) {
|
|
await browser.close();
|
|
browser = undefined;
|
|
page = undefined;
|
|
}
|
|
}
|