Released 9/15/2020

Features:

Added the configuration option includeShadowDom for enabling shadow DOM querying globally, per-suite, per-test, or programmatically. Addresses #8442.

for enabling shadow DOM querying globally, per-suite, per-test, or programmatically. Addresses #8442. Added a followRedirect option to request interception with cy.route2() , allowing redirects to be followed before continuing to response interception. Addresses #7967.

option to request interception with , allowing redirects to be followed before continuing to response interception. Addresses #7967. Added the capability to specify delayMs and throttleKbps when stubbing static responses with cy.route2() . Addresses #7661.

and when stubbing static responses with . Addresses #7661. Installing Cypress pre-releases no longer requires setting the CYPRESS_BINARY_INSTALL environment variable. Addresses #8482.

Performance Improvements:

Fixed a performance issue which led to CPU bottlenecking during Cypress runs. Addresses #8012 and #8297.

Bugfixes:

Fixed an issue where using TypeScript path aliases in the plugins file would error. Addresses #8555.

Fixed an issue where using cy.contains() within a shadow root would not yield the correct element. Addresses #8494.

within a shadow root would not yield the correct element. Addresses #8494. Fixed an issue where querying the shadow DOM in a cy.within() callback would throw the error root.getRootNode is not a function . Addresses #8478.

callback would throw the error . Addresses #8478. Fixed an issue with cy.type() {moveToStart}/{moveToEnd} special characters moving the cursor to the current line instead of the entire text editable when typing in a contenteditable element. Addresses #8465.

special characters moving the cursor to the current line instead of the entire text editable when typing in a element. Addresses #8465. Fixed an issue where typing into a manually-focused number input would prepend the number instead of appending it. Addresses #7170.

cy.type() now fires a KeyboardEvent event instead of an Event event. Addresses #6125 and #5650.

now fires a event instead of an event. Addresses #6125 and #5650. Fixed long selectors in the selector playground text input overflowing other page elements. Addresses #8247 and #4184.

Fixed an issue where assertions on cy.getCookie() would be called twice. Addresses #6672.

would be called twice. Addresses #6672. Fixed an issue that caused the “Open in IDE” button on hooks and tests not to appear in Firefox. Addresses #8257.

Fixed an issue causing Cypress to hang on test retry in run mode with certain assertions. Addresses #8363.

Documentation Changes:

Fixed examples of delaying and throttling responses with cy.route2() . Addresses #8489.

. Addresses #8489. Added examples of using a response function with cy.route2() . Addresses #8468.

. Addresses #8468. Removed unmaintained languages. English docs is the only supported language by the Cypress team. We greatly appreciate the contributions from the community for other languages, but these docs are largely stale, unmaintained, and partial. The Cypress team will seek out more scalable docs internalization implementation in the future.

Misc:

The experimentalShadowDomSupport configuration flag has been removed. It is no longer necessary to enable shadow DOM testing.

configuration flag has been removed. It is no longer necessary to enable shadow DOM testing. Improved the error message when the subject provided to cy.shadow() is not a shadow host. Addresses #8530.

is not a shadow host. Addresses #8530. Improved the error message when the Cypress binary is not executable. It now recommends trying to clear the cache and re-install. Addresses #8397.

Added missing type declarations for the cy.route2() command.

command. Updated the type declaration for Cypress.Commands.add() , adding Promise to the list of allowed return types. Addresses #7807.

Released 9/1/2020

Features:

Introducing experimental full network stubbing support 🎉. With experimentalNetworkStubbing enabled, the cy.route2 command is available. By using cy.route2() , your tests can intercept, modify, and wait on any type of HTTP request originating from your app, including XMLHttpRequest s, fetch requests, beacons, and subresources (like iframes and scripts). Outgoing HTTP requests can be modified before reaching the destination server, and the HTTP response can be intercepted as well before it reaches the browser. See the cy.route2() docs for more information on how to enable this experiment.

cy.trigger() now accepts an eventConstructor option for specifying the constructor with which to create the event to trigger. Addresses #5650.

Bugfixes:

Improved warnings for when user is exceeding test limits of the free Dashboard plan. Addresses #8409.

Added retries to TestOptions types. Addresses #8405.

to types. Addresses #8405. Added types for specType field on Cypress.spec . Addresses #8256.

field on . Addresses #8256. Fixed a typo in type definitions. Addresses #8417.

Cypress now resolves and loads tsconfig.json for TypeScript projects starting from the plugins directory. Addresses #8359.

Fixed an issue where, if npm config’s noproxy is set, unexpected behavior could occur. Addresses #8287.

is set, unexpected behavior could occur. Addresses #8287. Fixed an issue where nesting hooks within other hooks caused the test to never finish. Addresses #8350.

Fixed an issue in where tests would unexpectedly fail with a “Can’t resolve ‘async_hooks’” error. Addresses #8375.

Fixed an issue where return values from blob utils were mistaken for promises and could cause errors. Addresses #8365.

Fixed an issue with loading .mjs files. Addresses #8361.

files. Addresses #8361. Fixed an issue causing tests to run slowly in Electron. Addresses #7930.

Using .should with only chainer assertions will now throw an error. Addresses #883.

with only chainer assertions will now throw an error. Addresses #883. cy.trigger() now includes the view property in the event object when appropriate. Addresses #3686.

now includes the property in the event object when appropriate. Addresses #3686. Fixed an issue where Cypress would not detect newer 64-bit installations of Chrome on Windows. Addresses #8425.

Fixed an issue where Cypress would not detect per-user Firefox installations on Windows. Addresses #8432.

Dependency Updates:

Updated dependency iconv-lite to version 0.6.2 . Addresses #8387.

to version . Addresses #8387. Updated dependency command-exists to version 1.2.9 . Addresses #8388.

to version . Addresses #8388. Updated dependency electron to version 9.2.1 . Addresses #8436.

Released 8/19/2020

Summary:

Cypress now includes support for test retries! Similar to how Cypress will retry assertions when they fail, test retries will allow you to automatically retry a failed test prior to marking it as failed. Read our new guide on Test Retries for more details.

Breaking Changes:

Please read our Migration Guide which explains the changes in more detail and how to change your code to migrate to Cypress 5.0.

The cypress-plugin-retries plugin has been deprecated in favor of test retries built into Cypress. Addresses #1313.

plugin has been deprecated in favor of test retries built into Cypress. Addresses #1313. The Cypress.Cookies.defaults() whitelist option has been renamed to preserve to more closely reflect its behavior. Addressed in #7782.

option has been renamed to to more closely reflect its behavior. Addressed in #7782. The blacklistHosts configuration has been renamed to blockHosts to more closely reflect its behavior. Addressed in #7622.

configuration has been renamed to to more closely reflect its behavior. Addressed in #7622. The cy.server() whitelist option has been renamed to ignore to more closely reflect its behavior. Addresses #6642.

option has been renamed to to more closely reflect its behavior. Addresses #6642. libgbm-dev is now a requirement to run Cypress on Linux. Addressed in #7791.

is now a requirement to run Cypress on Linux. Addressed in #7791. Values yielded by cy.setCookie() , cy.getCookie() , and cy.getCookies() will now contain the sameSite property if specified. Addresses #6892.

, , and will now contain the property if specified. Addresses #6892. The experimentalGetCookiesSameSite configuration flag has been removed, since this behavior is now the default. Addresses #6892.

configuration flag has been removed, since this behavior is now the default. Addresses #6892. The return type of the Cypress.Blob methods arrayBufferToBlob , base64StringToBlob , binaryStringToBlob , and dataURLToBlob have changed from Promise<Blob> to Blob . Addresses #6001.

methods , , , and have changed from to . Addresses #6001. Cypress no longer supports file paths with a question mark ? in them. We now use the webpack preprocessor by default and it does not support files with question marks. Addressed in #7982.

in them. We now use the webpack preprocessor by default and it does not support files with question marks. Addressed in #7982. For TypeScript compilation of spec, support, and plugins files, the esModuleInterop option is no longer coerced to true . If you need to utilize esModuleInterop , set it in your tsconfig.json . Addresses #7575.

option is no longer coerced to . If you need to utilize , set it in your . Addresses #7575. Cypress now requires TypeScript 3.4+. Addressed in #7856.

Installing Cypress on your system now requires Node.js 10+. Addresses #6574.

In spec files, the values for the globals __dirname and __filename no longer include leading slashes. Addressed in #7982.

Features:

There’s a new retries configuration option to configure the number of times to retry a failing test. Addresses #1313.

configuration option to configure the number of times to retry a failing test. Addresses #1313. .click() , .dblclick() , and .rightclick() now accept options altKey , ctrlKey , metaKey , and shiftKey to hold down key combinations while clicking. Addresses #486.

, , and now accept options , , , and to hold down key combinations while clicking. Addresses #486. You can now chain .snapshot() off of cy.stub() and cy.spy() to disabled snapshots during those commands. For example: cy.stub().snapshot(false) . Addresses #3849.

Bugfixes:

The error Cannot set property 'err' of undefined will no longer incorrectly throw when rerunning tests in the Test Runner. Fixes #7874 and #8193.

will no longer incorrectly throw when rerunning tests in the Test Runner. Fixes #7874 and #8193. Cypress will no longer throw a Cannot read property 'isAttached' of undefined error during cypress run on Firefox versions >= 75. Fixes #6813.

error during on Firefox versions >= 75. Fixes #6813. The error Maximum call stack size exceeded will no longer throw when calling scrollIntoView on an element in the shadow dom. Fixes #7986.

will no longer throw when calling on an element in the shadow dom. Fixes #7986. Cypress environment variables that accept arrays as their value will now properly evaluate as arrays. Fixes #6810.

Elements having display: inline will no longer be considered hidden if it has child elements within it that are visible. Fixes #6183.

will no longer be considered hidden if it has child elements within it that are visible. Fixes #6183. When experimentalShadowDomSupport is enabled, .parent() and .parentsUntil() commands now work correctly in shadow dom as well as passing a selector to .parents() when the subject is in the shadow dom. Fixed in #8202.

is enabled, and commands now work correctly in shadow dom as well as passing a selector to when the subject is in the shadow dom. Fixed in #8202. Screenshots will now be correctly taken when a test fails in an afterEach or beforeEach hook after the hook has already passed. Fixes #3744.

or hook after the hook has already passed. Fixes #3744. Cypress will no longer report screenshots overwritten in a cy.screenshot() onAfterScreenshot option as a unique screenshot. Fixes #8079.

option as a unique screenshot. Fixes #8079. Taking screenshots will no longer fail when the screenshot names are too long for the filesystem to accept. Fixes #2403.

The “last used browser” will now be correctly remembered during cypress open if a non-default-channel browser was selected. Fixes #8281.

if a non-default-channel browser was selected. Fixes #8281. For TypeScript projects, tsconfig.json will now be loaded and used to configure TypeScript compilation of spec and support files. Fixes #7006 and #7503.

will now be loaded and used to configure TypeScript compilation of spec and support files. Fixes #7006 and #7503. reporterStats now correctly show the number of passed and failed tests when a test passes but the afterEach fails. Fixes #7730.

