โ ๏ธ Breaking Change
Impact Score: 7/10
Cypress v4.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:** **:warning: 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 4.0.**
- Mocha, Chai, and Sinon.JS has been upgraded which includes a number of breaking changes and new features. Addresses [#2528](https://github.com/cypress-io/cypress/issues/2528), [#2529](https://github.com/cypress-io/cypress/issues/2529), [#2866](https://github.com/cypress-io/cypress/issues/2866).
โก Executive Summary (TL;DR)
Cypress v4.0.0. Source highlight: Cypress 4.0.0 includes support for Mozilla Firefox browsers (beta support) and Microsoft Edge (Chromium based) browsers which is a big step forward for Cross Browser Testing in Cypress. We've also updated many of the underlying tools behind Cypress that bring new powerful features.
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 (2)
- Breaking Changes:** **:warning: 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 4.0.**
- - Mocha, Chai, and Sinon.JS has been upgraded which includes a number of breaking changes and new features. Addresses [#2528](https://github.com/cypress-io/cypress/issues/2528), [#2529](https://github.com/cypress-io/cypress/issues/2529), [#2866](https://github.com/cypress-io/cypress/issues/2866).
โจ New Features & Capabilities (6)
- Mocha, Chai, and Sinon.JS has been upgraded which includes a number of breaking changes and new features. Addresses #2528, #2529, #2866.
- Added Cross Browser Testing Guide with helpful CI strategies to consider when running tests across multiple browsers.
- Added `Cypress.isBrowser()` doc.
- We added types for plugin events. Addresses #6322.
- Added `@benmalka/foxdriver`. Addressed in #1359.
- Added `firefox-profiler`. Addressed in #1359.
๐ง Bug Fixes & Patches (5)
- A test or suite appended with an `.only` when multiple tests or suites contained the same title now run correctly. Fixes #5345.
- The `.its()` command now properly supports 0 as a value for indexes or object keys. Fixes #6216.
- We fixed a broken 'Learn more' link within the Node.js Version panel of the Test Runner Settings. Addresses #6237.
- You can print debug information about the memory & CPU usage of Cypress, which can be accessed by enabling the `cypress:server:util:process_profiler` debug stream. Addresses #6169.
- Upgraded `debug` from `2.15.1` to `4.0.1`. Addressed in #4226.
๐ View Raw Release Notes (Original Developer Log)
*Released 2/6/2020*
**Summary:**
Cypress 4.0.0 includes support for [Mozilla Firefox](https://www.mozilla.org/firefox/) browsers (beta support) and [Microsoft Edge](https://www.microsoft.com/edge) (Chromium based) browsers which is a big step forward for [Cross Browser Testing](https://on.cypress.io/cross-browser-testing) in Cypress. We've also updated many of the [underlying tools](https://on.cypress.io/bundled-tools) behind Cypress that bring new powerful features.
**Breaking Changes:**
**:warning: 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 4.0.**
- Mocha, Chai, and Sinon.JS has been upgraded which includes a number of breaking changes and new features. Addresses [#2528](https://github.com/cypress-io/cypress/issues/2528), [#2529](https://github.com/cypress-io/cypress/issues/2529), [#2866](https://github.com/cypress-io/cypress/issues/2866).
- During `before:browser:launch`, we no longer yield the second argument as an array of browser arguments and instead yield an `options` object with an `args` property in order to support more advanced browser launch options. Addresses [#6306](https://github.com/cypress-io/cypress/issues/6306).
- We updated the [Cypress browser objects](https://on.cypress.io/browser-launch-api) of all Chromium-based browsers, including Electron, to have `chromium` set as their `family` field. Addresses [#6243](https://github.com/cypress-io/cypress/issues/6243).
- The [`--browser` flag](https://on.cypress.io/command-line#cypress-run-browser-lt-browser-name-or-path-gt) no longer accepts `canary` as its sole argument to run Chrome Canary. You now have to specify `chrome:canary` to use the Chrome Canary browser. Addresses [#6243](https://github.com/cypress-io/cypress/issues/6243).
- [`cy.writeFile()`](https://on.cypress.io/writefile) now yields `null` instead of the contents written to the file in order to more align with the behavior of `fs`. Addresses [#2466](https://github.com/cypress-io/cypress/issues/2466).
- Installing Cypress on your system now requires Node.js 8+. Addresses [#5632](https://github.com/cypress-io/cypress/issues/5632).
- Cypress no longer support CJSX. Addresses [#3469](https://github.com/cypress-io/cypress/issues/3469).
**Features:**
- [Mozilla Firefox](https://www.mozilla.org/firefox/) browsers now have beta support. Addresses [#1096](https://github.com/cypress-io/cypress/issues/1096).
- [Microsoft Edge](https://www.microsoft.com/edge) (Chromium based) browsers are now supported. Addresses [#5433](https://github.com/cypress-io/cypress/issues/5433).
- There is a new [`Cypress.isBrowser()`](https://on.cypress.io/isbrowser) utility function. Addresses [#2023](https://github.com/cypress-io/cypress/issues/2023).
- We updated the [`Cypress.browser`](https://on.cypress.io/browser) object with a new `channel` property which contains the release channel of the detected browser. Addresses [#6243](https://github.com/cypress-io/cypress/issues/6243).
- Appending `.only` to multiple tests or suites will now run all tests with the `.only` property. Addresses [#2828](https://github.com/cypress-io/cypress/issues/2828).
- The [`isFinite` assertion](https://on.cypress.io/assertions) is now supported. Addresses [#5669](https://github.com/cypress-io/cypress/issues/5669).
- The `empty` assertion is now supported when used against Map objects. Addresses [#6072](https://github.com/cypress-io/cypress/issues/6072).
- The `nested` assertion chainer property is now supported. Addresses [#3080](https://github.com/cypress-io/cypress/issues/3080) and [#5004](https://github.com/cypress-io/cypress/issues/5004).
**Bugfixes:**
- A test or suite appended with an `.only` when multiple tests or suites contained the same title now run correctly. Fixes [#5345](https://github.com/cypress-io/cypress/issues/5345).
- The [`.its()`](https://on.cypress.io/its) command now properly supports 0 as a value for indexes or object keys. Fixes [#6216](https://github.com/cypress-io/cypress/issues/6216).
**Documentation Changes:**
- Added [Cross Browser Testing Guide](https://on.cypress.io/cross-browser-testing) with helpful CI strategies to consider when running tests across multiple browsers.
- Added [`Cypress.isBrowser()`](https://on.cypress.io/isbrowser) doc.
**Misc:**
- We now pass through errors caused when attempting to read arguments passed through [`config`](https://on.cypress.io/configuration-api). Addresses [#6279](https://github.com/cypress-io/cypress/issues/6279).
- We fixed a broken 'Learn more' link within the Node.js Version panel of the Test Runner Settings. Addresses [#6237](https://github.com/cypress-io/cypress/issues/6237).
- The browser icons in the Test Runner now display as images with the proper branding. Addresses [#6188](https://github.com/cypress-io/cypress/issues/6188).
- We updated the styling of browser dropdown in the Test Runner to look more like a button. Addresses [#6298](https://github.com/cypress-io/cypress/issues/6298).
- The timer in the Test Runner now always displays at a consistent length. Addresses [#6168](https://github.com/cypress-io/cypress/issues/6168).
- You can print debug information about the memory & CPU usage of Cypress, which can be accessed by enabling the [`cypress:server:util:process_profiler` debug stream](https://on.cypress.io/debugging#Log-memory-and-CPU-usage). Addresses [#6169](https://github.com/cypress-io/cypress/issues/6169).
- We added types for plugin events. Addresses [#6322](https://github.com/cypress-io/cypress/issues/6322).
**Dependency Updates**
- Added `@benmalka/foxdriver`. Addressed in [#1359](https://github.com/cypress-io/cypress/pull/1359).
- Upgraded `@cypress/browserify-preprocessor` from `1.1.2` to `2.1.1`. Addressed in [#4308](https://github.com/cypress-io/cypress/pull/4308) and [#4226](https://github.com/cypress-io/cypress/pull/4226).
- Upgraded `bluebird` from `3.5.0` to `3.7.2`. Addressed in [#4226](https://github.com/cypress-io/cypress/pull/4226).
- Upgraded `cachedir` from `1.3.0` to `2.3.0`. Addressed in [#4208](https://github.com/cypress-io/cypress/pull/4208) and [#4226](https://github.com/cypress-io/cypress/pull/4226).
- Upgraded `chai` from `3.5.0` to `4.2.0`. Addressed in [#2862](https://github.com/cypress-io/cypress/pull/2862) and [#4226](https://github.com/cypress-io/cypress/pull/4226).
- Upgraded `chai-as-promised` from `6.0.0` to `7.1.1`. Addressed in [#4226](https://github.com/cypress-io/cypress/pull/4226).
- Upgraded `chalk` from `2.4.0` to `3.0.0`. Addressed in [#4226](https://github.com/cypress-io/cypress/pull/4226).
- Upgraded `commander` from `2.15.1` to `4.0.1`. Addressed in [#4208](https://github.com/cypress-io/cypress/pull/4208) and [#4226](https://github.com/cypress-io/cypress/pull/4226).
- Upgraded `debug` from `2.15.1` to `4.0.1`. Addressed in [#4226](https://github.com/cypress-io/cypress/pull/4226).
- Upgraded `execa` from `0.10.0` to `3.3.0`. Addressed in [#4226](https://github.com/cypress-io/cypress/pull/4226).
- Added `firefox-profiler`. Addressed in [#1359](https://github.com/cypress-io/cypress/pull/1359).
- Added `foxdriver`. Addressed in [#1359](https://github.com/cypress-io/cypress/pull/1359).
- Upgraded `fs-extra` from `5.0.0` to `8.1.0`. Addressed in [#4226](https://github.com/cypress-io/cypress/pull/4226).
- Upgraded `getos` from `3.1.1` to `3.1.4`. Addressed in [#4226](https://github.com/cypress-io/cypress/pull/4226).
- Upgraded `is-ci` from `1.2.1` to `2.0.0`. Addressed in [#4226](https://github.com/cypress-io/cypress/pull/4226).
- Upgraded `mocha` from `2.5.3` to `7.0.1`. Addressed in [#2703](https://github.com/cypress-io/cypress/pull/2703) and [#4226](https://github.com/cypress-io/cypress/pull/4226).
- Upgraded `listr` from `0.12.0` to `0.14.3`. Addressed in [#4226](https://github.com/cypress-io/cypress/pull/4226).
- Upgraded `log-symbols` from `2.2.0` to `3.0.0`. Addressed in [#4226](https://github.com/cypress-io/cypress/pull/4226).
- Added `marionette-client`. Addressed in [#1359](https://github.com/cypress-io/cypress/pull/1359).
- Upgraded `ramda` from `0.24.1` to `0.26.1`. Addressed in [#4226](https://github.com/cypress-io/cypress/pull/4226).
- Upgraded `sinon` from `3.2.0` to `8.1.1`. Addressed in [#2881](https://github.com/cypress-io/cypress/pull/2881) and [#4226](https://github.com/cypress-io/cypress/pull/4226).
- Upgraded `strip-ansi` from `3.0.1` to `6.0.0`. Addressed in [#1359](https://github.com/cypress-io/cypress/pull/1359).
- Added `systeminformation`. Addressed in [#1359](https://github.com/cypress-io/cypress/pull/1359).
- Upgraded `support-colors` from `5.5.0` to `7.1.0`. Addressed in [#4208](https://github.com/cypress-io/cypress/pull/4208) and [#4226](https://github.com/cypress-io/cypress/pull/4226).
- Upgraded `untildify` from `3.0.3` to `4.0.0`. Addressed in [#4226](https://github.com/cypress-io/cypress/pull/4226).