mirror of
https://github.com/web-infra-dev/midscene.git
synced 2025-07-12 03:21:18 +00:00
36 lines
844 B
TypeScript
36 lines
844 B
TypeScript
![]() |
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.pages())[0];
|
||
|
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;
|
||
|
}
|