β οΈ Breaking Change
Impact Score: 7/10
Cypress v6.0.0 β Release Notes & Engineering Impact
Source available β automated, not human-reviewed
Component: cypress Β· Channel: stable. Automated analysis, not a compatibility certification. How this works.
Analysis updated: 2026-11-01.
Breaking-change evidence from the source
Breaking Changes:** **Please read our [Migration Guide](https://on.cypress.io/migration-guide) which explains the changes in more detail and how to change your code to migrate to Cypress 6.0.**
β‘ Executive Summary (TL;DR)
Cypress v6.0.0. Source highlight: *Released 11/23/2020*
Who Does This Impact? (Role-Based Analysis)
π» Software Engineers & Devs
Check the source notes against the package and APIs you use before upgrading.
π Product & Engineering Leads
Use the documented changes to assess relevance to your product; release frequency alone is not a quality measure.
βοΈ DevOps & Security
Verify the target version, runtime requirements and rollback procedure in the official documentation.
β οΈ Breaking Changes & Deprecations (1)
- Breaking Changes:** **Please read our [Migration Guide](https://on.cypress.io/migration-guide) which explains the changes in more detail and how to change your code to migrate to Cypress 6.0.**
β¨ New Features & Capabilities (1)
- Added the type of `redirects` and changed `redirectedToUrl` optional for Response types. Addresses #9275.
β‘ Performance & Enhancements (1)
- DOM elements where the CSS style (or ancestors) are `opacity: 0` are no longer considered visible. However these are still considered actionable and "any action commands" interacting-with-elements#Actionability used to interact with the element will perform the action. This matches browser's implementation on how they regard elements with `opacity: 0`. Addresses #4474.
π§ Bug Fixes & Patches (4)
- We fixed a regression introduced in 3.5.0 that would cause `.type()` to not type the entire string when focus was called away from the target element. Fixes #9254.
- `.type()` and `.click()` now properly work on elements inside a `contenteditable` element. Fixes #2717 and #7721.
- We fixed a regression introduced in 5.6.0 that would cause the Test Runner to crashes and display a white page when switching tabs while tests are running. Fixes #9151.
- Fixed an issue where `Content-Length` for `cy.route2` request bodies could be incorrectly recalculated. Fixes #9166.
π View Raw Release Notes (Original Developer Log)
*Released 11/23/2020*
**Summary:**
Cypress now offers full network stubbing support with the introduction of the [`cy.intercept()`](https://on.cypress.io/intercept) command (previously `cy.route2()`). With [`cy.intercept()`](https://on.cypress.io/intercept) your tests can intercept, modify and wait on any type of HTTP request originating from your app.
**Breaking Changes:**
**Please read our [Migration Guide](https://on.cypress.io/migration-guide) which explains the changes in more detail and how to change your code to migrate to Cypress 6.0.**
- Cypress now always throws an error when asserting on an element that doesn't exist in the DOM (unless you're asserting that the element should `not.exist`). Assertions such as `not.visible`, `not.contains`, `not.have.class`, etc will now fail when used on non-existent DOM elements. Addresses [#205](https://github.com/cypress-io/cypress/issues/205).
- DOM elements where the CSS style (or ancestors) are `opacity: 0` are no longer considered visible. However these are still considered [actionable](https://on.cypress.io/interacting-with-elements) and "any action commands" interacting-with-elements#Actionability used to interact with the element will perform the action. This matches browser's implementation on how they regard elements with `opacity: 0`. Addresses [#4474](https://github.com/cypress-io/cypress/issues/4474).
- The type yielded by [`cy.wait(alias)`](https://on.cypress.io/wait) has changed in order to support use of [`cy.intercept()`](https://on.cypress.io/intercept). Addressed in [#9266](https://github.com/cypress-io/cypress/issues/9266).
- The `experimentalNetworkStubbing` option has been removed and made the default behavior. You can safely removed this configuration option. Addressed in [#9185](https://github.com/cypress-io/cypress/issues/9185).
- When using [`.type()`](https://on.cypress.io/type) and [`.click()`](https://on.cypress.io/click) on elements inside a `contenteditable` element, the events are now properly triggered on the inside elements. This may cause unintended consequences if you were relying on the previous behavior. Addressed in [#9066](https://github.com/cypress-io/cypress/issues/9066).
- We removed several deprecation errors around APIs that were removed in versions of Cypress prior to 4.0.0. This will not cause any changes for anyone upgrading from a 4.0+ version of Cypress. For a full list of all APIs affected see [#8946](https://github.com/cypress-io/cypress/issues/8946).
- We updated our HTTP status codes and reason phrases to match Node.js `http.STATUS_CODES`. If you have code that relies on a reason phrase, then this could affect you. Addressed in [#8969](https://github.com/cypress-io/cypress/issues/8969).
- JSON request and response bodies captured by [`cy.intercept()`](https://on.cypress.io/intercept) are now automatically parsed, removing the need to manually do `JSON.parse`. Addressed in [#9280](https://github.com/cypress-io/cypress/issues/9280).
**Deprecations:**
Deprecations still work as before but will be removed from Cypress in a future release. We encourage you to update your code now to remove uses of deprecations.
- `cy.server()` and `cy.route()` have been deprecated. In a future release, support for `cy.server()` and `cy.route()` will be moved to a plugin. We encourage you to use [`cy.intercept()`](https://on.cypress.io/intercept) instead. Addressed in [#9185](https://github.com/cypress-io/cypress/issues/9185).
- `experimentalFetchPolyfill` has been deprecated. We encourage you to use [`cy.intercept()`](https://on.cypress.io/intercept) to intercept requests using the Fetch API instead.
- `cy.route2()` was renamed to [`cy.intercept()`](https://on.cypress.io/intercept). We encourage you to update usages of `cy.route2()` to use [`cy.intercept()`](https://on.cypress.io/intercept). Addressed in [#9182](https://github.com/cypress-io/cypress/issues/9182).
**Features:**
- The new [`cy.intercept()`](https://on.cypress.io/intercept) command can be used to manage the behavior of HTTP requests at the network layer. Addressed in [#9182](https://github.com/cypress-io/cypress/issues/9182).
- We now pass `βdisable-dev-shm-usage` to the Chrome browser flags by default. This will write shared memory files into `/tmp` instead of `/dev/shm`. If you're passing this flag in your `plugins` file, you can now remove this code. Addresses [#5336](https://github.com/cypress-io/cypress/issues/5336).
- A warning is now displayed when passing invalid configuration keys through the CLI. Addresses [#428](https://github.com/cypress-io/cypress/issues/428).
- The `cypress version` command now also displays the current Electron and bundled Node versions. Addresses [#9180](https://github.com/cypress-io/cypress/issues/9180).
- The `cypress version` command now accepts a `--component` flag that allows you to print the version of specific components of Cypress. ie Electron, Node, etc. Addresses [#9214](https://github.com/cypress-io/cypress/issues/9214).
**Bugfixes:**
- We fixed a regression introduced in [3.5.0](https://on.cypress.io/changelog#3-5-0) that would cause [`.type()`](https://on.cypress.io/type) to not type the entire string when focus was called away from the target element. Fixes [#9254](https://github.com/cypress-io/cypress/issues/9254).
- [`.type()`](https://on.cypress.io/type) and [`.click()`](https://on.cypress.io/click) now properly work on elements inside a `contenteditable` element. Fixes [#2717](https://github.com/cypress-io/cypress/issues/2717) and [#7721](https://github.com/cypress-io/cypress/issues/7721).
- We fixed a regression introduced in [5.6.0](https://on.cypress.io/changelog#5-6-0) that would cause the Test Runner to crashes and display a white page when switching tabs while tests are running. Fixes [#9151](https://github.com/cypress-io/cypress/issues/9151).
- Fixed an issue where `Content-Length` for `cy.route2` request bodies could be incorrectly recalculated. Fixes [#9166](https://github.com/cypress-io/cypress/issues/9166).
**Documentation Changes:**
- Our [Migration Guide](https://on.cypress.io/migration-guide) has a new section for 6.0 migration.
- Many of our docs examples have been updated to use [`cy.intercept()`](https://on.cypress.io/intercept) in place of `cy.route()` including our [Network Requests](https://on.cypress.io/network-requests) doc.
**Misc:**
- Added the type of `redirects` and changed `redirectedToUrl` optional for Response types. Addresses [#9275](https://github.com/cypress-io/cypress/issues/9275).
**Dependency Updates**
- Upgraded Chrome browser version used during `cypress run` and when selecting Electron browser in `cypress open` from `85` to `87`. Addressed in [#9222](https://github.com/cypress-io/cypress/pull/9222).
- Upgraded bundled Node.js version from `12.16.3` to `12.18.3`. Addressed in [#9222](https://github.com/cypress-io/cypress/pull/9222).
- Upgraded `electron` from `10.1.5` to `11.0.2`. Addressed in [#9222](https://github.com/cypress-io/cypress/pull/9222).