@coinbase/onchaintestkit
Version:
End-to-end testing toolkit for blockchain applications, powered by Playwright
30 lines (29 loc) • 1.23 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.waitForPage = waitForPage;
const LoadingStateDetector_1 = require("./LoadingStateDetector");
/**
* Generic utility to wait for and configure a page by URL
*
* @param context - Browser context to search for pages
* @param pageUrl - Full URL of the page to wait for (e.g., 'chrome-extension://extensionId/notification.html')
* @param viewport - Optional viewport size (defaults to 360x592 for extension popups)
* @returns Promise that resolves to the found and configured page
*/
async function waitForPage(context, pageUrl, viewport) {
const isTargetPage = (page) => page.url().includes(pageUrl);
let targetPage = context.pages().find(isTargetPage);
if (!targetPage) {
targetPage = await context.waitForEvent("page", {
predicate: isTargetPage,
});
}
// Wait for DOM content to load
await targetPage.waitForLoadState("domcontentloaded");
if (viewport) {
await targetPage.setViewportSize(viewport);
}
// Wait for loading indicators to disappear
await LoadingStateDetector_1.LoadingStateDetector.waitForPageLoadingComplete(targetPage, 10000);
return targetPage;
}