UNPKG

999 BJavaScriptView Raw
1const puppeteer = require('puppeteer') // eslint-disable-line import/no-extraneous-dependencies
2const fs = require('fs')
3const os = require('os')
4const path = require('path')
5
6const DIR = process.env.DIR || path.join(os.tmpdir(), 'jest_puppeteer_global_setup')
7
8module.exports = async function setup() {
9 const headless = process.env.HEADLESS !== 'false'
10 const slowMoValue = Number(process.env.SLOWMO)
11 const options = {
12 args: ['--no-sandbox', '--disable-setuid-sandbox'],
13 headless,
14 }
15 if (!Number.isNaN(slowMoValue) && !headless) {
16 options.slowMo = slowMoValue
17 }
18 const browser = await puppeteer.launch(options)
19 // This global is not available inside tests but only in global teardown
20 global.SPDT_BROWSER = browser
21 // Instead, we expose the connection details via file system to be used in tests
22 try {
23 fs.mkdirSync(DIR)
24 } catch (e) {
25 if (e.code !== 'EEXIST') {
26 throw e
27 }
28 }
29 fs.writeFileSync(path.join(DIR, 'wsEndpoint'), browser.wsEndpoint())
30}