UNPKG

siesta-lite

Version:

Stress-free JavaScript unit testing and functional testing tool, works in NodeJS and browsers

105 lines (76 loc) 3.24 kB
/* Siesta 5.6.1 Copyright(c) 2009-2022 Bryntum AB https://bryntum.com/contact https://bryntum.com/products/siesta/license */ Class('Siesta.Launcher.Runner.Puppeteer', { isa : Siesta.Launcher.Runner.BaseRunner, has : { pagePollInteval : 1000, maxWorkers : 5, pagesPerChunk : 3 }, methods : { // promised method, should never reject, but instead resolve to the instance of Error setup : function () { return Promise.resolve(this) }, createBrowser : function () { var me = this this.debug("Runner setup: " + this) return new Promise(function (resolve, reject) { var options = me.dispatcher.options // prepare browser args var browserArgs = options[ 'browser-arg' ] || [] if (!(browserArgs instanceof Array)) browserArgs = [ browserArgs ] var args = [ '--disk-cache-size=0', '--media-cache-size=0', '--window-size=1280,1024' ] if (options.coverage) { args.push('--proxy-server=127.0.0.1:' + me.dispatcher.instrumentationProxyPort) } Joose.A.each(browserArgs, function (arg) { // prepend -- if missing args.push(arg.replace(/^(--)?/, '--')) }) require('puppeteer').launch({ args : args, headless : options.headless !== 'false', ignoreHTTPSErrors : true, devtools : options.headless === 'false', // slowMo : 250, timeout : 60000 }).then(function (puppeteerBrowser) { resolve(puppeteerBrowser) }, function (e) { resolve(e) }) }) }, createPage : function (callback) { var me = this this.createBrowser().then(function (browser) { if ((browser instanceof Error) || !browser.newPage) { callback(browser); return } browser.newPage().then(function (puppeteerPage) { var config = { runner : me, launcher : me.launcher, dispatcher : me.dispatcher, puppeteerPage : puppeteerPage, puppeteerBrowser : browser, pollInterval : me.pagePollInteval } var options = me.dispatcher.options if (options.width) config.width = options.width if (options.height) config.height = options.height callback(null, new Siesta.Launcher.Page.Puppeteer(config)) }, function (e) { callback(e) }) }) } } })