mocha-headless-chrome
Advanced tools
Comparing version 1.0.2 to 1.1.1
{ | ||
"name": "mocha-headless-chrome", | ||
"version": "1.0.2", | ||
"version": "1.1.1", | ||
"description": "Run client-side mocha tests in the command line through headless Chrome", | ||
"main": "runner.js", | ||
"bin": "./bin/start", | ||
"engines": { | ||
"node": ">=6.4.0" | ||
}, | ||
"scripts": { | ||
@@ -8,0 +11,0 @@ "start": "node cli -f example-page.html" |
@@ -7,2 +7,4 @@ # mocha-headless-chrome | ||
Node 6.4.0+ is supported. | ||
## Getting Started | ||
@@ -9,0 +11,0 @@ |
@@ -37,65 +37,52 @@ 'use strict'; | ||
module.exports = async ({ file, reporter, timeout, width, height }) => { | ||
const url = path.resolve(file); | ||
const log = []; | ||
function configureViewport(width, height, page) { | ||
if (!width && !height) return page; | ||
try { | ||
const browser = await puppeteer.launch({ | ||
ignoreHTTPSErrors: true, | ||
headless: true | ||
}); | ||
const page = await browser.newPage(); | ||
let viewport = page.viewport(); | ||
width && (viewport.width = width); | ||
height && (viewport.height = height); | ||
return page.setViewport(viewport).then(() => page); | ||
} | ||
if (width || height) { | ||
let viewport = page.viewport(); | ||
width && (viewport.width = width); | ||
height && (viewport.height = height); | ||
await page.setViewport(viewport); | ||
} | ||
function handleConsole(...args) { | ||
// process stdout stub | ||
let isStdout = args[0] === 'stdout:'; | ||
isStdout && (args = args.slice(1)); | ||
page.on('console', (...args) => { | ||
// save console.log arguments | ||
let json = JSON.stringify(args); | ||
let del = args[1] === "\u001b[2K"; | ||
let begin = args[1] === "\u001b[0G"; | ||
log.push({ json, del, begin }); | ||
let msg = util.format(...args); | ||
!isStdout && (msg += '\n'); | ||
process.stdout.write(msg); | ||
} | ||
// process stdout stub | ||
let isStdout = args[0] === 'stdout:'; | ||
isStdout && (args = args.slice(1)); | ||
function onError(err) { | ||
console.error(err); | ||
process.exit(1); | ||
} | ||
let msg = util.format(...args); | ||
!isStdout && (msg += '\n'); | ||
process.stdout.write(msg); | ||
}); | ||
module.exports = function({ file, reporter, timeout, width, height }) { | ||
const url = path.resolve(file); | ||
const options = { | ||
ignoreHTTPSErrors: true, | ||
headless: true | ||
}; | ||
page.on('dialog', async dialog => { | ||
await dialog.dismiss(); | ||
}); | ||
puppeteer | ||
.launch(options) | ||
.then(browser => browser.newPage() | ||
.then(configureViewport.bind(this, width, height)) | ||
.then(page => { | ||
page.on('console', handleConsole); | ||
page.on('dialog', dialog => dialog.dismiss()); | ||
page.on('pageerror', err => console.error(err)); | ||
page.on('pageerror', async err => { | ||
console.error(err); | ||
}); | ||
// page.on('request', request => { | ||
// if (/\.(png|jpg|jpeg|gif|webp)$/i.test(request.url)) | ||
// request.abort(); | ||
// else | ||
// request.continue(); | ||
// }); | ||
await page.evaluateOnNewDocument(initMocha, reporter); | ||
await page.goto(`file://${url}`); | ||
await page.waitForFunction(() => window.testsCompleted, { timeout: timeout }); | ||
process.stdout.write('\n'); | ||
browser.close(); | ||
//log.forEach(msg => console.log(`${msg.json} = ${msg.del} == ${msg.begin}`)); | ||
} catch (err) { | ||
console.error(err); | ||
process.exit(1); | ||
} | ||
return page.evaluateOnNewDocument(initMocha, reporter) | ||
.then(() => page.goto(`file://${url}`)) | ||
.then(() => page.waitForFunction(() => window.testsCompleted, { timeout: timeout })) | ||
.then(() => { | ||
process.stdout.write('\n'); | ||
browser.close(); | ||
}); | ||
})) | ||
.catch(onError); | ||
}; |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
28934
7
727
39
1