What’s New

Cypress Test Runner v9.5.1

Released 2.28.2022


  • Added a ready event to the Plugins process to ensure all plugins have successfully started before the configuration is loaded and the tests start.
  • Made a change to the DNS lookup to improve test performances and reliability on MacOS machines that leverage the VMWare CBCloud SaaS solution. Before this change, random test failures were observed, as well as hanging tests and initially pending HTTP and HTTPS responses.

Dependency Updates

  • Upgraded url-parse dependency from 1.5.2 to 1.5.6 to avoid authorization bypass through user-controlled key to address this NVD security vulnerability.

Read the complete changelog for v9.5.1

New from the Cypress Community

[Dennis Whalen] Run Your Cypress Tests in a GitHub Workflow.

[Filip Hric] Writing better command chains in Cypress.

Cypress Test Runner v9.5.0

Released 2.15.2022


  • Enhancements were made to the error experience in both run mode and open mode to improve readability and provide meaningful stack traces.
  • Updated the cy.request() log message to hide the origin when it matched the browser origin to make debugging easier. This reduces the length of the log message that could be partially hidden if a long url is requested.


  • Fixed an issue where files attached during .selectFile() could have the wrong File prototype.
  • Updated .select() to only dispatch the change and input events when the selected option is not the currently selected option. This change aligns .select() with the browser.
Read the complete changelog for v9.5.0.

New from the Cypress Community

[Michał Łukasik] E2E testing: how to start working with Cypress.

[Dennis Whalen] Using Page Objects in Cypress.

[Filip Hric] Google Sign-In with Cypress.

Cypress Test Runner v9.4.1

Released 2.1.2022


Fixed a regression in 9.4.0 where the line endings in the public NPM package prevented some users from running Cypress.

Read the complete changelog for v9.4.1.

Cypress Test Runner v9.4.0

Released 2.1.2022


Enhancements were made to .selectFile() after receiving feedback after its initial release in 9.3.0.

  • The default behavior was updated to automatically infer the mime type of files based on their extension to correctly encode file uploads.
  • Added the mimeType property so you can explicitly set the mime type on files using the mimeType property.
  • Updated file contents types to allow either a TypedArray instance or a Cypress.Buffer instance, where previously file contents were expected to only be an instance of Cypress.Buffer.
  • Updated .selectFile() to retain the fileName of files read from disk to work with aliases.
Read the complete changelog for v9.4.0.

Cypress Test Runner v9.3.1

Released 1.20.2022


Fixed an issue where the bin file was released with windows line breaks.

Read the complete changelog for v9.3.1.

New from the Cypress Community

[Swimm.io] End-to-End Testing: Challenges and Lessons Learned.

Cypress Test Runner v9.3.0

Released 1.19.2022


Added a new Cypress command, called .selectFile(), to select a file or files in an HTML5 input element or simulate dragging a file or files into the browser. The API is similar to cypress-file-upload and we have provided a migration guide for previous users of that plugin. For more details, see our blog post

Read the complete changelog for v9.3.0.

New from the Cypress Community

[Eran Kinsbruner] How to Do Cypress Parallel Testing.

[Gleb Bahmutov] Know Your Tests.

[Filip Hric] Cypress basics: API testing.

Cypress Test Runner v9.2.1

Released 1.11.2022


Fixed a regression in 9.2.0 to keep Cypress open after each spec finishes when the --headed --no-exit flags are passed to cypress run.

Improve heuristic for verifying when the --openssl-legacy-provider option should be passed to the plugins' child process when the system Node version is v17+. This prevents Cypress from crashing when a user has Node 17 installed which was built with OpenSSL v1.

Read the complete changelog for v9.2.1.

Cypress Test Runner v9.2.0

Released 12.21.2021


Cypress will throw an error when a user attempts to update a configuration value at run-time using either the Test Configuration or using Cypress.config() that is a readonly option.

Additionally, a timeout option has been added to the cy.writeFile() command, with a default value of defaultCommandTimeout.


Cypress now prevents unnecessary snapshotting when running default assertions that would unnecessarily increase CPU use in cypress open mode which lead to out of memory crashes on certain browsers.

We removed automatic retries for failed HTTP requests through the proxy. This fixes an issue where failed requests could be re-sent too many times in some conditions. This change could increase the number of failed requests that your app sees.

Tests that are skipped within then blocks will no longer throw errors causing the test to fail. Tests that are skipped outside of then blocks will no longer trigger the fail event. This will prevent screenshots from happening from errors thrown by the fail event.

Read the complete changelog for v9.2.0.

Cypress Test Runner v9.1.1

Released 12.4.2021


We fixed a regression in 9.1.0 where our built binary didn't contain patches to some dependencies.

