Cypress Test Runner v9.5.1
Bugfixes
- 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 from1.5.2
to1.5.6
to avoid authorization bypass through user-controlled key to address this NVD security vulnerability.
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
Features
- 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.
Bugfixes
- Fixed an issue where files attached during
.selectFile()
could have the wrongFile
prototype. - Updated
.select()
to only dispatch thechange
andinput
events when the selected option is not the currently selected option. This change aligns.select()
with the browser.
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
Bugfixes
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
Features
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 themimeType
property. - Updated file contents types to allow either a
TypedArray
instance or aCypress.Buffer
instance, where previously file contents were expected to only be an instance ofCypress.Buffer
. - Updated
.selectFile()
to retain the fileName of files read from disk to work with aliases.
Cypress Test Runner v9.3.1
Bugfixes
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
Features
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.
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
Bugfixes
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.
New from the Cypress Community
[Richard Forjoe] Run Cypress tests in Docker on Concourse CI.
[Walmyr Filho] How to login programmatically with Cypress.
[Filip Hric] Waiting in Cypress and How to Avoid It.
[Klaus Lehner] How End-to-End Testing finally makes fun.
Cypress Test Runner v9.2.0
Features
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
.
Bugfixes
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.
New from the Cypress Community
[Filip Hric] Cypress basics: Variables.
[Alan Richardson] Cypress Plugin for AG Grid.
[Gleb Bahmutov] Dealing With 3rd Party Scripts In Cypress Tests.
[Murat Ozcan] How to create internal test plugins for your team in TS.
[Areesha Altaf] Handling API with Cypress.
Cypress Test Runner v9.1.1
Bugfixes
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.
New from the Cypress Community
[Gleb Bahmutov] Spy On DOM Methods And Properties.
[Phase2] Growing a Salesforce Testing Strategy with Cypress.
[Riccardo Giorato] How to test your email in your SaaS with Mailosaur and Cypress.
Cypress Test Runner v9.1.0
Features
A 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
.
Bugfixes
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.New from the Cypress Community
[Filip Hric] Test network edge cases with .intercept() command in Cypress.
[Filip Hric] Autocompleting selectors in Cypress with TypeScript.
[Anarock Technology] Test coverage using Cypress.
[Marie Drake] Experimenting with Cypress Studio.
[Carter Capocaccia] Easy mocking of API Requests in Cypress with Mock Service Worker.
Cypress Test Runner v9.0.0
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.
Deprecations
The nodeVersion
configuration option has been deprecated and will be removed in a future release.
Features
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.
Bugfixes
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.New from the Cypress Community
[CSS-Tricks] Testing Vue Components with Cypress.
[Justin James] Cypress Run Tests That Have Certain Tags.
[Applitools] How to Test a Mobile Web App in Cypress.
Cypress Test Runner v8.7.0
Features
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.
Bugfixes
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.
New from the Cypress Community
[Atomic Object] Cypress in Docker with VNC.
[Gleb Bahmutov] Flexible Cypress Data Setup And Validation.
[Atomic Object] Adding End to End Cypress to a Web Project Part 1: Setting up the Infrastructure.
[Murat K Ozcan] The 32+ ways of selective testing with Cypress: a unified, concise approach to selective testing in CI and local machines.
Cypress Test Runner v8.6.0
Features
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.
Bugfixes
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.
Misc.
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
New from the Cypress Community
[Smashing Magazine] Let’s Dive Into Cypress For End-to-End Testing.
[Riccardo Giorato] How to Test HTTP Responses and Redirects with Cypress.
[Kacper Klarzyński] Automated Accessibility Testing.
[Walmyr Filho] Best practices in test automation with Cypress.
[Atomic Object] Testing Nested Components Reliably with Cypress.
[Paul Fioravanti] A Canvas of Cypress Tests.
[Gleb Bahmutov] Cypress and TestRail.
Cypress Test Runner v8.5.0
Features
You can now select an option by index within the .select()
command.
Bugfixes
The download of Cypress now respects the NO_PROXY
environment variable when one is set.
Misc.
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.New from the Cypress Community
[Anna McDougal] Implementing Your First End-to-End Tests In React Using Cypress.
[James Sheasby Thomas] Cypress tips and tricks, part 1 : working with single-purpose iframes.
[Kacper Klarzyński] Automated Accessibility Testing.
[Theo McCauley] When to Use Commands vs Assertions While Testing.
[Manuel Camargo] How to Create Readable End-to-end Tests with Cypress And Cucumber.
[Riccardo Giorato] How to Test a Sitemap with Cypress.
Cypress Test Runner v8.4.1
Bugfixes
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.
New from the Cypress Community
[Murat Ozcan] Functional Test Patterns with Cypress.
[Open Replay] Implementing Your First End-to-End Tests In React Using Cypress.
Cypress Test Runner v8.4.0
Features
When a URL contains non-ASCII characters, you can use the new decode
option of cy.url()
to decode it.
Bugfixes
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.
New from the Cypress Community
[Walmyr Filho] Using the keywords Given/When/Then with Cypress but without Cucumber.
[Joshua Morony] How to Bypass Firebase Authentication for Cypress Tests.
[LambdaTest] Handling Touch And Mouse Events In Cypress.
[Walmyr Filho] cy.request vs. cy.intercept.
Cypress Test Runner v8.3.1
Performance Updates
Projects will now open much faster on MacOS Big Sur with improved browser detection performance.
Bugfixes
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
.
New from the Cypress Community
[Automation Bro] Page Object Model in Cypress.
[Nrwl.io] Use Cypress with Next.js and Nx to battle test your React Components.
Cypress Test Runner v8.3.0
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+.
Bugfixes
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.
New from the Cypress Community
[GitHub] Release Radar · Mid-year 2021 Edition.
[Gleb Bahmutov] Listen To The Application Events From Cypress Tests.
[Meteor] Testing a Meteor app with Cypress.
[Applitools] Drag and Drop in Cypress.
Cypress Test Runner v8.2.0
What’s New
You can now cache and restore cookies, localStorage
, and sessionStorage
in order to reduce test setup times by using the experimental cy.session()
.
Bugfixes
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.
New from the Cypress Team
[Blog Post] Authenticate faster in tests with the cy.session command.
New from the Cypress Community
[Atomic Object] Cypress Tasks vs. Commands: What Are They and When to Use Them.
[Gleb Bahmutov] Visit The Blank Page Between Cypress Tests.
Cypress Test Runner v8.1.0
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.
Bugfixes
When running Cypress in global mode, an error will no longer be thrown when trying to add a new project to the Dashboard.
New from the Cypress Community
[Atomic Object] 3 Practices to Reduce Flakiness in Cypress Tests.
[Webiny] 5 Things to Avoid When Writing Cypress Tests.
[Emumba] Automation Testing Using Cypress.
Cypress Test Runner v8.0.0
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.
Bugfixes
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()
.
New from the Cypress Team
[Recordings] All recordings from Front-End Test Fest are now available on our YouTube channel!
New from the Cypress Community
[Markus Oberlehner] Cypress Live-Reload Tests on Code Changes.
[Gleb Bahmutov] Testing A Web App Using The Keyboard Only.
Cypress Test Runner v7.7.0
What’s New
When using experimentalStudio
, Cypress Studio can now copy all commands generated to your clipboard.
Bugfixes
Cypress now respects preventScroll
options passed to element.focus()
calls within the application under test.
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
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.
Bugfixes
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()
.
New from the Cypress Team
[Blog Post] Visual Testing for Emails Sent Using 3rd Party Dynamic Templates.
New from the Cypress Community
[Gleb Bahmutov] Cypress vs Other Test Runners.
[Ganesh Hegde] 3 Ways to Configure Cypress Automation Testing Framework to Run on Multiple Environments.
[Gleb Bahmutov] The Complete Guide to Testing React Native App Using Cypress.
[Netlify] Migrating Cypress Tests from a Github Action to a Netlify Build Plugin.
Cypress Test Runner v7.5.0
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.
Bugfixes
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.
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
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).
Bugfixes
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
.
New from the Cypress Team
[Blog Post] Cypress + Storybook 2.0.
[Blog Post] Full Testing of HTML Emails using SendGrid and Ethereal Accounts.
New from the Cypress Community
[Applitools] Testing Browser Alerts, Confirmations, and Prompts with Cypress.
Cypress Test Runner v7.3.0
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 RouteMatcher
. times
will specify the number of times that a particular cy.intercept()
should be applied.
Bugfixes
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.
New from the Cypress Team
[Talk Recording] VueConf US 2021: Component Testing with Vite, Vue, and Cypress by Jessica Sachs.
[Blog Post] Testing HTML Emails Using Cypress.
Cypress Test Runner v7.2.0
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.
Bugfixes
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.
New from the Cypress Team
[Webcast recording] How Cypress helped Ansible re-write their entire UI from scratch.
[Blog post] Cypress and NeuraLegion: Leveraging your existing scripts for security testing automation.
New from the Cypress Community
[SD Times] The top 7 advanced features of Cypress to know about.
[Applitools] Getting Started with Cypress Studio for Test Automation.
[Filip Hric] Reading and testing JSON object in Cypress.
Cypress Test Runner v7.0.0
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.
- 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.
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
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
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
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
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
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
What's New
Get more control of scrollBehavior
.
This release introduces a new scrollBehavio
r 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
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.
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
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
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
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
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
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
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
- Highlight your project's test status in Github with Cypress README badges.
- Register for this Visual Component Testing webinar with Cypress and Applitools coming up on September 24th.
- Sign up for this webinar with Cypress and Curiosity Software on Model-Based testing for Cypress coming up on September 29th.
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 >
- Check out Filip Hric [@filip_hric] new course on Udemy, Cypress test automation for people in a hurry. There's also this post with Filip's favorite VS Code extensions for writing tests in Cypress.
Cypress Test Runner v5.1.0
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
- Watch Amazee Lab’s recent webinar on Component Unit Testing with Cypress presented by Philipp Melab.
- Read Elio Struyf’s recent post on why his team uses Cypress instead of Selenium.
Cypress Test Runner v5.0.0
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
- When Can the Test Navigate - Learn how to change a deceptively simple test into a reliable and flake free one.
- Watch our recent webcast about how GoFundMe’s QA engineers and developers test 30x faster with Cypress.
New from the Cypress Community
- [@mcruzdrake] Debunking Accessibility Testing Myths
- [@md_zubairahmed] Modern ways of end-to-end testing with Cypress JS
- [@wescopeland] Cypress super patterns: How to elevate the quality of your test suite
Test Analytics: New for the Cypress Dashboard
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
New Features
- You can now control whether screenshots are automatically taken on test failure during
cypress run
by settingscreenshotOnRunFailure
in your configuration. - The
pluginsFile
now has access to a readonlyversion
property within theconfig
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 withpointer-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 incy.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 containingnull
content tocy.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
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
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
- Learn how to test mobile apps with Ionic Framework and Cypress.
- Watch our webcast with Roman Sandler about building invincible integration tests using Cypress and cypress-testing-library.
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.