UNPKG

jest-environment-puppeteer-jsdom

Version:
79 lines (63 loc) 2.4 kB
"use strict"; exports.__esModule = true; exports.setup = setup; exports.teardown = teardown; var _jestDevServer = require("jest-dev-server"); var _chalk = _interopRequireDefault(require("chalk")); var _readConfig = require("./readConfig"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /* eslint-disable no-console */ let browsers = []; let didAlreadyRunInWatchMode = false; async function openBrowser(puppeteer, config) { if (config.connect) { return puppeteer.connect(config.connect); } return puppeteer.launch(config.launch); } async function setup(jestConfig = {}) { const config = await (0, _readConfig.readConfig)(); const puppeteer = (0, _readConfig.getPuppeteer)(); const browsersCount = config.browserPerWorker && !config.connect ? jestConfig.maxWorkers : 1; process.env.BROWSERS_COUNT = browsersCount; browsers = await Promise.all(Array.from({ length: browsersCount }).map(() => openBrowser(puppeteer, config))); const wsEndpoints = browsers.map(browser => browser.wsEndpoint()); process.env.PUPPETEER_WS_ENDPOINTS = JSON.stringify(wsEndpoints); // If we are in watch mode, - only setupServer() once. if (jestConfig.watch || jestConfig.watchAll) { if (didAlreadyRunInWatchMode) return; didAlreadyRunInWatchMode = true; } if (config.server) { try { await (0, _jestDevServer.setup)(config.server); } catch (error) { if (error.code === _jestDevServer.ERROR_TIMEOUT) { console.log(''); console.error(_chalk.default.red(error.message)); console.error(_chalk.default.blue(`\n☝️ You can set "server.launchTimeout" in jest-puppeteer.config.js`)); process.exit(1); } if (error.code === _jestDevServer.ERROR_NO_COMMAND) { console.log(''); console.error(_chalk.default.red(error.message)); console.error(_chalk.default.blue(`\n☝️ You must set "server.command" in jest-puppeteer.config.js`)); process.exit(1); } throw error; } } } async function teardown(jestConfig = {}) { const config = await (0, _readConfig.readConfig)(); await Promise.all(browsers.map(browser => { if (config.connect) { return browser.disconnect(); } return browser.close(); })); if (!jestConfig.watch && !jestConfig.watchAll) { await (0, _jestDevServer.teardown)(); } }