UNPKG

page-with

Version:

A library for usage example-driven in-browser testing of your own libraries.

43 lines (42 loc) 1.72 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createBrowser = exports.server = exports.browser = void 0; const until_1 = require("@open-draft/until"); const playwright_1 = require("playwright"); const createLogger_1 = require("./internal/createLogger"); const PreviewServer_1 = require("./server/PreviewServer"); const log = (0, createLogger_1.createLogger)('browser'); async function createBrowser(options = {}) { log('spawning a browser...'); exports.browser = await playwright_1.chromium.launch(Object.assign({}, { headless: !process.env.DEBUG, devtools: !!process.env.DEBUG, args: ['--no-sandbox'], }, options.launchOptions)); log('successfully spawned the browser!'); log('spawning a server...'); exports.server = new PreviewServer_1.PreviewServer(options.serverOptions); const serverConnection = await (0, until_1.until)(() => exports.server.listen()); if (serverConnection.error) { throw new Error(`Failed to create a server.\n${serverConnection.error}`); } const connection = serverConnection.data; log('successfully spawned the server!', connection.url); async function cleanup() { log('cleaning up...'); if (process.env.DEBUG) { log('cleanup prevented in DEBUG mode'); return Promise.resolve(); } return Promise.all([exports.browser.close(), exports.server.close()]).then(() => { log('successfully cleaned up all resources!'); }); } process.on('exit', cleanup); process.on('SIGKILL', cleanup); return { browser: exports.browser, cleanup, }; } exports.createBrowser = createBrowser;