now correctly show the number of passed and failed tests when a test passes but the fails. Fixes #7730. The Developer Tools menu will now always display in Electron when switching focus from Specs to the Test Runner. Fixes #3559.

Documentation Changes:

We have a new guide on Test Retries.

Our Migration Guide has a new section for 5.0 migration.

Misc:

Cypress now uses the webpack preprocessor by default to preprocess spec files.

The Runs tab within the Test Runner has a new improved design when the project has not been set up or login is required. Addressed in #8141.

tab within the Test Runner has a new improved design when the project has not been set up or login is required. Addressed in #8141. The type for the Window object returned from cy.window() is now correct. Addresses #7856.

object returned from is now correct. Addresses #7856. The type definition for Cypress’s ApplicationWindow can now be extended. Addresses #7856.

can now be extended. Addresses #7856. The type definition for reporterOptions has been added. Addresses #7877.

Dependency Updates

Upgraded Chrome browser version used during cypress run and when selecting Electron browser in cypress open from 80 to 83 . Addressed in #7791.

to . Addressed in #7791. Upgraded bundled Node.js version from 12.8.1 to 12.14.1 . Addressed in #7791.

to . Addressed in #7791. Upgraded chalk from 2.4.2 to 4.1.0 . Addressed in #7650.

from to . Addressed in #7650. Upgraded cli-table3 from 0.5.1 to 0.6.0 . Addressed in #7650.

from to . Addressed in #7650. Upgraded electron from 8.3.1 to 9.2.0 . Addressed in #7791 and #8235.

from to . Addressed in #7791 and #8235. Upgraded execa from 1.0.0 to 4.0.2 . Addressed in #7650.

from to . Addressed in #7650. Upgraded express from 4.16.4 to 4.17.1 . Addressed in #8179.

from to . Addressed in #8179. Upgraded fs-extra from 8.1.0 to 9.0.1 . Addressed in #7650.

from to . Addressed in #7650. Upgraded log-symbols from 3.0.0 to 4.0.0 . Addressed in #7650.

from to . Addressed in #7650. Upgraded tmp from 0.1.0 to 0.2.1 . Addressed in #7650.

Released 8/5/2020

Bugfixes:

The error Cannot set property 'err' of undefined will no longer incorrectly throw when rerunning tests in the Test Runner. Fixes #7874.

will no longer incorrectly throw when rerunning tests in the Test Runner. Fixes #7874. Skipping the last test before a nested suite with a before hook will now correctly run the tests in the suite following the skipped test. Fixes #8086.

Dependency Updates:

Upgraded md5 from 2.2.1 to 2.3.0 . Addressed in #8161.

from to . Addressed in #8161. Upgraded electron-context-menu from 0.15.1 to 2.2.0 . Addressed in #8180.

Released 8/3/2020

Features:

Now you can control whether screenshots are automatically taken on test failure during cypress run by setting screenshotOnRunFailure in your configuration. Addresses #5029.

by setting in your configuration. Addresses #5029. The pluginsFile now has access to a readonly version property within the config object that returns the current Cypress version being run. This will allow plugins to better target specific Cypress versions. Addresses #6352.

now has access to a readonly property within the object that returns the current Cypress version being run. This will allow plugins to better target specific Cypress versions. Addresses #6352. During cypress open , you can now run a subset of all specs by entering a text search filter and clicking ‘Run n tests’. Addresses #6581.

Bugfixes:

position: fixed elements that have a parent with pointer-events: none will now correctly evaluate as visible. Fixes #6675.

elements that have a parent with will now correctly evaluate as visible. Fixes #6675. Applications using custom elements will no longer trigger infinite XHR request loops. Fixes #1068.

When snapshotting the DOM, Cypress no longer causes attributeChangedCallback to be triggered on custom elements. Fixes #7187.

to be triggered on custom elements. Fixes #7187. Spec files containing + characters now properly run in Cypress. Fixes #5909.

characters now properly run in Cypress. Fixes #5909. When using the fx shortcut in cy.route() , an error is now thrown when the fixture file cannot be found. Fixes #7818.

shortcut in , an error is now thrown when the fixture file cannot be found. Fixes #7818. Cypress no longer thrown Cannot read property '__error' of null error when passing a file containing null content to cy.fixture() . Fixes #8010.

error when passing a file containing content to . Fixes #8010. Values containing exponential operators passed to --env via the command line are now properly read. Fixes #6891.

via the command line are now properly read. Fixes #6891. The “Open in IDE” button no longer disappears from hooks when the tests are manually rerun. Fixes #8094.

When experimentalSourceRewriting is enabled, AST rewriting will no longer return an output before the body is done being written. This would happen when the response body was too large and the response would be sent while the body was still being modified. Fixes #8043.

is enabled, AST rewriting will no longer return an output before the body is done being written. This would happen when the response body was too large and the response would be sent while the body was still being modified. Fixes #8043. When using .type() , Cypress now properly types into an input within an iframe that auto focuses the input. Fixes #8111.

Misc:

Dependencies for our cypress npm package are no longer pinned to a specific version. This allows the use of npm audit fix to fix security vulnerabilities without needing a patch release from Cypress. Addresses #8046.

npm package are no longer pinned to a specific version. This allows the use of to fix security vulnerabilities without needing a patch release from Cypress. Addresses #8046. We now collect environment variables for AWS CodeBuild when recording to the Dashboard. Addressed #8101.

Types inside Module API are now accessible via the CypressCommandLine namespace. Addresses #7309.

namespace. Addresses #7309. We added more type definitions for the .should() command. Addresses #5573.

command. Addresses #5573. Cookie command’s expiry property type is now a Number instead of a String. Addresses #8144.

property type is now a Number instead of a String. Addresses #8144. There are some minor visual improvements to the Test Runner’s Command Log when hovering, focusing and clicking on hook titles and pending tests. Addressed in #8153.

Dependency Updates:

Upgraded jimp from 0.13.0 to 0.14.0 . Addressed in #8102.

from to . Addressed in #8102. Upgraded moment from 2.26.0 to 2.27.0 . Addressed in #8122.

Released 7/21/2020

Features:

You can now pass an ensureScrollability: false option to .scrollTo() to skip checking whether the element is scrollable. Addresses #1924.

option to to skip checking whether the element is scrollable. Addresses #1924. cy.clock() now accepts Dates as well as a Number for now. Fixes #7786.

now accepts Dates as well as a Number for now. Fixes #7786. The Module API has a new cypress.cli.parseRunArguments function to assist in parsing user-supplied command line arguments using the same logic as cypress run uses. Addesses #7760.

Bugfixes:

Running multiple specs within Firefox during cypress run on Windows will no longer fail trying to make a connection to the browser. Fixes #6392.

on Windows will no longer fail trying to make a connection to the browser. Fixes #6392. Cypress will no longer throw a Cannot read property 'isAttached' of undefined error during cypress run on Firefox versions >= 75. Fixes #6813.

error during on Firefox versions >= 75. Fixes #6813. Fixed an issue where Cypress tests in Chromium-family browsers could randomly fail with the error “WebSocket is already in CLOSING or CLOSED state.” Fixes #7180.

Taking a screenshot of an element that changes height upon scroll will no longer throw an invalid for option "size" error. Fixes #6099.

error. Fixes #6099. Setting viewportHeight or viewportWidth from within the test configuration now properly changes the viewport size for the duration of the suite or test.

or from within the test configuration now properly changes the viewport size for the duration of the suite or test. Setting deep objects and arrays on config within the pluginsFile now sets the values correctly. Fixes #7959.

within the now sets the values correctly. Fixes #7959. The progress bar for cy.wait() now reflects the correct requestTimeout and responseTimeout of the command. Fixes #7881.

now reflects the correct and of the command. Fixes #7881. The command’s progress bar will not longer restart when its parent test is collapsed in the Command Log. Fixes #7912.

Key value pairs sent to ELECTRON_EXTRA_LAUNCH_ARGS as key=value will now be properly read in. Fixes #7994.

as will now be properly read in. Fixes #7994. Stubbed responses responding with an empty string to cy.route() now correctly display as ‘xhr stub’ in the Test Runner’s Command Log. Fixes #8018.

now correctly display as ‘xhr stub’ in the Test Runner’s Command Log. Fixes #8018. Quickly reclicking the “Run All Tests” button in the Test Runners’ Command Log will no longer throw errors about undefined properties and the tests will no longer hang. Fixes #7968.

Misc:

The error messages thrown from pluginsFile and supportFile now mention that .ts extensions are supported. Addresses #7940.

and now mention that extensions are supported. Addresses #7940. The style when focusing on tests in the Command Log has been updated. Addresses #7855.

Dependency Updates:

Upgraded @benmalka/foxdriver from 0.4.0 to 0.4.1 . Addressed in #8040.

from to . Addressed in #8040. Upgraded firefox-profile from 1.3.1 to 2.0.0 . Addressed in #8000.

from to . Addressed in #8000. Upgraded fix-path from 2.1.0 to 3.0.0 . Addressed in #8028.

from to . Addressed in #8028. Upgraded human-interval from 0.1.6 to 1.0.0 . Addressed in #8031.

from to . Addressed in #8031. Upgraded lodash from 4.17.15 to 4.17.19 . Addressed in #7954.

from to . Addressed in #7954. Upgraded plist from 2.1.0 to 3.0.1 . Addressed in #8045.

from to . Addressed in #8045. Upgraded proxy-from-env from 1.0.0 to 1.1.0 . Addressed in #7900.

from to . Addressed in #7900. Upgraded resolve from 1.13.1 to 1.17.0 . Addressed in #7989.

from to . Addressed in #7989. Upgraded systeminformation from 4.21.1 to 4.26.9 . Addressed in #7975.

from to . Addressed in #7975. Upgraded uuid from 3.3.2 to 8.2.0 . Addressed in #7976, #8002, and #8011.

Released 7/7/2020

Features:

You can open a before , beforeEach , after , and afterEach hook definition in your IDE from the Test Runner’s Command Log by clicking the Open in IDE button. Addresses #7793.

, , , and hook definition in your IDE from the Test Runner’s Command Log by clicking the button. Addresses #7793. before , beforeEach , after , and afterEach hook definitions now display separately in the Test Runner’s Command Log when defined in separate hook definitions. Addresses #7779.

, , , and hook definitions now display separately in the Test Runner’s Command Log when defined in separate hook definitions. Addresses #7779. You can now open a spec file directly from the Tests tab in the Test Runner by clicking the Open in IDE button. Addresses #7713

Bugfixes:

HTTP requests taking longer than the default responseTimeout will no longer be prematurely canceled by the Cypress proxy layer. Fixes #6426.

will no longer be prematurely canceled by the Cypress proxy layer. Fixes #6426. Using Cypress commands to traverse the DOM on an application with a global parent variable will no longer throw Illegal Invocation errors. Fixes #6412.

variable will no longer throw Illegal Invocation errors. Fixes #6412. When experimentalShadowDomSupport is enabled, using .type() on an input in the Shadow DOM will not result in an error. Fixes #7741.

is enabled, using on an input in the Shadow DOM will not result in an error. Fixes #7741. When experimentalShadowDomSupport is enabled, checking for visibility on a shadow dom host element will no longer hang if the host element was the foremost element and had an ancestor with fixed position. Fixes #7893.

