
Product
Announcing Socket Certified Patches: One-Click Fixes for Vulnerable Dependencies
A safer, faster way to eliminate vulnerabilities without updating dependencies
@zambezi/mocha-headless-chrome
Advanced tools
Run Mocha tests using headless Google Chrome.
This tool is a fork of https://github.com/shellscape/mocha-chrome. It adds support of Node.JS 6.x as well as fixing few quirks.
To begin, you'll need to install mocha-chrome:
$ npm install @zambezi/mocha-headless-chrome --save-dev
Then you'll need a local npm install of mocha:
$ npm install mocha --save-dev
To run the tests, you'll need an HTML file with some basics:
<!doctype>
<html>
<head>
<title>Test</title>
<meta charset="utf-8">
<link rel="stylesheet" href="../node_modules/mocha/mocha.css" />
<script src="../node_modules/mocha/mocha.js"></script>
<script src="../node_modules/chai/chai.js"></script>
</head>
<body>
<div id="mocha"></div>
<script>
expect = chai.expect;
mocha.setup('bdd')
// add tests here
mocha.run();
</script>
</body>
</html>
You can then add your tests either through an external script file or
inline within a <script> tag. Running the tests is easy, either with the CLI
binary, or programmatically.
$ mocha-headless-chrome --help
Usage
$ mocha-headless-chrome <file.html> [options]
Options
--mocha A JSON string representing a config object to pass to Mocha
--log-level Specify a log level; trace, debug, info, warn, error
--no-colors Disable colors in Mocha's output
--reporter Specify the Mocha reporter to use
--timeout Specify the test startup timeout to use
Examples
$ mocha-headless-chrome test.html --no-colors
$ mocha-headless-chrome test.html --reporter dot
$ mocha-headless-chrome test.html --mocha '{"ui":"tdd"}'
Third party reporter have to be loaded within the page to be used. For instance to use mocha-teamcity-reporter ;
npm install mocha-teamcity-reporter --save-dev.<!doctype>
<html>
<head>
<title>Test</title>
<meta charset="utf-8">
<link rel="stylesheet" href="../node_modules/mocha/mocha.css" />
<script src="../node_modules/mocha/mocha.js"></script>
<script src="../node_modules/chai/chai.js"></script>
<script src="../node_modules/mocha-teamcity-reporter/lib/teamcity.js"></script>
</head>
<body>
<div id="mocha"></div>
<script>
expect = chai.expect;
mocha.setup('bdd')
// add tests here
mocha.run();
</script>
</body>
</html>
The custom reporter can be used with the --reporter CLI argument
mocha-headless-chrome test.html --reporter teamcity
file:// ProtocolChrome has long-since disabled cookies for files loaded via the file:// protocol.
The once-available --enable-file-cookies has been removed and we're left with few options.
If you're in need of cookie support for your local-file test, you may use the following snippet,
which will shim document.cookie with very basic support:
Object.defineProperty(document, 'cookie', {
get: function () {
return this.value || '';
},
set: function (cookie) {
cookie = cookie || '';
const cutoff = cookie.indexOf(';');
const pair = cookie.substring(0, cutoff >= 0 ? cutoff : cookie.length);
const cookies = this.value ? this.value.split('; ') : [];
cookies.push(pair);
return this.value = cookies.join('; ');
}
});
$ npm test
FAQs
Run Mocha tests using headless Google Chrome
We found that @zambezi/mocha-headless-chrome demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 5 open source maintainers collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Product
A safer, faster way to eliminate vulnerabilities without updating dependencies

Product
Reachability analysis for Ruby is now in beta, helping teams identify which vulnerabilities are truly exploitable in their applications.

Research
/Security News
Malicious npm packages use Adspect cloaking and fake CAPTCHAs to fingerprint visitors and redirect victims to crypto-themed scam sites.