---
title: "4.0.0"
url: "https://www.cypress.io/releases/4-0-0"
description: "Summary: Cypress 4.0.0 includes support for Mozilla Firefox browsers (beta support) and Microsoft Edge (Chromium based) browsers which is a big step forward…"
---

# 4.0.0

ReleasedReleased on February 5, 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](/app/guides/cross-browser-testing) in Cypress. We've also updated many of the [underlying tools](/app/references/bundled-libraries) behind Cypress that bring new powerful features.

**Breaking Changes:**

Please read our [Migration Guide](/app/references/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](/api/node-events/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](/app/references/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).
    
-   [.contains()](/api/commands/contains) now ignores leading, trailing, duplicate whitespaces. Addresses [#92](https://github.com/cypress-io/cypress/issues/92).
    
-   [cy.writeFile()](/api/commands/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()](/api/cypress-api/isbrowser) utility function. Addresses [#2023](https://github.com/cypress-io/cypress/issues/2023).
    
-   We updated the [Cypress.browser](/api/cypress-api/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).
    
-   There is a new `matchCase` option for [.contains()](/api/commands/contains). Addresses [#2785](https://github.com/cypress-io/cypress/issues/2785).
    
-   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](/app/references/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()](/api/commands/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](/app/guides/cross-browser-testing) with helpful CI strategies to consider when running tests across multiple browsers.
    
-   Added [Cypress.isBrowser()](/api/cypress-api/isbrowser) doc.
    

**Misc:**

-   We now pass through errors caused when attempting to read arguments passed through [config](/api/node-events/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](/app/references/troubleshooting#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).