QUnit.config
Order
Configurations are read in the following order:
- Default values
- Flat preconfig
- Object preconfig
- Runner options (URL parameters in a browser, or CLI options in the QUnit CLI)
- Set
QUnit.config
from your own inline or bootstrap script.
Set configuration
You can configure the test run via the QUnit.config
object. For browser environments, you can configure QUnit from any script after qunit.js:
<!DOCTYPE html>
<head>
<meta charset="utf-8">
<title>QUnit</title>
<link rel="stylesheet" href="/lib/qunit/qunit.css">
</head>
<body>
<div id="qunit"></div>
<script src="/lib/qunit/qunit.js"></script>
<script>
QUnit.config.reorder = false;
</script>
<script src="/src/app.js"></script>
<script src="/test/bootstrap.js"></script>
<script src="/test/app.test.js"></script>
</body>
If you have custom plugins or want to re-use your configuration across multiple HTML files, you can also configure your project from an external /test/bootstrap.js
script. Make sure to place this script before your other test files.
When using the QUnit CLI, you can setup your project and configure QUnit via --require
.
qunit --require ./test/bootstrap.js
// test/bootstrap.js
QUnit.config.noglobals = true;
QUnit.config.notrycatch = true;
const MyApp = require('../');
MyApp.setAccount('TestUser');
Preconfiguration
Preconfiguration allows you to define QUnit configuration via global variables or environment variables, before QUnit itself is loaded.
This is the recommended approach for general purpose test runners and integrations, as it provides a reliable way to override the default configuration. This can be especially useful if the end-user may control the loading of QUnit, possibly asynchronously, or through custom means, where it would be difficult to inject your overrides at the “right” time (after QUnit loads, but before any user code).
Preconfig allows integrations to declare configuration without needing to embed, wrap, adapt, modify, or otherwise control the loading of QUnit itself. This in turn allows integrations to easily support use of standalone HTML test suites, that developers can also run and debug in the browser directly, without depending on or needing to install and set up any specific integration system.
Flat preconfig
Version added: QUnit 2.21.0.
Flat preconfig allows multiple integrations to seemlessly collaborate, without the risk of projects accidentally unsetting an override (as is the case with Object preconfig).
In browser environments, global variables that start with qunit_config_
may override the default value of a configuration option. The following inline script (before loading QUnit), is equivalent to setting QUnit.config.hidepassed = true; QUnit.config.seed = 'd84af39036'; QUnit.config.testTimeout = 1000;
<script>
qunit_config_hidepassed = true;
qunit_config_seed = 'd84af39036';
qunit_config_testtimeout = 1000;
</script>
For the QUnit CLI and other Node.js runners, the same can also be done via environment variables. Environment variables must be set in the shell before running the qunit
or node
command. The variable names are case-sensitive and must be in lowercase. You may set boolean configuration variables using the string true
or false
.
export qunit_config_noglobals=true
export qunit_config_filter=foo
export qunit_config_testtimeout=1000
qunit test.js
Or:
qunit_config_filter=foo qunit_config_testtimeout=1000 qunit test.js
The environment variables make it easy to pass a parameter to QUnit from a child or nested command. For example, if you have several npm run
shortcuts in package.json
, like so:
{
"scripts": {
"test-something": "qunit_config_filter=something npm run test",
"test": "npm run lint && qunit",
"lint": "eslint --cache .",
"lint-fix": "eslint --cache --fix ."
}
}
Configuration options that are read-only, internal/undocumented, or that require an object value (such as QUnit.config.storage
) cannot be set via environment variables. Options that require an array of strings will be converted to an array holding the given string.
Object preconfig
Version added: 2.1.0.
You can create a QUnit
global variable with a config
property, before QUnit itself is loaded. Any properties on this QUnit.config
placeholder object will be carried over and applied to the real QUnit.config
object once it exists. Any additional properties on the placeholder are ignored.
// Isomorphic global
// For modern browsers, SpiderMonkey, and Node.js (including strict mode).
globalThis.QUnit = {
config: {
autostart: false,
maxDepth: 12
}
};
// Browser global
// Supported in all browsers (including old browsers, and strict mode).
window.QUnit = { /* config: .. */ };
// Implicit global
// Supported everywhere, including old browsers. (But not ES strict mode.)
QUnit = { /* config: .. */ };
Changelog
QUnit 2.21.0 | Added flat preconfig. |
QUnit 2.18.1 | Added object preconfig support for Node.js, SpiderMonkey, and other environments. Previously, it was limited to the browser environment. |
QUnit 2.1.0 | Introduce object preconfig feature. |
QUnit.config.altertitle
Insert a success or failure symbol in the document title.
QUnit.config.autostart
Control when the test run may start.
QUnit.config.collapse
Collapse the details of failing tests after the first one (HTML Reporter).
QUnit.config.countStepsAsOne
Count assert.verifySteps() as one assertion for the assert.expect() count.
QUnit.config.current
Internal object representing the currently running test.
QUnit.config.failOnZeroTests
Fail the test run if no tests were run.
QUnit.config.filter
Select tests to run based on a substring or pattern match.
QUnit.config.fixture
Clean HTML playground before each test.
QUnit.config.hidepassed
Hide results of passed tests (HTML Reporter).
QUnit.config.maxDepth
The depth up-to which an object will be serialized during a diff (HTML Reporter).
QUnit.config.module
Select a single test module to run.
QUnit.config.moduleId
Select one or more modules to run, by their internal ID (HTML Reporter).
QUnit.config.modules
List of defined test modules.
QUnit.config.noglobals
Check the global object after each test and report new properties as failures.
QUnit.config.notrycatch
Disable handling of uncaught exceptions during tests.
QUnit.config.reorder
Prioritize re-running previously failed tests.
QUnit.config.reporters
Control which reporters to enable or disable.
QUnit.config.requireExpects
Fail tests that don't specify how many assertions they expect.
QUnit.config.scrolltop
Scroll to the top of the page after the test run.
QUnit.config.seed
Enable randomized ordering of tests.
QUnit.config.storage
The Storage object to use for remembering failed tests between runs.
QUnit.config.testId
Select one or more tests to run, by their internal ID (HTML Reporter).
QUnit.config.testTimeout
Default timeout for async tests.
QUnit.config.urlConfig
Register additional input fields in the toolbar (HTML Reporter).