Additionally, when using the default configuration of "nodeVersion": "system" with an installed system node >=17, Cypress will now work properly rather than throw an error incorrectly pointing to the user's plugin file.

Read the complete changelog for v9.1.1.

Cypress Test Runner v9.1.0

Released 11.23.2021


CYPRESS environment variable will be set to true in child processes where Cypress runs user code in Node.js. You can now detect that you're running in Cypress by looking for process.env.CYPRESS.


Specs with % in the filename will no longer fail to load and now behave as any other spec.

Additionally, when using the Selector Playground, the HTML attribute's value will be wrapped in double-quotes.

Read the complete changelog for v9.1.0.

Cypress Test Runner v9.0.0

Released 11.11.2021

Breaking Changes

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

Additionally, Windows 32-bit is no longer supported in Cypress.

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

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


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


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


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

Read the complete changelog for v9.0.0.

Cypress Test Runner v8.7.0

Released 10.26.2021


There are now changes to how "slow" tests are determined and displayed in Cypress.

Users can also now pass an overwrite: true option to Cypress.Screenshot.defaults to change default behavior to overwrite existing screenshots without having to set overwrite for each cy.screenshot() command.


We fixed a regression introduced in 8.6.0 where videos recorded in Electron to the Dashboard were not playable in the Firefox or Safari browser and were not compatible with QuickTime player in MacOS.

We also fixed a regression introduced in 8.6.0 so that the warning about the projectRoot directory not being writeable will now display correctly.

Read the complete changelog for v8.7.0.

Cypress Test Runner v8.6.0

Released 10.11.2021


cy.screenshot() now accepts overwrite: true as an option to overwrite existing screenshots with the same file name.

 cy.select([]) can now be used to clear any selected options in a multi-value select.


We fixed a regression introduced in 8.2.0 where certain XMLHttpRequests would not display their response bodies in the DevTools Console when clicked. 

We also fixed a regression in 8.3.0 where capturing videos in Chrome versions earlier than 89 would result in choppy videos and skipped frames.


We updated the cy.request() error message when conflicting failOnStatusCode and retryOnStatusCodeFailure options are passed to be clearer.

Dependency Updates

We upgraded the Chromium browser version used during cypress run and when selecting Electron browser in cypress open from 91.0.4472.164 to 93.0.4577.58

Read the complete changelog for v8.6.0.

Cypress Test Runner v8.5.0

Released 9.27.2021


You can now select an option by index within the .select() command.


The download of Cypress now respects the NO_PROXY environment variable when one is set.


Windows 32-bit has been deprecated and support will be removed in a later release. A deprecation warning will now display when using Cypress in a Windows 32-bit OS.

Read the complete changelog for v8.5.0.

Cypress Test Runner v8.4.1

Released 9.17.2021


Cypress will no longer crash when setting up a project to record to the Dashboard or viewing the runs or record key for a previously set up project.

Read the complete changelog for v8.4.1.

Cypress Test Runner v8.4.0

Released 9.14.2021


When a URL contains non-ASCII characters, you can use the new decode option of cy.url() to decode it.


Cypress now better handles situations where the extension was installed in a read-only location.

A clearer error message is now thrown for .check() or .uncheck() when there are no matching value attributes found.

Read the complete changelog for v8.4.0.

Cypress Test Runner v8.3.1

Released 8.27.2021

Performance Updates

Projects will now open much faster on MacOS Big Sur with improved browser detection performance.


We fixed a regression in 8.3.0 where the correct exit code would not be issued during cypress run-ct while running in the Electron browser.

Fixed a regression in 8.3.0 where Cypress would cause a SIGSEGV error on Mac when closing the Cypress app opened via cypress open.

Read the complete changelog for v8.3.1.

Cypress Test Runner v8.3.0

Released 8.16.2021

What’s New

We've included new instructions for recording a run for some users.

Performance Updates

We addressed an issue that increased CPU usage during video recording in Chrome 89+/Electron 12+.


We fixed an issue that could cause intermittent OpenSSL errors when the local CA cert cache becomes corrupted.

We also fixed a regression in 7.2.0 causing the menu bar of Cypress to not be clickable in Windows.

Read the complete changelog for v8.3.0.

Cypress Test Runner v8.2.0

Released 8.4.2021

What’s New

You can now cache and restore cookieslocalStorage, and sessionStorage in order to reduce test setup times by using the experimental cy.session().


A "removing cookie failed" error will no longer throw when cookies are cleared in Firefox.

We also fixed a regression in 8.0.0 where an error would longer throw when there is no /etc/passwd entry for the current user, such as in some Docker and GitHub Action setups.

Read the complete changelog for v8.2.0.

Cypress Test Runner v8.1.0

Released 7.29.2021

What’s New

When using experimentalStudio, you can now generate assertions in Cypress Studio by right clicking on an element.

Additionally, when searching specs in the Test Runner during end-to-end testing, characters that are not letters will be ignored and don't have to be typed.


When running Cypress in global mode, an error will no longer be thrown when trying to add a new project to the Dashboard.

Read the complete changelog for v8.1.0.

Cypress Test Runner v8.0.0

Released 7.19.2021

What’s New

We've made some updates to ensure a consistent run experience across browsers. Now all browsers run via cypress run run headlessly, with a device pixel ratio of 1, and a screen size of 1280x720 by default.


console.log and console.error called within the plugins file will now be captured in the stdout sent to the Cypress Dashboard, making it visible in Output logs in the Dashboard.

There are also several fixes for cy.intercept().

Read the complete changelog for v8.0.0.

Cypress Test Runner v7.7.0

Released 7.7.2021

What’s New

When using experimentalStudioCypress Studio can now copy all commands generated to your clipboard.


Cypress now respects preventScroll options passed to element.focus() calls within the application under test.

Read the complete changelog for v7.7.0.

New from the Cypress Team

[Migration Guide] Migrating from Protractor to Cypress.

New from the Cypress Community

[Abhinaba Ghosh] Testing React MobX store? Cypress made it easy!

[Smashing Magazine] It’s A (Front-End Testing) Trap! Six Common Testing Pitfalls And How To Solve Them.

Cypress Test Runner v7.6.0

Released 6.23.2021

What’s New

You can now override the default delay between typing characters for .type() with Cypress.Keyboard.defaults() or via test configuration.

The experience when opening a new project via cypress open has also been improved.


Cypress no longer hangs intermittently when using webpack 5.

It is no longer necessary to return the config from the plugins function when using the dev-server:start event for component testing.

Many fixes have also been made to cy.intercept().

Read the complete changelog for v7.6.0.

Cypress Test Runner v7.5.0

Released 6.7.2021

What’s New

The Test Runner has a new 'Docs' menu with links and prompts specific to helping you get started writing tests, set up in CI, and running tests in the Dashboard.


Cypress will not longer crash with a hasBinary infinite recursive call.

cy.location(<key>) will now retry if the remote location returns an empty string, which is possible during otherwise harmless redirects.

Read the complete changelog for v7.5.0.

New from the Cypress Team

[Webcast Recording] Flaky Test Management with Cypress.

[Video Guide] GitHub Actions.

New from the Cypress Community

[Egghead.io] A Practical Guide to Intercepting Network Requests in Cypress.

[Test Automation University] Video Course: Advanced Cypress.

Cypress Test Runner v7.4.0

Released 5.24.2021

What’s New

Cypress now detects and supports testing in the Chrome Beta browser.

There are also new keyboard shortcuts to continue (c) and to go to the next test (n) when the Test Runner is paused via .pause() and to toggle auto-scrolling of the Test Runner (a).


We fixed an issue where cy.wait() could yield the incorrect result when used with cy.intercept() and several simultaneous requests.

We also improved the way that cy.intercept() matchers are displayed in the Command Log when using RouteMatcher properties besides url and method.

Read the complete changelog for v7.4.0.

Cypress Test Runner v7.3.0

Released 5.10.2021

What’s New

Component tests can now be launched via the Module API by passing testingType: 'component' via the new testingType property. The testingType will default to e2e.

Additionally, cy.intercept() now accepts a times option in the RouteMatchertimes will specify the number of times that a particular cy.intercept() should be applied.


Cypress will no longer incorrectly redirect the AUT window to /__/ when location.href is set to a relative path within the call stack of an XHR event handler.

Cypress now properly handles when a form submit or anchor tag target is set to _top or _parent so that it no longer redirects the parent frame.

Read the complete changelog for v7.3.0.

Cypress Test Runner v7.2.0

Released 4.26.2021

What’s New

You can now navigate through folders in the Test Runner using the Tab keyboard input and open or close the folder's content with the Enter & Space keyboard inputs.


We fixed a regression in 7.0.0 that caused the Test Runner to crash with an ERR_INVALID_ARG_TYPE type error. We now correctly detect a utf8 request body with multi-byte Unicode characters.

Reusing cy.intercept() aliases will now work as expected.

We fixed an issue in 7.0 where users could get a misleading "must pass a handler as the 3rd argument" error when using cy.intercept.

Read the complete changelog for v7.2.0.

Cypress Test Runner v7.0.0

Released 4.5.2021

What’s New

Introducing the Cypress Component Test Runner - now in alpha. Today’s release includes a brand new test runner designed to replace your Node-based component tests. Our Component Test Runner tests your components in the browser, just like a user would. And, since it runs in the browser, you get to debug your components using your favorite developer tools. Learn more about the alpha release of our Component Test Runner in the docs.

Breaking Changes - 7.0.0 introduces several breaking changes. Read the Migration Guide to get an in-depth explanation of how to change your code to migrate to Cypress 7.0.

Among the breaking changes in this release are several updates to cy.intercept(). Namely that users are now able to override request handlers by calling cy.intercept() again. This matches the previous behavior that was default in cy.route2(). Speaking of cy.route2(), cy.route2() is now completely removed. So if you were still using that, those calls won't work anymore.

Some other exciting features in 7.0.0 include:
  • Increasing the default size of videos for test runs to make it easier to see all the details of a test run for debugging. High res video playback for all!
  • Creating a new spec file from the test runner GUI.
  • New keyboard shortcut (ctrl/cmd + f) to search spec files in the Test Runner based on your OS.

Read the complete changelog for v7.0.0.

New from the Cypress Team

[Webcast] Register for our upcoming webcast - How Cypress helped Ansible re-write their entire UI from scratch.

[Webcast recording] Build, deploy, and test your suite with confidence using Netlify and Cypress.

[Webcast recording] How Pendo maintains a culture of quality with Cypress.

New from the Cypress Community

[Paul de Witt] Passing variables between tests in Cypress - Testing business workflows end-to-end with cy.task().

[Matt Bloomfield] Automate pull request testing using Cypress Dashboard and GitHub actions.

[Filip Hric] Improve your customer command logs in Cypress. Learn more about custom commands in Cypress with this tutorial from Cypress Ambassador Filip Hric.

Cypress Test Runner v6.7.0

Released 3.15.2021

What's New

The biggest news for this release is that experimentalRunEvents have proven themselves and are no longer experimental. Now, you can listen to before:run, after:run, before:spec, and after:spec events in the plugins file without needing the experimentalRunEvents configuration option.

There are a couple of other cool features of this release:

  • Now all recorded runs will cancel if you have in fact canceled them from the Dashboard. Previously only parallelized runs would cancel correctly, so you can see how this is now better.
  • Cypress will now send test details to the Dashboard at the beginning of a recorded run (so punctual!), so that historical test code and other data can be provided to the Dashboard upfront.
  • You will now see the full stack trace from errors thrown in the preprocessor.

Bug Fixes

FFmpeg was sometimes erroring during video recording (and, weirdly, always erroring in Chrome 89). When this happened it stopped tests from running which is not ideal. We've fixed this issue and FFmpeg will no longer error.

There are a few additional bug fixes in this release, including some fixes for experimentalStudio (aka Cypress Studio).

One particularly interesting miscellaneous update is that we've changed the term "test recordings" (which refers to the recorded test data from a test that ran) to "test results" in order to make it more clear and help reduce confusion around a "test recording" being the actual video recording of the test.

View the full list of all changes in the 6.7 changelog.

New from the Cypress Team

[new webcast] Don't miss our upcoming webinar with Netlify. Build, deploy, and test your site with confidence using Netlify and Cypress.

[blog] Generate high-resolution videos and screenshots. In this blog post Gleb shows how to increase the resolution of the videos and screenshots recorded during the cypress run execution.

New from the Cypress Community

[Meetup] Join the next Cypress.io UK community meetup happening March 31st. Naveen Bhati, QA Engineering Lead at Facebook will walk through Continuous Delivery with Cypress and Azure DevOps.

[Filip Hric] Make your Cypress tests faster with .clock(). Filip explains the basics of using the .clock() command to shave seconds off your Cypress test run.

[Jonathan Thompson] Improve your end-to-end tests with Cypress Intercept. Learn how to capture network calls for stubbing, assertions and more.

[Filip Hric] Tips for debugging tests in Cypress. Filip shares some basic tips on debugging in Cypress in his latest blog post.

[Meetup] Introducing the brand new Cypress Dutch Community meetup group! Their first meetup is this Thursday, March 18th featuring Cypress's own Head of DX, Amir Rustamzadeh.

Cypress Test Runner v6.5.0

Released 2.15.2021

What's New

This release focuses primarily on performance and bug fixes.

  • Improved the startup time of cypress open and cypress run.
  • Fixed an issue that could cause failure when installing two Cypress instances at the same time.
  • Expanded the search bar in the desktop GUI to fill the entire width.
  • Fixed a regression introduced in 6.4.0 that caused Electron to crash when opening outside links in the Command Log.
  • Fixed selector TypeError when an assertion failed in afterEach.
  • Fixed Microsoft Edge browser detection when passing a path on Windows.
  • Fixed issue where browser paths with double backslashes would not work as expected on Windows.

View the full list of all changes in the 6.6.0 changelog.

New from the Cypress Team

How to Test Monorepo Apps Using Cypress Github Action: Learn how to run different Github workflows depending on the changed files.