is enabled, checking for visibility on a shadow dom host element will no longer hang if the host element was the foremost element and had an ancestor with fixed position. Fixes #7893. Debug logs from the @benmalka/foxdriver module will no longer appear if any DEBUG environment variable was set. Fixed #7723.

Misc:

We made some minor UI updates to the Test Runner. Addresses #7732 and #7803.

Dependency Updates:

Upgraded recast from 0.18.8 to 0.19.1 . Addressed in #7898.

Released 6/23/2020

Features:

An animated progress bar now displays on every command in the Command Log indicating how long the command has left to run before reaching its command timeout. Addresses #7642.

There is now an experimentalFetchPolyfill configuration option. When this option is true , Cypress will automatically replace window.fetch with a polyfill that Cypress can spy on and stub. Addresses #7710.

configuration option. When this option is , Cypress will automatically replace with a polyfill that Cypress can spy on and stub. Addresses #7710. You can now pass a --quiet flag to cypress run to silence any Cypress specific output from stdout. Addresses #7714.

Bugfixes:

cy.wait() now correctly resolves when waiting for XHR requests that contain resource-like text in the XHR’s query params or hash (like .js , . html , .css ). #7280.

now correctly resolves when waiting for XHR requests that contain resource-like text in the XHR’s query params or hash (like , . , ). #7280. We fixed a regression in 4.6.0 where errors thrown from the application under test as strings would not be correctly handled. Fixes #7590.

We fixed a regression in 4.8.0 where .click() would hang if the subject had a shadow root and experimentalShadowDomSupport was not enabled. Fixes #7679.

would hang if the subject had a shadow root and was not enabled. Fixes #7679. We fixed a regression in 4.6.0 so that .should('have.value') now properly asserts against <progress> , <meter> or <li> element’s values. Fixes #7603.

now properly asserts against , or element’s values. Fixes #7603. Cypress no longer responds with 413 responses during a recorded cypress run when the stdout is too large. Fixes #7548.

when the stdout is too large. Fixes #7548. We fixed an issue where Cypress could exit successfully even with failing tests when launched in global mode. Fixes #7755.

Assertion logs now properly display as parent commands in the Command Log regardless of what is in the beforeEach hook. Fixes #7731.

hook. Fixes #7731. When experimentalShadowDomSupport is enabled, querying shadow dom in certain situations will no longer cause the error Cannot read property 'length' of undefined during cypress run . Fixes #7676.

is enabled, querying shadow dom in certain situations will no longer cause the error during . Fixes #7676. Highlighting of elements upon hover of a command in the Command Log are now visible when targeting absolute positioned elements. Fixes #7762.

cypress run will no longer crash when provided an empty string to the --project flag. Fixes #7743.

Misc:

There is now a loading state to indicate when tests are loading in the Command Log. Addresses #7700.

The type definitions for fixturesFolder , pluginsFile , screenshotsFolders and videoCompression have been updated to allow false TypeScript types. Addresses #7654.

, , and have been updated to allow TypeScript types. Addresses #7654. The type definitions for cy.wait(ms) now correctly yield the type of the previous subject. Addresses #7682.

now correctly yield the type of the previous subject. Addresses #7682. The type definitions now allow for the ‘key’ keyword when chaining off ‘any’ or ‘all’ assertion chainers. Addresses #7665.

Dependency Updates:

Upgraded arch from 2.1.1 to 2.1.2 . Addressed in #7672.

from to . Addressed in #7672. Upgraded eventemitter2 from 4.1.2 to 6.4.2 . Addressed in #7705 and #7707.

from to . Addressed in #7705 and #7707. Upgraded getos from 3.1.1 to 3.2.1 . Addressed in #7685.

from to . Addressed in #7685. Upgraded is-installed-globally from 0.1.0 to 0.3.2 . Addressed in #7703.

from to . Addressed in #7703. Upgraded jimp from 0.12.0 to 0.13.0 . Addressed in #7618.

from to . Addressed in #7618. Upgraded moment from 2.24.0 to 2.26.0 . Addressed in #7718.

from to . Addressed in #7718. Upgraded signal-exit from 3.0.2 to 3.0.3 . Addressed in #7738.

Released 6/8/2020

Features:

Bugfixes:

Upon domain navigation, before and after hooks defined in completed suites no longer erroneously rerun. Fixes #1987.

and hooks defined in completed suites no longer erroneously rerun. Fixes #1987. Errors thrown within root level after hooks now correctly display in the Test Runner’s Command Log. Fixes #2296.

hooks now correctly display in the Test Runner’s Command Log. Fixes #2296. We fixed a regression in 4.6.0 where an XHR response without a body would cause Cypress to throw Cannot read property '__error' of null . Fixes #7518.

. Fixes #7518. We fixed a regression in 4.6.0 where using cy.visit() to an authenticated URL would error with Request cannot be constructed from a URL that includes credentials: /__cypress/runner/./wasm/mappings.wasm Fixes #7481.

to an authenticated URL would error with Fixes #7481. We now properly load code from the pluginsFile or supportFile when they are TypeScript files. Fixes #7459.

or when they are TypeScript files. Fixes #7459. utf-8 characters now properly display within error code frames. Fixes #7507.

Errors thrown in a cy.on('fail', fn) fail handler now display a stack trace and code frame pointing to the origin of the error. Fixes #7512.

fail handler now display a stack trace and code frame pointing to the origin of the error. Fixes #7512. .click() now properly clicks on wrapped inline elements when the first child element in the parent element has no width or height. Fixes #7343 and #7012.

now properly clicks on wrapped inline elements when the first child element in the parent element has no width or height. Fixes #7343 and #7012. cy.wrap() now properly respects the timeout option. It also better handles situations when passed a promise that never resolves. Fixes #5980.

now properly respects the option. It also better handles situations when passed a promise that never resolves. Fixes #5980. When experimentalSourceRewriting is enabled, Cypress will no longer exit with SIGABRT in certain situations. Fixes #7572.

is enabled, Cypress will no longer exit with SIGABRT in certain situations. Fixes #7572. We fixed a regression in 3.8.0 where the “Tests” button in the Test Runner wouldn’t take you back to the tests list in all browsers. Fixes #5948.

Using the S shortcut during .pause() no longer does anything. This prevents the Test Runner from getting into a ‘stuck’ state. Fixes #6867.

Misc:

The design of errors and some iconography displayed in the Test Runner’s Command Log have been updated. Addresses #7499, #7542 and #7563.

The commands in the Test Runner’s Command Log now display in the same casing as the original command. Addresses #5773.

The navigation links in the Test Runner now display the correct CSS styles when focused. Addresses #7491.

Cypress.config() now has TypeScript types for the taskTimeout option. Addresses #7531.

now has TypeScript types for the option. Addresses #7531. TypeScript types for cy.screenshot() options and Cypress.log() have been updated to be more accurate. Addresses #7445.

options and have been updated to be more accurate. Addresses #7445. TypeScript types for Cypress.automation have been added. Addresses #7519.

have been added. Addresses #7519. We now display a more accurate error message when passing a browser to the --browser flag that is not supported by Cypress. Addresses #6979.

flag that is not supported by Cypress. Addresses #6979. We’re continuing to make progress in converting our codebase from CoffeeScript to JavaScript. Addresses #2690 in #7588 and #7591.

Dependency Updates:

Upgraded chrome-remote-interface from 0.28.1 to 0.28.2 . Addressed in #7615.

from to . Addressed in #7615. Upgraded electron from 8.3.0 to 8.3.1 . Addressed in #7599.

Released 5/26/2020

Features:

cy.request() now supports an encoding option that can be used to set the encoding of the response body, defaulting to utf-8 . Addresses #2029 and #3576.

Bugfixes:

We fixed a regression in 4.6.0 where the address bar of the application under test would disappear when scrolling commands ran and the application under test would visually shift after taking screenshots. Fixes #7443 and #7466.

We fixed a regression in 4.6.0 where test runs could hang when loading spec files with source maps. Fixes #7464.

Misc:

We now display a more descriptive error message when the plugins file does not export a function. Addresses #6611.

Released 5/20/2020

Features:

Errors in the Test Runner now display a code frame to preview where the failure occurred with the relevant file, line number, and column number highlighted. Clicking on the file link will open the file in your preferred file opener and highlight the line and column in editors that support it. Addresses #3762.

Cypress now utilizes source maps to enhance the error experience. Stack traces are translated so that your source files are shown instead of the generated file that is loaded by the browser. Cypress will include an inline source map in your spec file. If you modify the preprocessor, ensure that inline source maps are enabled to get the same experience. Users of @cypress/webpack-preprocessor should upgrade to v5.4.1 or later of the package which will correctly inline source maps. Addresses #881, #1761 and #3966.

should upgrade to v5.4.1 or later of the package which will correctly inline source maps. Addresses #881, #1761 and #3966. Cypress now enables AST-based JS/HTML rewriting when setting the experimentalSourceRewriting configuration option to true . Addresses #5273.

configuration option to . Addresses #5273. Number arguments passed to have.text , have.id , have.data , have.value , and have.attr assertions chainers are now automatically cast to strings for comparison. Addresses #7314.

Bugfixes:

Default TypeScript options are now set to module: commonJS which Node.js and the browser expect. This fixes a situation where setting a different module in a tsconfig.json would cause errors to throw if you had export , import or async keywords in your code. Fixes #7005, #7011, #7043, and #7151.

which Node.js and the browser expect. This fixes a situation where setting a different module in a would cause errors to throw if you had , or keywords in your code. Fixes #7005, #7011, #7043, and #7151. When experimentalSourceRewriting is enabled, setting location or location.href to a relative href, or using location.replace or location.assign with a relative href will no longer navigate the AUT to the wrong URL. Fixes #3975 and #3994.

is enabled, setting or to a relative href, or using or with a relative href will no longer navigate the AUT to the wrong URL. Fixes #3975 and #3994. When experimentalSourceRewriting is enabled, the use of window.top and window.parent will no longer cause the AUT to break out of the Cypress iframe. Fixes #5271 and #1467.

is enabled, the use of and will no longer cause the AUT to break out of the Cypress iframe. Fixes #5271 and #1467. When experimentalSourceRewriting is enabled, calls to window.frames , window.parent.frames , and other frames will no longer point to the wrong reference after being proxied through Cypress. Fixes #2664.

is enabled, calls to , , and other will no longer point to the wrong reference after being proxied through Cypress. Fixes #2664. When experimentalSourceRewriting is enabled, scripts using the integrity attribute for sub-resource integrity (SRI) will now load after being proxied through Cypress. Fixes #2393.

is enabled, scripts using the attribute for sub-resource integrity (SRI) will now load after being proxied through Cypress. Fixes #2393. When experimentalSourceRewriting is enabled, the use of document.location to set the URL will no longer navigate the AUT to the wrong URL. Fixes #7402.

is enabled, the use of to set the URL will no longer navigate the AUT to the wrong URL. Fixes #7402. Type definitions will no longer conflict when running Cypress in a project with Jest. Fixes #3536.

We increased the timeout for launching Firefox from 2.5 seconds to 50 seconds. Previously, users hitting this limit would encounter a “cannot open socket” error; now, the error will be wrapped. Fixes #7159.

