layout | title | excerpt | groups | redirect_from | version_added | ||
---|---|---|---|---|---|---|---|
page-api |
QUnit.on() |
Register a callback to fire whenever the specified event is emitted. |
|
|
2.2.0 |
QUnit.on( eventName, callback )
Register a callback to fire whenever a specified event is emitted.
This API implements the js-reporters CRI standard, and is the primary interface for use by continuous integration plugins and other reporting software.
type | parameter | description |
---|---|---|
string |
eventName |
Name of an event. |
Function |
callback |
A callback function. |
The runStart
event indicates the beginning of a test run. It is emitted exactly once, and before any other events.
| Object
| testCounts
| Aggregate counts about tests.
| number
| testCounts.total
| Total number of registered tests.
QUnit.on('runStart', runStart => {
console.log(`Test plan: ${runStart.testCounts.total}`);
});
The suiteStart
event indicates the beginning of a module. It is eventually be followed by a corresponding suiteEnd
event.
| string
| name
| Name of the module.
| Array<string>
| fullName
| List of one or more strings, containing (in order) the names of any ancestor modules and the name of the current module.
QUnit.on('suiteStart', suiteStart => {
console.log('suiteStart', suiteStart);
// name: 'my module'
// fullName: ['grandparent', 'parent', 'my module']
});
The suiteEnd
event indicates the end of a module. It is emitted after its corresponding suiteStart
event.
| string
| name
| Name of the module.
| Array<string>
| fullName
| List of one or more strings, containing (in order) the names of any ancestor modules and the name of the current module.
| string
| status
| Aggregate result of tests in this module, one of:failed
: at least one test has failed; passed
: there were no failing tests, which means there were only tests with a passed, skipped, or todo status.
| number
| runtime
| Duration of the module in milliseconds.
QUnit.on('suiteEnd', suiteEnd => {
console.log(suiteEnd);
// …
});
The testStart
event indicates the beginning of a test. It is eventually followed by a corresponding testEnd
event.
| string
| name
| Name of the test.
| string|null
| moduleName
| The module the test belongs to, or null for a global test.
| Array<string>
| fullName
| List (in order) of the names of any ancestor modules and the name of the test itself.
QUnit.on('testStart', testStart => {
console.log(testStart);
// name: 'my test'
// moduleName: 'my module'
// fullName: ['parent', 'my module', 'my test']
// name: 'global test'
// moduleName: null
// fullName: ['global test']
});
The testEnd
event indicates the end of a test. It is emitted after its corresponding testStart
event.
Properties of a testEnd object:
| string
| name
| Name of the test.
| string|null
| moduleName
| The module the test belongs to, or null for a global test.
| Array<string>
| fullName
| List (in order) of the names of any ancestor modules and the name of the test itself.
| string
| status
| Result of the test, one of:passed
: all assertions passed or no assertions found;failed
: at least one assertion failed or it is a todo test that no longer has any failing assertions;skipped
: the test was intentionally not run; ortodo
: the test is "todo" and still has a failing assertion.
| number
| runtime
| Duration of the test in milliseconds.
| Array<FailedAssertion>
| errors
| For tests with status failed
or todo
, there will be at least one failed assertion. However, the list may be empty if the status is failed
due to a "todo" test having no failed assertions.
Note that all negative test outcome communicate their details in this manner. For example, timeouts, uncaught errors, and global pollution also synthesize a failed assertion.
Properties of a FailedAssertion object:
| boolean
| passed
| False for a failed assertion.
| string|undefined
| message
| Description of what the assertion checked.
| any
| actual
| The actual value passed to the assertion.
| any
| expected
| The expected value passed to the assertion.
| string|undefined
| stack
| Stack trace, may be undefined if the result came from an old web browsers.
QUnit.on('testEnd', testEnd => {
if (testEnd.status === 'failed') {
console.error('Failed! ' + testEnd.fullName.join(' > '));
testEnd.errors.forEach(assertion => {
console.error(assertion);
// message: speedometer
// actual: 75
// expected: 88
// stack: at dmc.test.js:12
});
}
});
The runEnd
event indicates the end of a test run. It is emitted exactly once.
| string
| status
| Aggregate result of all tests, one of:failed
: at least one test failed or a global error occurred;passed
: there were no failed tests, which means there were only tests with a passed, skipped, or todo status. If QUnit.config.failOnZeroTests
is disabled, then the run may also pass if there were no tests.
| Object
| testCounts
| Aggregate counts about tests:
| number
| testCounts.passed
| Number of passed tests.
| number
| testCounts.failed
| Number of failed tests.
| number
| testCounts.skipped
| Number of skipped tests.
| number
| testCounts.todo
| Number of todo tests.
| number
| testCounts.total
| Total number of tests, equal to the sum of the above properties.
| number
| runtime
| Total duration of the run in milliseconds.
QUnit.on('runEnd', runEnd => {
console.log(`Passed: ${runEnd.passed}`);
console.log(`Failed: ${runEnd.failed}`);
console.log(`Skipped: ${runEnd.skipped}`);
console.log(`Todo: ${runEnd.todo}`);
console.log(`Total: ${runEnd.total}`);
});