TestCafe v2.6.0 Released
TestCafe v2.6.0 introduces two enhancements: a new hook that allows users to modify reporter output, and support for JavaScript configuration files with the .cjs
extension.
New reporter hook
The onBeforeWrite hook allows you to modify the output of a reporter.
If you want your test reports to include custom content, you can create a custom reporter from scratch. However, this approach takes time and effort. Use the onBeforeWrite
hook if you want to make minor changes to the output of an existing reporter.
Define an onBeforeWrite
hook in a JavaScript configuration file. The following hook adds the duration in milliseconds to every test entry in the report:
//.testcaferc.js or .testcaferc.cjs
function onBeforeWriteHook(writeInfo) { // This function will fire every time the reporter calls the "write" method.
if (writeInfo.initiator === 'reportTestDone') { // The "initiator" property contains the name of the reporter event that triggered the hook.
const {
name,
testRunInfo,
meta
} = writeInfo.data || {}; // If you attached this hook to a compatible reporter (such as "spec" or "list"), the hook can process data related to the event.
const testDuration = testRunInfo.durationMs; // Save the duration of the test.
writeInfo.formattedText = writeInfo.formattedText + ' (' + testDuration + 'ms)'; // Add test duration to the reporter output.
};
}
module.exports = { // Attach the hook
hooks: {
reporter: {
onBeforeWrite: {
'spec': onBeforeWriteHook, // This hook will fire when you use the default "spec" reporter.
},
},
},
};
CJS support
If you run TestCafe v2.6.0 and higher, you can now use a configuration file with the .cjs
file extension. TestCafe detects the .testcaferc.cjs
file on startup, alongside its .js
and .json
counterparts.
TestCafe configuration files only support CommonJS syntax. Meanwhile, modern JavaScript tools often default to ESM syntax. If a JavaScript project is of type module
, Node.js expects the project’s .js
files to contain ESM syntax.
Use the .cjs
configuration file extension to let Node.js know that the file contains CommonJS syntax.
Many thanks to the TestCafe contributor Damien Guérin (@gigaga) for the implementation of this capability.
Bug fixes
- If you call the
t.skipJsErrors
method without arguments, TestCafe passes afalse
value to the method. This behavior is inconsistent with similar methods of a greater scope —test.skipJsErrors
andfixture.skipJsErrors
(#7648). - Users cannot disable the “quarantine mode” or “skipJsErrors” settings from the command line (#7077).
- TestCafe incorrectly processes exceptions of types other than
Error
(#7627). - TestCafe does not consistently execute the
t.pressKey
action in Mozilla Firefox. Attempts to press the “backspace” key and the “tab” key, among others, may fail. (#7623) - When TestCafe runs in Native Automation mode, it incorrectly executes some instances of the
t.request
method. (#7609) - The TestCafe proxy incorrectly processes private class properties in client-side scripts, which leads to page load failure (#7632, PR by @sorin-davidoi).