NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #3338 most downloaded on npm
Cypress is a next generation front end testing tool built for the modern web
Last release 5 days ago
29 Sep 2026
Ships on a steady schedule
a new release about every 2 weeks
Nearly every release is documented
notes for 60 of the last 60 stable releases
1 version withdrawn
withdrawn after publishing
11 years old
294 releases · first in 2015
Changelog: https://docs.cypress.io/guides/references/changelog#11-1-0
Changelog: https://docs.cypress.io/guides/references/changelog#11-1-0
Released Nov 14, 2022
Features:
Next.js v13 is now supported. #24396 .
mount() now accepts an extensions.directives option, which will be registered globally for Vue2 component testing. #24488 .
Bugfixes:
Fixed an 11.0.0 regression where the migration workflow would error and hang for TypeScript projects. Fixes #24643 .
Fixed an 11.0.0 regression where cypress run crashed when using the junit reporter and an assertion failed. Fixes #24652 .
Fixed TypeScript types for testIsolation . Fixes #23911 .
Sessions will no longer be stored if validation fails which will prevent a previously failed session from being restored in the next test. Fixes #24208 .
Experimental Breaking Changes:
One column per quarter.
Changelog: https://docs.cypress.io/guides/references/changelog#11-0-1
Changelog: https://docs.cypress.io/guides/references/changelog#11-0-1
Released Nov 09, 2022
Bugfixes:
Fixed an 11.0.0 regression that caused enabling experimentalSessionAndOrigin to throw a webpack error. Fixes #24611 .
Fixed an 11.0.0 regression where using custom reporters would cause Cypress to throw a 'Cannot find module' error. Fixes #24607 .
Fixed testIsolation configuration validation to allow configuration updates without restarting Cypress. Fixes #24497 .
Fixed an issue where cy.origin() would not prevent users from setting up same-superdomain-origin cy.origin() blocks. In these cases cy.origin() is not required and users would be better served by not using the command. Fixes #24169 .
Fixed an 11.0.0 regression where modifying the currently loaded component testing spec in open mode does not trigger a rerun of the spec. Fixed by #24630 .
Changelog: https://docs.cypress.io/guides/references/changelog#11-0-0
Changelog: https://docs.cypress.io/guides/references/changelog#11-0-0
Released Nov 08, 2022
Summary:
Component Testing is now generally available for projects using React, Next.js, Angular, and Vue!
Component tests render and exercise your application's components in a real browser as you work. You can use your favorite Cypress commands and features to develop your components without running your whole app. Learn more in our blog post.
We have also massively improved our startup performance by shipping a snapshot of our binary instead of the source files. The performance boost applies to the time it takes from running a cypress command (e.g. cypress open ) to when the Cypress app is opened. Results will vary based on your situation, but we saw up to 84% faster startup times!
Breaking Changes:
Read our Migration Guide which explains the breaking changes in more detail.
Component Testing:
Removed cssFile , cssFiles , style , styles , stylesheet , and stylesheets from the options argument to the cy.mount() function. We recommend writing test-specific styles in a separate css file you import in your test, or in your supportFile . See migration guide . Addresses #24328 .
Subsequent cy.mount calls within the same test will remove the last mounted component from the DOM. Addresses #24329 .
mountHook from cypress/react has been removed. We recommend replacing it with mount and a component. See migration guide . Addresses #24328 .
unmount from cypress/react has been removed. We recommend using the API React provides for unmounting components, unmountComponentAtNode . See migration guide . Addresses #24328 .
mountCallback from cypress/vue has been removed. We recommend using mount . See migration guide . Addresses #24328 .
mount from cypress/vue now returns an object with both the VueWrapper (wrapper) and the component instance (component). Addresses #24342 .
When providing an inline viteConfig inside of cypress.config , any vite.config.js file is not automatically merged. See migration guide . Addresses #24133 .
Angular providers passed as part of the mounting options will be assigned at the module level using the TestBed.configureTestingModule API. This means that module-level providers (resolved from imports or @Injectable({ providedIn: 'root' }) can be overridden, but providers specified in @Component({ providers: [...] }) will not be overridden when using cy.mount(MyComponent, { providers: [...] }) . To override component-level providers, use the TestBed.overrideComponent API. See migration guide . Addresses #24047 and #23427 .
General:
Experimental:
Features:
Incorporated V8 snapshots into the build process of the Electron binary to improve startup time and reduce the time to download and unzip the binary during installation. Startup time is the time from running a command to when Cypress's window is first opened. Addresses #18480 .
cy.getCookie() , cy.getCookies() , cy.setCookie() , cy.clearCookie() , and cy.clearCookies() now accept a domain option. Addresses #24264 .
Bugfixes:
Fix types associated with cy.mount() that were incorrectly typed as any . Fixes #24330 .
The cy.mount() snapshot now shows the mounted component instead of a blank page. Fixes #24138 .
"Open in IDE" is no longer displayed in the command log for component tests. Fixes #24366 .
Cypress now correctly handles CSVs and other non-html MIME types. Fixes #24297 .
Cypress now supports project directories mounted on read-only file systems. Fixes #2064 .
Snapshots now capture the AUT correctly when it has navigated away. Fixes #24506 .
cy.pause() now functions correctly when called within the cy.origin() callback. Fixes #21495 .
When using dependencies within the cy.origin() callback, errors now show the correct code frame. Fixes #23365 .
The select dropdown (in Front-end Framework, Bundler, Organization, Project, Preferred Editor) now highlights and adds a checkmark to the selected option. Fixes #21768 .
The failure icon in the reporter header now displays correctly when there are a large number of successful tests. Fixes #21838 .
Cypress now allows more than twenty sessions to be created in a single test. Fixed in #24379 .
Changelog: https://docs.cypress.io/guides/references/changelog#10-11-0
Changelog: https://docs.cypress.io/guides/references/changelog#10-11-0
Released Oct 25, 2022
Features:
cy.session() is now supported when using WebKit (Experimental) and experimentalSessionAndOrigin is enabled. Addresses #24116 , #23832 .
Improves user experience when connecting a project to the Dashboard. Addresses #23379 , #23766 , #23767 .
Users will be prompted to connect a project to the Dashboard when logging in from the Cypress Launchpad after a testing type has been selected.
Users will be prompted to record runs to the Dashboard from both the Cypress App and Cypress Launchpad if a project is connected to the Dashboard and has no recorded runs.
Bugfixes:
When a chromium based browser tab or process crashes, Cypress will no longer hang indefinitely but will fail the current test and move on to the next. #6170 .
Fixed as issue where browser-skipped tests were incorrectly recorded to the Dashboard which resulted in the Dashboard marking the test as "new" or "modified" when it already existed. Fixes #23517 .
Fixed issue connecting to the cloud when a self-signed cert was in the cert chain. Fixes #24298 .
cy.origin() now supports more than 30 unique origin spec bridges per test. Fixes #22874 , #23967 .
Fixed an issue where document.cookie would not reflect the correct value in cross-origin tests. Fixes #23531 .
Cypress will now restart on changes to the blockHosts configuration entry. Fixes #22634 .
When shown the command to record runs to the cloud, the user can select and copy parts of the command (like the record key), instead of only being able to use the "Copy" button to copy the entire command. Fixes #22091 .
Cleaned up inconsistencies in the UI between sentence case and title case. Fixes #21854 .
Fixed an issue where there is a visible "Project ID" section (with no projectId ) when user has not connected to the Dashboard. #21806 .
Experimental Breaking Changes:
cy.origin() now supports using require() and dynamic import() to include dependencies. Cypress.require() has been removed. Addresses #24293 .
The way that Cypress handles test isolation has changed. The previous modes of legacy and strict have been replaced with on and off . Fixes #24206 .
The default mode is on when experimentalSessionAndOrigin is enabled.
The cy.session() command now inherits the test isolation behavior for the suite it runs in.
Changelog: https://docs.cypress.io/guides/references/changelog#10-10-0
Changelog: https://docs.cypress.io/guides/references/changelog#10-10-0
Released Oct 11, 2022
Features:
cy.origin() 's URL argument must be an exact origin match to the origin of the AUT. Addresses #23999 , #23814 , #24085 , #22882 , and #17166 .
More accurately send/set cookies in cy.origin() when experimentalSessionAndOrigin is enabled. Addresses #23551 , #22670 , and #23603 .
Cypress will no longer watch files when executing component tests in "run" mode. Addresses #22959 .
Bugfixes:
Cypress is now able to connect to Firefox v105. Fixes #23897 .
Cypress component tests now correctly load assets with Angular. Fixes #23797 .
Imports in component testing support files are no longer tree-shaken by Webpack. Fixes #24117 .
cy.session() commands will correctly fail when the setup function has a failing command or assertion. Fixes #21399 .
ngOnChanges is now called after mounting an Angular component in component testing. Fixes #23591 .
Code frames for Vite project stack traces now point to the correct lines of source code. Fixes #23919 .
Uncaught exceptions are now only handled once in component testing. Fixes #23920 .
Nuxt and Angular component tests now fail on uncaught exceptions. Fixes #24122 .
Command log messages are once again being truncated to 50 lines. Fixes #23995 .
Dependency Updates:
Changelog: https://docs.cypress.io/guides/references/changelog#10-9-0
Changelog: https://docs.cypress.io/guides/references/changelog#10-9-0
Released Sep 27, 2022
Features:
Added support for requiring dependencies within the cy.origin() callback. See the cy.origin() docs for more information.
Added support for visiting cross-origin pages outside of a cy.origin() callback. See the cy.origin() and cy.visit() docs for more information and caveats. Addresses #21485 , #22282 , #21300 , and #23236 .
Added support for re-using session data cached by cy.session() across specs via the cacheAcrossSpecs option. Addresses #17710 .
Added support for advanced dev server configuration via an async function that can optionally modify the dev server config. Addresses #23302 .
Launch options returned from the before:browser:launch event can now include an env key that can be used to pass environment variables to the browser when it is launched. Addressed by #23624 .
Component tests that fail now display a code frame of the source location of the error within the Cypress reporter. Addresses #21720 .
Bugfixes:
The spec results printed stdout after a test run now show the path to the spec and not just the file name. Fixes #22304 .
The viewport dropdown in the Cypress App now displays the correct text. Fixes #23789 .
Compile errors are now surfaced in the command log during tests for Angular and Next projects. Fixes #23219 .
The error "Automatic publicPath is not supported in this browser" will no longer be displayed when using Webpack 5 and dynamic imports. Fixes #18435 .
The correct source control link is now sent to the Cypress Dashboard for failed specs when the cypress config file is not the project root. Fixes #22971 .
The error "Invalid left-hand-side in assignment" will no longer be thrown when the experimentalModifyObstructiveThirdPartyCode flag is enabled. Fixes #23647 .
it.skip now functions correctly in Angular component tests. Fixes #23409 .
The tsConfig build option is now respected for Angular component tests. Fixes #23673 .
Configuring a custom browser no longer logs a warning when trying to use that browser. Addressed in #23446 .
Misc:
Improved the accessibility of a few components within the Cypress Launchpad and App. Addressed in #23745 .
Improved the UI of the Sessions instrument panel in the Cypress reporter. Addresses #21400 .
Changelog: https://docs.cypress.io/guides/references/changelog#10-8-0
Changelog: https://docs.cypress.io/guides/references/changelog#10-8-0
Released Sep 13, 2022
Features:
Performance:
Bugfixes:
The Dashboard will now correctly show whether a video of the spec was uploaded to review. Before this change, the Dashboard would shows the error message The media could not be loaded when a passing test's video was not uploaded because videoUploadOnPasses was false . Fixes #2939 .
Fixed an issue where the stack traces in run mode did not match the stack traces shown in open mode. Now, in the terminal, users will see the source map line and column number in the error stack trace. Fixes #7715 .
Fixed a bug where projects using Node.js 16.17+ and 18.6+ with ES Modules and TypeScript were not working with Cypress. Fixes #22795 , #23393 , and #23552 .
When searching for specs we now normalize OS-specific path separators so that Windows users can use back- and forward-slashes. Fixes #23426 .
Fixed an regression introduced in Cypress 10.3.0 , and further exposed in 10.4.0 , that omitted same-site cookies when the URL Scheme, Domain, and Top Level Domain matched, but the ports are different (i.e. same-site). Fixes #23132 .
Autoscrolling of the command log can no longer become disabled in run mode. This fixes an issue observed where the reporter randomly stops scrolling during a video recording and the Command log details are not visible. Fixes #16098 and #22199 .
The cypress/react18 cy.mount() command's yielded rerender function has been updated to only create one ReactDom.Root element. This fixes the issue where state did not persist between rerenders, and all lifecycle hooks were reran when executed. Fixes #23357 .
Fixed a regression introduced in Cypress 10.0.0 where Cypress was incompatible with Chrome v64 - v70. Fixes #23509 .
Fixes an issue where outdated organization and project information could be shown in dialogs when connecting a project to the Cypress Dashboard. Fixes #23538 .
The Sec-Fetch-Dest metadata request header is now set to document when the request is sent from the Application Under Test when the experimentalModifyObstructiveThirdPartyCode experiment is enabled. This was updated to prevent Google Authentication from returning 403 forbidden in Edge and Electron. Fixes #23720 .
Correctly override the Electron userAgent when the userAgent configuration option is provided or experimentalModifyObstructiveThirdPartyCode experiment is enabled. Fixes #23597 .
Fix regression introduced by Cypress 10.0.0 where the before:spec plugin event was not triggered in open mode when the experimentalInteractiveRunEvents experiment was enabled. Fixed #22360.
Fixed a regression introduced in 10.4.0 where referencing an aliased custom command would return undefined. Fixes #23652 .
Users can now log into the Dashboard from the "Choose a browser" page of the Launchpad even if a browser is not open. Fixes #23779 .
Fixed a bug where the cypress/svelte cy.mount() command was not logging by default. Fixed in #23771 .
Fixed an issue where setting the testIsolation configuration at the suite-level would throw on the second test. Fixes #23644 .
Removed misleading dependency warning in Launchpad for Next.js applications using component testing. Fixes #23598 .
Added modifyObstructiveCode TypeScript types. Fixes #22146 .
Assertions will no longer 'vibrate' in the command log when asserting on the text of elements with trailing whitespace. Fixed in #23727 .
Misc:
Changelog: https://docs.cypress.io/guides/references/changelog#10-7-0
Released Aug 30, 2022
Features:
Re-introduces the experimental Cypress Studio feature . Cypress Studio provides a visual way to generate tests within Cypress by recording interactions against the application under test. Cypress Studio is available only in end-to-end tests, and must be enabled via the e2e.experimentalStudio flag. For more details, read our blog post . Addresses #23461 .
Adds Svelte component testing support. This feature is being released as an Alpha, meaning there may be breaking changes in future Cypress releases. Addresses #23037 .
The "Latest Runs" and "Average Duration" columns in the specs list now provide actions when hovered over to assist with the process of connecting the project to the Cypress Dashboard. Addresses #22932 .
Informational banners were added to display instructions to assist with connecting projects to the Cypress Dashboard and recording a first test run. Users who don't plan to use the Cypress Dashboard can dismiss the banners to prevent seeing them in the future. Addresses #22933 , #22934 , #22798 , and #22935 .
Vue.js projects with a custom spec pattern configuration can now use the "Create Spec from Component" capability introduced in v10.5.0. Addresses #23071 .
Angular component testing projects can provide a custom configuration to the Webpack dev server using the projectConfig key. This enables support for projects that don't adhere to Angular CLI conventions. Addresses #23161 .
The Cypress clock can now be set to a new time using the setSystemTime function. Addresses #15424 .
Performance:
Bugfixes:
Fixed an issue where Cypress could crash if a websocket upgrade request was made over HTTPS. Fixes #22217 .
Fixed an issue where filtering with the --spec CLI flag in run mode option would not find any specs if the project was located at the root directory of a file system. Fixes #23380 .
Fixed an issue where projects using Angular v14.2.0 and above would be unable to run component tests. Fixes #23585 .
Fixed an issue where snapshots performed in XHR requests could reflect the primary domain instead of current domain. Fixes #21496 .
An update was made to correctly track GitHub Actions retries in the Cypress Dashboard. Previously retries data was not being recorded. Addressed in #23445 .
Fixed an issue where an internal TypeScript type was exposed globally. Fixes #23333 .
Fixed an issue where an incomplete component.devServer configuration would cause the specs list to not display in the Cypress App when running Component Tests in open mode. Fixes #23486 .
Miscellaneous:
Changelog: https://docs.cypress.io/guides/references/changelog#10-6-0
Changelog: https://docs.cypress.io/guides/references/changelog#10-6-0
Released Aug 16, 2022
Features:
Introduced a new Cypress experiment, experimentalSingleTabRunMode , for Component Testing. When enabled, all specs will execute in a single tab, similar to the execution behavior observed in Component Testing alpha in Cypress 9, which can improve run mode performance, but can impact spec isolation and reliability on large test suites. Addresses #22353 .
Enhanced the CYPRESS_DOWNLOAD_PATH_TEMPLATE environment variable interpolation to accept and replace ${version} to allow version-specific download paths to be honored. Addresses #5141 , #16976 , and #22864 .
Bugfixes:
Fixed an issue where the Firefox browser was not downloading files to the expected directory in Windows. Fixes #17896 .
Fixed an issue in cy.session() where the unique session id logic was not persisting registered session ids, which incorrectly allowed session ids to override previously used session ids with different setups. Fixes #22381 .
Fixed an issue where absolute path glob manipulation was incorrectly breaking supportFile and specPattern glob patterns that contained deep instances of the working directory. Fixes #23361 .
Fixed an issue with the Specs list search that prevented full path matching. Fixes #22463 and #21879 .
Fixed an issue where Specs list popovers would not display a spec's full filename. Fixes #23064 .
Changelog: https://docs.cypress.io/guides/references/changelog#10-5-0
Changelog: https://docs.cypress.io/guides/references/changelog#10-5-0
Released Aug 15, 2022
Features:
Display a 'flaky test' indicator in the Specs Explorer for specs that are known to be flaky in the Dashboard. Addresses #22656 & #22657 .
The project drop down is now populated when connecting a project with an organization that only has one project. Addresses #22936 .
Added new testIsolation configuration option to allow users to revert to legacy mode when experimentalSessionAndOrigin is set to true. Read more about test isolation in Cypress to learn more. Addresses #22279 .
React 18 projects will now be scaffolded with the cypress/react18 mount registration during component setup. Addresses #23033 .
A list of Vue components in the project are now available for selection when generating a new spec for component testing in projects that are using the default spec pattern. Addresses #22836 .
If the user logs in to the Dashboard from the app, but the current project does not have a project ID, the user will now be able to enter the connect project workflow directly. Addresses #23022 .
Adds Angular component testing support, including Angular template support and support for Angular standalone components. Addresses #22819 .
Bugfixes:
Fixes an issue where usage of the --spec option would result in no specs found if the absolute project path included glob pattern characters. Fixes #22272 .
Webpack entry points are no longer preserved for CT Webpack projects. Fixes #23224 .
Fixes an issue where session state was not being reset when changing between specs in open mode. Fixes #23146 .
Add delay to header tooltips so they don't pop open unless hovered on. Fixes #23115 .
Fixed an edge-case bug where Cypress would hang in run-mode if an error was thrown from a test:before:run event handler. Fixes #23039 .
Fixes an issue introduced in 10.3.0 where network logs could be missing certain information or cause certain requests to be delayed by 500ms. Fixes #23227 .
In the 'Create Blank Spec' dialog, pressing enter or return when the focus is on the spec path input field will create the blank spec. Fixes #21815 .
Fixes React 18 unmount component handling to resolve the lastMountedReactDom.unmountComponentAtNode is not a function error. Fixes #23081 .
Fixes a regression introduced in Cypress 10.0 where Cypress no longer persisted the spec filter in the 'Search Specs' field during a session and when a project is reopened. The same filter will be used in the main specs list as well as the inline specs list present in the Test Runner. Fixes #21837 .
Fixed an issue that could lead to infinite recursion and thus a crash when running tests that make use of cy.intercept() . Fixes #22693 .
In the Launchpad, the project's name will no longer link to the 'Choose Testing Type' step of the launchpad. Fixes #21911 .
CT projects using Vite v3 work with Node versions >=17 . Fixes #23042 & #23114 .
Miscellaneous:
Updated UI styling for Cypress about:blank pages. Addresses #20978 .
Stable Firefox versions 101 and 102 are now explicitly rendered as unsupported in Windows due to an unpatched browser incompatibility in those versions. Addresses #23164 .
Add a warning for users on the old React API, cypress/react , who are using React 18. Users can now take advantage of the React 18 integration, cypress/react18 . Addresses #23032 .
cy.state('subject') is deprecated and reading from it will log a warning to the console. Prefer cy.currentSubject() instead. Addresses #23092 .
Changelog: https://docs.cypress.io/guides/references/changelog#10-4-0
Changelog: https://docs.cypress.io/guides/references/changelog#10-4-0
Released Aug 02, 2022
Features:
Cypress Component testing now supports React 18 via the cypress/react18 package. Addresses #21381 & #21946 .
Cypress Component testing now supports Vite 3. Addresses #22784 .
Cypress introduces a new experimental flag, called experimentalModifyObstructiveThirdPartyCode . When enabled, experimentalModifyObstructiveThirdPartyCode will turn on additional modifyObstructiveCode options to prevent frame busting, as well as striping integrity tags out of <link> and <script> elements and remove the electron user agent. In the current state of this experimental flag, SRI is not supported. Addresses #21476 , #21307 , #22953 , & #21474 .
Cypress will now display a banner with a corrective action when your project uses a projectId that cannot be found in the Cypress Dashboard and when you do not have access to the current project in the Cypress Dashboard. Addresses #22637 .
Bugfixes:
Fixes issue where cookies were not handled within cy.origin for requests other than the AUT page request. Fixes #22952 & #21474 .
Tooltips are now correctly displayed behind modals. Fixes #22595 .
Fixed a hang when sending video to the dashboard from the electron browser. Fixes #17627 .
Cypress will now throw an error when we receive an unexpected return value from a custom config file. Fixes #21948 .
Cypress will now warn when detecting unsupported dependencies for component testing. Fixes #22025 .
cy.type() can now be used to enter datetime values with seconds, to an input of type datetime-local, for example 1959-09-13T10:12 :13 . Fixes #22884 .
Next.js in Cypress is now allowed to import global styles. Fixes #22525 .
Fixed an issue where 'additionalIgnorePattern' was not allowed to be an array of strings. #22551 .
Prevented timer size from changing while counting up. Fixes #22846 .
Added icons to help indicate that column headers provide more information on hover. Fixes #22638 .
Fixed an issue where long "run urls" are cut off in the console. Fixes #22619 .
Dependency Updates:
Upgraded electron from 18.3.0 to 19.0.8 . Addressed in #22775 .
Upgraded bundled Node.js version from 16.13.2 to 16.14.2 . Addressed in #22775 .
Upgraded bundled Chromium version from 100.0.4896.75 to 102.0.5005.148 . Addressed in #22775 .
Changelog: https://docs.cypress.io/guides/references/changelog#10-3-1
Changelog: https://docs.cypress.io/guides/references/changelog#10-3-1
Released Jul 19, 2022
Bugfixes:
Fixed an issue where file watchers were not completely closed prior to the Cypress App quitting, causing crashes on exit in some macOS environments. Fixes #22026 .
Fixed issues with reloading user configuration after it is updated. Fixes #21785 and #22389 .
Fixed issues with document.cookie when testing multiple origins. Fixes #22479 and #22674 .
Fixed an issue retrieving git information for non-bash Unix shells. Fixes #22454 .
Fixed an issue that prevented displayed "Last Updated" information on Windows for git repositories without a commit history. Addressed in #22741 .
Fixed styling of the Latest Runs tooltip to keep it centered over the latest run entry. Fixes #22629 and #22598 .
Fixed styling issues with the Specs Explorer at narrow viewport widths. Fixes #22626 .
Fixed a visual issue in the reporter where special characters would be incorrectly formatted with markdown. Fixes #5679 .
Fixed an issue where the Proxy-Authorization header included capitalization that would fail with certain proxies. Fixes #22383 .
Added react-dom as a required dependency when setting up a React project for Component Testing. Fixes #22371 .
The Spec Runner will no longer overflow unexpectedly in Firefox in certain situations. Fixes #21881 and #22610 .
Fixed a regression where the CYPRESS_NO_COMMAND_LOG environment variable was not honored. Fixes #21721 and #21271 .
Using cy.contains() with a regular expression now matches submit-type input labels correctly. Fixes #21166 .
Prevent printing "Class WebSwapCGLLayer is implemented in both" warning in stdout. Fixes #21615 .
Fixed the pluralization of Match(es) under Project Settings. Fixes #21728 .
Fixed a regression where absolute elements were not properly blacked out in screenshots. Fixes #22173 .
Miscellaneous:
Improved keyboard navigation for Latest Runs data in the Specs Explorer. Addresses #22628 .
Improved accessibility and styling around Specs Explorer tooltips. Addresses #22597 .
Improved the styling and behavior of the Copy button seen in the Migration workflows. Addresses #21860 and #21862 .
Improved the layout of the Launchpad Docs dropdown when the viewport is narrow. Addresses #21842 .
Removed autocomplete from certain inputs in the Cypress App. Addresses #22102 .
Removed the Projects breadcrumb from the Launchpad when not in global mode. Addresses #21771 .
Added padding to the bottom of the projects list in the Launchpad. Addresses #21724 .
Improved the display of the "Record your first run" banner at smaller widths. Addresses #21856 .
The Cypress App's sidebar will now automatically collapse at narrow widths. Addressed in #22393 .
Improved punctuation consistency and reduced the need to scroll in the Key Differences modal. Addresses #21852 .
Changelog: https://docs.cypress.io/guides/references/changelog#10-3-0
Changelog: https://docs.cypress.io/guides/references/changelog#10-3-0
Released Jun 28, 2022
Features:
Cypress Dashboard test data is now available real-time within Cypress. For more details, read our blog post . Addressed in #21250 and #22497 .
Added a new clear button to easily clear the search text when filtering specs in the Cypress runner. Fixes #21686 .
Bugfixes:
Fixed a memory leak in Chromium-based browsers caused by storing data: urls containing base64 encoded files unnecessarily. Fixed #17853 and #22462 .
Updated cross-origin cookie handling to align with browser behavior. This fixed various issues with cookies when testing across multiple origins. Fixed #21363 and #20685 .
Updated Cypress to use posix paths to fix an issue on Windows when a project required node-ts . Fixes #22544 and #22297 .
Fixed a 9.x to 10.x migration bug where the migration tool would hang without a response when it attempted to read the pluginsFile contents when the pluginsFile value was a directory path instead of a relative file path. Fixed #22461 .
Fixed the process profiler to output Cypress's summarized CPU and memory metrics when the cypress:server:util:process_profiler debug stream is enabled. Fixed #22022 .
Fix styling issue observed when long text was entered in the search when filtering specs in the Cypress runner. Fixes #21686 .
Corrected the TypeScript types to include baseUrl as a valid test config override option. Fixes #22374 and #22072 .
Changelog: https://docs.cypress.io/guides/references/changelog#10-2-0
Changelog: https://docs.cypress.io/guides/references/changelog#10-2-0
Released Jun 21, 2022
Features:
Cypress is now available natively on Apple silicon, including the M1 and M2 processor families. For more details, read our blog post . Addresses #19908 .
Cypress is now available natively on ARM64 and AArch64 systems running Linux. Addresses #4478 .
The file name input field within the Create Spec modal is now automatically focused when the modal is opened. Addresses #21865 .
Bugfixes:
Suppressed a misleading Chromium warning about CertVerifyProcBuiltin that would appear when visiting HTTPS sites in Cypress. Fixed #22128 .
Users will be able to see the custom reason-phrase in the HTTP response if the custom reason-phrase is set. Otherwise, a default status message is returned based on the corresponding status code as earlier. Fixed #16973 .
Fixed an issue where Cypress would crash with an EMFILE error if the process ran into the file descriptor limit. Fixed #22023 .
Fixed an issue causing a "nohoist config is ignored" warning when installing cypress with yarn. Fixed #22147 .
Spec directories and file names on the Specs page are now truncated if they exceed their column width. Fixed #21895 .
Updated the file links in error views to wrap appropriately and no longer overflow their containers. Fixed #22103 .
The Cypress v10 introduction video will now be skipped if loading the video takes longer than 3 seconds. Fixed #21955 .
Updated the warning banner to use language consistent with the rest of the Cypress application. Addressed in #21551 .
Dependency Updates:
Changelog: https://docs.cypress.io/guides/references/changelog#10-1-0
Changelog: https://docs.cypress.io/guides/references/changelog#10-1-0
Released Jun 10, 2022
Features:
Bugfixes:
Added support for TypeScript projects using "type": "module" using ts-node/esm. Fixed #22096 , #21939 , and #22074 .
Users can now run multiple specs with cypress run in headed mode on linux and windows in chrome. Fixed #22155 .
The baseUrl config option will now restart the Cypress server automatically when it is updated in a Cypress config file. Fixed #22056 .
The supportFile can now be detected within projects that contain glob syntax characters in their absolute paths. Fixed #22040 .
Selector Playground "copy to clipboard" now copies full command rather than just the selector. Fixed #22043 .
The clickable area for the specs list has been expanded to include the entire row. Fixed #22105 .
Removed the trailing period from the "Learn More" button. Fixed #21807 .
Clicking the application under test url will now open the application in another tab. Fixed #21823 .
Changelog: https://docs.cypress.io/guides/references/changelog#10-0-3
Changelog: https://docs.cypress.io/guides/references/changelog#10-0-3
Released Jun 03, 2022
Bugfixes:
Cypress will only watch files that match the provided specPattern . Fixed #22054 .
Cypress will no longer crash when run behind a proxy that blocks Cypress's CDN. Fixed #22081 .
Contrast increased on inline spec list header items for improved accessibility. Fixed #21870 .
Updated UI to not show the spec list as selected when in the runner. Fixed #21873 .
"Cypress" is now capitalized step 3 of migration text. Fixed #21798 .
The browser list in the cypress apps top nav is now scrollable with a large number of browsers. #22032 .
Newly scaffolded spec files will no longer be generated with as a failing test. Fixed #21921 .
Cypress will not crash if it fails to access the machine-id on windows. Fixed #22110 .
Changelog: https://docs.cypress.io/guides/references/changelog#10-0-2
Changelog: https://docs.cypress.io/guides/references/changelog#10-0-2
Released Jun 02, 2022
Bugfixes:
Cypress will no longer watch files when in run mode. Fixed #22054 .
Improved support for esm in windows. Fixed #22038 .
Improved TypeScript detection in project:
Ensures TypeScript actually exists (via require.resolve ) and is specified in dependencies or devDependencies before migrating a project to use it.
When creating a new project include *tsconfig.json glob in algorithm to detect TypeScript.
When migrating the existing files in the cypress folder should be enough info to make the determination.
No longer includes .d.ts files when detecting TypeScript
Fixed #22034 , #22108 , and #21997
Vite dev-server for component testing will not crash if user has vite plugins that rely on non-empty plugins list. Fixed #22021 .
Post processing ffmpeg is now run at a lower priority. Fixed #21585 .
Changelog: https://docs.cypress.io/guides/references/changelog#10-0-1
Changelog: https://docs.cypress.io/guides/references/changelog#10-0-1
Released Jun 01, 2022
Bugfixes:
The inline spec list is now scrollable. Fixed #21995 .
.check() and .uncheck() will now properly remove the indeterminate state from checkboxes. Fixed #21665 .
An error will no longer throw warning that cypress isn't a module after migrating a project's configuration file when using the direct download of Cypress. Fixed #2199 .
Cypress will now throw a more description error when TypeScript errors are encountered when reading a cypress.config.ts file. Addressed in #22009 , Related to #21997 & #22004 .
We now more correctly handle EPERM errors related to chokidar watching files when there are permission issues. Fixed #22002 .
The migration step for support file is no longer shown when the user had a custom support file path. Fixed #22012 .
Styles are now applied correctly after a user views the runs page and returns to the specs list. Fixed #21931 .
Misc:
Changelog: https://docs.cypress.io/guides/references/changelog#10-0-0
Changelog: https://docs.cypress.io/guides/references/changelog#10-0-0
Released Jun 01, 2022
Summary:
Component testing is now beta! We've also reworked the Cypress app from the ground up to modernize the interface, streamline workflows, and integrate better into your overall development experience. Read more about 10.0 in our blog post .
Breaking Changes:
Run cypress open to go through our interactive migration which will guide you in updating your files and configuration options. Read our Migration Guide which explains some breaking changes in more detail.**
We introduced several breaking changes to the Cypress configuration file detailed below:
Using a cypress.json configuration file is no longer supported. Replace this configuration file with a cypress.config.js , cypress.config.ts , cypress.config.cjs or cypress.config.mjs file. This change provides better flexibility and extensibility of configuration. An error will be thrown if both a cypress.json file and cypress.config.{cjs,js,mjs,ts} file are found. Addressed in #18221 , #18300 , #20554 , and #20643 .
A Cypress configuration file is now required and passing the CLI flag --config-file=false will throw an error. Addressed in #20643 .
A default configuration file will no longer be auto-generated by Cypress when a configuration file doesn't exist. Instead, you can run cypress open and set up your project with a specific testing type to have this file generated. This customizes the configuration setup by testing-type for the language and dependencies used in your project.
The configuration file's JSON schema is no longer supported since the configuration can no longer be provided via a JSON format.
Cypress has made several configuration option changes including renaming options, removing options, and only allowing some options within a specific testing type. Run cypress open to have our automated migration update these options for you.
Many configuration options are now specific to either end-to-end or component testing. The types have also been updated to match the new structure. Addressed in #20677 .
The baseUrl and experimentalSessionAndOrigin configuration options are no longer valid as top-level configuration options and can only be defined within the e2e configuration. Addressed in #20589 and #21588 .
The supportFile and slowTestThreshold options are no longer valid as top-level configuration options and must now be defined within the e2e and/or component configurations.
Previously the supportFile option defaulted to cypress/support/index.js . Now the e2e.supportFile option defaults to cypress/support/e2e.{js,jsx,ts,tsx} and the component.supportFile option defaults to cypress/support/component.{js,jsx,ts,tsx} . Addressed in #19776 and #19364 .
The pluginsFile option was removed. This option should be replaced with the new setupNodeEvents() and devServer() configuration options. Addressed in #18798 and #20560 .
The testFiles option was removed. This option was replaced with the new specPattern option. Addressed in #19319 and #20565 .
The integrationFolder and componentFolder options were removed. These options were made obsolete by the new specPattern option. Addressed in #19319 .
The ignoreTestFiles option was removed. This option was replaced with the new excludeSpecPattern option. Addressed in #19319 .
The experimentalStudio option was removed with the removal of the experimental Cypress Studio feature. If this option is configured in your project, a warning message will be displayed. Leave any feedback in the Cypress Studio discussion . Addressed in #20515 .
During cypress open , the ability to "Run all specs" and "Run filtered specs" has been removed. Leave feedback about the removal in the 'Run all specs' discussion . Your feedback will help us make product decisions around the future of this feature.
The experimental Cypress Studio feature has been removed. Leave feedback about the removal in the Cypress Studio discussion . Your feedback will help us make product decisions around the future of this feature. Addressed in #20515 .
You will no longer be able to run your tests during cypress run or cypress open in browser versions that are not supported by Cypress .
Generated screenshots and videos will still be created inside their respective folders ( screenshotsFolder , videosFolder ). However, the paths of generated files inside those folders will be stripped of any common ancestor paths shared between spec files found by the specPattern option and may no longer be deterministic. Addressed in #19319 .
Deprecations:
Features:
Cypress 10 now includes beta support for component testing . More features around component testing are detailed below:
Component testing is now integrated directly into the main app, allowing you to choose which testing experience you want upon launching Cypress. See our current support for frameworks and bundlers . Addressed in #21111 .
Cypress will now guide you through installing the component testing dependencies and project setup necessary to begin component testing in Cypress. Previously this required manual setup and referencing the documentation.
When you use the Cypress app during cypress open to configure your project for CT testing, a cy.mount() command will be automatically scaffolded for you in a ct.supportFile .
You can now create an empty component testing spec file from within the Cypress app directly and preview the specfile upon creation.
The following component testing plugins are now shipped with Cypress to enable easy cy.mount() implementation. Your local framework dependencies found in node_modules will be referenced to prevent adding additional dependencies or peer-dependencies to your package.json . From now on, the latest plugin version will be shipped with each Cypress release. See our current support for frameworks and bundlers . Addressed in #20930 .
@cypress/ [email protected]
@cypress/ [email protected]
@cypress/ [email protected]
@cypress/ [email protected]
We've enhanced how you can set and refresh configuration detailed below:
Support for cypress.config.js|ts|cjs|mjs configuration files was added. Addressed in #20643 .
The Cypress app will now refresh when changes are made in the configuration file instead of closing the app. Addressed in #21160 .
We've added several new configuration options detailed below:
The setupNodeEvents() option is a new testing type specific configuration option. It must be defined within the e2e and/or component configurations. This option modifies your loaded configuration, listens to events and registers plugins. This option replaces the pluginsFile option. Addressed in #18798 and #20560 .
The devServer option is a new component testing specific option that must be defined within the component configuration. This option provides a mechanism for starting a component testing dev-server when tests are running.
The specPattern option is a new testing-type specific configuration option that must be defined within the e2e and/or component configurations. This option accepts a glob or an array of globs of the spec files to load. This option simplifies the spec discovery by replacing the componentFolder , integrationFolder , and testFiles options. Addressed in #19319 , #20565 and #20853 .
The e2e.specPattern default value for new projects is cypress/e2e/**.cy.{js,jsx,ts,tsx} . For existing projects, run cypress open to have your spec files automatically migrated to match this specPattern . Addressed in #21193 .
The component.specPattern default value is **/*.cy.{js,jsx,ts,tsx} .
The excludeSpecPattern option is a new testing type specific configuration option that must be defined within the e2e and/or component configurations. This option accepts a glob or an array of globs, and ignores the matching spec files that would otherwise be shown in your list of specs. This option replaces the ignoreTestFiles option. Addressed in #19319 , #19980 , #20763 , #20853 .
The e2e.excludeSpecPattern default value is the same as the replaced ignoreTestFiles glob pattern of *.hot-update.js .
The component.excludeSpecPattern default value is ['/snapshots/*','/image_snapshots/*'] plus the e2e.specPattern glob patterns.
The /node_modules/ pattern is automatically added to both e2e.excludeSpecPattern and component.excludeSpecPattern and can't be overridden. This is consistent with <10.0 behavior.
Intelligent Code Completion was added with the defineConfig() helper function. This enables configuration auto-completion and in-line documentation in the configuration file in your IDE. While it's not strictly necessary for Cypress to parse your configuration, we recommend wrapping your config object with defineConfig() . Addressed in #18302 .
We've made some updates to Cypress API commands detailed below:
Enhancements were made to provide visual indication of nested commands and logs. With this change, users are now able to click on log groups to print additional log details to the dev tools console.
The .within() command was updated to provide visual indication of logs and commands executed in the .within command context. Addresses #20433 .
The redundant cy.session() log is now removed. Address #7673 in #21457 .
Users can now add custom cy.hover() and cy.mount() implementation using Cypress.Commands.add() since we don't provide a default implementation. Previously users had to use Cypress.Command.override() to provide the custom implementation. Addresses #18941 .
We've made some updates to the Cypress CLI detailed below:
You can now pass in testing type specific configuration options via the --config CLI flag without nesting JSON. Addressed in #20127 .
New --e2e and --component CLI flags were added to cypress run and cypress open to allow a user to run or launch Cypress for a specific testing-type. If a testing-type specific CLI flag is not provided when running cypress run , Cypress will run end-to-end tests by default.
A warning message is now displayed when cypress open is ran with the --browser CLI flag for a browser that does not exist on the system. Addressed in #18473 .
If a testing type and browser flag are passed to cypress open when launching a specific project, the browser will automatically launch. Addressed in #21538 .
The cypress open experience has been updated to take you through our Launchpad with many features detailed below:
When you launch Cypress via cypress open you'll be asked whether you want to do end-to-end or component testing and taken through the configuration necessary to set up your project. Addressed in #18924 .
Having files scaffolded on new projects during end-to-end testing is now opt in and not automatic. Addressed in #18924 .
When Cypress detects you have a cypress.json during cypress run , it will error and ask you to run cypress open to migrate. When Cypress detects you have a cypress.json during cypress open , it will guide you through project migration to ensure your project continues to work as expected. Addressed in #18924 .
After launching the browser, there are several new features in our App detailed below:
The Cypress app has been redesigned so that the Command Log and all associated navigation display with a dark background.
You can now change specs or the browser within the same window as running your tests.
Many git details are now shown within your current project in Cypress including the current branch and the last commit details of each spec in the spec explorer. Addressed in #20648 , #21139 , #21436 and #20744
When creating a new spec within Cypress, your project's language is detected to provide the correct file extension and the specPattern is checked to ensure the spec is found by Cypress. After creating the spec, you can preview the spec that was generated with the option to immediately run the spec or create another spec. Addressed in #21225 , #20567 , #20657 , #20962 .
The Settings page has been redesigned to more clearly distinguish between settings that are specific to the project, your device, and the Dashboard.
Bugfixes:
An error message is displayed when you add a command using Cypress.Commands.add() that has the same name as an internal reserved Cypress command. Addresses #6146 .
A one pixel, left, vertical border was removed that was incorrectly included on screenshot artifacts generated from the cy.screenshot() command in component tests. Addressed in #21019 .
A memory leak was fixed during cypress run for end-to-end tests launched in Chromium and Firefox browsers that reduces the overall time it takes to run a set of specs and aligns with how the browser is launched once for all specs in component testing. With this change, the before:browser:launch node event will now properly only fire once per run, instead of firing before each spec. Addressed in #19915 .
The default webpack configuration's host value was changed from localhost to 127.0.0.1 to support the Node 17+ changes with how DNS names are resolved. Addressed in #21430 .
Cypress will throw a detailed error when some plugin versions are no longer supported in Cypress 10. Addressed in #21169 .
Dependencies:
Added @cypress/ [email protected] dependency.
Added @cypress/ [email protected] dependency.
Added @cypress/ [email protected] dependency.
Added @cypress/ [email protected] dependency.
Misc:
The Cypress.Cookies.preserveOnce() and Cypress.Cookies.defaults() Cypress APIs have been deprecated. In a future release, support for Cypress.Cookies.…
Released 5/23/2022
Features:
Deprecations:
Cypress.Cookies.preserveOnce() and Cypress.Cookies.defaults() Cypress
APIs have been deprecated. In a future release, support for
Cypress.Cookies.preserveOnce() and Cypress.Cookies.defaults() will be
removed. Consider using the experimental
cy.session() command instead to cache and restore
cookies and other sessions details between tests. Fixed
#21333.Bugfixes:
cy.contains() command to correctly
error and retry if the provided regex pattern begins with an equal sign and a
match was not initially found. Previously the command would incorrectly fail
with a syntax error. Fixed
#21108.cy.session() command log grouping and validation verbiage.
This change provides better insights to logs associated with the command.
Fixed #21377.eventemitter2 third-party type definitions from cy and Cypress
that were unintentionally exposed. Fixed
#20556.Dependency Updates:
16.5.0 to
16.13.2. Addressed in
#21418.cypress run and when
selecting Electron browser in cypress open from 94.0.4606.81 to
100.0.4896.75. Addressed in
#21418.electron dependency from 15.5.1 to 18.0.4. Addressed in
#21418.Cypress can now launch on systems where Firefox is installed via Snapcraft. Fixed #19793.
Released 5/9/2022
Bugfixes:
cy.contains() and
.should('contain', ...) to handle finding text that
contains backslash characters. Fixed
#19116.type('{enter}') to support sending the Enter
keystroke to submit buttons that are not rendered within a form html element,
but are associated with a form via the form attribute. Fixed
#21163.cy.session() such that re-running tests in open mode
will now correctly recreate a session. Before this change, an error was thrown
indicating the saved setup function was not a function because it was
serialized. Fixed
#17805.Now you can easily test multi-domain workflows by using the experimental `cy.origin()` command. This feature allows you to test across different origi
Released 4/25/2022
Features:
cy.origin() command. This feature allows you to test
across different origins or domains within a single test. This experiment was
designed to work side-by-side with the cy.session()
experimental feature. You can turn on use of this command by setting the
experimentalSessionAndOrigin configuration
option to true. For more details, read
our blog post.
Addressed #17336 and
#944.
experimentalSessionAndOrigin. This
option enables support for cy.session() and
cy.origin().experimentalSessionSupport configuration option has been removed and
replaced by the experimentalSessionAndOrigin configuration option. Please
update your configuration to use the new experimentalSessionAndOrigin
option to continue to opt-in to this experimental feature.experimentalSessionAndOrigin is enabled, cross-origin requests will
no longer immediately fail, but instead, time out based on the
pageLoadTimeout
configuration. This allows the request to be appropriately handled by the
cy.origin() command.experimentalSessionAndOrigin is enabled, Cypress will no longer wait
on page loads between hooks before moving on to the next test.Bugfixes:
.type('{enter}'). Fixed
#21033.Cypress.Commands.add() TypeScript types to better reflect the
attributes of the .add() utility and the JQuery element, a possible previous
subject type. #20376.Dependency Updates:
electron dependency from 15.3.5 to 15.5.1 to consume fixes
related to
improve performance on
macOS Big Sur and later. Addressed
#21068.Upgraded ansi-regex dependency from 4.1.0 to 4.1.1 to address the CVE-2021-3807 NVD security vulnerability. Addressed in #20807.
Released 4/11/2022
Bugfixes:
*.enable events are sent if Cypress
becomes disconnected from the Chrome DevTools Protocol and must re-establish a
connection to ensure all command logs are displayed to the user. This fixes an
issue where some command logs, like download or network events, are missing
once Cypress has disconnected and then reconnected to the Chrome DevTools
Protocol. Fixed #20618.cy.type('{enter}') was not sending the Enter key for
Firefox v98+. This was not an issue with Firefox v97 and below. Fixed
#20562.--spec CLI parameter was incorrectly splitting the
patterns in unexpected places when it should have split on commas. Fixes
#20794.cy.root() to respect the
timeout option passed to the command.
Previously, when the timeout option was provided, it was ignored and the
default timeout was used. Fixed
#19985..pause() from correctly executing when passing the
--headed --no-exit CLI flags to cypress run. Fixed
#20745.cy.back() and
cy.go(). Fixed #19749
and #20539.any when the correct type is Cookie. Fixed in
#20513.Cypress.Command.addAll() Typescript types. Fixed
#18886.cy.session() where an error was thrown
when no cookies had been set for the session and the user clicks the session
command log to view additional details in the DevTools console. Fixed in
#20946.Misc:
cy.session() command log visuals.
Fixed #20433.Dependency Updates:
ansi-regex dependency from 4.1.0 to 4.1.1 to address the
CVE-2021-3807 NVD security
vulnerability. Addressed in
#20807.plist dependency from 3.0.4 to 3.0.5 to address the
CVE-2022-22912 NVD security
vulnerability. Addressed in
#20808.Upgraded electron dependency from 15.3.4 to 15.3.5 to address the CVE-2022-21718 NVD security vulnerability. Addressed in #20750.
Released 3/28/2022
Bugfixes:
cy.intercept() where the response status code
and response body were sometimes missing from the log details in open mode.
Fixed #18757.cy.readFile() where the command would not retry or provide
a meaningful error message if null encoding was used and the file was not
found. Fixed #20683.alt,
ctrl, or shift modifier keys. This fixed an issue where the Cypress
shortcut handler would override the browser native keyboard shortcut for
search (ctrl + f). Fixed
#20222.CYPRESS_DOWNLOAD_PATH_TEMPLATE environment variable. Issues were seen
utilizing this template when the env was provided from a package manager file.
Fixed #19914.Cypress.Buffer TypeScript type to reference the static constructor
of Buffer, instead of incorrectly referencing the Buffer instance which
caused Type errors. Fixes
#20542.Dependency Updates:
electron dependency from 15.3.4 to 15.3.5 to address the
CVE-2022-21718 NVD security
vulnerability. Addressed in
#20750.minimist dependency from 1.2.5 to 1.2.6. Addressed in
#20756.nanoid dependency from 3.1.20 to 3.1.31 to address the
CVE-2021-23566 NVD security
vulnerability. Addressed in
#20726.node-forge dependency from 1.0.0 to 1.3.0 to address the
CVE-2022-24771 NVD security
vulnerability. Addressed in
#20727.Upgraded url-parse dependency from 1.5.6 to 1.5.9 to address these NVD security vulnerabilities, CVE-2022-0639, CVE-2022-0686 and CVE-2022-0691. Addre…
Released 3/14/2022
Bugfixes:
.type() where click events could be fired on the
incorrect target element because the target focus changed within a key-down
event handler callback. Fixed in
#20525.chromeWebSecurity configuration option having no effect on the Firefox
browser. Fixes #20496.cypress clear cache before
installing a new pre-release version of Cypress or before installing a new
released version of Cypress after a pre-release version had been installed.
Addressed in #20296.Misc:
Origin-Agent-Cluster header for
proxied responses to ensure document.domain can continue to be set with
Chrome v106+. This was necessary because Chrome is planning to make
document.domain immutable
in v106+ to relax the same-origin policy by interpreting the
Origin-Agent-Cluster as true, whereas it is currently interpreted as
false. Addresses
#20147.Dependency Updates:
url-parse dependency from 1.5.6 to 1.5.9 to address these NVD
security vulnerabilities,
CVE-2022-0639,
CVE-2022-0686 and
CVE-2022-0691. Addressed in
#20386 and
#20439.…user-controlled key to address this NVD security vulnerability. Addressed in #20270.
Released 2/28/2022
Bugfixes:
ready event to the Plugins process to ensure all plugins have
successfully started before the configuration is loaded and the tests start.
Fixed in #19792.
--loader flag for plugins.cy.fixtures() error code frame. Fixes
#20208.Dependency Updates:
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.
Addressed in #20270.Enhancements were made to the error experience in both run mode and open mode to improve readability and provide meaningful stack traces. Addressed in
Released 2/15/2022
Features:
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. Addressed
in #20009.ShadowRoot and Document elements as HTML
elements. Previously these would be logged as enumerated objects, which were
difficult to evaluate. Addressed in
#20049.node path in the run header. Addressed in
#20120.Bugfixes:
.selectFile() could have the
wrong File prototype. Fixes
#20003..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. Fixes
#19494..type(' ') to align with the W3C standards where a click event
should be dispatched when the Space key is pressed and the current focus is on
a state-changing element with type button, image, submit or reset.
Fixes #20067.Fixed a regression in 9.4.0 where the line endings in the public NPM package prevented some users from running Cypress. Fixes #19986.
Enhancements were made to .selectFile() after receiving feedback after its initial release in 9.3.0.
Released 1/31/2022
Features
.selectFile() after receiving feedback after its
initial release in 9.3.0.
mimeType property so you can explicitly set the mime type on
files using the mimeType property. Addressed in
#19751.TypedArray
instance or a Cypress.Buffer instance, where previously file contents were
expected to only be an instance of Cypress.Buffer. Addressed in
#19751..selectFile() to retain the fileName of files read from disk to
work with aliases. Addressed in
#19803.Bugfixes:
--spec CLI parameter for glob patterns containing a range. Fixes
#19783.--openssl-legacy-provider flag was not being passed to the plugins' child
process when the user's system Node version was Node 17+ built with OpenSSL
v3+ which resulted in Cypress crashing when trying to run tests. Fixes
#19712.cy.type('{enter}') to align with the W3C standards where a click
event should be dispatched when the Enter key is pressed and the current focus
is on astate-changing element with type button, image, submit or
reset. Fixes #19541.Fixed an issue where the bin file was released with windows line breaks. Fixes #19747.
Released 1/19/2022
Bugfixes:
Released Jan 19, 2022
Bugfixes:
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
Released 1/18/2022
Features:
.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.
Fixes #19524 and
#170.Buffer polyfill, as Cypress.Buffer,
to enable working with binary data. Addressed in
#19524.CYPRESS_DOWNLOAD_PATH_TEMPLATE environment variable which can be
set to a string template for building the download URL for the Cypress binary.
This environment variable is useful for users who are downloading the Cypress
binary from a proxy that is not one-to-one with the Cypress's default download
url. More information can be found in the
Install Binary
documentation. Fixes
#15697.Bugfixes:
--spec CLI parameter was not working properly when
passing multiple glob patterns that are separated by commas. Fixes
#16102.CYPRESS_VERIFY_TIMEOUT environment variable was
read so it can set in a project's package.json or it's .npmrc. Fixes
#19559.Dependency Updates:
graceful-fs from 4.2.0 to 4.2.9. This upgrade resolves issues
observed with using graceful-fs v4.2.0 with resolve v1.21+. Addressed in
#19676 and resolves
#19610.
graceful-fs breaks Cypress's compatibility with
Yarn 2. We have observed errors with Yarn 2.4.2 with graceful-fs 4.2.9.
Before this change, Cypress had minimal Yarn 2 support (see
#6377). Between Yarn 3
fixing multiple bugs and the migration path from Yarn 2 to Yarn 3 being
minimal, we felt the best step forward was to support and recommend Yarn 3
over Yarn 2.electron from 15.2.0 to 15.3.4. Addressed in
#19351.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. Fixes #19485.
Released 1/10/2022
Bugfixes:
--headed --no-exit flags are
passed to cypress run. Fixes
#19485.--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. Fixes
#19320.CYPRESS_VERIFY_TIMEOUT environment variable as a number
so Cypress will no longer throw
TypeError: Expected the timeout option to be a non-negative integer. Fixes
#19476.Dependency Updates:
cli-table3 from ~0.6.0 to ~0.6.1 to avoid
problems with the bug introduced in the
colors.js v1.4.44-liberty-2 release.
Addresses #19624.Upgraded ssri from 6.0.1 to 6.0.2 to mitigate ssri vulnerability. Addressed in #19351.
Released 12/20/2021
Features:
Cypress.config() that is a
readonly option.
Addresses #6407 and
#19001.timeout option has been added to the cy.writeFile() command, with a
default value of defaultCommandTimeout. Addresses
#3350.maxHttpBufferSize for the internal socket server has been
increased to
Node's maximum Buffer size
(size varies by OS) to allow large file writes with cy.writeFile().
Addresses #19140.CYPRESS_VERIFY_TIMEOUT environment variable to override the timeout
duration of the verify command. Addresses
#18290.Bugfixes:
cypress open mode which lead to out of
memory crashes on certain browsers. Fixes
#18549.fetch and xhr requests
could be associated with the wrong request. Fixes
#19043.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.Fixes
#14867 and
#17660.cy.intercept() did not support
passing null to encoding to read the fixture as a Buffer. This identified an
undocumented 9.0.0 Breaking Change where the default read behavior of a
fixture changed from a Buffer to being read with utf8 encoding. Fixes
#19344.cy.contains() attempted to ignore <script> and <style> elements found
within <body>. by deleting them from the dom. This behavior was corrected to
ignore the elements without deleting them. Fixes
#19377."http: //localhost/asset.js"
(notice the extraneous space), Cypress will now log a debug message and the
asset will fail to load. Fixes
#9220.Cypress.Command.add() and Cypress.Command.override() TypeScript
types. Fixes #18879,
#19095 and
#18940.
prevSubject
variants.originalFn function.Cypress.session.clearAllSavedSessions(). Fixes
#19363.Dependencies:
ssri from 6.0.1 to 6.0.2 to mitigate
ssri vulnerability. Addressed in
#19351.Fixed a regression in 9.1.0 where our built binary didn't contain patches to some dependencies. Addressed in #19239. This fixed some issues including:
Released 12/03/2021
Bugfixes:
~ will no longer be improperly encoded. Fixes
#19083,
#19084,
#19115,
#19096,
#19178.data.hasOwnProperty is not a function will no
longer throw in some situations. Fixes
#19091."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. Fixes
#18914..type() events now correctly propagate out of the shadow DOM.
Fixes #17531.this context is now properly preserved when overwriting cy.clock().
Fixes #19158.Dependencies:
@cypress/request from 2.88.7 to 2.88.10. Addressed in
#19099.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
Released 11/22/2021
Features:
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. Addresses
#18805.Bugfixes:
cy.stub().log(false). Fixes
#18907.this context now have access to this when
overridden. Fixes #18899.The nodeVersion configuration option has been deprecated and will be removed in a future release.
Released 11/10/2021
Breaking Changes:
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. Addresses
#18684.Cypress.config.
Previously invalid values were ignored and could cause unexpected behavior.
Addresses #18589.cy.contains() no longer yields the <body> element when it matches the
content of <script> or <style> tags. Addresses
#14861.Cypress.Commands.add() will now throw an error, indicating that
Cypress.Commands.overwrite() should be used instead to overwrite the
behavior of existing commands. Addresses
#18572.14.17.0 to 16.5.0. This
could change the behavior of code within the pluginsFile when using the
bundled Node.js version of Cypress. Addressed in
#18317.Deprecations:
nodeVersion configuration option has been deprecated and will be removed
in a future release.Features:
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. Addresses
#18534.Bugfixes:
document.referrer will now correctly reflect the correct value from the
application under test after cy.visit(). Fixes
#4295.Dependencies:
Released Nov 10, 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. Addresses #18684 .
Windows 32-bit is no longer supported in Cypress. Addresses #17962 .
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. Addresses #18589 .
cy.contains() no longer yields the <body> element when it matches the content of <script> or <style> tags. Addresses #14861 .
Attempting to add an existing built-in Cypress command using Cypress.Commands.add() will now throw an error, indicating that Cypress.Commands.overwrite() should be used instead to overwrite the behavior of existing commands. Addresses #18572 .
Custom command implementations are now typed based on the declared custom chainables. Addresses #17496 .
The bundled Node.js version was upgraded from 14.17.0 to 16.5.0 . This could change the behavior of code within the pluginsFile when using the bundled Node.js version of Cypress. Addressed in #18317 .
The default read behavior of a fixture provided as a static response in cy.intercept() changed from being read as a Buffer to using utf8 encoding. This aligns the default read behavior of cy.intercept() to cy.readFile() and cy.fixture() . Addresses #18534 .
Deprecations:
Features:
Bugfixes:
Sticky elements within a fixed container will now be able to be properly scrolled to during action commands. Fixes #4233 .
document.referrer will now correctly reflect the correct value from the application under test after cy.visit() . Fixes #4295 .
Dependencies:
Upgraded Chrome browser version used during cypress run and when selecting Electron browser in cypress open from 91 to 94 . Addressed in #15292 .
Upgraded bundled Node.js version from 14.17.0 to 16.5.0 . Addressed in #15292 .
Upgraded electron from 14.1.0 to 15.2.0 . Addressed in #15292 .
There are changes to how "slow" tests are determined and displayed in Cypress. Addresses #18496.
Released 10/25/2021
Features:
slowTestThreshold
configuration option to customize when tests are considered "slow" during
cypress run. A test that runs slower than the given threshold will display
in orange text in the default 'spec' reporter. This configuration can be set
in your Cypress config file or via specific
test configuration."slowTestThreshold": 75 to your Cypress config file.cypress run with the default 'spec' reporter.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. Addresses
#7955.Bugfixes:
projectRoot directory not being writeable will now display correctly. Fixes
#18485.selectorPriority
configuration option of Cypress.SelectorPlayground.defaults. Valid values
are data-*, id, class, tag, attribute, or nth-child. Fixes
#7745.Dependency Updates:
ua-parser-js to 0.7.24 to avoid dependency resolution
to the compromised package versions. Please read the
security advisory and
take actions advised as soon as possible. Addressed in
#18611cy.screenshot() now accepts overwrite: true as an option to overwrite existing screenshots with the same file name. Addresses #7955.
Released 10/11/2021
Features:
cy.screenshot() now accepts overwrite: true as an option to overwrite
existing screenshots with the same file name. Addresses
#7955.cy.select([]) can now be used to clear any selected options in a multi-value
select. Addresses #4318.cy.pause() when using cypress run --headed --no-exit will now pause
a test. Addresses #4044.Bugfixes:
--spec: {} from the CLI
and instead error when passed an invalid object argument. Fixes
#3957.Misc:
cy.request() error message when conflicting failOnStatusCode
and retryOnStatusCodeFailure options are passed to be clearer. Fixes
#18271.Dependency Updates:
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 Wind…
Released 09/27/2021
Features:
.select() command. Addresses
#757.Bugfixes:
NO_PROXY environment variable when
one is set. Fixes
#17702.projectId in the custom config file instead of
cypress.json. Fixes
#5747.Misc:
.select() command. Addressed in #18234.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. F
Released 09/17/2021
Bugfixes:
When the URL contains non-ASCII characters, you can use the new decode option of cy.url() to decode it. Addresses #17399.
Released 09/13/2021
Features:
decode
option of cy.url() to decode it. Addresses
#17399.Bugfixes:
.check() or .uncheck() when
there are no matching value attributes found.
Fixes#7379.clientCertificate types have been added for the Cypress configuration. Fixes
#17799.Projects will now open much faster on MacOS Big Sur with improved browser detection performance. Fixes #17773.
Released 08/27/2021
Performance:
Bugfixes:
cypress run-ct while running in
the Electron browser. Fixes
#17752 and
#17885.SIGSEGV error on Mac when closing the Cypress app
opened via cypress open. Fixes
#17766.beforeinput event now correctly fires in Firefox during keyboard events.
Fixes #17583.Misc:
cy.document() typings now allow for the timeout option. Fixes
#17695.cy.title() typings now allow for the timeout option. Fixes
#17781Dependency Updates:
The instructions for recording a run have been updated for some users. Addressed in #17317.
Released 08/16/2021
Features:
Performance:
cy.visit() to take longer to fire its load event in some
circumstances. Fixes
#16671.Bugfixes:
res.send of cy.intercept() will no longer override JSON-related content
types. Fixes #17084.times option of cy.intercept now works properly with req.reply.
Fixes #17139.chromeWebSecurity is set to "false" when it
wasn't. Fixes #17614.Dependency Updates:
cypress run and when selecting
Electron browser in cypress open from 89 to 91. Addressed in
#17408.14.6.0 to 14.17.0. Addressed in
#17408.electron from 12.0.0-beta.14 to 13.1.7. Addressed in
#17408.url-parse from 1.5.1 to 1.5.2. Addressed in
#17719.You can now cache and restore cookies, `localStorage`, and `sessionStorage` in order to reduce test setup times by using `cy.session()`. The session A
Released 08/04/2021
Features:
localStorage,
and
sessionStorage
in order to reduce test setup times by using
cy.session(). The session API is experimental and
can be enabled by setting the
experimentalSessionSupport flag to true
in your Cypress config. See
our blog
and the cy.session() doc for more detail.fetch requests are always displayed in the Command Log, regardless of if
experimentalFetchSupport is enabled.cy.intercept() have been
consolidated - Fixes
#14843.cy.intercept() request logs has been improved.cy.intercept().cy.intercept()/cy.route() rules.Cypress.currentTest property to access name the currently
executing test via Cypress.currentTest.title and
Cypress.currentTest.titlePath. Addresses
#2972.Bugfixes:
before hook. Fixes
#9026./etc/passwd entry for the current
user, such as in some Docker and GitHub Action setups. Fixes
#17415.cy.wait(). Fixes
#17436.When using experimentalStudio, you can now generate assertions in Cypress Studio by right clicking on an element. Addressed in #16295.
Released 07/29/2021
Features:
experimentalStudio, you can now generate assertions in
Cypress Studio by right clicking on an
element. Addressed in
#16295.Performance:
Bugfixes:
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 pixe
Released 07/19/2021
Summary:
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.
Breaking Changes:
<Icon name="exclamation-triangle" color="red"></Icon> Please read our Migration Guide which explains the changes in more detail and how to change your code to migrate to Cypress 8.0.
cypress run previous to 8.0, some browsers would launch headed
while others were launched headless by default. Cypress now runs all browsers
during cypress run as headless by default. Addresses
#16832.--headless Chrome browser via cypress run, the device
pixel ratio will now be 1 by default, matching the behavior of all other
browsers. This behavior can be overridden through the
browser launch API.
Addresses #17375.cypress run and not allow opening the browser in cypress open when
attempting to open unsupported browser versions. Cypress supports Chrome >=
64, Firefox >= 86, and Edge >= 79. Addressed in
#17355.jQuery and instead have an any type. Fixes
#16669.Cypress.ConfigOptions, Cypress.ResolvedConfigOptions and
Cypress.RuntimeConfigOption types have been updated so that ConfigOptions
match the JSON schema. Addressed in
#17251.Features:
clientCertificates configuration
option. See Client certificates for
more detail.ELECTRON_RUN_AS_NODE now starts Cypress as
a normal Node.js process rather than an Electron process. See
Running headless tests without Xvfb
for more details. Addresses
#16505.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. Fixes
#7434.cy.intercept()
including:
cy.invoke() now retains the proper this context on
nested object methods. Fixes
#3871.When using experimentalStudio, Cypress Studio can now copy all commands generated to your clipboard. Addressed in #16912.
Released 07/07/2021
Features:
experimentalStudio, Cypress Studio can now copy all commands generated to your clipboard. Addressed in #16912.Bugfixes:
preventScroll options passed to element.focus() calls within the application under test. Fixes #15294..contains(0) will now show the zero in the Command Log. Fixes #1119.showedOnBoardingModal when running cypress open. Fixes #17095..contains() now correctly allow for the includeShadowDom option. Fixes #17066.Misc:
You can now override the default delay between typing characters for .type() with `Cypress.Keyboard.defaults()` or via test configuration. Addresses #
Released 06/23/2021
Features:
.type() with Cypress.Keyboard.defaults() or via test configuration. Addresses #566.cypress open has been improved. Addressed in #15826.
cy.intercept() (req) now has a req.query property, which is a getter/setter for the query parameters on the request URL. Addresses #16327.ArrayBuffer as a request / response body with cy.intercept(). Addresses #16722Bugfixes:
dev-server:start event for component testing. Fixes #16860.cy.intercept() now correctly sets the response body as a string instead of an ArrayBuffer when it contains multi-byte characters. Fixes #16292.cy.intercept() won't corrupt certain binary responses. Fixes #16722.spawn UNKNOWN errors when launching Cypress with code signing required by policy on Windows. Fixes #2543EPERM errors when accessing the project directory instead of erroring. Fixes #16933.CyHttpMessages.BaseMessage.headers to support the value being an array of strings. Fixes #16734.Dependency Updates:
enquirer dependency. Fixes #16846.Replaced deprecated listr with listr2. Addressed in #16663.
Released 06/07/2021
Features:
cy.request() now accepts a generic in TypeScript for specifying the type of the request body. Addresses #9109.Bugfixes:
hasBinary infinite recursive call. Fixes #16476.--config-file option now correctly handles absolute paths. Fixes #6136.cy.location(<key>) will now retry if the remote location returns an empty string, which is possible during otherwise harmless redirects. Fixes #16463.<value>.should() syntax. Fixes #16548.Dependency Updates:
listr with listr2. Addressed in #16663.Cypress now detects and supports testing in the Chrome Beta browser. Addresses #16376.
Released 05/24/2021
Features:
.pause() and to toggle auto-scrolling of the Test Runner (a). Addresses #248.Bugfixes:
cy.request() can now send binary files in form data. Fixes #1647.cy.request() can now send blob data. Fixes #6178.cy.wait() could yield the incorrect result when used with cy.intercept() and several simultaneous requests. Fixes #16451.cy.intercept() matchers are displayed in the Command Log when using RouteMatcher properties besides url and method. Fixes #9403.cy.intercept() argument validation has been improved. Invalid hostnames and extra arguments passed to cy.intercept() now result in an error. Addressed in #16577.cy.screenshot() no longer incorrectly captures parts of the Test Runner UI during component testing. Fixes #16543.cypress open-ct. Fixes #16278.componentFolder and testFiles values from returned from plugins in the component testing runner. Fixes #16424.projectRoot will now open in IDE and generate studio commands when saved. Fixes #16255.config in the plugins file will now display in alphabetical order. Fixes #16564.Dependency Updates:
Component tests can now be launched via the Module API by passing testingType: 'component' via the new testingType property. The testingType will defa
Released 05/10/2021
Features:
testingType: 'component' via the new testingType property. The testingType will default to e2e. Addresses #16302.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. Addresses #4460 and #8531.cy.intercept() now accepts invocation using cy.intercept(url, routeMatcher, handler), where url is a regular expression. Previously, this only worked if url was a string. Addresses #16390.DEBUG=cypress:server:record:ci-info will print commit information and CI provider information that's sent to the Dashboard as debug logs. Addresses #16236.CYPRESS_DOWNLOAD_USE_CA is specified. See "Using a custom CA" for more information. Addresses #8825.Bugfixes:
/__/ when location.href is set to a relative path within the call stack of an XHR event handler. Fixes #3975 and #7439._top or _parent so that it no longer redirects the parent frame. Fixes #1244.RangeError: Maximum call stack size exceeded at _deconstructPacket error. Most commonly, this occurred when handling network errors with cy.request(). Fixes #15101.ERR_INVALID_ARG_TYPE type error when testing a binary file upload. Fixes #15898 and #16223..then() only accepting functions to display. Fixes #15281.cy.intercept() now adds a access-control-expose-headers: '*' header by default for CORS requests unless overridden. Fixes #15050.cy.intercept() and cy.route() requests with multiple aliases are displayed in the command log. Addressed in #16382.Cypress.cookies.debug(true) will now correctly show cookie-related messages on the console. Fixes #15032.cy.log() will now show all arguments, not only the first 2. Fixes #16068..select() now correctly selects option elements with values that have characters. Fixes #16045.e2e and component configuration values will now correctly show when previewing resolved configuration in the Test Runner. Fixes #16282.—quiet flag, Cypress will no longer print uploading output to Stdout. Fixes #16268./ hotkey in Firefox, Cypress will select the SpecList's SearchInput as it does in other browsers. Fixes #16309.Dependency Updates:
classnames from 2.2.6 to 2.3.1. Addressed in #8337.color-string from 1.5.4 to 1.5.5. Addressed in #16362.lodash from 4.17.19 to 4.17.21. Addressed in #16406.registry-js from 1.13.0 to 1.15.0. Addressed in #16409.url-parse from 1.4.7 to 1.5.0. Addressed in #16408.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 key
Released 04/26/2021
Features:
Performance:
Bugfixes:
ERR_INVALID_ARG_TYPE type error. We now correctly detect a utf8 request body with multi-byte Unicode characters. Fixes #15901.cy.intercept() aliases will now work as expected. Fixes #15823.cy.intercept. Fixes #16117.cypress run-ct no longer hangs on Windows machines. Fixes #15976.Cannot read property 'name' of null. Fixes #15816..select() an <option> within a disabled <fieldset>. Fixes #5951..type() will no longer change the value attribute of button-like inputs with type button, submit, reset, image, radio, or checkbox. Fixes #15913.componentFolder outside of the root project when specifying --project. Fixes #16053.Misc:
Cypress.Cookies.defaults() now returns the correct type instead of void. Addresses #15426..then() will show the correct type when a collection of HTMLElements is provided. Addressed in #15869.cy.intercept(). Addressed in #16167.Dependency Updates:
cypress run and when selecting Electron browser in cypress open from 89.0.4348.1 to 89.0.4328.0. This was done to address a performance regression introduced in 7.0.0. Addressed in #16113.systeminformation from 5.3.1 to 5.6.4. Addressed in #15819.lolex with @sinonjs/fake-timers. Addressed in #15595.The events before:spec, after:spec, before:run, and after:run now fire in interactive mode in addition to run mode. This requires the experimentalInte
Released 04/12/2021
Features:
before:spec, after:spec, before:run, and after:run now fire in interactive mode in addition to run mode. This requires the experimentalInteractiveRunEvents flag to be enabled. Addressed in #15787.Bugfixes:
cypress.json is now correctly applied in the Component Test Runner. Fixes #15899.cy.intercept(routeMatcher, staticResponse) would still be sent to the destination server. Fixes #15841.Fixed a regression in 7.0.0 that caused the test runner not to check for updates. Fixes #15829.
Released 04/07/2021
Bugfixes:
Enter. Addressed in #15833.--ipc=host. Fixes #15814 and #350.stderr in production builds of Cypress. Addressed in #15817.stdout when the video cannot be found after a run. Addressed in #15828.tsconfig.json file present. Addressed in #15828.Misc:
We introduced several breaking changes to cy.intercept(). See the cy.intercept() docs for full usage examples. Breaking changes:
Released 04/05/2021
Summary:
🎉 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. Read our Component Testing Guide for more details.
Breaking Changes:
<Icon name="exclamation-triangle" color="red"></Icon> Please read our Migration Guide which explains the changes in more detail and how to change your code to migrate to Cypress 7.0.
cy.intercept() are now matched starting with the most recently defined request interceptor. This allows users to override request handlers by calling cy.intercept() again. This matches the previous behavior that was default in cy.route(). Addresses #9302.cy.intercept() now automatically parses more JSON MIME types, including 'application/vnd.api+json'. You can now remove JSON.parse(req.body) or JSON.parse(res.body) from some tests that previously required it. Addresses #14763.undefined) supplied as the body of a StaticResponse to cy.intercept() will now be JSONified and sent as the body. Previously, an empty string was sent instead. Addresses #15234 and #14205.matchUrlAgainstPath RouteMatcher property has been removed from cy.intercept().cy.intercept() URL matching has been removed. Previously, a URL would match if it contained the supplied string anywhere. Now, the URL (including querystring) only matches if it is an equality match or a minimatch.delay option for StaticResponses used with cy.intercept() has been removed. Please go back to using the delayMS option. Addresses #15255.cy.route2() was previously aliased to cy.intercept(). Now the alias cy.route2() has been removed. Please update usage of cy.route2() to cy.intercept(). Addressed in #14709.cypress open or cypress run. Now, they need to be executed by running cypress open-ct or cypress run-ct. Addressed in #15701.experimentalComponentTesting must be removed from yoru configuration file, cypress.json by default, or it will throw an error. Addressed in #15701.file:preprocessor event is no longer used to compile component tests. Now, a dev-server:start event must be registered.window.onerror. Addresses #8802.uncaught:exception event with the promise as the third argument. Addresses #243.redirectionLimit config. Addresses #14445.contextIsolation by default in the Electron browser. You can override this option if needed within the before:browser:launch API. Addressed in #15493.Cypress.moment() has been removed. Please migrate to a different datetime formatter. See our recipe for example replacements. Addresses #8714.12.18.3 to 14.16.0. This could change the behavior of code within the pluginsFile when using the bundled Node.js version of Cypress. Addressed in #15292.Features:
cy.intercept() including before:response, response, and after:response.req.continue(cb)) supplied to cy.intercept() will be called in reverse order until res.send is called or until there are no more response handlers.middleware, has been added to the RouteMatcher type. If true, the supplied request handler will be called before any non-middleware request handlers.req.continue(cb), is available on request objects yielded by cy.intercept(). It is functionally the same as req.reply(cb) - the request will stop propagating to other event handlers, will be sent outgoing, and the response will be handled by cb.cy.intercept() can now be called with a new overload: cy.intercept(url, routeMatcher, handler). routeMatcher will be merged with url, and the handler is required.cy.visit() can now visit pages with application/xhtml* content-type. Addresses #15738.component tests versus e2e tests. Addressed in #15526.ctrl/cmd + f) to search spec files in the Test Runner based on your OS. Addresses #6229.cy.tick() now accepts a log option. Addresses #15180.keep-alive header to all proxy responses. Addressed in #15292NODE_OPTIONS. Addressed in #15292Bugfixes:
response.body of cy.intercept() is now correct after stubbing a response using res.send({ fixture }) in a req.continue callback or a before:response or response handler. Addressed in #14543.cy.wait(). Fixes #14522..click() will no longer fail with "coordsHistory must be at least 2 sets of coords" when specifying { multiple: true }. Fixes #3738.Refused to apply style are gone from the console in open-ct during Component Testing. Addressed in #15661.@cypress/vue. Addressed in #15275.Misc:
set-cookie allow string[], so the header's type has been changed to reflect this. Addresses #15419.cy.writeFile() now allows 4 arguments. Addresses #15353..then() will show the correct type when raw HTMLElements are provided. Addresses #14875Dependency Updates
It was published to provide a non-breaking alternative to 6.9.0 , which was mistakenly published with breaking changes.
Released Apr 05, 2021
This release contains the same features as 6.8.0 . It was published to provide a non-breaking alternative to 6.9.0 , which was mistakenly published with breaking changes.
This release was mistakenly published with breaking changes, is deprecated, and should not be used. Upgrade to 6.9.1 or 7.0.0 , or stay on 6.8.0 .
Released Apr 05, 2021
This release was mistakenly published with breaking changes, is deprecated, and should not be used. Upgrade to 6.9.1 or 7.0.0 , or stay on 6.8.0 .
Improved the specs list user interface with a new icon set and accessibility features when in Component Testing mode (alpha). Addressed in #15513
Released 3/17/2021
User Experience:
Bugfixes:
experimentalStudio, Cypress Studio the icon to add commands will now fully display on long test titles. Fixes #15182.Interacting with an element that requires scrolling within an element with scroll-behavior: smooth no longer fails Cypress's actionability check. Fixe
Released 3/15/2021
Bugfixes:
scroll-behavior: smooth no longer fails Cypress's actionability check. Fixes #15453.projectId will be written correctly to the cypress.json file on initial creation without an extra config object. Fixes #15497.The experimentalRunEvents configuration flag has been removed. You can now listen to before:run, after:run, before:spec and after:spec events in the p
Released 3/15/2021
Features:
experimentalRunEvents configuration flag has been removed. You can now listen to before:run, after:run, before:spec and after:spec events in the plugins file without needing the experimentalRunEvents configuration option. See the before:run, after:run, before:spec and after:spec docs for more information. Addressed in #15276.Bugfixes:
cy.wait() no longer falsely returns a timeout when the user aborts an XHR. Fixes #9549..clear() and .type('{selectall}{del}') now behave the same when they're used against elements that contain text inputs. Fixes #8447.experimentalStudio, Cypress Studio now records typing by using the value of the input rather than the keys that were pressed. Studio also no longer records pressing special keys (such as arrows or ctrl) except for Enter. Fixes #15023.mouse down event, fixes #8279.Misc:
Dependency Updates:
electron from 11.2.3 to 11.3.0. Addressed in #15201.Your coding agent can read these notes before it upgrades. Set up the MCP server →