import Puppeteer from 'puppeteer'; import {extendPage} from './extensions'; import {url as defaultURL} from './config'; export async function getBrowser() { const args = [ `--window-size=${ 1920 },${ 1080 }`, // '--disable-gpu' // '--no-sandbox', // '--single-process', // '--no-zygote', // '--disable-dev-shm-usage' // '--full-memory-crash-report', // '--unlimited-storage' ]; const env = process.env; if (env.E2E_DEBUG) { args.push('--auto-open-devtools-for-tabs'); env.E2E_SHOW = true; } const headless = env.E2E_SHOW ? false : 'new'; const browser = await Puppeteer.launch({ args, defaultViewport: null, headless: headless, slowMo: 20, // slow down by ms // ignoreDefaultArgs: ['--disable-extensions'], // executablePath: '/usr/bin/google-chrome-stable', // executablePath: '/usr/bin/firefox-developer-edition', }); let page = (await browser.pages())[0]; await page.evaluateOnNewDocument(() => { Object.defineProperty(navigator, 'language', { get: function() { return 'en'; } }); Object.defineProperty(navigator, 'languages', { get: function() { return ['en']; } }); }); page = extendPage(page); page.setDefaultTimeout(5000); await page.goto(defaultURL, {waitUntil: 'load'}); return {page, close: browser.close.bind(browser)}; } export default getBrowser;