DevExpress/testcafe
### [`v0.23.2`](https://renovatebot.com/gh/DevExpress/testcafe/blob/master/CHANGELOG.md#v0232-2018-11-12)
[Compare Source](https://renovatebot.com/gh/DevExpress/testcafe/compare/v0.23.1...v0.23.2)
##### Bug Fixes
- TestCafe no longer posts internal messages to the browser console ([#3099](https://renovatebot.com/gh/DevExpress/testcafe/issues/3099))
- The TestCafe process no longer terminates before the report is written to a file ([#2502](https://renovatebot.com/gh/DevExpress/testcafe/issues/2502))
### [`v0.23.1`](https://renovatebot.com/gh/DevExpress/testcafe/blob/master/CHANGELOG.md#v0231-2018-11-7)
[Compare Source](https://renovatebot.com/gh/DevExpress/testcafe/compare/v0.23.0...v0.23.1)
##### Enhancements
##### :gear: Select Tests and Fixtures to Run by Their Metadata ([#2527](https://renovatebot.com/gh/DevExpress/testcafe/issues/2527)) by [@NickCis](https://renovatebot.com/gh/NickCis)
You can now run only those tests or fixtures whose [metadata](https://devexpress.github.io/testcafe/documentation/test-api/test-code-structure.html#specifying-testing-metadata) contains a specific set of values.
Use the [--test-meta](https://devexpress.github.io/testcafe/documentation/using-testcafe/command-line-interface.html#--test-meta-keyvaluekey2value2) flag to specify values to look for in test metadata.
```sh
testcafe chrome my-tests --test-meta device=mobile,env=production
```
To select fixtures by their metadata, use the [--fixture-meta](https://devexpress.github.io/testcafe/documentation/using-testcafe/command-line-interface.html#--fixture-meta-keyvaluekey2value2) flag.
```sh
testcafe chrome my-tests --fixture-meta subsystem=payments,type=regression
```
In the API, test and fixture metadata is now passed to the [runner.filter](https://devexpress.github.io/testcafe/documentation/using-testcafe/programming-interface/runner.html#filter) method in the `testMeta` and `fixtureMeta` parameters. Use this metadata to decide whether to run the current test.
```js
runner.filter((testName, fixtureName, fixturePath, testMeta, fixtureMeta) => {
return testMeta.mobile === 'true' &&
fixtureMeta.env === 'staging';
});
```
##### :gear: Run Dynamically Loaded Tests ([#2074](https://renovatebot.com/gh/DevExpress/testcafe/issues/2074))
You can now run tests imported from external libraries or generated dynamically even if the `.js` file you provide to TestCafe does not contain any tests.
Previously, this was not possible because TestCafe required test files to contain the [fixture](https://devexpress.github.io/testcafe/documentation/test-api/test-code-structure.html#fixtures) and [test](https://devexpress.github.io/testcafe/documentation/test-api/test-code-structure.html#tests) directives. Now you can bypass this check. To do this, provide the [--disable-test-syntax-validation](https://devexpress.github.io/testcafe/documentation/using-testcafe/command-line-interface.html#--disable-test-syntax-validation) command line flag.
```sh
testcafe safari test.js --disable-test-syntax-validation
```
In the API, use the [disableTestSyntaxValidation](https://devexpress.github.io/testcafe/documentation/using-testcafe/programming-interface/runner.html#run) option.
```js
runner.run({ disableTestSyntaxValidation: true })
```
##### Bug Fixes
- Touch events are now simulated with correct touch properties (`touches`, `targetTouches`, `changedTouches`) ([#2856](https://renovatebot.com/gh/DevExpress/testcafe/issues/2856))
- Google Chrome now closes correctly on macOS after tests are finished ([#2860](https://renovatebot.com/gh/DevExpress/testcafe/issues/2860))
- Internal attribute and node changes no longer provoke `MutationObserver` notifications ([testcafe-hammerhead/#1769](https://renovatebot.com/gh/DevExpress/testcafe-hammerhead/issues/1769))
- The `ECONNABORTED` error is no longer raised ([testcafe-hammerhead/#1744](https://renovatebot.com/gh/DevExpress/testcafe-hammerhead/issues/1744))
- Websites that use `Location.ancestorOrigins` are now proxied correctly ([testcafe-hammerhead/#1342](https://renovatebot.com/gh/DevExpress/testcafe-hammerhead/issues/1342))
### [`v0.23.0`](https://renovatebot.com/gh/DevExpress/testcafe/blob/master/CHANGELOG.md#v0230-2018-10-25)
[Compare Source](https://renovatebot.com/gh/DevExpress/testcafe/compare/v0.22.0...v0.23.0)
##### Enhancements
##### :gear: Stop Test Run After the First Test Fail ([#1323](https://renovatebot.com/gh/DevExpress/testcafe/issues/1323))
You can now configure TestCafe to stop the entire test run after the first test fail. This saves your time when you fix problems with your tests one by one.
Specify the [--sf](https://devexpress.github.io/testcafe/documentation/using-testcafe/command-line-interface.html#--sf---stop-on-first-fail) flag to enable this feature when you run tests from the command line.
```sh
testcafe chrome my-tests --sf
```
In the API, use the [stopOnFirstFail](https://devexpress.github.io/testcafe/documentation/using-testcafe/programming-interface/runner.html#run) option.
```js
runner.run({ stopOnFirstFail: true })
```
##### :gear: View the JavaScript Errors' Stack Traces in Reports ([#2043](https://renovatebot.com/gh/DevExpress/testcafe/issues/2043))
Now when a JavaScript error occurs on the tested webpage, the test run report includes a stack trace for this error (only if the [--skip-js-errors](https://devexpress.github.io/testcafe/documentation/using-testcafe/command-line-interface.html#-e---skip-js-errors) option is disabled).
![A report that contains a stack trace for a client JS error](docs/articles/images/client-error-stack-report.png)
##### :gear: Browsers are Automatically Restarted When They Stop Responding ([#1815](https://renovatebot.com/gh/DevExpress/testcafe/issues/1815))
If a browser stops responding while it executes tests, TestCafe restarts the browser and reruns the current test in a new browser instance.
If the same problem occurs with this test two more times, the test run finishes and an error is thrown.
##### Bug Fixes
- An error message about an unawaited call to an async function is no longer displayed when an uncaught error occurs ([#2557](https://renovatebot.com/gh/DevExpress/testcafe/issues/2557))
- A request hook is no longer added multiple times when a filter rule is used ([#2650](https://renovatebot.com/gh/DevExpress/testcafe/issues/2650))
- Screenshot links in test run reports now contain paths specified by the `--screenshot-pattern` option ([#2726](https://renovatebot.com/gh/DevExpress/testcafe/issues/2726))
- Assertion chains no longer produce unhandled promise rejections ([#2852](https://renovatebot.com/gh/DevExpress/testcafe/issues/2852))
- The `moment` loader now works correctly in the Jest environment ([#2500](https://renovatebot.com/gh/DevExpress/testcafe/issues/2500))
- TestCafe no longer hangs if the screenshot directory contains forbidden symbols ([#681](https://renovatebot.com/gh/DevExpress/testcafe/issues/681))
- The `--ssl` option's parameters are now parsed correctly ([#2924](https://renovatebot.com/gh/DevExpress/testcafe/issues/2924))
- TestCafe now throws a meaningful error if an assertion method is missing ([#1063](https://renovatebot.com/gh/DevExpress/testcafe/issues/1063))
- TestCafe no longer hangs when it clicks a custom element ([#2861](https://renovatebot.com/gh/DevExpress/testcafe/issues/2861))
- TestCafe now performs keyboard navigation between radio buttons/groups in a way that matches the native browser behavior ([#2067](https://renovatebot.com/gh/DevExpress/testcafe/issues/2067), [#2045](https://renovatebot.com/gh/DevExpress/testcafe/issues/2045))
- The `fetch` method can now be used with data URLs ([#2865](https://renovatebot.com/gh/DevExpress/testcafe/issues/2865))
- The `switchToIframe` function no longer throws an error ([#2956](https://renovatebot.com/gh/DevExpress/testcafe/issues/2956))
- TestCafe can now scroll through fixed elements when the action has custom offsets ([#2978](https://renovatebot.com/gh/DevExpress/testcafe/issues/2978))
- You can now specify the current directory or its parent directories as the base path to store screenshots ([#2975](https://renovatebot.com/gh/DevExpress/testcafe/issues/2975))
- Tests no longer hang up when you try to debug in headless browsers ([#2846](https://renovatebot.com/gh/DevExpress/testcafe/issues/2846))
- The `removeEventListener` function now works correctly when an object is passed as its third argument ([testcafe-hammerhead/#1737](https://renovatebot.com/gh/DevExpress/testcafe-hammerhead/issues/1737))
- Hammerhead no longer adds the `event` property to a null `contentWindow` in IE11 ([testcafe-hammerhead/#1684](https://renovatebot.com/gh/DevExpress/testcafe-hammerhead/issues/1684))
- The browser no longer resets connection with the server for no reason ([testcafe-hammerhead/#1647](https://renovatebot.com/gh/DevExpress/testcafe-hammerhead/issues/1647))
- Hammerhead now stringifies values correctly before outputting them to the console ([testcafe-hammerhead/#1750](https://renovatebot.com/gh/DevExpress/testcafe-hammerhead/issues/1750))
- A document fragment from the top window can now be correctly appended to an iframe ([testcafe-hammerhead/#912](https://renovatebot.com/gh/DevExpress/testcafe-hammerhead/issues/912))
- Lifecycle callbacks that result from the `document.registerElement` method are no longer called twice ([testcafe-hammerhead/#695](https://renovatebot.com/gh/DevExpress/testcafe-hammerhead/issues/695))
### [`v0.22.0`](https://renovatebot.com/gh/DevExpress/testcafe/blob/master/CHANGELOG.md#v0220-2018-9-3)
[Compare Source](https://renovatebot.com/gh/DevExpress/testcafe/compare/v0.21.1...v0.22.0)
##### Enhancements
##### :gear: CoffeeScript Support ([#1556](https://renovatebot.com/gh/DevExpress/testcafe/issues/1556)) by [@GeoffreyBooth](https://renovatebot.com/gh/GeoffreyBooth)
TestCafe now allows you to write tests in CoffeeScript. You do not need to compile CoffeeScript manually or make any customizations - everything works out of the box.
```coffee
import { Selector } from 'testcafe'
fixture 'CoffeeScript Example'
.page 'https://devexpress.github.io/testcafe/example/'
nameInput = Selector '#developer-name'
test 'Test', (t) =>
await t
.typeText(nameInput, 'Peter')
.typeText(nameInput, 'Paker', { replace: true })
.typeText(nameInput, 'r', { caretPos: 2 })
.expect(nameInput.value).eql 'Parker';
```
##### :gear: Failed Selector Method Pinpointed in the Report ([#2568](https://renovatebot.com/gh/DevExpress/testcafe/issues/2568))
Now the test run report can identify which selector's method does not match any DOM element.
![Failed Selector Report](docs/articles/images/failed-selector-report.png)
##### :gear: Fail on Uncaught Server Errors ([#2546](https://renovatebot.com/gh/DevExpress/testcafe/issues/2546))
Previously, TestCafe ignored uncaught errors and unhandled promise rejections that occurred on the server. Whenever an error or a promise rejection happened, test execution continued.
Starting from v0.22.0, tests fail if a server error or promise rejection is unhandled. To return to the previous behavior, we have introduced the `skipUncaughtErrors` option. Use the [--skip-uncaught-errors](https://devexpress.github.io/testcafe/documentation/using-testcafe/command-line-interface.html#-u---skip-uncaught-errors) flag in the command line or the [skipUncaughtErrors](https://devexpress.github.io/testcafe/documentation/using-testcafe/programming-interface/runner.html#run) option in the API.
```sh
testcafe chrome tests/fixture.js --skipUncaughtErrors
```
```js
runner.run({skipUncaughtErrors:true})
```
##### :gear: Use Glob Patterns in `runner.src` ([#980](https://renovatebot.com/gh/DevExpress/testcafe/issues/980))
You can now use [glob patterns](https://renovatebot.com/gh/isaacs/node-glob#glob-primer) in the [runner.src](https://devexpress.github.io/testcafe/documentation/using-testcafe/programming-interface/runner.html#src) method to specify a set of test files.
```js
runner.src(['/home/user/tests/**/*.js', '!/home/user/tests/foo.js']);
```
##### Bug Fixes
- `RequestLogger` no longer fails when it tries to stringify a null request body ([#2718](https://renovatebot.com/gh/DevExpress/testcafe/issues/2718))
- Temporary directories are now correctly removed when the test run is finished ([#2735](https://renovatebot.com/gh/DevExpress/testcafe/issues/2735))
- TestCafe no longer throws `ECONNRESET` when run against a Webpack project ([#2711](https://renovatebot.com/gh/DevExpress/testcafe/issues/2711))
- An error is no longer thrown when TestCafe tests Sencha ExtJS applications in IE11 ([#2639](https://renovatebot.com/gh/DevExpress/testcafe/issues/2639))
- Firefox no longer waits for page elements to appear without necessity ([#2080](https://renovatebot.com/gh/DevExpress/testcafe/issues/2080))
- `${BROWSER}` in the screenshot pattern now correctly resolves to the browser name ([#2742](https://renovatebot.com/gh/DevExpress/testcafe/issues/2742))
- The `toString` function now returns a native string for overridden descriptor ancestors ([testcafe-hammerhead/#1713](https://renovatebot.com/gh/DevExpress/testcafe-hammerhead/issues/1713))
- The `iframe` flag is no longer added when a form with `target="_parent"` is submitted ([testcafe-hammerhead/#1680](https://renovatebot.com/gh/DevExpress/testcafe-hammerhead/issues/1680))
- Hammerhead no longer sends request headers in lower case ([testcafe-hammerhead/#1380](https://renovatebot.com/gh/DevExpress/testcafe-hammerhead/issues/1380))
- The overridden `createHTMLDocument` method has the right context now ([testcafe-hammerhead/#1722](https://renovatebot.com/gh/DevExpress/testcafe-hammerhead/issues/1722))
- Tests no longer lose connection ([testcafe-hammerhead/#1647](https://renovatebot.com/gh/DevExpress/testcafe-hammerhead/issues/1647))
- The case when both the `X-Frame-Options` header and a CSP with `frame-ancestors` are set is now handled correctly ([testcafe-hammerhead/#1666](https://renovatebot.com/gh/DevExpress/testcafe-hammerhead/issues/1666))
- The mechanism that resolves URLs on the client now works correctly ([testcafe-hammerhead/#1701](https://renovatebot.com/gh/DevExpress/testcafe-hammerhead/issues/1701))
- `LiveNodeListWrapper` now imitates the native behavior correctly ([testcafe-hammerhead/#1376](https://renovatebot.com/gh/DevExpress/testcafe-hammerhead/issues/1376))
Renovate configuration
:date: Schedule: "on saturday" (UTC).
:vertical_traffic_light: Automerge: Enabled.
:recycle: Rebasing: Whenever PR becomes conflicted, or if you modify the PR title to begin with "rebase!".
:no_bell: Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Renovate Bot. View repository job log here.
This PR contains the following updates:
^0.21.1
->^0.23.2
Release Notes
DevExpress/testcafe
### [`v0.23.2`](https://renovatebot.com/gh/DevExpress/testcafe/blob/master/CHANGELOG.md#v0232-2018-11-12) [Compare Source](https://renovatebot.com/gh/DevExpress/testcafe/compare/v0.23.1...v0.23.2) ##### Bug Fixes - TestCafe no longer posts internal messages to the browser console ([#3099](https://renovatebot.com/gh/DevExpress/testcafe/issues/3099)) - The TestCafe process no longer terminates before the report is written to a file ([#2502](https://renovatebot.com/gh/DevExpress/testcafe/issues/2502)) ### [`v0.23.1`](https://renovatebot.com/gh/DevExpress/testcafe/blob/master/CHANGELOG.md#v0231-2018-11-7) [Compare Source](https://renovatebot.com/gh/DevExpress/testcafe/compare/v0.23.0...v0.23.1) ##### Enhancements ##### :gear: Select Tests and Fixtures to Run by Their Metadata ([#2527](https://renovatebot.com/gh/DevExpress/testcafe/issues/2527)) by [@NickCis](https://renovatebot.com/gh/NickCis) You can now run only those tests or fixtures whose [metadata](https://devexpress.github.io/testcafe/documentation/test-api/test-code-structure.html#specifying-testing-metadata) contains a specific set of values. Use the [--test-meta](https://devexpress.github.io/testcafe/documentation/using-testcafe/command-line-interface.html#--test-meta-keyvaluekey2value2) flag to specify values to look for in test metadata. ```sh testcafe chrome my-tests --test-meta device=mobile,env=production ``` To select fixtures by their metadata, use the [--fixture-meta](https://devexpress.github.io/testcafe/documentation/using-testcafe/command-line-interface.html#--fixture-meta-keyvaluekey2value2) flag. ```sh testcafe chrome my-tests --fixture-meta subsystem=payments,type=regression ``` In the API, test and fixture metadata is now passed to the [runner.filter](https://devexpress.github.io/testcafe/documentation/using-testcafe/programming-interface/runner.html#filter) method in the `testMeta` and `fixtureMeta` parameters. Use this metadata to decide whether to run the current test. ```js runner.filter((testName, fixtureName, fixturePath, testMeta, fixtureMeta) => { return testMeta.mobile === 'true' && fixtureMeta.env === 'staging'; }); ``` ##### :gear: Run Dynamically Loaded Tests ([#2074](https://renovatebot.com/gh/DevExpress/testcafe/issues/2074)) You can now run tests imported from external libraries or generated dynamically even if the `.js` file you provide to TestCafe does not contain any tests. Previously, this was not possible because TestCafe required test files to contain the [fixture](https://devexpress.github.io/testcafe/documentation/test-api/test-code-structure.html#fixtures) and [test](https://devexpress.github.io/testcafe/documentation/test-api/test-code-structure.html#tests) directives. Now you can bypass this check. To do this, provide the [--disable-test-syntax-validation](https://devexpress.github.io/testcafe/documentation/using-testcafe/command-line-interface.html#--disable-test-syntax-validation) command line flag. ```sh testcafe safari test.js --disable-test-syntax-validation ``` In the API, use the [disableTestSyntaxValidation](https://devexpress.github.io/testcafe/documentation/using-testcafe/programming-interface/runner.html#run) option. ```js runner.run({ disableTestSyntaxValidation: true }) ``` ##### Bug Fixes - Touch events are now simulated with correct touch properties (`touches`, `targetTouches`, `changedTouches`) ([#2856](https://renovatebot.com/gh/DevExpress/testcafe/issues/2856)) - Google Chrome now closes correctly on macOS after tests are finished ([#2860](https://renovatebot.com/gh/DevExpress/testcafe/issues/2860)) - Internal attribute and node changes no longer provoke `MutationObserver` notifications ([testcafe-hammerhead/#1769](https://renovatebot.com/gh/DevExpress/testcafe-hammerhead/issues/1769)) - The `ECONNABORTED` error is no longer raised ([testcafe-hammerhead/#1744](https://renovatebot.com/gh/DevExpress/testcafe-hammerhead/issues/1744)) - Websites that use `Location.ancestorOrigins` are now proxied correctly ([testcafe-hammerhead/#1342](https://renovatebot.com/gh/DevExpress/testcafe-hammerhead/issues/1342)) ### [`v0.23.0`](https://renovatebot.com/gh/DevExpress/testcafe/blob/master/CHANGELOG.md#v0230-2018-10-25) [Compare Source](https://renovatebot.com/gh/DevExpress/testcafe/compare/v0.22.0...v0.23.0) ##### Enhancements ##### :gear: Stop Test Run After the First Test Fail ([#1323](https://renovatebot.com/gh/DevExpress/testcafe/issues/1323)) You can now configure TestCafe to stop the entire test run after the first test fail. This saves your time when you fix problems with your tests one by one. Specify the [--sf](https://devexpress.github.io/testcafe/documentation/using-testcafe/command-line-interface.html#--sf---stop-on-first-fail) flag to enable this feature when you run tests from the command line. ```sh testcafe chrome my-tests --sf ``` In the API, use the [stopOnFirstFail](https://devexpress.github.io/testcafe/documentation/using-testcafe/programming-interface/runner.html#run) option. ```js runner.run({ stopOnFirstFail: true }) ``` ##### :gear: View the JavaScript Errors' Stack Traces in Reports ([#2043](https://renovatebot.com/gh/DevExpress/testcafe/issues/2043)) Now when a JavaScript error occurs on the tested webpage, the test run report includes a stack trace for this error (only if the [--skip-js-errors](https://devexpress.github.io/testcafe/documentation/using-testcafe/command-line-interface.html#-e---skip-js-errors) option is disabled). ![A report that contains a stack trace for a client JS error](docs/articles/images/client-error-stack-report.png) ##### :gear: Browsers are Automatically Restarted When They Stop Responding ([#1815](https://renovatebot.com/gh/DevExpress/testcafe/issues/1815)) If a browser stops responding while it executes tests, TestCafe restarts the browser and reruns the current test in a new browser instance. If the same problem occurs with this test two more times, the test run finishes and an error is thrown. ##### Bug Fixes - An error message about an unawaited call to an async function is no longer displayed when an uncaught error occurs ([#2557](https://renovatebot.com/gh/DevExpress/testcafe/issues/2557)) - A request hook is no longer added multiple times when a filter rule is used ([#2650](https://renovatebot.com/gh/DevExpress/testcafe/issues/2650)) - Screenshot links in test run reports now contain paths specified by the `--screenshot-pattern` option ([#2726](https://renovatebot.com/gh/DevExpress/testcafe/issues/2726)) - Assertion chains no longer produce unhandled promise rejections ([#2852](https://renovatebot.com/gh/DevExpress/testcafe/issues/2852)) - The `moment` loader now works correctly in the Jest environment ([#2500](https://renovatebot.com/gh/DevExpress/testcafe/issues/2500)) - TestCafe no longer hangs if the screenshot directory contains forbidden symbols ([#681](https://renovatebot.com/gh/DevExpress/testcafe/issues/681)) - The `--ssl` option's parameters are now parsed correctly ([#2924](https://renovatebot.com/gh/DevExpress/testcafe/issues/2924)) - TestCafe now throws a meaningful error if an assertion method is missing ([#1063](https://renovatebot.com/gh/DevExpress/testcafe/issues/1063)) - TestCafe no longer hangs when it clicks a custom element ([#2861](https://renovatebot.com/gh/DevExpress/testcafe/issues/2861)) - TestCafe now performs keyboard navigation between radio buttons/groups in a way that matches the native browser behavior ([#2067](https://renovatebot.com/gh/DevExpress/testcafe/issues/2067), [#2045](https://renovatebot.com/gh/DevExpress/testcafe/issues/2045)) - The `fetch` method can now be used with data URLs ([#2865](https://renovatebot.com/gh/DevExpress/testcafe/issues/2865)) - The `switchToIframe` function no longer throws an error ([#2956](https://renovatebot.com/gh/DevExpress/testcafe/issues/2956)) - TestCafe can now scroll through fixed elements when the action has custom offsets ([#2978](https://renovatebot.com/gh/DevExpress/testcafe/issues/2978)) - You can now specify the current directory or its parent directories as the base path to store screenshots ([#2975](https://renovatebot.com/gh/DevExpress/testcafe/issues/2975)) - Tests no longer hang up when you try to debug in headless browsers ([#2846](https://renovatebot.com/gh/DevExpress/testcafe/issues/2846)) - The `removeEventListener` function now works correctly when an object is passed as its third argument ([testcafe-hammerhead/#1737](https://renovatebot.com/gh/DevExpress/testcafe-hammerhead/issues/1737)) - Hammerhead no longer adds the `event` property to a null `contentWindow` in IE11 ([testcafe-hammerhead/#1684](https://renovatebot.com/gh/DevExpress/testcafe-hammerhead/issues/1684)) - The browser no longer resets connection with the server for no reason ([testcafe-hammerhead/#1647](https://renovatebot.com/gh/DevExpress/testcafe-hammerhead/issues/1647)) - Hammerhead now stringifies values correctly before outputting them to the console ([testcafe-hammerhead/#1750](https://renovatebot.com/gh/DevExpress/testcafe-hammerhead/issues/1750)) - A document fragment from the top window can now be correctly appended to an iframe ([testcafe-hammerhead/#912](https://renovatebot.com/gh/DevExpress/testcafe-hammerhead/issues/912)) - Lifecycle callbacks that result from the `document.registerElement` method are no longer called twice ([testcafe-hammerhead/#695](https://renovatebot.com/gh/DevExpress/testcafe-hammerhead/issues/695)) ### [`v0.22.0`](https://renovatebot.com/gh/DevExpress/testcafe/blob/master/CHANGELOG.md#v0220-2018-9-3) [Compare Source](https://renovatebot.com/gh/DevExpress/testcafe/compare/v0.21.1...v0.22.0) ##### Enhancements ##### :gear: CoffeeScript Support ([#1556](https://renovatebot.com/gh/DevExpress/testcafe/issues/1556)) by [@GeoffreyBooth](https://renovatebot.com/gh/GeoffreyBooth) TestCafe now allows you to write tests in CoffeeScript. You do not need to compile CoffeeScript manually or make any customizations - everything works out of the box. ```coffee import { Selector } from 'testcafe' fixture 'CoffeeScript Example' .page 'https://devexpress.github.io/testcafe/example/' nameInput = Selector '#developer-name' test 'Test', (t) => await t .typeText(nameInput, 'Peter') .typeText(nameInput, 'Paker', { replace: true }) .typeText(nameInput, 'r', { caretPos: 2 }) .expect(nameInput.value).eql 'Parker'; ``` ##### :gear: Failed Selector Method Pinpointed in the Report ([#2568](https://renovatebot.com/gh/DevExpress/testcafe/issues/2568)) Now the test run report can identify which selector's method does not match any DOM element. ![Failed Selector Report](docs/articles/images/failed-selector-report.png) ##### :gear: Fail on Uncaught Server Errors ([#2546](https://renovatebot.com/gh/DevExpress/testcafe/issues/2546)) Previously, TestCafe ignored uncaught errors and unhandled promise rejections that occurred on the server. Whenever an error or a promise rejection happened, test execution continued. Starting from v0.22.0, tests fail if a server error or promise rejection is unhandled. To return to the previous behavior, we have introduced the `skipUncaughtErrors` option. Use the [--skip-uncaught-errors](https://devexpress.github.io/testcafe/documentation/using-testcafe/command-line-interface.html#-u---skip-uncaught-errors) flag in the command line or the [skipUncaughtErrors](https://devexpress.github.io/testcafe/documentation/using-testcafe/programming-interface/runner.html#run) option in the API. ```sh testcafe chrome tests/fixture.js --skipUncaughtErrors ``` ```js runner.run({skipUncaughtErrors:true}) ``` ##### :gear: Use Glob Patterns in `runner.src` ([#980](https://renovatebot.com/gh/DevExpress/testcafe/issues/980)) You can now use [glob patterns](https://renovatebot.com/gh/isaacs/node-glob#glob-primer) in the [runner.src](https://devexpress.github.io/testcafe/documentation/using-testcafe/programming-interface/runner.html#src) method to specify a set of test files. ```js runner.src(['/home/user/tests/**/*.js', '!/home/user/tests/foo.js']); ``` ##### Bug Fixes - `RequestLogger` no longer fails when it tries to stringify a null request body ([#2718](https://renovatebot.com/gh/DevExpress/testcafe/issues/2718)) - Temporary directories are now correctly removed when the test run is finished ([#2735](https://renovatebot.com/gh/DevExpress/testcafe/issues/2735)) - TestCafe no longer throws `ECONNRESET` when run against a Webpack project ([#2711](https://renovatebot.com/gh/DevExpress/testcafe/issues/2711)) - An error is no longer thrown when TestCafe tests Sencha ExtJS applications in IE11 ([#2639](https://renovatebot.com/gh/DevExpress/testcafe/issues/2639)) - Firefox no longer waits for page elements to appear without necessity ([#2080](https://renovatebot.com/gh/DevExpress/testcafe/issues/2080)) - `${BROWSER}` in the screenshot pattern now correctly resolves to the browser name ([#2742](https://renovatebot.com/gh/DevExpress/testcafe/issues/2742)) - The `toString` function now returns a native string for overridden descriptor ancestors ([testcafe-hammerhead/#1713](https://renovatebot.com/gh/DevExpress/testcafe-hammerhead/issues/1713)) - The `iframe` flag is no longer added when a form with `target="_parent"` is submitted ([testcafe-hammerhead/#1680](https://renovatebot.com/gh/DevExpress/testcafe-hammerhead/issues/1680)) - Hammerhead no longer sends request headers in lower case ([testcafe-hammerhead/#1380](https://renovatebot.com/gh/DevExpress/testcafe-hammerhead/issues/1380)) - The overridden `createHTMLDocument` method has the right context now ([testcafe-hammerhead/#1722](https://renovatebot.com/gh/DevExpress/testcafe-hammerhead/issues/1722)) - Tests no longer lose connection ([testcafe-hammerhead/#1647](https://renovatebot.com/gh/DevExpress/testcafe-hammerhead/issues/1647)) - The case when both the `X-Frame-Options` header and a CSP with `frame-ancestors` are set is now handled correctly ([testcafe-hammerhead/#1666](https://renovatebot.com/gh/DevExpress/testcafe-hammerhead/issues/1666)) - The mechanism that resolves URLs on the client now works correctly ([testcafe-hammerhead/#1701](https://renovatebot.com/gh/DevExpress/testcafe-hammerhead/issues/1701)) - `LiveNodeListWrapper` now imitates the native behavior correctly ([testcafe-hammerhead/#1376](https://renovatebot.com/gh/DevExpress/testcafe-hammerhead/issues/1376))Renovate configuration
:date: Schedule: "on saturday" (UTC).
:vertical_traffic_light: Automerge: Enabled.
:recycle: Rebasing: Whenever PR becomes conflicted, or if you modify the PR title to begin with "
rebase!
".:no_bell: Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Renovate Bot. View repository job log here.