A QUnit test runner with Istanbul and headless Chrome.
You must be using Node >= 8.9.4.
This test runner assumes that your code is already instrumented for Istanbul.
Via npm:
npm install qunit-coverage
qunit-coverage is currently accessible via its Node API. The function takes a file name and options object, and it returns a promise.
const qunit = require("qunit-coverage");
qunit("path-to-file", {
	/* options */
}).then(/* use results */);Opens a test fixture in headless Chrome, calls QUnit.start(), logs test results to the console, and returns a promise that resolves with a results object. The results object follows the below format:
{
	pass: Boolean,
	results: { // As numbers
		passed: Number,
		failed: Number,
		total: Number,
	},
	coverage: { // If coverage was ran, as percentages
		branch: Number,
		function: Number,
		statement: Number,
	},
},
Type: Boolean
Default: false
Logs more detailed output to the console.
Type: Number
Default: 5000
Will fail and exit the tests if the timeout limit is exceeded.
Type: Object
Default: {}
Passes options to puppeteer.launch(). For a list of valid options, see the puppeteer documentation.
Type: Boolean|Object
Default: false
Configuration options for coverage testing. Passing false will prevent coverage testing. Passing true will log a text summary report to the console if options.verbose is true.
Type: String
Default: process.cwd()
Where to output any coverage reports that Istanbul generates. Defaults to the current working directory.
Type: Array<String>
Default: []
What formats to output Istanbul coverage reports as. Valid values include "lcovonly", "json", "html", "text-summary" and more.
Please see CONTRIBUTING.md for more information on working with this project.
- Allow for a glob file input, or an array of files (or globs)
- Prettier output and more detailed errors / warnings
- Expose a CLI
- Document how to instrument with Istanbul
- Coverage thresholds?
Inspired by these projects: