Command-line interface

How to use the QUnit CLI (command-line interface), after installing it from npm.

QUnit CLI options

Usage: qunit [options] [files]

  Files should be a space-separated list of files, directories, or glob expressions.
  Defaults to 'test/**/*.js'.

Options:
  -V, --version          output the version number
  -f, --filter <filter>  run only matching module or test names
  -m, --module <name>    run only the specified module
  -r, --reporter [name]  specify the reporter to use
  --require <module>     specify a module or script to include before running any tests
  --seed [value]         specify a seed to re-order your tests
  -w, --watch            watch files for changes and re-run the test suite
  -h, --help             display help for command

--filter

Only run tests that match the given filter. The filter is matched against the module and test name, and may either be substring match (case insensitive), or a regular expression.

Examples: --filter foo, --filter !foo, --filter "/foo/", --filter "!/foo/"

Check QUnit.config.filter for more information.

--module

Only run tests that belong to the specified module. The name is matched case-insensitively, but must otherwise be complete.

Examples: --module foo, --module "Foo"

Check QUnit.config.module for more information.

--reporter

By default, the TAP reporter is used.

Run qunit --reporter <name> to use a different reporter, where <name> can be the name of a built-in reporter, or an Node module that implements the js-reporters spec. The reporter will be loaded and initialised automatically.

Built-in reporters:

--require

These modules or scripts will be required before any tests begin running.

This can be used to install Node.js require hooks, such as for TypeScript (ts-node/register), Babel (@babel/register), or CoffeeScript (coffeescript/register).

It can also be used for your own setup scripts to bootstrap the environment, or tweak QUnit.config. For example:

qunit --require ./test/setup.js
// test/setup.js
QUnit.config.noglobals = true;
QUnit.config.notrycatch = true;

global.MyApp = require('./index');

See QUnit.config for all available configuration options.

--seed

This option assigns QUnit.config.seed for you.

Node.js CLI options

The QUnit CLI uses Node.js. You can pass Node.js CLI options via the NODE_OPTIONS environment variable. For example, to use --enable-source-maps or --inspect, invoke QUnit as follows:

NODE_OPTIONS='--enable-source-maps' qunit test/

Code coverage

Generate code coverage reports with nyc:

{
  "scripts": {
    "test": "nyc qunit"
  },
  "devDependencies": {
    "nyc": "*",
    "qunit": "*"
  }
}

See /test/integration/nyc/ in the QUnit repo for a minimal example.

For a more elaborate example showcasing a unified test coverage report for tests in both Node.js and a headless browser, see Krinkle/example-node-and-browser-qunit.