.click will now click in the correct coordinates when either x or y coordinate options are zero. Fixes #7319.

will now click in the correct coordinates when either x or y coordinate options are zero. Fixes #7319. Cypress no longer displays onError is not a function when a browser can’t connect. Fixes #7217.

when a browser can’t connect. Fixes #7217. You can now pass the force: true option to .select() to select options within a disabled <select> . Addresses #107.

option to to select options within a disabled . Addresses #107. We now throw an error when attempting to .select() an <option> within a disabled <optgroup> . Fixes #7226.

an within a disabled . Fixes #7226. We fixed a regression in 4.3.0 where the message output during errors were not formatted correctly. Fixes #6924.

Using Cypress._.capitalize now correctly behaves the same as Lodash’s capitalize method. Fixes #7222.

now correctly behaves the same as Lodash’s capitalize method. Fixes #7222. When experimentalComponentTesting is enabled, clicking on a component spec now watches the correct file without assuming it is an integration file. Fixes #7244.

is enabled, clicking on a component spec now watches the correct file without assuming it is an integration file. Fixes #7244. Firefox video recording no longer crashes Cypress when running very short spec files. Fixes #6408.

Applications containing a DOM element with an id attribute containing ‘jquery’ will no longer throw an error during cy.visit() . Fixes #6193.

. Fixes #6193. Long errors generated when compiling or bundling the test file are now horizontally scrollable. Fixes #6898.

Misc:

Cypress no longer requires write access to the root of the project, it instead will display a warning when no write access is given. Addresses #1281.

We increased the timeout for launching Chrome from 20 seconds to 50 seconds. Addressed in #7372.

We increased the timeout for macOS or Linux to exit from a --version command when looking for available browsers from 5 seconds to 30 seconds. Addressed in #7366.

command when looking for available browsers from 5 seconds to 30 seconds. Addressed in #7366. We improved error handling when Cypress launches Chromium-family browsers. Addresses #6518.

We now export Cypress.ConfigOptions types as a partial of the full options interface. Addresses #7238.

types as a partial of the full options interface. Addresses #7238. We’re continuing to make progress in converting our codebase from CoffeeScript to JavaScript. Addresses #2690 in #7162, #7216, #7227, #7320, #7232, and #7345.

Dependency Updates:

Upgraded @cypress/browserify-preprocessor from 2.2.2 to 2.2.3 . Addressed in #7291.

from to . Addressed in #7291. Upgraded cookie-parser from 1.4.4 to 1.4.5 . Addressed in #7389.

from to . Addressed in #7389. Upgraded cypress-multi-reporters from 1.2.4 to 1.4.0 . Addressed in #7431.

from to . Addressed in #7431. Upgraded electron from 8.2.3 to 8.3.0 . Addressed in #7236 and #7387.

from to . Addressed in #7236 and #7387. Upgraded image-size from 0.7.4 to 0.8.3 . Addressed in #7236.

from to . Addressed in #7236. Upgraded jimp from 0.9.3 to 0.12.0 . Addressed in #7408.

from to . Addressed in #7408. Upgraded return-deep-diff from 0.3.0 to 0.4.0 . Addressed in #7292.

Released 4/28/2020

Features:

Cypress now supports the execution of component tests using framework-specific adaptors when setting the experimentalComponentTesting configuration option to true . For more details see the cypress-react-unit-test and cypress-vue-unit-test repos. Addresses #5922 and #6968.

Bugfixes:

Custom Mocha reporters will now correctly use the version of Mocha bundled with Cypress. Fixes #3537 and #6984.

We better account for word boundaries in application scripts when modifyObstructiveCode is true . Fixes #7138.

is . Fixes #7138. Fixed an issue where iterators in TypeScript were not properly transpiled. Fixes #7098.

Misc:

The update window in the Test Runner now encourages yarn users to yarn upgrade Cypress instead of yarn add to help prevent installing 2 versions of Cypress when using yarn workspaces. Addressed in #7101.

Cypress instead of to help prevent installing 2 versions of Cypress when using yarn workspaces. Addressed in #7101. We’re continuing to make progress in converting our codebase from CoffeeScript to JavaScript. Addresses #2690 in #7031 and #7097.

Dependency Updates:

Upgraded electron from 8.2.0 to 8.2.3 . Addressed in #7079.

Released 4/20/2020

Bugfixes:

Cypress can now launch on systems where Chromium is installed via Snapcraft. Fixes #7020.

We now check whether the mouseup event’s target element is detached before issuing the click event during .click() . Fixes #6923.

event’s target element is detached before issuing the event during . Fixes #6923. We fixed a regression in 3.8.1 where the Test Runner could send an undefined organization ID during project setup when the default organization is preselected. Fixes #7013.

organization ID during project setup when the default organization is preselected. Fixes #7013. We fixed a regression in 4.4.0 that caused projects to include bundled TypeScript. Fixes #7036.

Fixed an issue where sites that set Feature-Policy: document-domain 'none' headers would fail to load in Cypress. Fixes #6480.

Misc:

We fixed some extra spacing displaying below the project nav in the Test Runner. Addresses #7023

The typings for run results when using the Module API now indicate they can be null or undefined . Addresses #6126.

or . Addresses #6126. We’re continuing to make progress in converting our codebase from CoffeeScript to JavaScript. Addresses #2690 in #7004.

Released 4/13/2020

Features:

TypeScript test files are now supported without using special preprocessors plugins. Addresses #1859.

Bugfixes:

We fixed an issue where Cypress could crash with a This socket has been ended by the other party error when testing applications that make use of WebSockets. Fixes #6458.

error when testing applications that make use of WebSockets. Fixes #6458. Uncaught errors thrown from within application or test code now display their proper stack trace. Fixes #6964.

Assertion errors now include a stack trace that includes the calling code. Fixes #6969.

We now clone the options object passed into Cypress commands so that they’re not mutated and receive the proper options . Fixes #3171.

object passed into Cypress commands so that they’re not mutated and receive the proper . Fixes #3171. We fixed an issue where invalid Set-Cookie values could cause requests to fail with a cannot read property key of undefined error. Now, invalid Set-Cookie values will be ignored. Fixes #6890.

Misc:

Cypress no longer hides output from cypress --version , cypress version , cypress cache path , or cypress cache list commands when npm log level is silent or warn . Addresses #2705.

, , , or commands when npm log level is or . Addresses #2705. The cy.task() error message is now more specific about the promise resolution value required. Addresses #6241.

Dependency Updates:

Upgraded http-proxy from 1.17.0 to 1.18.0 . Addressed in #6934.

Released 3/30/2020

Features:

Errors shown in the Test Runner have a new design including an expandable stack trace, better highlighting of code elements, and ‘Learn more’ links that link to relevant Cypress documentation. This is part of our larger improvements to error display with more exciting features to come. Addresses #3762.

When you open a Cypress project, clicking on the Settings tab and clicking into the Experiments panel will display the experimental features that are available and whether they are enabled for your project.

tab and clicking into the panel will display the experimental features that are available and whether they are enabled for your project. Added support for setting cookie sameSite values via cy.setCookie() . Addresses #2437.

values via . Addresses #2437. Added experimental support for adding sameSite values to the objects yielded from cy.setCookie() , cy.getCookie() , and cy.getCookies() . Users can enable this by setting the experimentalGetCookiesSameSite configuration value to true . In Cypress 5, this will be the default. Addresses #2437.

values to the objects yielded from , , and . Users can enable this by setting the configuration value to . In Cypress 5, this will be the default. Addresses #2437. Added support for the SameSite cookie attribute in cy.request() , cy.visit() , and proxied HTTP requests. Addresses #6757.

cookie attribute in , , and proxied HTTP requests. Addresses #6757. When an assertion is retried (using .should() ) and fails, it now shows the diff in the stdout . Addresses #6722.

Bugfixes:

Fixed a regression in 4.2.0 where cypress installation could fail if Git is not installed. Fixes #6752.

Fixed a regression in 3.5.0 where certain HTTP requests could fail with Parse Error: Invalid header value char or Parse Error: Header overflow . Fixes #5602.

or . Fixes #5602. Fixed a regression in 4.2.0 where Electron deprecation warnings were printed to stderr in open mode. Fixes #6750.

Cookies set with a Domain containing an unknown TLD are now sent along for all requests. For example, a cookie like foo=bar; Domain=.cypress.test will now be sent during cy.request() to http://local.cypress.test . Fixes #6628.

will now be sent during cy.request() to . Fixes #6628. We fixed a situation where a cross-origin errors could incorrectly throw in Chrome. Fixes #5270.

Visibility checks against vue-fragment elements no longer throw an unexpected error. Fixes #6745.

elements no longer throw an unexpected error. Fixes #6745. The stack trace is now properly shown in the console when clicking the command for tests having an .only that throw an error. Fixes #6744.

that throw an error. Fixes #6744. firefoxGcInterval can now correctly be set to null . Fixes #6825.

can now correctly be set to . Fixes #6825. Cypress will no longer crash the process if an empty video chunk is received. Addressed in #6818.

Assertions failures on DOM elements no longer show unexpected diffs when they weren’t retried. Fixes #6723.

Misc:

Security warnings no longer show in Mac OS when opening Cypress since our application now undergoes notarization from Apple. Addresses #5791.

The previously used spec filter in the Test Runner is now saved and restored for projects without an ID.Addresses #6739.

We collect more env information from Travis builds for potential use in the Cypress Dashboard. Addresses #6808.

We now collect env information from Netlify builds (for example when using cypress-io/netlify-plugin-cypress) to send along to the Cypress Dashboard. Addresses #6780.

Type added for tag property when using Module API. Addresses #6795.

property when using Module API. Addresses #6795. We’re continuing to make progress in converting our codebase from CoffeeScript to JavaScript. Addresses #2690 in #6833.

Dependency Updates

Upgraded Chrome browser version used during cypress run and when selecting Electron browser in cypress open from 80.0.3987.141 to 80.0.3987.158 . Addressed in #6855.

and when selecting Electron browser in from to . Addressed in #6855. Upgraded electron from 8.1.1 to 8.2.0 . This bumps the bundled Chromium to 80.0.3987.158 . Addressed in #6855.

from to . This bumps the bundled Chromium to . Addressed in #6855. Upgraded @benmalka/foxdriver from 0.2.3 to 0.3.0 . Addressed in #6592.

from to . Addressed in #6592. Upgraded @cypress/get-windows-proxy from 1.6.0 to 1.6.1 . Addressed in #6823.

from to . Addressed in #6823. Upgraded execa from 1.0.0 to 4.0.0 . Addressed in #6013.

from to . Addressed in #6013. Upgraded extract-zip from 1.6.7 to 1.7.0 . Addresses #6845 in #6845.

from to . Addresses #6845 in #6845. Upgraded firefox-profile from 1.3.0 to 1.3.1 . Addressed in #6594.

from to . Addressed in #6594. Upgraded get-port from 5.1.0 to 5.1.1 . Addressed in #6854.

from to . Addressed in #6854. Upgraded mime from 1.6.0 to 2.4.4 . Addressed in #6764.

