Skip to content

Commit

Permalink
5.0.0 Release (#2905)
Browse files Browse the repository at this point in the history
Co-authored-by: Zach Bloomquist <github@chary.us>
Co-authored-by: Jennifer Shehane <shehane.jennifer@gmail.com>
Co-authored-by: Jennifer Shehane <jennifer@cypress.io>
Co-authored-by: Renovate Bot <bot@renovateapp.com>
Co-authored-by: 丸子 <princeb4d@gmail.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Jessica Sachs <jess@jessicasachs.io>
Co-authored-by: Ben Kucera <14625260+Bkucera@users.noreply.github.com>
Co-authored-by: Laís Tomaz <41899092+laiscoolblue@users.noreply.github.com>
Co-authored-by: Chris Breiding <chrisbreiding@users.noreply.github.com>
Co-authored-by: Ben Hong <ben@bencodezen.io>
Co-authored-by: Kukhyeon Heo <sainthkh@naver.com>
Co-authored-by: Chris Breiding <chrisbreiding@gmail.com>
  • Loading branch information
13 people committed Aug 19, 2020
1 parent 156bd38 commit 55a2c1c
Show file tree
Hide file tree
Showing 45 changed files with 920 additions and 151 deletions.
2 changes: 1 addition & 1 deletion .textlintrc
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@
["craziest", "most complex"],
["dumb", "unintended"],
["insane", "outrageous"],
["blacklist", "blocklist"],
["blacklist", "block"],
["whitelist", "allow"],

// Prefer American spelling
Expand Down
2 changes: 1 addition & 1 deletion cypress.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@
"baseUrl": "http://localhost:2222",
"projectId": "ma3dkn",
"viewportWidth": 1500,
"blacklistHosts": ["trackcmp.net", "js.hs-analytics.net", "js.hs-scripts.com"]
"blockHosts": ["trackcmp.net", "js.hs-analytics.net", "js.hs-scripts.com"]
}
2 changes: 1 addition & 1 deletion gulpfile.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ const RevAll = require('gulp-rev-all')
const clean = require('gulp-clean')

