Releases: DevExpress/testcafe
v3.1.0-rc.2
What's Changed
- fix: remove extra metadata type by @Artem-Babich in #7839
- partial fix for the GH-7832 issue by @miherlosev in #7841
- fix: durationMs value is incorrect for skipped tests(closes #7731) by @Artem-Babich in #7842
- github-actions: move safari tests on the github host by @Aleksey28 in #7847
- github-actions: added running remote tests via the github host by @Aleksey28 in #7855
- fix cookie filtering in Native Automation, fix httpOnly (closes #7798, #7793) by @AlexKamaev in #7844
- fix 'Unhandled promise rejection at NativeAutomationRequestPipeline._getRequestOptionsModifiedByRequestHook' by @miherlosev in #7856
- fix: title node textContent returns incorrect value in native automation mode(closes #7833) by @Artem-Babich in #7840
- fix: fixed regression on basic http authentication by @Aleksey28 in #7859
- test: fixed blinking multiple test by @Aleksey28 in #7858
- skip flaky gh-856 test by @AlexKamaev in #7830
- test: fixed tests for mobile safari by @Aleksey28 in #7869
- fix: duration is calculated incorrectly in concurrency mode(closes #1816) by @Artem-Babich in #7872
- feat: add testcafe version logging, add version export(closes #6591) by @Artem-Babich in #7850
- feat: add possibility to handle access geolocation dialog(closes #3224) by @Artem-Babich in #7791
- fix: added pressure for click in NA by @Aleksey28 in #7876
- fix 'Local storage is cleared on every t.navigateTo in Safari' by @miherlosev in #7873
- fix: bump hammerhead version to 31.4.11 by @aleks-pro in #7879
- fix the
Session with given id not found
(closes #7865, #7810) by @AlexKamaev in #7875 - release: updated release (v3.1.0-rc.1) by @Aleksey28 in #7882
- fix: support custom geolocation dialog mocks by @Artem-Babich in #7889
- release: updated version (3.1.0-rc.2) by @Aleksey28 in #7893
Full Changelog: v3.0.1...v3.1.0-rc.2
v3.0.1
v3.0.1 (2023-06-29)
Bug fixes
v3.0.0
Introducing TestCafe v3.0.0
This major update includes two breaking changes:
- TestCafe v3.0.0 uses native CDP automation to run tests in Chromium-based browsers.
- TestCafe v3.0.0 removes support for Internet Explorer.
Other changes include:
- You can now access test and fixture data in hooks.
- You can now dismiss the
print
dialog with the native dialog handler.
Native automation
TestCafe v2.5.0 introduced an experimental mode that allows users to automate Chromium-based browsers, such as Google Chrome and Microsoft Edge, with the native CDP protocol. TestCafe v3.0.0 and up enables this capability out of the box.
Native automation increases test quality, stability, and speed.
- Read the "TestCafe goes native" announcement for more information on the benefits of the new approach.
- Read the Native Automation FAQ for more information on the practical aspects of this capability.
Access Test and Fixture data in hooks
You can now access the following data in fixture hooks (fixture.before
, fixture.after
) :
- Fixture name
- Fixture metadata
- Fixture path
Test hooks (fixture.beforeEach
, fixture.afterEach
, test.before
, test.after
) can access fixture data and the following test data:
- Test name
- Test metadata
fixture `Example Fixture`
.page `http://example.com`
.meta({ fixtureMeta: 'v' })
.before( async (ctx, info) => {
const fixtureName = info.name; /* Example Fixture */
const fixtureMeta = info.meta; /* { fixtureMeta: 'v' } */
const fixturePath = info.path /* /Users/dan/testcafe/fixture.js */
});
.beforeEach( async t => {
const fixtureName = t.fixture.name; /* Example Fixture */
const fixtureMeta = t.fixture.meta; /* { fixtureMeta: 'v' } */
const fixturePath = t.fixture.path /* /Users/dan/testcafe/fixture.js */
const testName = t.test.name; /* MyTest */
const testMeta = t.test.meta; /* { 'key': 'value' } */
})
Read the Hooks guide for more information.
Dismiss the print dialog
You can now use the t.setNativeDialogHandler method to dismiss the print dialog.
Removed: Internet Explorer support
TestCafe v3.0.0 removes support for Internet Explorer 11, six months after the browser's official retirement. The browser came out more than 9 years ago, and has a worldwide market of less than 0.5%. It is survived by Edge, a popular Chromium-based browser that ships with modern versions of Windows.
Bug fixes
- Some client functions yield a fatal error when the test navigates to a new page or removes an iframe (#7707).
- TestCafe fails to correctly modify certain request headers when it uses native automation (#7748).
- A bug in the CDP protocol causes TestCafe to incorrectly process request hooks (#7743).
- TestCafe outputs a vague error message if the framework fails to read or process the configuration file (#7208, #6437).
- TestCafe cannot select content with the "Ctrl+A" shortcut when the framework uses native automation (#7667).
- The Monaco editor does not display code completion hints when TestCafe automates it with CDP #7770.
v3.0.0-rc.2
What’s Changed
- release: updated version (3.0.0-rc.2) (#7806) @Aleksey28
- fix: unexpected error is thrown if config file imports non-existing module (#7803) @Artem-Babich
- fix: meta typings regression (#7804) @Artem-Babich
- Native automation: trim BOM + test + update HH (closes #7783) (#7785) @AlexKamaev
- build: updated HH (#7796) @Aleksey28
- ensure status code is Number (closes #7787) (#7788) @AlexKamaev
- fix typo in tests (#7789) @AlexKamaev
- add missing functional tests for #7770 and #7640 (#7778) @AlexKamaev
- remove dashboard leftovers (#7775) @miherlosev
- fix: native print dialog is not handled(closes #2331) (#7769) @Artem-Babich
- release: updated version (3.0.0-rc.1) (#7776) @Aleksey28
- error message fixes, comment fixes (#7772) @titerman
- fix monaco editor issue (#closes 7770) (#7773) @AlexKamaev
- fix unstable client scripts test on remote browsers (#7771) @miherlosev
- fix:
sellectaAll
command added toctrl+a
combination in NA mode (#7767) @aleks-pro - feat: add test and fixture info to the TestController object and fixture hooks(closes #2826) (#7736) @Artem-Babich
- refactor: remove unused code from onBeforeWrite hook and remove context binding(closes testcafe-private#196) (#7737) @Artem-Babich
- fix: throw error and provide original error details to read/parse config errors and attach reporter error(closes #7208, #6437) (#7759) @Artem-Babich
- Native automation: fix incorrect headers logging (closes #7764) (#7763) @AlexKamaev
- github-actions: moved testing on the edge to the github-host (#7768) @Aleksey28
- experimental debug mode: remove leftovers (part 2) (#7762) @miherlosev
- fix 'Unhandled promise Rejection: Error: Invalid InterceptionId' (#7760) @miherlosev
- native automation: run by default (#7677) (#7750) @Aleksey28
- Native Automation: fix headers modifying in request hooks (#7754) @AlexKamaev
- fix 'Testcafe crashes if driver status result is null' (#7757) @miherlosev
- experimental debug mode: remove leftovers (#7749) @miherlosev
- native automation: fix undefined of reqOpts (#7738) @AlexKamaev
- native automation: skip failing test (#7745) @AlexKamaev
v3.0.0-rc.1
What’s Changed
- release: updated version (3.0.0-rc.1) (#7776) @Aleksey28
- error message fixes, comment fixes (#7772) @titerman
- fix monaco editor issue (#closes 7770) (#7773) @AlexKamaev
- fix unstable client scripts test on remote browsers (#7771) @miherlosev
- fix:
sellectaAll
command added toctrl+a
combination in NA mode (#7767) @aleks-pro - feat: add test and fixture info to the TestController object and fixture hooks(closes #2826) (#7736) @Artem-Babich
- refactor: remove unused code from onBeforeWrite hook and remove context binding(closes testcafe-private#196) (#7737) @Artem-Babich
- fix: throw error and provide original error details to read/parse config errors and attach reporter error(closes #7208, #6437) (#7759) @Artem-Babich
- Native automation: fix incorrect headers logging (closes #7764) (#7763) @AlexKamaev
- github-actions: moved testing on the edge to the github-host (#7768) @Aleksey28
- experimental debug mode: remove leftovers (part 2) (#7762) @miherlosev
- fix 'Unhandled promise Rejection: Error: Invalid InterceptionId' (#7760) @miherlosev
- native automation: run by default (#7677) (#7750) @Aleksey28
- Native Automation: fix headers modifying in request hooks (#7754) @AlexKamaev
- fix 'Testcafe crashes if driver status result is null' (#7757) @miherlosev
- experimental debug mode: remove leftovers (#7749) @miherlosev
- native automation: fix undefined of reqOpts (#7738) @AlexKamaev
- native automation: skip failing test (#7745) @AlexKamaev
v2.6.2
v2.6.2-rc.1
What’s Changed
- release: updated version (2.6.2-rc.1) and HH (#7744) @Aleksey28
- fix: keyPress with space doesn't change the checkbox state(closes #6969) (#7729) @Artem-Babich
- native automation: fix youtube.com hanging after redirects (#7727) @AlexKamaev
v2.6.1
TestCafe v2.6.1 Released
TestCafe v2.6.1 retires Experimental Debug mode, and introduces a number of important bug fixes.
Removed: Experimental debug mode
TestCafe v1.18.0 introduced Experimental Debug mode --- a way to debug Selectors and Client Functions in the text editor. TestCafe v2.4.0 shipped with the Visual Selector Debugger, which allows users to troubleshoot Selector queries directly in the browser.
The two capabilities serve the same purpose, but the Visual Selector Debugger is more user-friendly. As such, beginning with TestCafe v2.6.1, the framework no longer includes Experimental Debug mode. Thank you to all the TestCafe users who tried out the capability.
Bug fixes
- When TestCafe runs in Native Automation mode, Request Hooks yield an error (#7683).
- When TestCafe runs in Native Automation mode, the framework incorrectly processes pages with the pound sign ("#") in the URL (#7652).
- TestCafe incorrectly handles XHR headers in Native Automation mode (#7664, #7686, #7645).
- TestCafe reports an incorrect browser alias when it runs tests in Microsoft Edge (#7647).
- TestCafe fails to intercept all HTTP requests when it runs in Native Automation mode. (#7640).
- TestCafe cannot resize browser windows in the latest version of Chrome for macOS (#7684).
- TestCafe incorrectly processes client-side styles, causing slowdowns and errors (#6726, #6747).
- TestCafe crashes when you use the TestCafe Test Runner API to launch multiple tests simultaneously (#7711).
v2.6.1-rc.1
What’s Changed
- build: updated testcafe-browser-tools (#7720) @Aleksey28
- fix: TestCafe Studio recorder stops working after a request hook is added (#7721) @Dmitry-Ostashev
- remove hack for the docker server tests (#7722) @miherlosev
- fix 'Error creating multiple test runnres at the same time' close (#7711) (#7717) @miherlosev
- attempt to fix missing requests (#7640) (#7712) @AlexKamaev
- remove dashboard related code (#7708) @miherlosev
- fix 'Incorrect browser alias is displayed while running Edge in headless mode' (close #7647) (#7705) @miherlosev
- test: added xhr tests (#7702) @Aleksey28
- fix: Native automation - Do not generate a char for hotkey combinations (closes #7680) (#7690) @Dmitry-Ostashev
- github-actions: upgraded remote workflows (#7703) @Aleksey28
- fix: Native Automation - Support modifier keys for the hover action (closes #7676) (#7699) @Dmitry-Ostashev
- fix: fixed hanging in NA if url has hash (#7698) @Aleksey28
- build: change timeouts for remote tests (#7701) @Aleksey28
- fix serviceWorker with native automation (closes #7675) (#7689) @AlexKamaev
- fix 'Unhandled promise rejection in NativeAutomationRequestHookEventProvider.onResponse' (#7692) @miherlosev
- remove dashboard integration wizard and tests for it. (#7682) @miherlosev
- Remove the '--experimental-debug' feature (#7681) @miherlosev
v2.6.0
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.
meta-readmore
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).