mirror of
https://github.com/logos-messaging/js-waku.git
synced 2026-01-02 13:53:12 +00:00
* feat(browser-tests): simplify, refactor, update dockerized browser node * Update packages/browser-tests/web/index.ts * fix: remove comments and console.logs from tests * fix: add temporary logging * fix: debugging static sharding * fix: replace console with logger * fix: remove use of any * fix: log dial error * fix: replace any with libp2p options * fix: remove unused logic around sourcing address.env * fix: uncomment log * fix: add more logging and fix tests * feat: add types for test-config * fix: add types to server.ts * fix: remove more uses of any * fix: remove use of any in endpoint handlers
68 lines
1.6 KiB
TypeScript
68 lines
1.6 KiB
TypeScript
import { Browser, chromium, Page } from "@playwright/test";
|
|
import { Logger } from "@waku/utils";
|
|
|
|
const log = new Logger("browser-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();
|
|
|
|
// Forward browser console to server logs
|
|
page.on('console', msg => {
|
|
const type = msg.type();
|
|
const text = msg.text();
|
|
log.info(`[Browser Console ${type.toUpperCase()}] ${text}`);
|
|
});
|
|
|
|
page.on('pageerror', error => {
|
|
log.error('[Browser Page Error]', error.message);
|
|
});
|
|
|
|
await page.goto(`http://localhost:${appPort}/app/index.html`, {
|
|
waitUntil: "networkidle",
|
|
});
|
|
|
|
await page.waitForFunction(
|
|
() => {
|
|
return window.wakuApi && typeof window.wakuApi.createWakuNode === "function";
|
|
},
|
|
{ timeout: 30000 }
|
|
);
|
|
|
|
log.info("Browser initialized successfully with wakuApi");
|
|
} catch (error) {
|
|
log.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;
|
|
}
|
|
}
|