<% if(testRunner == 'node') { %> import {before, beforeEach, after, afterEach} from 'node:test'; <% } %> import * as puppeteer from 'puppeteer'; const baseUrl = process.env['baseUrl'] ?? '<%= baseUrl %>'; let browser: puppeteer.Browser; let page: puppeteer.Page; export function setupBrowserHooks(path = ''): void { <% if(testRunner == 'jasmine' || testRunner == 'jest') { %> beforeAll(async () => { browser = await puppeteer.launch(); }); <% } %><% if(testRunner == 'mocha' || testRunner == 'node') { %> before(async () => { browser = await puppeteer.launch(); }); <% } %> beforeEach(async () => { page = await browser.newPage(); await page.goto(`${baseUrl}${path}`); }); afterEach(async () => { await page?.close(); }); <% if(testRunner == 'jasmine' || testRunner == 'jest') { %> afterAll(async () => { await browser?.close(); }); <% } %><% if(testRunner == 'mocha' || testRunner == 'node') { %> after(async () => { await browser?.close(); }); <% } %> } export function getBrowserState(): { browser: puppeteer.Browser; page: puppeteer.Page; baseUrl: string; } { if (!browser) { throw new Error( 'No browser state found! Ensure `setupBrowserHooks()` is called.' ); } return { browser, page, baseUrl, }; }