Nuxt/packages/test-utils/src/browser.ts

45 lines
1.1 KiB
TypeScript
Raw Normal View History

import type { Browser, BrowserContextOptions } from 'playwright'
import { useTestContext } from './context'
import { url } from './server'
export async function createBrowser () {
const ctx = useTestContext()
let playwright: typeof import('playwright')
try {
playwright = await import('playwright')
} catch {
/* istanbul ignore next */
throw new Error(`
The dependency 'playwright' not found.
Please run 'yarn add --dev playwright' or 'npm install --save-dev playwright'
`)
}
const { type, launch } = ctx.options.browserOptions
if (!playwright[type]) {
throw new Error(`Invalid browser '${type}'`)
}
ctx.browser = await playwright[type].launch(launch)
}
export async function getBrowser (): Promise<Browser> {
const ctx = useTestContext()
if (!ctx.browser) {
await createBrowser()
}
return ctx.browser
}
export async function createPage (path?: string, options?: BrowserContextOptions) {
const browser = await getBrowser()
const page = await browser.newPage(options)
if (path) {
await page.goto(url(path))
}
return page
}