Testing Time Zones in Parallel: Running the same Cypress tests with different browser time zones in parallel.

Test Sites Deployed to Netlify Using netlify-plugin-cypress: Test a site after deploying it to Netlify preview or production environment.

New from the Cypress Community

New Intro to Cypress course on Ministry of Testing: Cypress Ambassador Marie Drake recently partnered with Ministry of Testing to deliver a new Intro to Cypress course.

Page objects vs. App actions in Cypress: Cypress Ambassador Filip Hric explores the pros and cons of using Page objects versus App actions in Cypress.

Frontend testing: How Userlane adopted Cypress to improve: Read how the team at Userlane uses Cypress to increase stability, improve performance, and ensure quality for their CI/CD process while maintaining developer happiness.

GitLab & Bitbucket integrations: New for the Cypress Dashboard

Released 2.8.2021

Manage your merge requests with confidence.

Today we’re excited to introduce two new integrations designed to help your Cypress test runs fit seamlessly into your day-to-day development workflow.

Our GitLab and Bitbucket integrations ensure you don't merge a PR (or MR) until all your Cypress tests pass, so your teams can collaborate with confidence.

What's New:

  • See new commit statuses in your GitLab pipeline view when a run completes.
  • See new build statuses in the side panel of your PR view in Bitbucket when a run completes.
  • Review detailed test run information in your merge or pull request comments.
  • See test run statistics, specific test failures, and deep links to the Cypress Dashboard so you can resolve issues quickly.

Read more about our GitLab integration and Bitbucket integration (currently in beta) in the docs.

Cypress Test Runner v6.4.0

Released 2.1.2021

What's New

Command Log entry for file downloads We've improved the UI for users testing file downloads. Now, you'll see an entry in the command log when a file has been downloaded.

Bug Fixes

A change to how the Chrome DevTools Protocol is established was reverted. Cypress now only uses TCP to try to connect to Chrome DevTools Protocol, instead of using stdio and then falling back to TCP.

Several additional bug fixes were made including an issue where using delayMs with cy.intercept did not wait for the expected amount of time when used in a StaticResponse, as well as an issue where aliases set via req.alias containing a period character would not work as expected.

View the full list of all changes in the 6.4.0 changelog.

Call for feedback

As part of the Cypress Dashboard, we've discussed allowing users to run their Cypress tests in a hosted cloud environment that we provide. We'd love to hear if this is interesting to you and, if yes, what kind of functionality would make it more appealing and helpful than using your existing CI provider? If you have thoughts or ideas to share, we'd love to hear from you in our Productboard Portal.

New from the Cypress Team

When Can the Test Blink? What if you have a page where a loading element is displayed while the app is fetching the data from the server. If the test is observing the loading element to make sure it disappears, can the loading be too fast? Can the test runner "blink" and miss the element? Yes, it can. Find out when this might happen and how to address it in this post from Gleb Bahmutov.

How to Avoid Using Global Cypress Variables. Avoid clashing global types between Cypress and Jest by using local-cypress library.

Split Long GitHub Action Workflow Into Parallel Cypress Jobs. An example of splitting a GitHub Actions testing workflow into several jobs.

How to Publish Custom Cypress Command on NPM. How to test, transpire, and publish an NPM module with a custom Cypress command.

New from the Cypress Community

[Karthik K.K.] Cypress Studio - A new Record and Playback option to automate apps. Karthik talks about Cypress Studio, the experimental UI test recorder in the Cypress Test Runner.

[Filip Hric] Cypress basics: check if element exists. Cypress Ambassador Filip Hric explores ways to assert visibility of an element on a page and explains a few 'gotchas' that might be confusing at times.

[Filip Hric] Dealing with multiple redirects in Cypress. In this post, Filip outlines how to deal with situations where your app quickly redirects through multiple pages.

Cypress Test Runner 6.3.0

Released 1.19.2021

What's New

Introducing the new, experimental feature, Cypress Studio. Cypress Studio offers a visual way to generate tests within the Test Runner by recording interactions against the application under test instead of writing test code. Cypress Studio can be enabled by adding the experimentalStudio attribute to your configuration, cypress.json by default.

Test file downloads in Cypress without the download prompt displaying. Any files downloaded while testing file downloads will be stored in the downloadsFolder which is set to cypress/downloads by default. The downloadsFolder will be deleted before each run unless trashAssetsBeforeRuns is set to false.

New from the Cypress Team

[webcast] Ship safer code with cypress and Codecov. Watch the recording of our recent webcast on how to use Cypress tests with Codecov to write durable code and deploy with confidence.

[blog] A look back at 2020 at Cypress and what's coming in 2021.

[blog] Running Cypress on the Apple M1 ARM Architecture using Rosetta 2.

New from the Cypress Community