const revisionOpts = {
dontGlobal: ['.ico', 'sitemap.xml', 'sitemap.xsl', 'logo.png', 'logo@2x.png'],
dontGlobal: ['.ico', 'sitemap.xml', 'sitemap.xsl', 'logo.png', 'logo@2x.png', '.mp4', '.woff', '.woff2', '.less'],
dontRenameFile: ['.html', 'CNAME'],
dontUpdateReference: ['.html'],
dontSearchFile: ['.js'],
Expand Down
16 changes: 16 additions & 0 deletions lib/tags/usage.js
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,22 @@ module.exports = function usageOptions (hexo, args) {
withinSubject: () => {
return 'Element to search for children in. If null, search begins from root-level DOM element'
},

ctrlKey: () => {
return 'Activates the control key. Aliases: <code>controlKey</code>.'
},

altKey: () => {
return 'Activates the alt key (option key for Mac). Aliases: <code>optionKey</code>.'
},

shiftKey: () => {
return 'Activates the shift key.'
},

metaKey: () => {
return 'Activates the meta key (Windows key or command key for Mac). Aliases: <code>commandKey</code>, <code>cmdKey</code>.'
},
}

const blurb = blurbs[opt]
Expand Down
3 changes: 1 addition & 2 deletions source/_changelogs/1.1.2.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,8 @@

- {% url 'Added ESLint, Docker, and TypeScript to Plugins' plugins %}
- {% url 'Added recipe for TypeScript with Browserify' recipes %}
- {% url 'Added recipe for TypeScript with Webpack' recipes %}
- {% url 'Added recipe for TypeScript with webpack' recipes %}
- {% url 'Added recipe for Direct Controlling AngularJS' recipes %}
- {% url 'Added recipe for E2E API Testing' recipes %}
- {% url 'Added more video tutorials' tutorials %}
- {% url 'Improved displaying list of Tutorials, Recipes, Applications, and Docker examples' recipes %}

73 changes: 73 additions & 0 deletions source/_changelogs/5.0.0.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
# 5.0.0

*Released 8/19/2020*

**Summary:**

Cypress now includes support for test retries! Similar to how Cypress will retry assertions when they fail, test retries will allow you to automatically retry a failed test prior to marking it as failed. Read our new guide on Test Retries for more details.

**Breaking Changes:**

**{% fa fa-exclamation-triangle red %} Please read our {% url "Migration Guide" migration-guide %} which explains the changes in more detail and how to change your code to migrate to Cypress 5.0.**

- The {% url "`cypress-plugin-retries`" https://github.com/Bkucera/cypress-plugin-retries %} plugin has been deprecated in favor of test retries built into Cypress. Addresses {% issue 1313 %}.
- The {% url "`Cypress.Cookies.defaults()`" cookies %} `whitelist` option has been renamed to `preserve` to more closely reflect its behavior. Addressed in {% issue 7782 %}.
- The `blacklistHosts` configuration has been renamed to {% url "`blockHosts`" configuration#Notes %} to more closely reflect its behavior. Addressed in {% issue 7622 %}.
- The {% url "`cy.server()`" server %} `whitelist` option has been renamed to `ignore` to more closely reflect its behavior. Addresses {% issue 6642 %}.
- `libgbm-dev` is now a requirement to run Cypress on Linux. Addressed in {% PR 7791 %}.
- Values yielded by {% url "`cy.setCookie()`" setcookie %}, {% url "`cy.getCookie()`" getcookie %}, and {% url "`cy.getCookies()`" getcookies %} will now contain the `sameSite` property if specified. Addresses {% issue 6892 %}.
- The `experimentalGetCookiesSameSite` configuration flag has been removed, since this behavior is now the default. Addresses {% issue 6892 %}.
- The return type of the {% url "`Cypress.Blob`" blob %} methods `arrayBufferToBlob`, `base64StringToBlob`, `binaryStringToBlob`, and `dataURLToBlob` have changed from `Promise<Blob>` to `Blob`. Addresses {% issue 6001 %}.
- Cypress no longer supports file paths with a question mark `?` in them. We now use the {% url "webpack preprocessor" https://github.com/cypress-io/cypress-webpack-preprocessor %} by default and it does not support files with question marks. Addressed in {% PR 7982 %}.
- For TypeScript compilation of spec, support, and plugins files, the `esModuleInterop` option is no longer coerced to `true`. If you need to utilize `esModuleInterop`, set it in your `tsconfig.json`. Addresses {% issue 7575 %}.
- Cypress now requires TypeScript 3.4+. Addressed in {% issue 7856 %}.
- Installing Cypress on your system now requires Node.js 10+. Addresses {% issue 6574 %}.
- In spec files, the values for the globals `__dirname` and `__filename` no longer include leading slashes. Addressed in {% PR 7982 %}.

**Features:**

- There's a new `retries` configuration option to configure the number of times to retry a failing test. Addresses {% issue 1313 %}.
- {% url "`.click()`" click %}, {% url "`.dblclick()`" dblclick %}, and {% url "`.rightclick()`" rightclick %} now accept options `altKey`, `ctrlKey`, `metaKey`, and `shiftKey` to hold down key combinations while clicking. Addresses {% issue 486 %}.
- You can now chain `.snapshot()` off of `cy.stub()` and `cy.spy()` to disabled snapshots during those commands. For example: `cy.stub().snapshot(false)`. Addresses {% issue 3849 %}.

**Bugfixes:**

- The error `Cannot set property 'err' of undefined` will no longer incorrectly throw when rerunning tests in the Test Runner. Fixes {% issue 7874 %} and {% issue 8193 %}.
- Cypress will no longer throw a `Cannot read property 'isAttached' of undefined` error during `cypress run` on Firefox versions >= 75. Fixes {% PR 6813 %}.
- The error `Maximum call stack size exceeded` will no longer throw when calling `scrollIntoView` on an element in the shadow dom. Fixes {% issue 7986 %}.
- Cypress {% url "environment variables" environment-variables %} that accept arrays as their value will now properly evaluate as arrays. Fixes {% issue 6810 %}.
- Elements having `display: inline` will no longer be considered hidden if it has child elements within it that are visible. Fixes {% issue 6183 %}.
- When {% url "`experimentalShadowDomSupport`" experiments %} is enabled, {% url "`.parent()`" parent %} and {% url "`.parentsUntil()`" parentsuntil %} commands now work correctly in shadow dom as well as passing a selector to {% url "`.parents()`" parents %} when the subject is in the shadow dom. Fixed in {% PR 8202 %}.
- Screenshots will now be correctly taken when a test fails in an `afterEach` or `beforeEach` hook after the hook has already passed. Fixes {% issue 3744 %}.
- Cypress will no longer report screenshots overwritten in a `cy.screenshot()` {% url "`onAfterScreenshot`" screenshot#Get-screenshot-info-from-the-onAfterScreenshot-callback %} option as a unique screenshot. Fixes {% issue 8079 %}.
- Taking screenshots will no longer fail when the screenshot names are too long for the filesystem to accept. Fixes {% issue 2403 %}.
- The "last used browser" will now be correctly remembered during `cypress open` if a non-default-channel browser was selected. Fixes {% issue 8281 %}.
- For TypeScript projects, `tsconfig.json` will now be loaded and used to configure TypeScript compilation of spec and support files. Fixes {% issue 7006 %} and {% issue 7503 %}.
- `reporterStats` now correctly show the number of passed and failed tests when a test passes but the `afterEach` fails. Fixes {% issue 7730 %}.
- The Developer Tools menu will now always display in Electron when switching focus from Specs to the Test Runner. Fixes {% PR 3559 %}.

**Documentation Changes:**

- We have a new guide on Test Retries.
- Our {% url "Migration Guide" migration-guide %} has a new section for 5.0 migration.

**Misc:**

- Cypress now uses the {% url "webpack preprocessor" https://github.com/cypress-io/cypress-webpack-preprocessor %} by default to preprocess spec files.
- The **Runs** tab within the Test Runner has a new improved design when the project has not been set up or login is required. Addressed in {% PR 8141 %}.
- The type for the `Window` object returned from {% url "`cy.window()`" window %} is now correct. Addresses {% issue 7856 %}.
- The type definition for Cypress's `ApplicationWindow` can now be extended. Addresses {% issue 7856 %}.
- The type definition for `reporterOptions` has been added. Addresses {% issue 7877 %}.

**Dependency Updates**

- Upgraded Chrome browser version used during cypress run and when selecting Electron browser in cypress open from `80` to `83`. Addressed in {% PR 7791 %}.
- Upgraded bundled Node.js version from `12.8.1` to `12.14.1`. Addressed in {% PR 7791 %}.
- Upgraded `chalk` from `2.4.2` to `4.1.0`. Addressed in {% PR 7650 %}.
- Upgraded `cli-table3` from `0.5.1` to `0.6.0`. Addressed in {% PR 7650 %}.
- Upgraded `electron` from `8.3.1` to `9.2.0`. Addressed in {% PR 7791 %} and {% PR 8235 %}.
- Upgraded `execa` from `1.0.0` to `4.0.2`. Addressed in {% PR 7650 %}.
- Upgraded `express` from `4.16.4` to `4.17.1`. Addressed in {% PR 8179 %}.
- Upgraded `fs-extra` from `8.1.0` to `9.0.1`. Addressed in {% PR 7650 %}.
- Upgraded `log-symbols` from `3.0.0` to `4.0.0`. Addressed in {% PR 7650 %}.
- Upgraded `tmp` from `0.1.0` to `0.2.1`. Addressed in {% PR 7650 %}.
1 change: 1 addition & 0 deletions source/_data/sidebar.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ guides:
module-api: module-api.html
debugging: debugging.html
network-requests: network-requests.html
test-retries: test-retries.html
continuous-integration: continuous-integration.html
parallelization: parallelization.html
environment-variables: environment-variables.html
Expand Down
1 change: 1 addition & 0 deletions source/_partial/allowed_test_config.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
- `env`
- `requestTimeout`
- `responseTimeout`
- `retries`
- `viewportHeight`
- `viewportWidth`
- `waitForAnimations`
8 changes: 4 additions & 4 deletions source/_partial/linux_dependencies.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
#### Ubuntu/Debian

```shell
apt-get install libgtk2.0-0 libgtk-3-0 libnotify-dev libgconf-2-4 libnss3 libxss1
libasound2 libxtst6 xauth xvfb
apt-get install libgtk2.0-0 libgtk-3-0 libgbm-dev libnotify-dev libgconf-2-4
libnss3 libxss1 libasound2 libxtst6 xauth xvfb
```

#### CentOS

```shell
yum install -y xorg-x11-server-Xvfb gtk2-devel gtk3-devel libnotify-devel GConf2
nss libXScrnSaver alsa-lib
yum install -y xorg-x11-server-Xvfb gtk2-devel gtk3-devel libnotify-devel
GConf2 nss libXScrnSaver alsa-lib
```
33 changes: 20 additions & 13 deletions source/api/commands/click.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,9 +54,13 @@ Pass in an options object to change the default behavior of `.click()`.

Option | Default | Description
--- | --- | ---
`altKey` | `false` | {% usage_options altKey %}
`ctrlKey` | `false` | {% usage_options ctrlKey %}
`log` | `true` | {% usage_options log %}
`force` | `false` | {% usage_options force click %}
`metaKey` | `false` | {% usage_options metaKey %}
`multiple` | `false` | {% usage_options multiple click %}
`shiftKey` | `false` | {% usage_options shiftKey %}
`timeout` | {% url `defaultCommandTimeout` configuration#Timeouts %} | {% usage_options timeout .click %}

## Yields {% helper_icon yields %}
Expand Down Expand Up @@ -124,27 +128,30 @@ By default, Cypress will error if you're trying to click multiple elements. By p
cy.get('[id^=btn]').click({ multiple: true })
```

## Click with key combinations
### Click with key combinations

The `.click()` command may also be fired with key modifiers in combination with the {% url "`.type()`" type %} command in order to simulate character sequences while clicking, such as `ALT + click`. In order to keep the modifier key active, `{release: false}` should be passed to the options of the {% url "`.type()`" type %} command.
The `.click()` command may also be fired with key modifiers in order to simulate holding key combinations while clicking, such as `ALT + click`.

The following modifiers can be combined with `.click()`.
{% note info %}
You can also use key combinations during {% url "`.type()`" type %}. This offers options to hold down keys across multiple commands. See {% url "Key Combinations" type#Key-Combinations %} for more information.
{% endnote %}

Sequence | Notes
The following keys can be combined with `.click()` through the `options`.

Option | Notes
--- | ---
`{alt}` | Activates the `altKey` modifier. Aliases: `{option}`
`{ctrl}` | Activates the `ctrlKey` modifier. Aliases: `{control}`
`{meta}` | Activates the `metaKey` modifier. Aliases: `{command}`, `{cmd}`
`{shift}` | Activates the `shiftKey` modifier.
`altKey` | {% usage_options altKey %}
`ctrlKey` | {% usage_options ctrlKey %}
`metaKey` | {% usage_options metaKey %}
`shiftKey` | {% usage_options shiftKey %}

### Shift click
#### Shift click

```js
// execute a SHIFT + click on the first <li>
// { release: false } is necessary so that
// SHIFT will not be released after the type command
cy.get('body').type('{shift}', { release: false })
cy.get('li:first').click()
cy.get('li:first').click({
shiftKey: true
})
```

# Notes
Expand Down
33 changes: 20 additions & 13 deletions source/api/commands/dblclick.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,9 +54,13 @@ Pass in an options object to change the default behavior of `.dblclick()`.

Option | Default | Description
--- | --- | ---
`altKey` | `false` | {% usage_options altKey %}
`ctrlKey` | `false` | {% usage_options ctrlKey %}
`log` | `true` | {% usage_options log %}
`force` | `false` | {% usage_options force dblclick %}
`metaKey` | `false` | {% usage_options metaKey %}
`multiple` | `true` | {% usage_options multiple dblclick %}
`shiftKey` | `false` | {% usage_options shiftKey %}
`timeout` | {% url `defaultCommandTimeout` configuration#Timeouts %} | {% usage_options timeout .dblclick %}

## Yields {% helper_icon yields %}
Expand Down Expand Up @@ -125,27 +129,30 @@ You can turn this off by passing `multiple: false` to `.dblclick()`.
cy.get('button').dblclick({ multiple: false })
```

## Double click with key combinations
### Double click with key combinations

The `.dblclick()` command may also be fired with key modifiers in combination with the {% url "`.type()`" type %} command in order to simulate character sequences while double clicking, such as `SHIFT + double click`. In order to keep the modifier key active, `{release: false}` should be passed to the options of the {% url "`.type()`" type %} command.
The `.dblclick()` command may also be fired with key modifiers in order to simulate holding key combinations while double clicking, such as `SHIFT + double click`.

{% note info %}
You can also use key combinations during {% url "`.type()`" type %}. This offers options to hold down keys across multiple commands. See {% url "Key Combinations" type#Key-Combinations %} for more information.
{% endnote %}

The following modifiers can be combined with `.dblclick()`.

Sequence | Notes
Option | Notes
--- | ---
`{alt}` | Activates the `altKey` modifier. Aliases: `{option}`
`{ctrl}` | Activates the `ctrlKey` modifier. Aliases: `{control}`
`{meta}` | Activates the `metaKey` modifier. Aliases: `{command}`, `{cmd}`
`{shift}` | Activates the `shiftKey` modifier.
`altKey` | {% usage_options altKey %}
`ctrlKey` | {% usage_options ctrlKey %}
`metaKey` | {% usage_options metaKey %}
`shiftKey` | {% usage_options shiftKey %}

### Alt click
#### Alt click

```js
// execute a ALT + dblclick on the first <li>
// { release: false } is necessary so that
// ALT will not be released after the type command
cy.get('body').type('{alt}', { release: false })
cy.get('li:first').dblclick()
// execute ALT + dblclick on the first <li>
cy.get('li:first').dblclick({
altKey: true
})
```

# Notes
Expand Down
13 changes: 7 additions & 6 deletions source/api/commands/getcookie.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,14 +38,14 @@ Option | Default | Description

`cy.getCookie()` yields a cookie object with the following properties:

- `name`
- `value`
- `path`
- `domain`
- `expiry` *(if specified)*
- `httpOnly`
- `name`
- `path`
- `sameSite` *(if specified)*
- `secure`
- `expiry`
- `sameSite` *(will only be returned if the {% url "`experimentalGetCookiesSameSite`" configuration#Experiments %} configuration value is `true`)*
- `value`

### When a cookie matching the name could not be found:

Expand Down Expand Up @@ -140,7 +140,8 @@ When clicking on `getCookie` within the command log, the console outputs the fol
{% imgTag /img/api/getcookie/inspect-cookie-object-properties-in-console.png "Console Log getcookie" %}

{% history %}
{% url "4.3.0" changelog#4-3-0 %} | Added `sameSite` property when the {% url "`experimentalGetCookiesSameSite`" configuration#Experiments %} configuration value is `true`.
{% url "5.0.0" changelog#5-0-0 %} | Removed `experimentalGetCookiesSameSite` and made `sameSite` property always available.
{% url "4.3.0" changelog#4-3-0 %} | Added `sameSite` property when the `experimentalGetCookiesSameSite` configuration value is `true`.
{% endhistory %}

# See also
Expand Down
11 changes: 6 additions & 5 deletions source/api/commands/getcookies.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,14 +34,14 @@ Option | Default | Description

`cy.getCookies()` yields an array of cookie objects. Each cookie object has the following properties:

- `name`
- `value`
- `path`
- `domain`
- `expiry` *(if specified)*
- `httpOnly`
- `name`
- `path`
- `sameSite` *(if specified)*
- `secure`
- `expiry`
- `sameSite` *(will only be returned if the {% url "`experimentalGetCookiesSameSite`" configuration#Experiments %} configuration value is `true`)*
- `value`

# Examples

Expand Down Expand Up @@ -98,6 +98,7 @@ When clicking on `getCookies` within the command log, the console outputs the fo
{% imgTag /img/api/getcookies/test-application-cookies.png "Console Log getcookies" %}

{% history %}
{% url "5.0.0" changelog#5-0-0 %} | Removed `experimentalGetCookiesSameSite` and made `sameSite` property always available.
{% url "4.3.0" changelog#4-3-0 %} | Added `sameSite` property when the {% url "`experimentalGetCookiesSameSite`" configuration#Experiments %} configuration value is `true`.
{% endhistory %}

Expand Down

0 comments on commit 55a2c1c

Please sign in to comment.