from to . Addressed in #6764. Upgraded minimist from 1.2.2 to 1.2.5 . Addressed in #6747.

from to . Addressed in #6747. Upgraded squirrelly from 7.7.0 to 7.9.2 . Addressed in #6735.

Released 3/16/2020

Features:

Videos can now be recorded when running Electron in --headed mode. Addresses #1767.

mode. Addresses #1767. cypress cache list now prints the last time the cached binary was accessed for each version present. Addresses #6682.

Bugfixes:

We fixed a regression in 3.8.3 where HTTPS requests could experience slowdown. Fixes #6659.

We now detect some installations of Firefox that were previously undetected. Fixes #6669.

We fixed a race condition where an asynchronous error could fail to be caught when running the plugins file process. Fixes #6570.

We now more thoroughly ensure the parent of an element exists when recursively calling actionability checks in order to prevent some maximum call stack errors. Fixes #6707.

Specfiles containing & or % characters now correctly run instead of erroring. Fixes #4210.

or characters now correctly run instead of erroring. Fixes #4210. We added support for running tests on Jira plugins even when Jira scripts were not minified. Fixes #1436.

We fixed a bug causing specs to hang after rerunning tests during cypress open when there was an exception if thrown in an after hook. Fixes #6619.

when there was an exception if thrown in an hook. Fixes #6619. cypress verify no longer incorrectly prints messaging about this being the first time using that Cypress version. Fixes #6607.

no longer incorrectly prints messaging about this being the first time using that Cypress version. Fixes #6607. Screenshots no longer fail to be taken in Electron when Cypress DEBUG logs are enabled. Fixes #6662.

Misc:

A warning is now printed when setting the reserved key CYPRESS_INTERNAL_ENV to a non-production value. Addresses #6436.

to a non-production value. Addresses #6436. When DEBUG logs are printed from cypress:launcher , they now print a clearer log during browser detection for easier reading. Addresses #6700.

, they now print a clearer log during browser detection for easier reading. Addresses #6700. The Test Runner now renders ANSI colors when there is a syntax error in the spec file. Addresses #6533.

The Test Runner now has an icon indicating whether the specs list parent folder is collapsed. Addresses #6277.

There’s better type information for .click , .dblclick , and .rightclick command’s position argument. Addresses #6341.

, , and command’s argument. Addresses #6341. There’s a more robust type signature for .its() and .invoke() . Addresses #6431.

and . Addresses #6431. Using Cypress.dom.isDetached no longer throws a type error in TypeScript projects. Addresses #4408.

no longer throws a type error in TypeScript projects. Addresses #4408. Using cy.clearLocalStorage({ log:false }) no longer throws a type error in TypeScript projects. Addresses #6615.

no longer throws a type error in TypeScript projects. Addresses #6615. We added types for Cypress.sinon . Addresses #6720.

. Addresses #6720. We’ve added the foundational work required to support experimental features in the Test Runner. Addresses #6257.

Dependency Updates

Upgraded Chrome browser version used during cypress run and when selecting Electron browser in cypress open from 78 to 80 . Addressed in #6555.

and when selecting Electron browser in from to . Addressed in #6555. Upgraded electron from 7.1.13 to 8.1.1 . This bumps the bundled Chromium to 80.0.3987.141 and the bundled Node to 12.13.0. Addressed in #6555.

from to . This bumps the bundled Chromium to 80.0.3987.141 and the bundled Node to 12.13.0. Addressed in #6555. Upgraded @ffmpeg-installer/ffmpeg from 1.0.19 to 1.0.20 . Addressed in #6686.

from to . Addressed in #6686. Upgraded minimist from 1.2.0 to 1.2.2 . Addressed in #6726.

from to . Addressed in #6726. Replaced deprecated request with cypress-io/request . Addressed in #6679.

Released 2/28/2020

Features:

There is a new cypress info command to see the locally detected browsers and other information related to Cypress. Addresses #4540.

command to see the locally detected browsers and other information related to Cypress. Addresses #4540. You can now click a ‘Try Again’ button to recheck if the server at the designated baseUrl is running within the warning message during cypress open . Addresses #3284.

is running within the warning message during . Addresses #3284. There are “collapse all” and “expand all” links in the Test Runner’s “Tests” tab to collapse or expand all folders within the “Integration Tests”. Addresses #6282.

The plugins file function’s config argument now includes projectRoot (absolute path to the root of the project) and configFile (absolute path to the configuration file). Addresses #5941.

Bugfixes:

Fixed a regression in 4.0.2 where Cypress could throw a “Maximum call stack size exceeded” error when transmitting a circular object over the internal WebSocket. Fixes #6582.

We fixed an issue where using Chromium-family browsers could cause Cypress to throw a “WebSocket is not open: readyState 3” error under certain conditions. Fixes #5685.

We now more thoroughly ensure the parent of an element exists when recursively calling visibility and existence checks in order to prevent some maximum call stack errors. Fixes #4373.

We fixed an issue where a maximum call stack error would throw in some circumstances when xhr.onreadystatechange is accessed. Fixes #5864.

is accessed. Fixes #5864. We fixed a regression in 3.5.0 where typing into an iframe with a body element with the contenteditable attribute would throw an error. Fixes #5930.

We now set the default window size when running Chrome headlessly to 1280x720. Fixes #6210.

We fixed an issue where cypress install would not complete on Node.js 8.0.0. Fixes #6512 and #6568.

would not complete on Node.js 8.0.0. Fixes #6512 and #6568. cy.clearLocalStorage() now properly accepts the log option to disable logging. Fixes #6342.

Misc:

The error messages displayed when rerouting to a non same-origin domain has been updated to more accurately reflect the rules around same-origin policy. Addresses #6048.

We fixed an error message that would display the wrong available browser families during validation. Addressed in #6517.

We fixed some typos in some of our error messages. Addressed in #6508.

We’re collecting more environment variables when running Cypress with GitLab CI. Addresses #6231.

The typing of cy.$$ has been updated to distinguish differences between it and Cypress.$ . More info here Addresses #2027.

has been updated to distinguish differences between it and . More info here Addresses #2027. We’re continuing to make progress in converting our codebase from CoffeeScript to JavaScript. Addresses #2690 in #6552, #6523, and #6545.

Dependency Updates

Upgraded electron from 7.1.10 to 7.1.13 . Addressed in #6566.

Released 2/14/2020

Bugfixes:

We fixed a bug where tests in Firefox would not open on macOS if another instance of Firefox was open. Fixes #6380.

We fixed a regression in 4.0.0 where using .should('not.contain', ...) chained after a .contains() would produce unexpected results. Fixes #6384.

chained after a would produce unexpected results. Fixes #6384. We fixed a regression in 4.0.0 where non-top-level require() s in tests no longer worked. Fixes #6403.

s in tests no longer worked. Fixes #6403. Re-running a failed workflow in GitHub Actions now properly generates a new Dashboard run. Fixes #6450.

Misc:

We fixed incorrect type definitions for Cypress.isBrowser . Addresses #6447.

. Addresses #6447. We improved the error experience when launching a browser fails. Addresses #6432.

We improved the error experience when visiting the Cypress server outside of a Cypress-launched browser. Addresses #6435.

Dependency Updates

Upgraded @cypress/browserify-preprocessor from 2.1.1 to 2.1.4 . Addressed in #6419.

Released 2/7/2020

Bugfixes:

Fixed a bug where Chromium could not be detected on macOS. Addresses #6358.

Fixed bugs where Edge and Firefox Nightly could not be detected on macOS. Addresses #6354 and #6345.

Fixed a bug where 64-bit editions of Firefox could not be detected on Windows. Addresses #6355.

Fixed a bug where video recordings of Firefox would omit all frames from before the last cross-domain navigation of the test. Addresses #6369.

Fixed a bug where Cypress could crash with the message “cannot read property ‘on’ of undefined” while running Firefox. Addresses #6356.

Corrected a link to the screenshot API documentation in the type definitions. Addresses #6359.

Misc:

Updated the default preferences set on Firefox to hide update notifications and otherwise improve the Firefox experience. Addresses #6346.

Released 2/6/2020

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 for Cross Browser Testing in Cypress. We’ve also updated many of the underlying tools behind Cypress that bring new powerful features.

Breaking Changes:

Please read our 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, #2529, #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.

, we no longer yield the second argument as an array of browser arguments and instead yield an object with an property in order to support more advanced browser launch options. Addresses #6306. We updated the Cypress browser objects of all Chromium-based browsers, including Electron, to have chromium set as their family field. Addresses #6243.

set as their field. Addresses #6243. The --browser flag 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.

flag no longer accepts as its sole argument to run Chrome Canary. You now have to specify to use the Chrome Canary browser. Addresses #6243. .contains() now ignores leading, trailing, duplicate whitespaces. Addresses #92.

now ignores leading, trailing, duplicate whitespaces. Addresses #92. cy.writeFile() now yields null instead of the contents written to the file in order to more align with the behavior of fs . Addresses #2466.

now yields instead of the contents written to the file in order to more align with the behavior of . Addresses #2466. Installing Cypress on your system now requires Node.js 8+. Addresses #5632.

Cypress no longer support CJSX. Addresses #3469.

Features:

Mozilla Firefox browsers now have beta support. Addresses #1096.

Microsoft Edge (Chromium based) browsers are now supported. Addresses #5433.

There is a new Cypress.isBrowser() utility function. Addresses #2023.

utility function. Addresses #2023. We updated the Cypress.browser object with a new channel property which contains the release channel of the detected browser. Addresses #6243.

object with a new property which contains the release channel of the detected browser. Addresses #6243. There is a new matchCase option for .contains() . Addresses #2785.

option for . Addresses #2785. Appending .only to multiple tests or suites will now run all tests with the .only property. Addresses #2828.

to multiple tests or suites will now run all tests with the property. Addresses #2828. The isFinite assertion is now supported. Addresses #5669.

assertion is now supported. Addresses #5669. The empty assertion is now supported when used against Map objects. Addresses #6072.

assertion is now supported when used against Map objects. Addresses #6072. The nested assertion chainer property is now supported. Addresses #3080 and #5004.

Bugfixes:

A test or suite appended with an .only when multiple tests or suites contained the same title now run correctly. Fixes #5345.

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.

Documentation Changes:

Added Cross Browser Testing Guide with helpful CI strategies to consider when running tests across multiple browsers.

Added Cypress.isBrowser() doc.

Misc:

We now pass through errors caused when attempting to read arguments passed through config . Addresses #6279.

. Addresses #6279. We fixed a broken ‘Learn more’ link within the Node.js Version panel of the Test Runner Settings. Addresses #6237.

The browser icons in the Test Runner now display as images with the proper branding. Addresses #6188.

We updated the styling of browser dropdown in the Test Runner to look more like a button. Addresses #6298.

The timer in the Test Runner now always displays at a consistent length. Addresses #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. Addresses #6169.

debug stream. Addresses #6169. We added types for plugin events. Addresses #6322.

Dependency Updates

Added @benmalka/foxdriver . Addressed in #1359.

. Addressed in #1359. Upgraded @cypress/browserify-preprocessor from 1.1.2 to 2.1.1 . Addressed in #4308 and #4226.