[Paul de Witt] How Cypress can help non-technical team members automate tests.

[Filip Hric] Create a configuration plugin in Cypress.

[Filip Hric] Understanding code coverage in Cypress.

[Marie Drake] Debugging Pipeline Issues with Cypress.

Cypress Test Runner v6.2.0

Released 12.21.2020

What's New

New Experimental Run Events allow listening to the before:run, after:run, before:spec, and after:spec events in the plugins file.

As always bug fixes were made including a few fixes for our new cy.intercept API. View the full list of all changes, in the 6.2.0 changelog.

New from the Cypress Team

[webcast] See how Carvana transformed their testing with Cypress Test Analytics.

Testing the Anchor Links: Never leave an anchor link undefined with this simple integration test.

Cypress raises $40M Series B: See what how we plan to usher in the next era of test automation.

Cypress Test Runner v6.1.0

Released 12.7.2020

What's New

Get more control of scrollBehavior.

This release introduces a new scrollBehavior configuration option that allows you to control the viewport position when an element is scrolled prior to action commands including disabling scrolling altogether.

As always, several bug fixes were made including a few bugs with the new cy.intercept API for network stubbing. View the full list including deprecations and dependency updates in the 6.1.0 changelog.

New from the Cypress Team

Retry, Rerun, Repeat - Software and hardware failures are normal and expected. As such, the ability to 'retry' is common place. In this blog post, Gleb Bahmutov dives into three types of retries built into Cypress and around it.

Cypress Timings - Use Gleb's cypress-timings plugin to see the individual command timings and get better insight into where the test is slow.

Debug Element Visibility problems in Cypress - Gleb dives into how to step through the visibility code to determine why Cypress thinks an element is invisible during the tests.

New from the Cypress Community

[Filip Hric] Migrating .route() to .intercep() in Cypress

Cypress Test Runner v6.0.0

Released 11.23.2020

What's New

Introducing Next Gen Network Stubbing with cy.intercept

Cypress now offers next generation network stubbing support with the introduction of the cy.intercept API (previously cy.route2()). With cy.intercept you'll have out-of-the-box support for intercepting fetch calls, page loads, and resource loads in addition to the pre-existing support for XMLHttpRequests (XHR).

Cypress 6.0.0 introduces breaking changes. We put together a detailed Cypress 6.0.0 Migration Guide for a full run down on how to update your code to support Cypress 6.0.0.

See the full changelog for Cypress 6.0.0.

New from The Cypress Team

When Can the Test Submit a Form? - The most recent post in our series exploring flaky tests and how to fix them.

Testing an Application in Offline Network Mode - Learn how Cypress can simulate an offline network status during a test.

[Webcast recording] Using Code Smells to Fix Flaky Tests in Cypress

New from The Cypress Community

[Luis Aviles] Testing Web Components with Cypress and TypeScript - A helpful deep-dive on how to add E2E testing capability with Cypress and TypeScript.

[Lukas Klement] Implementing Code Coverage with Angular and Cypress - A step-by-step tutorial in implementing code coverage for your Angular + Cypress application.

Cypress Test Runner v5.6.0

Released 11.9.2020

What's New

You can now run all integration specs or all component specs separately (or a filtered list of specs) by clicking the appropriate button in the Test Runner in the Tests tab. .

You can now dynamically add aliases for requests intercepted via cy.route2(). Check out an example.

As always bug fixes were made including fixing an issue causing failed subresource integrity checks for external scripts. View the full list of all changes, in the 5.6.0 changelog.

New from the Cypress Team

[Webcast recording] How Userlane dramatically reduced flaky E2E tests withy Cypress. Watch the replay >

[changelog.com] The testing pyramid should look more like a crab (Gleb Bahmutov).

New from the Cypress Community

[Engineers @ Optimizely] How Optimizely use Cypress to automate testing within it's AppExchange App in Salesforce.

[Filip Hric] Using Destructuring in Cypress.

[Filip Hric] Test Grepping in Cypress Using Module API.

[Thota Mahesh] API Testing with Cypress.

Cypress Test Runner 5.5.0

Released 10.26.2020

What's New

.type() now fires the beforeInput event during typing (although do note that Firefox does not support the beforeinput event).

As always, bug fixes were made, and there were some dependency updates as well. View the full list in the 5.5.0 changelog.

Flaky Test Detection & Alerts: New for Cypress Dashboard

Released 10.19.2020

What's New

Today we're excited to announce flaky test detection, the next step in our mission to continuously enhance Cypress's ability to handle flake.

For Cypress Dashboard users who have enabled test retries, the Cypress Dashboard will now automatically identify and annotate tests with flaky behavior while also surfacing your top flaky tests.

With Flaky Test Alerts, you can activate notifications in Slack and push warnings to Github when test cases are detected as flaky, making it easier than ever to manage flaky test behavior before it becomes an issue in your test suite. Learn more >

