36 lines
844 B
TypeScript
Raw Normal View History

import assert from 'assert';
import puppeteer, { Viewport } from 'puppeteer';
export async function launchPage(
url: string,
opt?: {
viewport?: Viewport;
},
) {
const browser = await puppeteer.launch({
// headless: false,
});
const page = await browser.newPage();
const viewportConfig = {
width: opt?.viewport?.width || 1920,
height: opt?.viewport?.height || 1080,
deviceScaleFactor: opt?.viewport?.deviceScaleFactor || 1,
};
await page.setViewport(viewportConfig);
await Promise.all([
page.waitForNavigation({
timeout: 20 * 1000,
waitUntil: 'networkidle0',
}),
(async () => {
const response = await page.goto(url);
if (response?.status) {
assert(response.status() <= 399, `Page load failed: ${response.status()}`);
}
})(),
]);
return page;
}