14.0.0

Released Released on January 15, 2025

Summary:

Cypress 14.0.0 improves performance of component testing and adds support for new framework and dev server versions. 14.0.0 also includes breaking changes to cy.origin that are necessary to handle Chrome's deprecation of document.domain injection, which should fix issues for some users in recent Chrome versions. Support for older versions of Node.js, Linux distributions, browsers and component testing frameworks and dev servers is removed.

Overall, we don't anticipate this release to be too disruptive for most users. We recommend bumping your version to see if your tests still run as expected. As always, open any issues you find here.

Breaking Changes:

:::info

Refer to the v14 Migration Guide for help migrating your code.

:::

  • Removed support for Node.js 16 and Node.js 21. Addresses #29930.

  • Upgraded bundled Node.js version from 18.17.0 to 20.18.1. Addresses #29547.

  • Prebuilt binaries for Linux are no longer compatible with Linux distributions based on glibc <2.28, for example: Ubuntu 14-18, RHEL 7, CentOS 7, Amazon Linux 2. Addresses #29601.

  • Cypress now only officially supports the latest 3 major versions of Chrome, Firefox, and Edge - older browser versions may still work, but we recommend keeping your browsers up to date to ensure compatibility with Cypress. A warning will no longer be displayed on browser selection in the Launchpad for any 'unsupported' browser versions. Additionally, the undocumented minSupportedVersion property has been removed from Cypress.browser. Addressed in #30462.

  • The cy.origin() command must now be used when navigating between subdomains. Because this is a fairly disruptive change for users who frequently navigate between subdomains, a new configuration option is being introduced. injectDocumentDomain can be set to true in order to re-enable the injection of document.domain setters in Cypress. This configuration option is marked as deprecated and you'll receive a warning when Cypress is launched with this option set to true. It will be removed in a future version of Cypress. Addressed in #30770.

  • The experimentalSkipDomainInjection configuration has been removed and replaced with an injectDocumentDomain configuration. Addressed in #30770.

  • It is no longer possible to make a fetch or XMLHttpRequest request from the about:blank page in Electron (i.e. cy.window().then((win) => win.fetch('<some-url>'))). You must use cy.request instead or perform some form of initial navigation via cy.visit(). Addressed in #30394.

  • The experimentalJustInTimeCompile configuration option for component testing has been replaced with a justInTimeCompile option that is true by default. This option will only compile resources directly related to your spec, compiling them 'just-in-time' before spec execution. This should result in improved memory management and performance for component tests in cypress open and cypress run modes, in particular for large component testing suites. justInTimeCompile is now only supported for webpack. Addresses #30234. Addressed in #30641.

  • Cypress Component Testing no longer supports:

    • create-react-app. Addresses #30028.

    • @vue/cli-service. Addresses #30481.

    • Angular versions 13, 14, 15, and 16. The minimum supported version is now 17.2.0 in order to fully support Angular signals. Addresses #29582. Addressed in #30539.

    • Next.js versions 10, 11, 12, and 13. Addresses #29583.

    • Nuxt.js version 2. Addresses #30468.

    • React versions 16 and 17. Addresses #29607.

    • Svelte versions 3 and 4. Addresses #30492 and #30692.

    • Vue version 2. Addresses #30295.

  • The cypress/react18 test harness is no longer included in the Cypress binary. Instead, React 18 support is now shipped with cypress/react! Addresses #29607.

  • The cypress/angular-signals test harness is no longer included in the Cypress binary. Instead, signals support is now shipped with cypress/angular! This requires rxjs to be installed as a peerDependency. Addresses #29606.

  • The Cypress configuration wizard for Component Testing supports TypeScript 4.0 or greater. Addresses #30493.

  • @cypress/webpack-dev-server no longer supports webpack-dev-server version 3. Additionally, @cypress/webpack-dev-server now ships with webpack-dev-server version 5 by default. webpack-dev-server version 4 will need to be installed alongside Cypress if you are still using webpack version 4. Addresses #29308, #30347, and #30141.

  • @cypress/vite-dev-server no longer supports vite versions 2 and 3. Addresses #29377 and #29378.

  • The delayMs option of cy.intercept() has been removed. This option was deprecated in Cypress 6.4.0. Please use the delay option instead. Addressed in #30463.

  • The experimentalFetchPolyfill configuration option was removed. This option was deprecated in Cypress 6.0.0. We recommend using cy.intercept() for handling fetch requests. Addressed in #30466.

  • We removed yielding the second argument of before:browser:launch as an array of browser arguments. This behavior has been deprecated since Cypress 4.0.0. Addressed in #30460.

  • The cypress open-ct and cypress run-ct CLI commands were removed. Please use cypress open --component or cypress run --component respectively instead. Addressed in #30456

  • The undocumented methods Cypress.backend('firefox:force:gc') and Cypress.backend('log:memory:pressure') were removed. Addresses #30222.

Deprecations:

  • The resourceType option on cy.intercept has been deprecated. We anticipate the resource types to change or be completely removed in the future. Our intention is to replace essential functionality dependent on the resourceType within Cypress in a future version (like hiding network logs that are not fetch/xhr). Please leave feedback on any essential uses of resourceType in this GitHub issue. Addresses #30433.

  • The new injectDocumentDomain configuration option is released as deprecated. It will be removed in a future version of Cypress. Addressed in #30770.

Features:

  • injectDocumentDomain, a new configuration option, can be set to true in order to re-enable the injection of document.domain setters in Cypress. Addressed in #30770.

  • Cypress Component Testing now supports:

    • React version 19. Addresses #29470.

    • Angular version 19. Addresses #30175.

    • Next.js version >=15.0.4. Versions 15.0.0 - 15.0.3 depend on the React 19 Release Candidate and are not officially supported by Cypress, but should still work. Addresses #30445.

    • Svelte version 5. Addresses #29641.

    • Vite version 6. Addresses #30591.

Bugfixes:

  • Elements with display: contents will no longer use box model calculations for visibility, and correctly show as visible when they are visible. Fixed in #29680. Fixes #29605.

  • Fixed a visibility issue when the element is positioned static or relative and the element's offset parent is positioned absolute, a descendent of the ancestor, and has no clippable overflow. Fixed in #29689. Fixes #28638.

  • Fixed a visibility issue for elements with textContent but without a width or height. Fixed in #29688. Fixes #29687.

  • Elements whose parent elements has overflow: clip and no height/width will now correctly show as hidden. Fixed in #29778. Fixes #23852.

  • The CSS pseudo-class :dir() is now supported when testing in Electron. Addresses #29766.

  • Fixed an issue where the spec filename was not updating correctly when changing specs in open mode. Fixes #30852.

  • cy.origin() now correctly errors when the cy.window(), cy.document(), cy.title(), cy.url(), cy.location(), cy.hash(), cy.go(), cy.reload(), and cy.scrollTo() commands are used outside of the cy.origin() command after the AUT has navigated away from the primary origin. Fixes #30848. Fixed in #30858.

Misc:

Dependency Updates:

  • Upgraded electron from 27.3.10 to 33.2.1. Addresses #29547 and #30561.

  • Upgraded @electron/rebuild from 3.2.10 to 3.7.1. Addresses #28766 and #30632.

  • Upgraded bundled Chromium version from 118.0.5993.159 to 130.0.6723.137. Addresses #29547 and #30561.

  • Updated jQuery from 3.4.1 to 3.7.1. Addressed in #30345.

  • Updated react from 17.0.2 to 18.3.1 and react-dom from 17.0.2 to 18.3.1. Addresses #30511.

  • Upgraded @vue/test-utils from 2.3.2 to 2.4.6. Addresses #26628.