9.0.0

Released Released on November 9, 2021

Breaking Changes:

  • The nodeVersion configuration option now defaults to system. The behavior of the system option has changed to always use the Node.js binary/version that launched Cypress. If Cypress was not launched via the terminal, Cypress will use the bundled Node.js version. This could change the behavior of code within your pluginsFile since it may be run in your system Node.js version. Addresses #18684.

  • Windows 32-bit is no longer supported in Cypress. Addresses #17962.

  • An error will now be thrown if an invalid value is passed to Cypress.config. Previously invalid values were ignored and could cause unexpected behavior. Addresses #18589.

  • cy.contains() no longer yields the <body> element when it matches the content of <script> or <style> tags. Addresses #14861.

  • Attempting to add an existing built-in Cypress command using Cypress.Commands.add() will now throw an error, indicating that Cypress.Commands.overwrite() should be used instead to overwrite the behavior of existing commands. Addresses #18572.

  • Custom command implementations are now typed based on the declared custom chainables. Addresses #17496.

  • The bundled Node.js version was upgraded from 14.17.0 to 16.5.0. This could change the behavior of code within the pluginsFile when using the bundled Node.js version of Cypress. Addressed in #18317.

  • The default read behavior of a fixture provided as a static response in cy.intercept() changed from being read as a Buffer to using utf8 encoding. This aligns the default read behavior of cy.intercept() to cy.readFile() and cy.fixture(). Addresses #18534.

Deprecations:

  • The nodeVersion configuration option has been deprecated and will be removed in a future release.

Features:

  • When null is passed as the encoding to cy.readFile() or cy.fixture(), the file is treated as binary and read as a Buffer. Similarly, null passed as the encoding to cy.writeFile() allows direct writing of buffers. If the encoding is unspecified, the default remains utf8, matching the current behavior. Addresses #18534.

Bugfixes:

  • Sticky elements within a fixed container will now be able to be properly scrolled to during action commands. Fixes #4233.

  • document.referrer will now correctly reflect the correct value from the application under test after cy.visit(). Fixes #4295.

Dependencies:

  • Upgraded Chrome browser version used during cypress run and when selecting Electron browser in cypress open from 91 to 94. Addressed in #15292.

  • Upgraded bundled Node.js version from 14.17.0 to 16.5.0. Addressed in #15292.

  • Upgraded electron from 14.1.0 to 15.2.0. Addressed in #15292.