Not using Cypress Dashboard yet? The Cypress Dashboard adds a layer of timely, simple and powerful insights to all your test runs in a single, easy-to-use Dashboard. Test and debug faster with The Cypress Dashboard. Get started for free.

Cypress Test Runner v5.4.0

Released 10.12.2020

What's New

Turn off the Command Log in the Test Runner when debugging performance issues. The Command Log can be hidden by passing the CYPRESS_NO_COMMAND_LOG=1 environmental variable during cypress open or cypress run to be used as a tool to debug performance issues.

As always, bug fixes and improvements were made. View the full list in the 5.4.0 changelog.

New from the Cypress Team

Debug a Flaky Visual Regression Test by Gleb Bahmutov [@bahmutov]

New from the Cypress Community

Angular Meetup Recording: Watch Mayra A. Rodriguez [@mayrascript] talk about E2E testing with Cypress and Nx.

Identifying Code Smells in Cypress by Josh Justice [@codingitwrong]

Cypress Test Runner v5.3.0

Released 9.28.2020

What’s New

Firefox support is out of beta! Firefox 80 and newer are officially stable when used with Cypress. The firefoxGcInterval workaround is no longer needed unless testing versions of Firefox older than 80.

As always, bug fixes and improvements were made, including a few fixes to experimental network stubbing. View the full list in the 5.3.0 changelog.

New from Team Cypress

Webcast Recording: How GoFundMe's QA Engineers and Developers Test 30x Faster with Cypress. Watch the replay>

Cypress-book: a simple and effective way to write a continuously-updated web app tutorial using Markdown and Cypress tests. Check it out>

Cypress Test Runner v5.2.0

Released 9.15.2020

New Features:

