Cypress v6.0.0 Release Notes

Release Date: 2020-11-24 // over 3 years ago
  • πŸš€ Released 11/23/2020

    Summary:

    βœ… Cypress now offers full network stubbing support with the introduction of the cy.intercept() command (previously cy.route2()). With cy.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 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.
    • πŸ’… 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.
    • πŸ‘ The type yielded by cy.wait(alias) has changed in order to support use of cy.intercept(). Addressed in #9266.
    • πŸ”§ The experimentalNetworkStubbing option has been removed and made the default behavior. You can safely removed this configuration option. Addressed in #9185.
    • When using .type() and .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.
    • ⬆️ 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.
    • ⚑️ 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.
    • πŸ“œ JSON request and response bodies captured by cy.intercept() are now automatically parsed, removing the need to manually do JSON.parse. Addressed in #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() instead. Addressed in #9185.
    • πŸ—„ experimentalFetchPolyfill has been deprecated. We encourage you to use cy.intercept() to intercept requests using the Fetch API instead.
    • ⚑️ cy.route2() was renamed to cy.intercept(). We encourage you to update usages of cy.route2() to use cy.intercept(). Addressed in #9182.

    πŸ”‹ Features:

    • The new cy.intercept() command can be used to manage the behavior of HTTP requests at the network layer. Addressed in #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.
    • πŸ”§ A warning is now displayed when passing invalid configuration keys through the CLI. Addresses #428.
    • The cypress version command now also displays the current Electron and bundled Node versions. Addresses #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.

    πŸ›  Bugfixes:

    • πŸ›  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.

    πŸ“š Documentation Changes:

    Misc:

    • βž• Added the type of redirects and changed redirectedToUrl optional for Response types. Addresses #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.
    • ⬆️ Upgraded bundled Node.js version from 12.16.3 to 12.18.3. Addressed in #9222.
    • ⬆️ Upgraded electron from 10.1.5 to 11.0.2. Addressed in #9222.