from to . Addressed in #4308 and #4226. Upgraded bluebird from 3.5.0 to 3.7.2 . Addressed in #4226.

from to . Addressed in #4226. Upgraded cachedir from 1.3.0 to 2.3.0 . Addressed in #4208 and #4226.

from to . Addressed in #4208 and #4226. Upgraded chai from 3.5.0 to 4.2.0 . Addressed in #2862 and #4226.

from to . Addressed in #2862 and #4226. Upgraded chai-as-promised from 6.0.0 to 7.1.1 . Addressed in #4226.

from to . Addressed in #4226. Upgraded chalk from 2.4.0 to 3.0.0 . Addressed in #4226.

from to . Addressed in #4226. Upgraded commander from 2.15.1 to 4.0.1 . Addressed in #4208 and #4226.

from to . Addressed in #4208 and #4226. Upgraded debug from 2.15.1 to 4.0.1 . Addressed in #4226.

from to . Addressed in #4226. Upgraded execa from 0.10.0 to 3.3.0 . Addressed in #4226.

from to . Addressed in #4226. Added firefox-profiler . Addressed in #1359.

. Addressed in #1359. Added foxdriver . Addressed in #1359.

. Addressed in #1359. Upgraded fs-extra from 5.0.0 to 8.1.0 . Addressed in #4226.

from to . Addressed in #4226. Upgraded getos from 3.1.1 to 3.1.4 . Addressed in #4226.

from to . Addressed in #4226. Upgraded is-ci from 1.2.1 to 2.0.0 . Addressed in #4226.

from to . Addressed in #4226. Upgraded mocha from 2.5.3 to 7.0.1 . Addressed in #2703 and #4226.

from to . Addressed in #2703 and #4226. Upgraded listr from 0.12.0 to 0.14.3 . Addressed in #4226.

from to . Addressed in #4226. Upgraded log-symbols from 2.2.0 to 3.0.0 . Addressed in #4226.

from to . Addressed in #4226. Added marionette-client . Addressed in #1359.

. Addressed in #1359. Upgraded ramda from 0.24.1 to 0.26.1 . Addressed in #4226.

from to . Addressed in #4226. Upgraded sinon from 3.2.0 to 8.1.1 . Addressed in #2881 and #4226.

from to . Addressed in #2881 and #4226. Upgraded strip-ansi from 3.0.1 to 6.0.0 . Addressed in #1359.

from to . Addressed in #1359. Added systeminformation . Addressed in #1359.

. Addressed in #1359. Upgraded support-colors from 5.5.0 to 7.1.0 . Addressed in #4208 and #4226.

from to . Addressed in #4208 and #4226. Upgraded untildify from 3.0.3 to 4.0.0 . Addressed in #4226.

Released 1/24/2020

Bugfixes:

We fixed an error during cypress run indicating could not find CRI target when Cypress was unable to find the tab to control. Fixes #6053.

indicating when Cypress was unable to find the tab to control. Fixes #6053. HTTP requests to sites using a TLS version lower than 1.2 now no longer fail. Fixes #5446.

cypress verify will no longer error on some systems when -screen is not defined. Fixes #6184.

will no longer error on some systems when is not defined. Fixes #6184. We fixed a regression in 3.5.0 causing cy.type({ force: true }) to no longer forcibly type characters for readonly inputs. Fixes #6116.

to no longer forcibly type characters for readonly inputs. Fixes #6116. Generated reports when using custom reporters now have a defined file property. Fixes #1495.

Misc:

Messages from cy.get() are now truncated at 50 lines the Command Log instead of the 1 line. Addresses #6145.

are now truncated at 50 lines the Command Log instead of the 1 line. Addresses #6145. We now collect more environment variables for Bamboo CI when recording for the Dashboard. Addresses #4895.

Dependency Updates:

Upgraded electron from 7.1.7 to 7.1.10 . Addressed in #6180 and #6242.

from to . Addressed in #6180 and #6242. Upgraded http-status-codes from 1.3.2 to 1.4.0 . Addressed in #6134.

from to . Addressed in #6134. Upgraded socket.io and socket.io-client from 2.2.0 to 2.3.0 . Addressed in #6179.

Released 01/10/2020

Bugfixes:

We fixed a regression in 3.8.0 on Linux when unzip is not installed where the progress of cypress install would show up to 200%. Fixes #5967.

is not installed where the progress of would show up to 200%. Fixes #5967. We fixed a regression in 3.7.0 that would prevent .type() from typing valid characters after invalid characters were typed in type="number" inputs. Fixes #6055.

from typing valid characters after invalid characters were typed in inputs. Fixes #6055. Child elements of an element that uses both transform and height or width are now properly seen as visible during visiblity checks. Addresses #5974.

and or are now properly seen as visible during visiblity checks. Addresses #5974. We now properly check backface visibility when the parents of a target element have the CSS style transform-style: preserve-3d . Fixes #5682.

. Fixes #5682. DOM elements with a width or height of 0 and overflow: hidden are now properly calculated as invisible during visibility checks. Fixes #6093.

are now properly calculated as invisible during visibility checks. Fixes #6093. .should() and .and() commands with function arguments can now be chained with multiple assertions without throwing an error. Fixes #4981.

Misc:

We replaced the browser icons in the Test Runner with more official browser brand icons. Addresses #5921.

Messages from cy.log() are now truncated at 50 lines the Command Log instead of the 1 line. Addresses #5625.

are now truncated at 50 lines the Command Log instead of the 1 line. Addresses #5625. We now capture GitLab CI’s CI_JOB_NAME environment variable. Addressed in #6111.

environment variable. Addressed in #6111. Types for event emitters removeListener and removeAllListeners have been added to Cypress and cy . Addresses #5228.

and have been added to and . Addresses #5228. Types for the runUrl property returned from cypress.run() has been added. Addresses #6087.

property returned from has been added. Addresses #6087. We’re continuing to make progress in converting our codebase from CoffeeScript to JavaScript. Addresses #2690 in #5947 and #6075.

Dependency Updates:

Upgraded ansi_up from 4.0.3 to 4.0.4 . Addressed in #6074.

from to . Addressed in #6074. Upgraded electron from 7.1.4 to 7.1.7 . Addressed in #6085.

Released 12/26/2019

Bugfixes:

We fixed a bug where cypress run --headless would not run Chrome-family browsers headlessly. Fixes #5949.

would not run Chrome-family browsers headlessly. Fixes #5949. We fixed an issue where, on some systems with IPv4 and IPv6 enabled, Cypress would fail to connect to the Chrome DevTools Protocol while launching Chrome, leading to test failures. Fixes #5912.

The strict cookie validation added in 3.5.0 for cy.setCookie() , cy.clearCookie() , and cy.getCookie() has been removed. Fixes #5642.

, , and has been removed. Fixes #5642. We fixed a regression in 3.8.0 where using .type() on number inputs to type non-number characters or the {enter} special character would not type the correct value. Fixes #5968 and #5997.

on number inputs to type non-number characters or the special character would not type the correct value. Fixes #5968 and #5997. Configuration values set from the plugin file now display with the correct background color in the Configuration panel in the Test Runner Settings. Fixes #6024.

We removed the ‘Me’ and ‘An Organization’ selections in the Test Runner when setting up a project to more closely match the Dashboard UI. This also fixes an edge case where a user with no default organizations could potentially be unable to set up a project. Fixes #5954.

Misc:

We updated the fallback error message for visibility checks to be less confusing. Addresses #5982.

The type definitions for cy.location() have been improved. Addresses #5574.

Dependency Updates:

Upgraded get-port from 5.0.0 to 5.1.0 . Addressed in #6004.

from to . Addressed in #6004. Upgraded chrome-remote-interface from 0.28.0 to 0.28.1 . Addressed in #6008.

from to . Addressed in #6008. Upgraded which from 1.3.1 to 2.0.2 . Addressed in #6017.

from to . Addressed in #6017. Upgraded ansi_up from 1.3.0 to 4.0.3 . Addressed in #4331.

from to . Addressed in #4331. Upgraded jimp from 0.6.4 to 0.9.3 . Addressed in #4331.

Released 12/12/2019

Features:

Chrome can now be run in headless mode by using cypress run --headless --browser chrome . Addresses #832.

. Addresses #832. Cypress now accepts a --tag argument to be used to identify separate runs. Any tags assigned will be shown on the run in the Cypress Dashboard. Addresses #2561.

argument to be used to identify separate runs. Any tags assigned will be shown on the run in the Cypress Dashboard. Addresses #2561. The commands .its() and .invoke() now accept an options object to allow changing logging options. Addresses #1450.

and now accept an object to allow changing logging options. Addresses #1450. Cypress will now attempt to use the unzip binary during cypress install before trying the slower, Node.js-based unzipping method. Addresses #3803.

Bugfixes:

We fixed a regression in 3.5.0 where Cypress would crash on Windows when trying to pass a url through --config or --env command line flags. Fixes #5466.

or command line flags. Fixes #5466. We fixed a regression in 3.5.0 where a supplied Cookie header during cy.visit() or cy.request() would be overwritten by the Cookie header generated from the browser’s cookie store. Fixes #5894.

header during or would be overwritten by the header generated from the browser’s cookie store. Fixes #5894. We fixed a regression in 3.5.0 where cy.getCookie() would incorrectly filter cookies by their domain, leading to unexpected results. Fixes #5656.

would incorrectly filter cookies by their domain, leading to unexpected results. Fixes #5656. We fixed a regression in 3.5.0 where calling .type({ force: true }) on hidden inputs would not type the correct characters. Fixes #5835.

on hidden inputs would not type the correct characters. Fixes #5835. We fixed a regression in 3.5.0 where .type() was not respecting previous selections if the current value of the input was the same as the key. This also fixed an where .type() would not respect previous selections in non-selectionRange inputs (like email or number inputs). Fixes #5703.

was not respecting previous selections if the current value of the input was the same as the key. This also fixed an where would not respect previous selections in non-selectionRange inputs (like email or number inputs). Fixes #5703. During visibility checks, Cypress now properly evaluates a DOM element transformed by scale(0) or rotateY(90deg) as not visible. Fixes #723.

or as not visible. Fixes #723. Fixed a bug where the specs list during cypress open would not refresh when files are changed on disk. Fixes #5933.

would not refresh when files are changed on disk. Fixes #5933. env configuration option displays properly within the settings panel. Previously, setting env options would incorrectly render "undefined" as the value. Fixes #5859.

Misc:

We removed the max viewport size and lowered min viewport size to 0 for cy.viewport() Addresses #5871 and #5892.

for Addresses #5871 and #5892. The Test Runner now shows a non-Chrome logo for browsers passed in via config.browser that are not of the Chrome family. It also supports showing the Firefox logo (in preparation for Firefox browser support). Fixes #5745.

that are not of the Chrome family. It also supports showing the Firefox logo (in preparation for Firefox browser support). Fixes #5745. We updated the look of some of our icons. Addressed in #5822.

We’re continuing to make progress in converting our codebase from CoffeeScript to JavaScript. Addresses #2690 in #5643.

cy.request will now automatically encode special characters in the request URL, including Unicode. Addresses #5274.

