(args?: string[])
| 53 | } |
| 54 | |
| 55 | export function setupPuppeteer(args?: string[]): PuppeteerUtils { |
| 56 | let browser: Browser |
| 57 | let page: Page |
| 58 | |
| 59 | const resolvedOptions = args |
| 60 | ? { |
| 61 | ...puppeteerOptions, |
| 62 | args: [...puppeteerOptions.args!, ...args], |
| 63 | } |
| 64 | : puppeteerOptions |
| 65 | |
| 66 | beforeAll(async () => { |
| 67 | browser = await puppeteer.launch(resolvedOptions) |
| 68 | }, 20000) |
| 69 | |
| 70 | beforeEach(async () => { |
| 71 | page = await browser.newPage() |
| 72 | |
| 73 | await page.evaluateOnNewDocument(() => { |
| 74 | localStorage.clear() |
| 75 | }) |
| 76 | |
| 77 | page.on('console', e => { |
| 78 | if (e.type() === 'error') { |
| 79 | const err = e.args()[0] |
| 80 | console.error(`Error from Puppeteer-loaded page:\n`, err.remoteObject()) |
| 81 | } |
| 82 | }) |
| 83 | }) |
| 84 | |
| 85 | afterEach(async () => { |
| 86 | await page.close() |
| 87 | }) |
| 88 | |
| 89 | afterAll(async () => { |
| 90 | await browser.close() |
| 91 | }) |
| 92 | |
| 93 | async function click( |
| 94 | selector: string, |
| 95 | options?: ClickOptions, |
| 96 | ): Promise<void> { |
| 97 | await page.click(selector, options) |
| 98 | } |
| 99 | |
| 100 | async function count(selector: string): Promise<number> { |
| 101 | return (await page.$$(selector)).length |
| 102 | } |
| 103 | |
| 104 | async function text(selector: string): Promise<string | null> { |
| 105 | return page.$eval(selector, node => node.textContent) |
| 106 | } |
| 107 | |
| 108 | async function value(selector: string): Promise<string> { |
| 109 | return page.$eval(selector, node => (node as HTMLInputElement).value) |
| 110 | } |
| 111 | |
| 112 | async function html(selector: string): Promise<string> { |
no test coverage detected