Support for shadow DOM is no longer experimental (which also means that we've removed the experimentalShadowDomSupport configuration flag). Now, by using the configuration option includeShadowDOM to enable shadow DOM, you'll be able to query globally, per-suite, per-test, or programmatically.

Ensure redirects are followed with experimental network stubbing. We recently introduced experimental network stubbing via cy.route2(). Now, we've added a followRedirect option that will ensure redirects are followed before resolving the req.reply callback. Additionally, we've added the capability to specify delayMs and throttleKbps when stubbing static responses.

As always, bug fixes and improvements were made and you can see the full list in the 5.2.0 changelog.

However, if you happened to experience the issue with test retries that caused Cypress to hang in run mode with certain assertions, that has been fixed.

And if you experienced a performance issue which led to CPU bottlenecking during Cypress runs, that too has now been fixed.

For a full list of 5.2.0 changes visit the changelog >

New from the Cypress Team

New from the Cypress Community

  • Cypress Ambassador Marie Drake [@mcruzdrake] will be speaking at the upcoming Open Quality Conference about Web Accessibility and how Cypress helps bridge the gap between developers on testers. Learn more >

Cypress Test Runner v5.1.0

Released 9.1.2020

What's New

Introducing experimental full network stubbing support. When experimentalNetworkStubbing is 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 XMLHttpRequests, 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.

Check out the cy.route2() docs for more info on how to enable this experiment >

Get specific with your event triggers. cy.trigger() now accepts an eventConstructor option in case you want to specify the type of event that you want to trigger (e.g. MouseEvent or KeyboardEvent).

For example - cy.get('button').trigger('mouseover', { eventConstructor: 'MouseEvent' })

We also fixed several bugs and made a small handful of dependency updates. See the full changelog for 5.1.0 >

New from the Cypress Community

Cypress Test Runner v5.0.0

Released 8.18.2020

New Features

Cypress 5.0 has native support for test retries. Test retries are off by default. However, they can be configured using the new retries configuration option which allows you to set the number of times to retry a failing test.

We’ve improved clicking with modifiers. Now, .click(), .dblclick(), and .rightclick() accept options altKey, ctrlKey, metaKey, and shiftKey to hold down key combinations while clicking.

We now allow you to disable DOM snapshots for stubs and spies. You can chain .snapshot() off of cy.stub() and cy.spy() to disable snapshots during those commands. For example: cy.stub().snapshot(false).

Breaking Changes

Ready to upgrade? Cypress 5.0 contains some breaking changes. We put together a detailed Cypress 5.0 Migration Guide for a full breakdown on how to update your code to support 5.0.

Here are some of the breaking changes to be aware of:

We’ve renamed Cypress.Cookies.defaults() whitelist to preserve to better reflect its behavior. We also renamed the blacklistHosts configuration to blockHosts and cy.server() whitelist option to ignore for the same reason.

Because Cypress 5.0 has test retries built in natively (although they are disabled by default), we have deprecated the cypress-plugin-retries plugin. You will see an error message if you have the plugin still installed after upgrading to Cypress 5.0.

We made adding the sameSite property to objects yielded by cy.setCookie(), cy.getCookie(), and cy.getCookies() the default. As a result, the experimentalGetCookiesSameSite configuration has been removed.

If you have file paths with a question mark ? in them, Cypress no longer supports those.

Libgbm-dev is now a requirement to run Cypress on Linux.

Cypress now requires TypeScript 3.4+

Installing Cypress on your system now requires node.js 10+

Several bug fixes and improvements were made as well. See the full changelog for 5.0.0 >

New from the Cypress Team

New from the Cypress Community

Test Analytics: New for the Cypress Dashboard

Released 8.11.2020

Test Analytics for the Cypress Dashboard is a huge step forward in our mission to help teams easily manage and improve their test suites, so developers can build better things with confidence.

With today’s release of Test Analytics, Cypress Dashboard users will notice four major new features: top failures, slowest tests, test case history, and project analytics like run status, run duration and more. 

Dashboard users can now find the troublemakers in their test suite, manage issues with ease, and unlock a deeper, unprecedented understanding of their tests. Read more>

Not using Cypress Dashboard yet? The Cypress Dashboard adds a layer of timely, simple and powerful insights to all your test runs in a single, easy-to-use Dashboard. Test and debug faster with The Cypress Dashboard. Get started for free.

Cypress Test Runner v4.12.0

Released 8.3.2020

New Features

  • You can now control whether screenshots are automatically taken on test failure during  cypress run by setting screenshotOnRunFailure in your configuration.
  • 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.
  • During cypress open, you can now run a subset of all specs by entering a text search filter and clicking ‘Run n tests’.

New from the Cypress Team

  • Bug fixes and improvements

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

    • Applications using custom elements will no longer trigger infinite XHR request loops. 

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

    • Spec files containing + characters now properly run in Cypress. 

    • When using the fx shortcut in cy.route(), an error is now thrown when the fixture file cannot be found. 

    • Cypress no longer thrown Cannot read property '__error' of null error when passing a file containing null content to cy.fixture()

    • Values containing exponential operators passed to --env via the command line are now properly read. 

    • The “Open in IDE” button no longer disappears from hooks when the tests are manually rerun. 

    • 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. 

    • When using .type(), Cypress now properly types into an input within an iframe that auto focuses the input.

Cypress Test Runner v4.11.0

Released 7.21.2020

What's New

Better time traveling with improvements to cy.clock(). If you've ever used cy.clock() to control the time of the world within your app, you know that historically you needed to provide an epoch time number (and you may have tried to pass a Date object and realized that we would just ignore it). But now, you can provide either a Date object or an epoch time number AND we won't just ignore it, we’ll convert it to the Number and it’ll work just fine.

Do or don’t ensureScrollability. We also made it so that you can now pass an ensureScrollability: false option to .scrollTo() to skip checking whether the element is scrollable.

We also fixed several bugs and made several (specifically 10) dependency updates. See the full changelog for 4.11.0 >

Cypress Test Runner v4.10.0

Released 7.6.2020

What’s New

Edit tests more easily with the Open in IDE button. Now, when hovering over a test in the Test Runner you’ll see the 'Open in IDE' link. Clicking it will open the spec in your code editor so you can edit your tests more easily.

Get better insight into the hooks running around your tests. If you’re using the before, beforeEach, after, and afterEach hook definitions to set conditions that you want to run before or after a set of tests (or before or after each test), those will now display separately in the Test Runner’s Command Log if they are defined in separate hook definitions.

And, if you need to open or edit those specs in your IDE you’ll see that ‘Open in IDE’ link when hovering, and you can click to open that spec file directly.

We also fixed several bugs and made some minor UI improvements to the Test Runner. See the full changelog for 4.10.0 >

New from the Cypress Team

New from the Cypress Community

Cypress Real World App

Released 6.10.2020

The Cypress Real World App (RWA) is now available as an open-sourced project on Github. The RWA is a sample payment application that we have often used for demonstrating real world usage of Cypress testing methods, patterns, best practices and workflows.

Now anyone can use the Cypress Real World App to learn, experiment, tinker, train and practice testing with Cypress. Learn more >

Slack Integration: New for the Cypress Dashboard

Released 6.9.2020

Our new Slack app is live! Now, when you connect your Cypress organization with your Slack instance in the Cypress Dashboard, you’ll see run results for all projects in your org posted to the Slack channel of your choice. 

Not sure what the Cypress Dashboard is? The Cypress Dashboard is available to anyone running tests with Cypress. It adds a layer of timely, simple and powerful insights to all your test runs in a single, easy-to-use Dashboard. Test and debug faster with The Cypress Dashboard. Get started for free.