will now automatically encode special characters in the request URL, including Unicode. Addresses #5274. You can pass additional Electron launch command line arguments using environment variable ELECTRON_EXTRA_LAUNCH_ARGS . Addresses #5807.

Dependency Updates:

Upgraded electron from 5.0.10 to 7.1.4 . This bumps the internal Node version to 12.8.1 and the internal Chromium version to 78.0.3904.113. Addressed in #5849.

from to . This bumps the internal Node version to 12.8.1 and the internal Chromium version to 78.0.3904.113. Addressed in #5849. Upgraded ansi-escapes from 4.2.1 to 4.3.0 . Addressed in #5815.

from to . Addressed in #5815. Upgraded electron-context-menu from 0.11.0 to 0.15.1 . Addressed in #5495.

Released 11/27/2019

Features:

Cypress now includes the full list of browsers found and their properties within the Cypress configuration. This means that the browsers array is also editable within plugins by accessing config.browsers via the Configuration API. The currently available browsers are also displayed within the configuration panel under Settings in the Test Runner. Addresses #5067.

array is also editable within plugins by accessing via the Configuration API. The currently available browsers are also displayed within the configuration panel under Settings in the Test Runner. Addresses #5067. Environment variables within GitHub Actions are now detected and passed to the Dashboard in order to display the proper git information for recorded runs. Addresses #5609.

.its() and .invoke() now support a Number for its propertyName and functionName arguments respectively. Addresses #5754.

Bugfixes:

We fixed a regression in 3.5.0 where a cy.visit() that changes superdomain would incorrectly clear cookies of other domains. Fixes #5756.

that changes superdomain would incorrectly clear cookies of other domains. Fixes #5756. We fixed a regression in 3.5.0 where cookies set in a redirect on a cy.visit() or in a cy.request with a custom Domain that is not a subdomain of the current domain would fail to set. Fixes #5656.

or in a with a custom that is not a subdomain of the current domain would fail to set. Fixes #5656. We fixed a regression in 3.5.0 which caused .type() to send duplicate modifier keys. Fixes #5622.

to send duplicate modifier keys. Fixes #5622. We fixed a regression in 3.6.1 where cy.request() with followRedirect: false would fail if a Set-Cookie header was present in the response. Fixes #5654.

would fail if a header was present in the response. Fixes #5654. The context of window is no longer undefined within the application under test when called within a setTimeout during strict mode. Fixes #5707.

is no longer within the application under test when called within a during strict mode. Fixes #5707. Cypress now captures the SHA of builds generated through Travis CI during pull requests. This should resolve issues with Cypress status checks sometimes not running within GitHub Integration. Fixes #5728.

Cypress now automatically strips double quotes from --ci-build-id and group flag arguments during cypress run . Fixes #5686.

and flag arguments during . Fixes #5686. Assertions printed in the Command Log now correctly identify integers from string integers. Fixes #25.

Empty spaces are now accurately reflected in the Command Log within assertions. Fixes #1360.

Keys printed in the Command Log when using the have.all.keys assertion now correctly display. Fixes #753.

assertion now correctly display. Fixes #753. We fixed an issue where Cypress would throw an error when using cy.visit() on a cleverapp.io domain. Fixes #5722.

on a domain. Fixes #5722. Fixed a bug where fixtures consisting only of null would cause an error. Fixes #472.

would cause an error. Fixes #472. Fixed a bug where, if the Test Runner child process is killed with a signal and does not exit normally, the npm CLI process would not exit with an error. Fixes #5808.

Misc:

Added a new, more specific error message when an item is not visible because it has position: fixed and is being overflowed over. Addresses #1379.

and is being overflowed over. Addresses #1379. cy.visit s that cause a superdomain change will now result in 2 requests to the origin server. This should not affect tests, as tests will still re-run on a superdomain change. This is a side-effect of the fix for #5756.

s that cause a superdomain change will now result in 2 requests to the origin server. This should not affect tests, as tests will still re-run on a superdomain change. This is a side-effect of the fix for #5756. The configuration object returned from the plugins file is now validated and will throw a helpful error message when invalid. Addresses #5712.

The configuration panel under Settings in the Test Runner now has a white background for better readability. Also each configuration option with nested properties is now collapsible. Addressed in #5068.

Documentation Changes:

Dependency Updates:

Upgraded parse-domain from 2.0.0 to 2.3.4 . Addressed in #5726.

Released 11/08/2019

Bugfixes:

The Electron browser no longer hangs when testing applications that have a prompt in a beforeunload handler. Fixes #2118.

handler. Fixes #2118. We fixed a regression in 3.5.0 where HTTP redirects could cause strange behavior, including cookies not being set as expected, leading to authentication issues and other problems. Fixes #5436 and #5432.

When using cy.setCookie() with the same options Object, Cypress now correctly sets the new cookie instead of the one passed into a previous cy.setCookie() . Fixes #2701.

with the same Object, Cypress now correctly sets the new cookie instead of the one passed into a previous . Fixes #2701. We fixed a regression in 3.5.0 where cy.clearCookie() would not act as expected when using certain baseUrls . Fixes #5453.

would not act as expected when using certain . Fixes #5453. Cypress no longer crashes with the error Failed to parse or set cookie named "xxx" when loading certain websites. Fixes #4990.

when loading certain websites. Fixes #4990. Cypress now sends the expected headers or request body in a cy.visit() to an HTTPS URL using the default port, 443. Fixes #5367.

to an HTTPS URL using the default port, 443. Fixes #5367. We fixed a regression in 3.6.0 where Cypress would crash with TypeError: Cannot read property 'length' of null on some network requests. Fixes #5585.

on some network requests. Fixes #5585. We fixed a regression in 3.5.0 that caused the red target to be rendered incorrectly when specifying offset coordinates to .click() . Fixes #5635.

. Fixes #5635. We fixed a regression in 3.6.0 that was causing an incorrect element to receive the click event during action commands. Fixes #5578.

event during action commands. Fixes #5578. We fixed a regression in 3.5.0 causing text after using modifier keys in .type() to not be typed. Fixes #5622.

to not be typed. Fixes #5622. Elements with backface-visibility: hidden; are now accounted for when asserting on the elemtent’s visibility. Fixes #2985.

are now accounted for when asserting on the elemtent’s visibility. Fixes #2985. We fixed a bug where a failed Cypress commands would incorrectly throw cannot read property 'replace' of undefined if the error’s stack was undefined . Fixes #1669.

if the error’s stack was . Fixes #1669. The ‘Log In’ modal within Cypress when setting up a project now correctly closes when manually closed. Fixes #5631.

Misc:

We improved the user experience around inspecting events fired during .click() and .type() commands within the console. Addresses #5553.

and commands within the console. Addresses #5553. We increased the timeout when connecting to the “Developer Tools Protocol” from 5 seconds to 20 seconds and also added logging for when the connection takes longer than 5 seconds. Addresses #5610.

There is no longer a warning about Promise.defer appearing in stderr when running with video recording enabled. Addresses #5611.

appearing in stderr when running with video recording enabled. Addresses #5611. Types for .rightclick() and .dblclick() have been updated to correctly reflect their accepted options. Addresses #5617.

and have been updated to correctly reflect their accepted options. Addresses #5617. We’re continuing to make progress in converting our codebase from CoffeeScript to JavaScript. Addresses #2690 in #5556

Released 10/31/2019

Features:

testFiles now also accepts an Array of glob patterns when specifying what test files to load in configuration. Addresses #5401.

Bugfixes:

We fixed a regression in 3.5.0 where the maximum size of an HTTP header or body in a stubbed cy.route() was limited to 8kb causing requests to fail with a 431 HTTP error. Fixes #5431.

was limited to 8kb causing requests to fail with a 431 HTTP error. Fixes #5431. We fixed a bug where certain types of uncaught errors originating from the application under test would not route through the uncaught:exception handler, and thus could not caught and ignored. These errors will also now correctly indicate that they came from application code. Fixes #987.

handler, and thus could not caught and ignored. These errors will also now correctly indicate that they came from application code. Fixes #987. We fixed a regression in 3.5.0 that would throw an error during cypress verify when running as a non-root user on a non-Windows machine. We now always set the --no-sandbox flag when verifying in Electron, even when running as a non-root user. Fixes #5434.

when running as a non-root user on a non-Windows machine. We now always set the flag when verifying in Electron, even when running as a non-root user. Fixes #5434. We fixed a regression in 3.5.0 where sometimes cookies were not set on the correct URL during a redirect inside of a cy.visit() or cy.request() . Fixes #5432.

or . Fixes #5432. We fixed a regression in 3.5.0 causing environment variables containing unicode values to be incorrectly resolved when read via Cypress.env() . Fixes #5435.

. Fixes #5435. We fixed a regression in 3.5.0 that prevented use of .click() or .type() inside of an iframe element. Fixes #5449. Fixes #5435.

or inside of an iframe element. Fixes #5449. Fixes #5435. We now throw the proper error message when an element cannot be interacted with due to being covered by an element with position:fixed . Fixes #5430.

. Fixes #5430. We fixed a regression in 3.5.0 that caused some click events to not be sent to the correct elements during .click() . Fixes #5459.

events to not be sent to the correct elements during . Fixes #5459. We updated .type() to properly respect focus selection changes during typing. Fixes #5456.

to properly respect focus selection changes during typing. Fixes #5456. We fixed a regression in 3.5.0 that caused selected text to be overwritten while typing a modifer key during .type() . Fixes #5439.

. Fixes #5439. We now send all the proper events during .type() to input elements with type date , time , and datetime-local so that it now behaves as it did prior to 3.5.0. Fixes #5476.

to input elements with type , , and so that it now behaves as it did prior to 3.5.0. Fixes #5476. We now properly render iframe placeholder content when previewing DOM snapshots. Fixes #5295.

Misc:

We no longer log the default option {multiple: true} in the Command Log or the console during cy.dblclick() . Addresses #5406.

in the Command Log or the console during . Addresses #5406. The text color of inactive tabs within the Cypress Chrome browser has been set to white for better readability. Addresses #1661.

Dependency Updates

Replaced express-handlebars with squirrelly to reduce dependency size. Addressed in #5521.

with to reduce dependency size. Addressed in #5521. Upgraded graceful-fs from 4.2.0 to 4.2.3 . Addressed in #5497.

Released 10/23/2019

Features:

We now record video by default when you run Cypress in Chrome, Chromium, or Canary such as during cypress run --browser chrome . Addresses #4608.

. Addresses #4608. There is a new .rightclick() command to right click on DOM elements. Addresses #53.

command to right click on DOM elements. Addresses #53. Cypress now accepts a --config-file argument to specify a different file to be used for Cypress configuration. You can also pass false to the --config-file to not use any configuration file. Addresses #1369.

argument to specify a different file to be used for Cypress configuration. You can also pass to the to not use any configuration file. Addresses #1369. You can now use your system’s Node version by setting the nodeVersion to system in your configuration. This Node version will be used to build files in your integrationFolder and supportFile and also be used to execute code in your pluginsFile . If not set, Cypress will continue to use the Node version bundled with Cypress. Addresses #4432.

to in your configuration. This Node version will be used to build files in your and and also be used to execute code in your . If not set, Cypress will continue to use the Node version bundled with Cypress. Addresses #4432. .dblclick() now accepts position , x , and y arguments. Addresses #116.

now accepts , , and arguments. Addresses #116. .dblclick() now accepts force and multiple in its options . Addresses #116.

now accepts and in its . Addresses #116. .screenshot() now accepts a padding argument when screenshotting elements that will alter the dimensions of the screenshot of the element. Addresses #4440.

now accepts a argument when screenshotting elements that will alter the dimensions of the screenshot of the element. Addresses #4440. cy.visit() now accepts a qs option representing an object of query paramaters to be used in the URL. Addresses #5034.

now accepts a option representing an object of query paramaters to be used in the URL. Addresses #5034. cy.viewport() now allows for viewport sizes up to 4,000 pixels. Addresses #5181.

now allows for viewport sizes up to 4,000 pixels. Addresses #5181. cy.viewport() accepts new size presets for iphone-xr , iphone-x , samsung-s10 and samsung-note9 . Addresses #4967.

accepts new size presets for , , and . Addresses #4967. Passing a ~ to CYPRESS_CACHE_FOLDER will automatically resolve to the user’s home directory. Addresses #5386.

Bugfixes:

.dblclick() and .click() now fire all appropriate mouse events including mouseover , mousemove , mouseout , pointerdown , pointerup , and pointermove . Fixes #1016, #1847, #2045, #2521, #2768, #2928, #2957, and #3224.

and now fire all appropriate mouse events including , , , , , and . Fixes #1016, #1847, #2045, #2521, #2768, #2928, #2957, and #3224. We updated .dblclick() to follow the same actionability checks as .click() . Fixes #3798.

to follow the same actionability checks as . Fixes #3798. Coordinates clicked during .click() are now correct if the element being clicked is within an iframe. Fixes #4347.

are now correct if the element being clicked is within an iframe. Fixes #4347. We now allow .type() to be used on any DOM element. The element will receive all of the type events. Fixes #2166 and #3661.

to be used on any DOM element. The element will receive all of the type events. Fixes #2166 and #3661. If a typeable element gains focus during .type() , Cypress now continues typing into the newly focused element. Fixes #2240.

, Cypress now continues typing into the newly focused element. Fixes #2240. We now correctly borrow the property getter for maxLength when using .type() on an input. Fixes #4587.

when using on an input. Fixes #4587. We fixed an issue where datetime-local inputs would not have their value updated during .type() . Fixes #2613.

inputs would not have their updated during . Fixes #2613. .type() now allows you to type - into number inputs with text selection. Fixes #4767.

now allows you to type into number inputs with text selection. Fixes #4767. We now fire an input event when using .type() typing {enter} inserts a newline. Fixes #4870.

event when using typing inserts a newline. Fixes #4870. We no longer input text when non- {shift} modifier keys are typed in .type() . Fixes #5424.

modifier keys are typed in . Fixes #5424. We now properly send the code property during keyboard events triggered during .type() . Fixes #3722

property during keyboard events triggered during . Fixes #3722 Cypress now sends screenX and screenY properties to events triggered using .trigger() . Fixes #3187.

and properties to events triggered using . Fixes #3187. We fixed a bug where Cypress could not intercept traffic sent through cy.visit() to IP addresses over HTTPS, leading to ERR_SSL_VERSION_OR_CIPHER_MISMATCH errors. Fixes #771.

to IP addresses over HTTPS, leading to errors. Fixes #771. We fixed a bug introduced in 3.3.0 where some HTTPS sites failed to load during cy.visit() and cy.request() with a “handshake failed” error. Fixes #4394.

and with a “handshake failed” error. Fixes #4394. We fixed a bug where ECC SSL Certificates were not supported during cy.visit() that was introduced in 3.3.0. Fixes #4368.

that was introduced in 3.3.0. Fixes #4368. We fixed an issue introduced in 3.4.0 that would cause the Selector Playground to not properly highlight the currently hovered element. Fixes #4872.

Cypress.env() now escapes <script> tags in the configuration file. Fixes #4952.

now escapes tags in the configuration file. Fixes #4952. Cypress now properly handles converting responses of content-type application/vnd.api+json to JSON. Fixes #5165.

to JSON. Fixes #5165. XHR responses in cy.route() that exceed 80kb in size no longer fail with an ERR_EMPTY_RESPONSE error. Fixes #76.

that exceed 80kb in size no longer fail with an error. Fixes #76. Cypress no longer crashes with dest.end errors on Windows machines. Fixes #2181.

errors on Windows machines. Fixes #2181. The onFocus event no longer incorrectly fires on hidden elements. This fixes an issue introduced in 3.3.2. Fixes #4898.

event no longer incorrectly fires on hidden elements. This fixes an issue introduced in 3.3.2. Fixes #4898. You can now call .click() on inputs or textareas that are readonly . This fixes an issue introduced in 3.4.1. Fixes #4874.

on inputs or textareas that are . This fixes an issue introduced in 3.4.1. Fixes #4874. Cypress no longer crashes with a "port" option should be a number or string error when receiving an erroneous HTTP CONNECT. Fixes #3250.

error when receiving an erroneous HTTP CONNECT. Fixes #3250. Cypress tests now timeout if there are no Cypress commands enqueue and the done() callback is not called within the commandTimeout . Fixes #1075, #2478, #3349, and #4790.

callback is not called within the . Fixes #1075, #2478, #3349, and #4790. We fixed a bug where Cypress would exit with an ENOTCONN error at the end of a test run when using Node >12.11.0 on Windows OS. Fixes #5241.

error at the end of a test run when using Node >12.11.0 on Windows OS. Fixes #5241. We fixed a bug where the Chrome policy warnings introduced in 3.4.0 would not appear. Fixes #4986.

We improved the way that cookies are handled for Chrome browsers. This fixes an issue when parsing cookies that were set with a domain beginning with a . in Chrome 77. Fixes #5142 and #5206.

in Chrome 77. Fixes #5142 and #5206. We fixed a bug when visiting an application that does an HTTP request to a .js file containing Unicode transferred using Content-Encoding: gzip that could cause the JavaScript file to become corrupted. Fixes #1746.

file containing Unicode transferred using that could cause the JavaScript file to become corrupted. Fixes #1746. We now normalize the Cypress cache folder to resolve in the current folder and not with respect to the node_modules/cypress folder. Fixes #2364.

Misc:

Cypress now displays a more precise error message when checking an element’s visibility if an element is detached from the DOM. Addresses #4946.

We increased the timeout to wait for Xvfb to start from 5 seconds to 30 seconds. This should resolve some issues where the error Could not start Xvfb was being thrown because Xvfb could not start within the allowed time. Addresses #5110.

was being thrown because Xvfb could not start within the allowed time. Addresses #5110. We now warn when using cypress run from the binary directly (not from an npm module) since this is not its intended use. Addresses #1573.

from the binary directly (not from an npm module) since this is not its intended use. Addresses #1573. We now warn on cy.visit('file://…) to explain that this url format is not supported and suggest visiting a relative HTML file. Addresses #4452.

to explain that this url format is not supported and suggest visiting a relative HTML file. Addresses #4452. Setting the reserved CYPRESS_ENV environment variable will now throw an error. Addresses #1621.

environment variable will now throw an error. Addresses #1621. We now throw a better error when passing in an Object to the browser argument of the Browser Launch API explaining that a String is expected instead. Addresses #4966.

argument of the Browser Launch API explaining that a String is expected instead. Addresses #4966. An error will now be thrown if an invalid name or value is supplied to cy.setCookie() , matching the RFC 6265 compliant validation of cookie names and values. Addresses #5206.

or is supplied to , matching the RFC 6265 compliant validation of cookie names and values. Addresses #5206. Passing an invalid type to the 2nd argument of cy.get() now throws an error explaining that an options Object is expected. Addresses #2953.

now throws an error explaining that an Object is expected. Addresses #2953. We now throw a more helpful error message during cy.screenshot() that would result in a screenshot with 0 width or height. Addresses #5149.

that would result in a screenshot with 0 width or height. Addresses #5149. Stdout printed during cypress run no longer truncates text such a filenames and instead wraps the text to fit within the width of the terminal. Addresses #4977.

no longer truncates text such a filenames and instead wraps the text to fit within the width of the terminal. Addresses #4977. We now display up to 2,000 characters of HTTP property values within error messages during cy.request() errors. Addresses #3145.

errors. Addresses #3145. Cypress now always considers localhost to be in NO_PROXY . To make Cypress send traffic for localhost through the proxy, you will now have to pass <-loopback> in NO_PROXY . Addresses #4780.

to be in . To make Cypress send traffic for through the proxy, you will now have to pass in . Addresses #4780. We changed the way cookies are set in cy.visit() to more closely match the browser’s behavior when setting cookies, particularly when using fetch with cookies. Addresses #4433.

to more closely match the browser’s behavior when setting cookies, particularly when using with cookies. Addresses #4433. We’ve added more flags to send to Chrome upon launch that should help with issues encountered during browser automation including --disable-backgrounding-occluded-window , --disable-breakpad , --disable-ipc-flooding-protection , --password-store=basic , and --use-mock-keychain . Addresses #5132 and #3633.

, , , , and . Addresses #5132 and #3633. Scrolling the specs list now only scrolls the list of spec files and no longer scrolls the search and filter bar. Addresses #4904.

We fixed some layout issues within the Test Runner that were introduced in 3.4.1. Addresses #4888, #4912, and #4959.

The counter badge for spies and stubs no longer appears visually cut off. Fixes #4822.

TypeScript 3.6.2 no longer errors due to outdated jQuery types. Addresses #5065.

We updated types for Cypress.Commands.overwrite() to not allow an options object as an argument. Addresses #5341.

to not allow an object as an argument. Addresses #5341. We added failures and message types when a run fails using the Module API. Addresses #5335.

and types when a run fails using the Module API. Addresses #5335. We’re continuing to make progress in converting our codebase from CoffeeScript to JavaScript. Addresses #2690 in #4869, #4906, #5096, #5107, #5156, #5173, and #5352.

Documentation Changes:

Added a .rightclick() doc.

doc. Added a Webinars doc containing videos of all of the official Cypress webcasts.

Updated the .dblclick() doc to include new position , x , and y arguments plus force and multiple options.

doc to include new , , and arguments plus and options. Added the --config-file argument to Command Line and Module API doc.

argument to Command Line and Module API doc. Added the nodeVersion argument to Configuration doc and mentioned its uses in the Plugins Guide and Writing a Plugin doc.

argument to Configuration doc and mentioned its uses in the Plugins Guide and Writing a Plugin doc. Updated all docs to mention ‘configuration file’ instead of static cypress.json file since this is not configurable via a --config-file argument.

file since this is not configurable via a argument. Added qs option to cy.visit() with examples.

option to with examples. Added padding option to cy.screenshot() with examples.

option to with examples. Updated the cy.viewport() doc to have a max viewport size of 4000 .

doc to have a max viewport size of . Added newly supported viewport sizes to the cy.viewport() doc.

doc. Documented new keyboard shortcuts in the Test Runner doc.

Added a new section on troubleshooting problems with Xvfb to the Continuous Integration doc.

Added a section to our Debugging doc about our cypress-fiddle plugin used for playing around with small t