cypress-io/cypress
### [`v9.7.0`](https://togithub.com/cypress-io/cypress/releases/tag/v9.7.0)
[Compare Source](https://togithub.com/cypress-io/cypress/compare/v9.6.1...v9.7.0)
*Released 5/23/2022*
**Features:**
- The Electron version and shipped Chromium browser version has been updated.
Addressed in [#21418](https://togithub.com/cypress-io/cypress/pull/21418).
**Deprecations:**
- The `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()`](https://docs.cypress.io/api/commands/session) command instead to cache and restore
cookies and other sessions details between tests. Fixed
[#21333](https://togithub.com/cypress-io/cypress/issues/21333).
**Bugfixes:**
- Updated the [`cy.contains()`](https://docs.cypress.io/api/commands/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](https://togithub.com/cypress-io/cypress/issues/21108).
- Corrected the `cy.session()` command log grouping and validation verbiage.
This change provides better insights to logs associated with the command.
Fixed [#21377](https://togithub.com/cypress-io/cypress/issues/21377).
- Removed `eventemitter2` third-party type definitions from `cy` and `Cypress`
that were unintentionally exposed. Fixed
[#20556](https://togithub.com/cypress-io/cypress/issues/20556).
**Dependency Updates:**
- Upgraded the bundled node version shipped with Cypress from `16.5.0` to
`16.13.2`. Addressed in
[#21418](https://togithub.com/cypress-io/cypress/pull/21418).
- Upgraded the Chromium browser version used during `cypress run` and when
selecting Electron browser in `cypress open` from `94.0.4606.81` to
`100.0.4896.75`. Addressed in
[#21418](https://togithub.com/cypress-io/cypress/pull/21418).
- Upgraded `electron` dependency from `15.5.1` to `18.0.4`. Addressed in
[#21418](https://togithub.com/cypress-io/cypress/pull/21418).
### [`v9.6.1`](https://togithub.com/cypress-io/cypress/releases/tag/v9.6.1)
[Compare Source](https://togithub.com/cypress-io/cypress/compare/v9.6.0...v9.6.1)
*Released 5/9/2022*
**Bugfixes:**
- Cypress can now launch on systems where Firefox is installed via Snapcraft.
Fixed [#19793](https://togithub.com/cypress-io/cypress/issues/19793).
- Updates were made to ensure XHR calls are properly displaying the response
body in the command log. Fixed
[#21361](https://togithub.com/cypress-io/cypress/issues/21361).
- Fixed [`cy.contains()`](https://docs.cypress.io/api/commands/contains) and
[`.should('contain', ...)`](/api/commands/should) to handle finding text that
contains backslash characters. Fixed
[#19116](https://togithub.com/cypress-io/cypress/issues/19116)
- Updated [`.type('{enter}')`](/api/commands/type) 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](https://togithub.com/cypress-io/cypress/issues/21163).
- Fixed an issue with `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](https://togithub.com/cypress-io/cypress/issues/17805).
### [`v9.6.0`](https://togithub.com/cypress-io/cypress/releases/tag/v9.6.0)
[Compare Source](https://togithub.com/cypress-io/cypress/compare/v9.5.4...v9.6.0)
*Released 4/25/2022*
**Features:**
- Now you can easily test multi-domain workflows by using the experimental
[`cy.origin()`](https://docs.cypress.io/api/commands/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()`](https://docs.cypress.io/api/commands/session)
experimental feature. You can turn on use of this command by setting the
[`experimentalSessionAndOrigin`](https://docs.cypress.io/guides/references/experiments) configuration
option to `true`. For more details, read
[our blog post](https://cypress.io/blog/2022/04/25/cypress-9-6-0-easily-test-multi-domain-workflows-with-cy-origin/).
Addressed [#17336](https://togithub.com/cypress-io/cypress/issues/17336) and
[#944](https://togithub.com/cypress-io/cypress/issues/944).
- Added a new configuration option called `experimentalSessionAndOrigin`. This
option enables support for [`cy.session()`](https://docs.cypress.io/api/commands/session) and
[`cy.origin()`](https://docs.cypress.io/api/commands/origin).
- The `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.
- When `experimentalSessionAndOrigin` is enabled, cross-origin requests will
no longer immediately fail, but instead, time out based on the
[`pageLoadTimeout`](https://docs.cypress.io/guides/references/configuration#Timeouts)
configuration. This allows the request to be appropriately handled by the
[`cy.origin()`](https://docs.cypress.io/api/commands/origin) command.
- When `experimentalSessionAndOrigin` is enabled, Cypress will no longer wait
on page loads between hooks before moving on to the next test.
**Bugfixes:**
- Fixed an issue with Firefox 98+ where the Enter keystroke was not being sent
to an input element when using [`.type('{enter}')`](/api/commands/type). Fixed
[#21033](https://togithub.com/cypress-io/cypress/issues/21033).
- We now verify if an interruption while running tests was signaled by the user
or if it came from an error in a plugin before showing the error message.
Fixed [#21010](https://togithub.com/cypress-io/cypress/issues/21010).
- Improved the error message observed on Windows platforms when unzipping the
Cypress binary and the max file length is exceeded. Fixed in
[#21047](https://togithub.com/cypress-io/cypress/pull/21047).
- Updated the `Cypress.Commands.add()` TypeScript types to better reflect the
attributes of the `.add()` utility and the JQuery element, a possible previous
subject type. [#20376](https://togithub.com/cypress-io/cypress/issues/20376).
**Dependency Updates:**
- Upgraded `electron` dependency from `15.3.5` to `15.5.1` to consume fixes
related to
[improve performance](https://togithub.com/electron/electron/pull/33406) on
macOS Big Sur and later. Addressed
[#21068](https://togithub.com/cypress-io/cypress/issues/21068).
### [`v9.5.4`](https://togithub.com/cypress-io/cypress/releases/tag/v9.5.4)
[Compare Source](https://togithub.com/cypress-io/cypress/compare/v9.5.3...v9.5.4)
*Released 4/11/2022*
**Bugfixes:**
- Updates were made to silence Electron warnings related to being unable to
connect to dbus. These errors are normal and expected, and do not result in
test failures. Because they are always present when running Electron inside
docker containers, it has incorrectly led people to believe it is the
root-cause of an error within their test run. By silencing these errors, it
will improve the debug experience to allow users to focus on meaningful
warning and error messages. Fixed
[#19299](https://togithub.com/cypress-io/cypress/issues/19299).
- Updates were made to ensure that all `*.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](https://togithub.com/cypress-io/cypress/issues/20618).
- Fixed an issue where `cy.type('{enter}')` was not sending the Enter key for
Firefox `v98+`. This was not an issue with Firefox `v97` and below. Fixed
[#20562](https://togithub.com/cypress-io/cypress/issues/20562).
- Fixed a regression in [9.3.0](https://docs.cypress.io/guides/references/changelog#9-3-0) where glob
patterns provided to the `--spec` CLI parameter was incorrectly splitting the
patterns in unexpected places when it should have split on commas. Fixes
[#20794](https://togithub.com/cypress-io/cypress/issues/20794).
- Fixed an issue with `cy.root()` to respect the
[`timeout`](https://docs.cypress.io/api/commands/root#Arguments) option passed to the command.
Previously, when the `timeout` option was provided, it was ignored and the
default timeout was used. Fixed
[#19985](https://togithub.com/cypress-io/cypress/issues/19985).
- Updates were made to decrease the length of the Cypress cache path for Windows
to ensure
[installing pre-release versions](https://docs.cypress.io/guides/getting-started/installing-cypress#Install-pre-release-version)
of the Cypress binary are within the maximum path length of 260 characters.
Fixed in [#20961](https://togithub.com/cypress-io/cypress/pulls/20961).
- Fixed a regression in [8.6.0](https://docs.cypress.io/guides/references/changelog#8-6-0) which
prevented `.pause()` from correctly executing when passing the
`--headed --no-exit` CLI flags to `cypress run`. Fixed
[#20745](https://togithub.com/cypress-io/cypress/issues/20745).
- Fixed a regression in [9.2.0](https://docs.cypress.io/guides/references/changelog#9-2-0) which would
sometimes throw an expected error on navigation with `cy.back()` and
`cy.go()`. Fixed [#19749](https://togithub.com/cypress-io/cypress/issues/19749)
and [#20539](https://togithub.com/cypress-io/cypress/issues/20539).
- Corrected the Typescript type for a cookie which was incorrectly typed as
`any` when the correct type is `Cookie`. Fixed in
[#20513](https://togithub.com/cypress-io/cypress/pull/20513).
- Added the missing `Cypress.Command.addAll()` Typescript types. Fixed
[#18886](https://togithub.com/cypress-io/cypress/issue/18886).
- Fixed an uncommon error observed in `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](https://togithub.com/cypress-io/cypress/pull/20946).
**Misc:**
- A minor visual update was made to the `cy.session()` command log visuals.
Fixed [#20433](https://togithub.com/cypress-io/cypress/issues/20433).
**Dependency Updates:**
- Upgraded `ansi-regex` dependency from `4.1.0` to `4.1.1` to address the
[CVE-2021-3807](https://nvd.nist.gov/vuln/detail/CVE-2021-3807) NVD security
vulnerability. Addressed in
[#20807](https://togithub.com/cypress-io/cypress/pull/20807).
- Upgraded `plist` dependency from `3.0.4` to `3.0.5` to address the
[CVE-2022-22912](https://nvd.nist.gov/vuln/detail/CVE-2022-22912) NVD security
vulnerability. Addressed in
[#20808](https://togithub.com/cypress-io/cypress/pull/20808).
### [`v9.5.3`](https://togithub.com/cypress-io/cypress/releases/tag/v9.5.3)
[Compare Source](https://togithub.com/cypress-io/cypress/compare/v9.5.2...v9.5.3)
*Released 3/28/2022*
**Bugfixes:**
- Corrected a logging issue with `cy.intercept()` where the response status code
and response body were sometimes missing from the log details in `open` mode.
Fixed [#18757](https://togithub.com/cypress-io/cypress/issues/18757).
- Fixed an issue in `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](https://togithub.com/cypress-io/cypress/issues/20683).
- Updated the Cypress Keyboard shortcuts to only run the shortcut when the
pressed shortcut key was not used in conjunction with either the `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](https://togithub.com/cypress-io/cypress/issues/20222).
- Updates were made to correctly escape dollar signs in the
`CYPRESS_DOWNLOAD_PATH_TEMPLATE` environment variable. Issues were seen
utilizing this template when the env was provided from a package manager file.
Fixed [#19914](https://togithub.com/cypress-io/cypress/issues/19914).
- Fix the `Cypress.Buffer` TypeScript type to reference the static constructor
of `Buffer`, instead of incorrectly referencing the `Buffer` instance which
caused Type errors. Fixes
[#20542](https://togithub.com/cypress-io/cypress/issues/20542).
**Dependency Updates:**
- Upgraded `electron` dependency from `15.3.4` to `15.3.5` to address the
[CVE-2022-21718](https://nvd.nist.gov/vuln/detail/CVE-2022-21718) NVD security
vulnerability. Addressed in
[#20750](https://togithub.com/cypress-io/cypress/issues/20750).
- Upgraded `minimist` dependency from `1.2.5` to `1.2.6`. Addressed in
[#20756](https://togithub.com/cypress-io/cypress/issues/20756).
- Upgraded `nanoid` dependency from `3.1.20` to `3.1.31` to address the
[CVE-2021-23566](https://nvd.nist.gov/vuln/detail/CVE-2021-23566) NVD security
vulnerability. Addressed in
[#20726](https://togithub.com/cypress-io/cypress/pull/20726).
- Upgraded `node-forge` dependency from `1.0.0` to `1.3.0` to address the
[CVE-2022-24771](https://nvd.nist.gov/vuln/detail/CVE-2022-24771) NVD security
vulnerability. Addressed in
[#20727](https://togithub.com/cypress-io/cypress/pull/20727).
### [`v9.5.2`](https://togithub.com/cypress-io/cypress/releases/tag/v9.5.2)
[Compare Source](https://togithub.com/cypress-io/cypress/compare/v9.5.1...v9.5.2)
*Released 3/14/2022*
**Bugfixes:**
- Fixed an issue with `.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](https://togithub.com/cypress-io/cypress/pulls/20525).
- Fixed a regression in [9.5.0](https://docs.cypress.io/guides/references/changelog#9-5-0) where ANSI
colors were not removed from the FireFox warning message about the
`chromeWebSecurity` configuration option having no effect on the Firefox
browser. Fixes [#20496](https://togithub.com/cypress-io/cypress/issues/20496).
- Updates were made to the pre-release build setup such that Cypress will use a
unique cache folder for each
[pre-release installation](https://docs.cypress.io/guides/getting-started/installing-cypress.md#Install-pre-release-version)
on a machine. This removes the need to run `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](https://togithub.com/cypress-io/cypress/pulls/20296).
**Misc:**
- Updates were made to explicitly disable the `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](https://developer.chrome.com/blog/immutable-document-domain/)
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](https://togithub.com/cypress-io/cypress/issues/20147).
**Dependency Updates:**
- Upgraded `url-parse` dependency from `1.5.6` to `1.5.9` to address these NVD
security vulnerabilities,
[CVE-2022-0639](https://nvd.nist.gov/vuln/detail/CVE-2022-0639),
[CVE-2022-0686](https://nvd.nist.gov/vuln/detail/CVE-2022-0686) and
[CVE-2022-0691](https://nvd.nist.gov/vuln/detail/CVE-2022-0691). Addressed in
[#20386](https://togithub.com/cypress-io/cypress/pull/20386) and
[#20439](https://togithub.com/cypress-io/cypress/issues/20439).
### [`v9.5.1`](https://togithub.com/cypress-io/cypress/releases/tag/v9.5.1)
[Compare Source](https://togithub.com/cypress-io/cypress/compare/v9.5.0...v9.5.1)
*Released 2/28/2022*
**Bugfixes:**
- Added a `ready` event to the Plugins process to ensure all plugins have
successfully started before the configuration is loaded and the tests start.
Fixed in [#19792](https://togithub.com/cypress-io/cypress/issues/19792).
- This fixes an issue where the plugin is never executed and leaves Cypress
stuck in the initialization phase, where the user can only view the loading
spinner.
- This enables support for node's experimental `--loader` flag for plugins.
- Made a change to the DNS lookup to improve test performances and reliability
on MacOS machines that leverage the VMWare CBCloud SaaS solution. Before this
change, random test failures were observed, as well as hanging tests and
initially pending HTTP and HTTPS responses. Fixed in
[#20062](https://togithub.com/cypress-io/cypress/issues/20062).
- Fixed a regression in [9.5.0](https://docs.cypress.io/guides/references/changelog#9-5-0) where ANSI
colors were not removed from the `cy.fixtures()` error code frame. Fixes
[#20208](https://togithub.com/cypress-io/cypress/issues/20208).
- Fixed a regression in [9.5.0](https://docs.cypress.io/guides/references/changelog#9-5-0) where the
test config override errors were formatted incorrectly. Fixes
[#20208](https://togithub.com/cypress-io/cypress/issues/20208).
- Fixed an issue where Cypress would throw an error when reporting or wrapping
errors with booleans or numbers. Fixes
[#19561](https://togithub.com/cypress-io/cypress/issues/19561).
**Dependency Updates:**
- Upgraded `url-parse` dependency from `1.5.2` to `1.5.6` to avoid authorization
bypass through user-controlled key to address this
[NVD security vulnerability](https://nvd.nist.gov/vuln/detail/CVE-2022-0512).
Addressed in [#20270](https://togithub.com/cypress-io/cypress/issues/20270).
### [`v9.5.0`](https://togithub.com/cypress-io/cypress/releases/tag/v9.5.0)
[Compare Source](https://togithub.com/cypress-io/cypress/compare/v9.4.1...v9.5.0)
*Released 2/15/2022*
**Features:**
- Enhancements were made to the error experience in both run mode and open mode
to improve readability and provide meaningful stack traces. Addressed in
[#20124](https://togithub.com/cypress-io/cypress/issues/20124).
- Updated the `cy.request()` log message to hide the origin when it matched the
browser origin to make debugging easier. This reduces the length of the log
message that could be partially hidden if a long url is requested. Addressed
in [#20009](https://togithub.com/cypress-io/cypress/issues/20009).
- Updates were made to log the `ShadowRoot` and `Document` elements as HTML
elements. Previously these would be logged as enumerated objects, which were
difficult to evaluate. Addressed in
[#20049](https://togithub.com/cypress-io/cypress/issues/20049).
- Updated the terminal output generated in Cypress run mode to de-emphasis the
`node` path in the run header. Addressed in
[#20120](https://togithub.com/cypress-io/cypress/issues/20120).
**Bugfixes:**
- Fixed an issue where files attached during `.selectFile()` could have the
wrong `File` prototype. Fixes
[#20003](https://togithub.com/cypress-io/cypress/issues/20003).
- Updated `.select()` to only dispatch the `change` and `input` events when the
selected option is not the currently selected option. This change aligns
`.select()` with the browser. Fixes
[#19494](https://togithub.com/cypress-io/cypress/issues/19494).
- Updated `.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](https://togithub.com/cypress-io/cypress/pull/20067).
### [`v9.4.1`](https://togithub.com/cypress-io/cypress/releases/tag/v9.4.1)
[Compare Source](https://togithub.com/cypress-io/cypress/compare/v9.4.0...v9.4.1)
*Released 1/31/2022*
**Bugfixes:**
- Fixed a regression in [9.4.0](https://docs.cypress.io/guides/references/changelog#9-4-0) where the
line endings in the public NPM package prevented some users from running
Cypress. Fixes [#19986](https://togithub.com/cypress-io/cypress/issues/19986).
### [`v9.4.0`](https://togithub.com/cypress-io/cypress/releases/tag/v9.4.0)
[Compare Source](https://togithub.com/cypress-io/cypress/compare/v9.3.1...v9.4.0)
*Released 1/31/2022*
**Features**
- Enhancements were made to `.selectFile()` after receiving feedback after its
initial release in [9.3.0](https://docs.cypress.io/guides/references/changelog#9-3-0).
- The default behavior was updated to automatically infer the mime type of
files based on their extension to correctly encode file uploads. Addressed
in [#19751](https://togithub.com/cypress-io/cypress/issues/19751).
- Added the `mimeType` property so you can explicitly set the mime type on
files using the `mimeType` property. Addressed in
[#19751](https://togithub.com/cypress-io/cypress/issues/19751).
- Updated file contents types to allow either a
[`TypedArray`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray)
instance or a `Cypress.Buffer` instance, where previously file contents were
expected to only be an instance of `Cypress.Buffer`. Addressed in
[#19751](https://togithub.com/cypress-io/cypress/issues/19751).
- Updated `.selectFile()` to retain the fileName of files read from disk to
work with aliases. Addressed in
[#19803](https://togithub.com/cypress-io/cypress/issues/19803).
**Bugfixes:**
- Fixed a regression in [9.3.0](https://docs.cypress.io/guides/references/changelog#9-3-0) to correctly
parse the `--spec` CLI parameter for glob patterns containing a range. Fixes
[#19783](https://togithub.com/cypress-io/cypress/issues/19783).
- Fixed regression in [9.2.1](https://docs.cypress.io/guides/references/changelog#9-1-1) where the
`--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](https://togithub.com/cypress-io/cypress/issues/19712).
- Update `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](https://togithub.com/cypress-io/cypress/issues/19541).
### [`v9.3.1`](https://togithub.com/cypress-io/cypress/releases/tag/v9.3.1)
[Compare Source](https://togithub.com/cypress-io/cypress/compare/v9.3.0...v9.3.1)
*Released 1/19/2022*
**Bugfixes:**
- Fixed an issue where the bin file was released with windows line breaks. Fixes
[#19747](https://togithub.com/cypress-io/cypress/issues/19747).
### [`v9.3.0`](https://togithub.com/cypress-io/cypress/releases/tag/v9.3.0)
[Compare Source](https://togithub.com/cypress-io/cypress/compare/v9.2.1...v9.3.0)
*Released 1/18/2022*
**Features:**
- Added a new Cypress command, called
[`.selectFile()`](https://docs.cypress.io/api/commands/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](https://docs.cypress.io/guides/references/migration-guide#Migrating-from-cypress-file-upload-to-selectFile)
for previous users of that plugin. For more details, see
[our blog post](https://cypress.io/blog/2022/01/18/uploading-files-with-selectfile/).
Fixes [#19524](https://togithub.com/cypress-io/cypress/issues/19524) and
[#170](https://togithub.com/cypress-io/cypress/issues/170).
- Exposed the `Buffer` polyfill, as [`Cypress.Buffer`](https://docs.cypress.io/api/utilities/buffer),
to enable working with binary data. Addressed in
[#19524](https://togithub.com/cypress-io/cypress/issues/19524).
- Added the `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](https://docs.cypress.io/guides/getting-started/installing-cypress#Install-binary)
documentation. Fixes
[#15697](https://togithub.com/cypress-io/cypress/issues/15697).
**Bugfixes:**
- Fixed an issue where the `--spec` CLI parameter was not working properly when
passing multiple glob patterns that are separated by commas. Fixes
[#16102](https://togithub.com/cypress-io/cypress/issues/16102).
- Fixed an issue with how the `CYPRESS_VERIFY_TIMEOUT` environment variable was
read so it can set in a project's `package.json` or it's `.npmrc`. Fixes
[#19559](https://togithub.com/cypress-io/cypress/issues/19559).
**Dependency Updates:**
- Upgraded `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](https://togithub.com/cypress-io/cypress/issues/19676) and resolves
[#19610](https://togithub.com/cypress-io/cypress/pull/19610).
- **NOTE:** This upgrade to `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](https://togithub.com/cypress-io/cypress/issues/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.
- Upgraded `electron` from `15.2.0` to `15.3.4`. Addressed in
[#19351](https://togithub.com/cypress-io/cypress/issues/19351).
### [`v9.2.1`](https://togithub.com/cypress-io/cypress/releases/tag/v9.2.1)
[Compare Source](https://togithub.com/cypress-io/cypress/compare/v9.2.0...v9.2.1)
*Released 1/10/2022*
**Bugfixes:**
- Fixed a regression in [9.2.0](https://docs.cypress.io/guides/references/changelog#9-2-0) to keep
Cypress open after each spec finishes when the `--headed --no-exit` flags are
passed to `cypress run`. Fixes
[#19485](https://togithub.com/cypress-io/cypress/issues/19485).
- Improve heuristic for verifying when the `--openssl-legacy-provider` option
should be passed to the plugins' child process when the system Node version is
v17+. This prevents Cypress from crashing when a user has Node 17 installed
which was built with OpenSSL v1. Fixes
[#19320](https://togithub.com/cypress-io/cypress/issues/19320).
- Correctly cast the `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](https://togithub.com/cypress-io/cypress/issues/19476).
**Dependency Updates:**
- Update pinned resolution of `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](https://togithub.com/Marak/colors.js/issues/285).
Addresses [#19624](https://togithub.com/cypress-io/cypress/issues/19624).
### [`v9.2.0`](https://togithub.com/cypress-io/cypress/releases/tag/v9.2.0)
[Compare Source](https://togithub.com/cypress-io/cypress/compare/v9.1.1...v9.2.0)
*Released 12/20/2021*
**Features:**
- Cypress will throw an error when a user attempts to update a configuration
value at run-time using either the Test Configuration or using
`Cypress.config()` that is a
[readonly option](https://docs.cypress.io/guides/references/configuration#Test-Configuration).
Addresses [#6407](https://togithub.com/cypress-io/cypress/issues/6407) and
[#19001](https://togithub.com/cypress-io/cypress/issues/19001).
- A `timeout` option has been added to the `cy.writeFile()` command, with a
default value of `defaultCommandTimeout`. Addresses
[#3350](https://togithub.com/cypress-io/cypress/issues/3350).
- The default `maxHttpBufferSize` for the internal socket server has been
increased to
[Node's maximum Buffer size](https://nodejs.org/api/buffer.html#bufferconstantsmax_length)
(size varies by OS) to allow large file writes with `cy.writeFile()`.
Addresses [#19140](https://togithub.com/cypress-io/cypress/issues/19140).
- Add `CYPRESS_VERIFY_TIMEOUT` environment variable to override the timeout
duration of the `verify` command. Addresses
[#18290](https://togithub.com/cypress-io/cypress/issues/18290).
**Bugfixes:**
- Prevent unnecessary snapshotting when running default assertions that would
unnecessarily increase CPU use in `cypress open` mode which lead to out of
memory crashes on certain browsers. Fixes
[#18549](https://togithub.com/cypress-io/cypress/issues/18549).
- Removed automatic retries for failed HTTP requests through the proxy. This
fixes an issue where failed requests could be re-sent too many times in some
conditions. This change could increase the number of failed requests that your
app sees. Fixes [#19043](https://togithub.com/cypress-io/cypress/issues/19043).
- Reduced the occurrence of an issue where logs for `fetch` and `xhr` requests
could be associated with the wrong request. Fixes
[#19043](https://togithub.com/cypress-io/cypress/issues/19043).
- Tests that are skipped within `then` blocks will no longer throw errors
causing the test to fail. Tests that are skipped outside of `then` blocks will
no longer trigger the fail event. This will prevent screenshots from happening
from errors thrown by the fail event.Fixes
[#14867](https://togithub.com/cypress-io/cypress/issues/14867) and
[#17660](https://togithub.com/cypress-io/cypress/issues/17660).
- Fixed a regression in [9.0.0](https://docs.cypress.io/guides/references/changelog#9-0-0) where a
fixture provided in a static response to `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](https://togithub.com/cypress-io/cypress/issues/19344).
- Fixed a regression in [9.0.0](https://docs.cypress.io/guides/references/changelog#9-0-0) where
`cy.contains()` attempted to ignore ` Githubissues.
Githubissues is a development platform for aggregating issues.
This PR contains the following updates:
8.7.0
->9.7.0
Release Notes
cypress-io/cypress
### [`v9.7.0`](https://togithub.com/cypress-io/cypress/releases/tag/v9.7.0) [Compare Source](https://togithub.com/cypress-io/cypress/compare/v9.6.1...v9.7.0) *Released 5/23/2022* **Features:** - The Electron version and shipped Chromium browser version has been updated. Addressed in [#21418](https://togithub.com/cypress-io/cypress/pull/21418). **Deprecations:** - The `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()`](https://docs.cypress.io/api/commands/session) command instead to cache and restore cookies and other sessions details between tests. Fixed [#21333](https://togithub.com/cypress-io/cypress/issues/21333). **Bugfixes:** - Updated the [`cy.contains()`](https://docs.cypress.io/api/commands/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](https://togithub.com/cypress-io/cypress/issues/21108). - Corrected the `cy.session()` command log grouping and validation verbiage. This change provides better insights to logs associated with the command. Fixed [#21377](https://togithub.com/cypress-io/cypress/issues/21377). - Removed `eventemitter2` third-party type definitions from `cy` and `Cypress` that were unintentionally exposed. Fixed [#20556](https://togithub.com/cypress-io/cypress/issues/20556). **Dependency Updates:** - Upgraded the bundled node version shipped with Cypress from `16.5.0` to `16.13.2`. Addressed in [#21418](https://togithub.com/cypress-io/cypress/pull/21418). - Upgraded the Chromium browser version used during `cypress run` and when selecting Electron browser in `cypress open` from `94.0.4606.81` to `100.0.4896.75`. Addressed in [#21418](https://togithub.com/cypress-io/cypress/pull/21418). - Upgraded `electron` dependency from `15.5.1` to `18.0.4`. Addressed in [#21418](https://togithub.com/cypress-io/cypress/pull/21418). ### [`v9.6.1`](https://togithub.com/cypress-io/cypress/releases/tag/v9.6.1) [Compare Source](https://togithub.com/cypress-io/cypress/compare/v9.6.0...v9.6.1) *Released 5/9/2022* **Bugfixes:** - Cypress can now launch on systems where Firefox is installed via Snapcraft. Fixed [#19793](https://togithub.com/cypress-io/cypress/issues/19793). - Updates were made to ensure XHR calls are properly displaying the response body in the command log. Fixed [#21361](https://togithub.com/cypress-io/cypress/issues/21361). - Fixed [`cy.contains()`](https://docs.cypress.io/api/commands/contains) and [`.should('contain', ...)`](/api/commands/should) to handle finding text that contains backslash characters. Fixed [#19116](https://togithub.com/cypress-io/cypress/issues/19116) - Updated [`.type('{enter}')`](/api/commands/type) 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](https://togithub.com/cypress-io/cypress/issues/21163). - Fixed an issue with `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](https://togithub.com/cypress-io/cypress/issues/17805). ### [`v9.6.0`](https://togithub.com/cypress-io/cypress/releases/tag/v9.6.0) [Compare Source](https://togithub.com/cypress-io/cypress/compare/v9.5.4...v9.6.0) *Released 4/25/2022* **Features:** - Now you can easily test multi-domain workflows by using the experimental [`cy.origin()`](https://docs.cypress.io/api/commands/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()`](https://docs.cypress.io/api/commands/session) experimental feature. You can turn on use of this command by setting the [`experimentalSessionAndOrigin`](https://docs.cypress.io/guides/references/experiments) configuration option to `true`. For more details, read [our blog post](https://cypress.io/blog/2022/04/25/cypress-9-6-0-easily-test-multi-domain-workflows-with-cy-origin/). Addressed [#17336](https://togithub.com/cypress-io/cypress/issues/17336) and [#944](https://togithub.com/cypress-io/cypress/issues/944). - Added a new configuration option called `experimentalSessionAndOrigin`. This option enables support for [`cy.session()`](https://docs.cypress.io/api/commands/session) and [`cy.origin()`](https://docs.cypress.io/api/commands/origin). - The `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. - When `experimentalSessionAndOrigin` is enabled, cross-origin requests will no longer immediately fail, but instead, time out based on the [`pageLoadTimeout`](https://docs.cypress.io/guides/references/configuration#Timeouts) configuration. This allows the request to be appropriately handled by the [`cy.origin()`](https://docs.cypress.io/api/commands/origin) command. - When `experimentalSessionAndOrigin` is enabled, Cypress will no longer wait on page loads between hooks before moving on to the next test. **Bugfixes:** - Fixed an issue with Firefox 98+ where the Enter keystroke was not being sent to an input element when using [`.type('{enter}')`](/api/commands/type). Fixed [#21033](https://togithub.com/cypress-io/cypress/issues/21033). - We now verify if an interruption while running tests was signaled by the user or if it came from an error in a plugin before showing the error message. Fixed [#21010](https://togithub.com/cypress-io/cypress/issues/21010). - Improved the error message observed on Windows platforms when unzipping the Cypress binary and the max file length is exceeded. Fixed in [#21047](https://togithub.com/cypress-io/cypress/pull/21047). - Updated the `Cypress.Commands.add()` TypeScript types to better reflect the attributes of the `.add()` utility and the JQuery element, a possible previous subject type. [#20376](https://togithub.com/cypress-io/cypress/issues/20376). **Dependency Updates:** - Upgraded `electron` dependency from `15.3.5` to `15.5.1` to consume fixes related to [improve performance](https://togithub.com/electron/electron/pull/33406) on macOS Big Sur and later. Addressed [#21068](https://togithub.com/cypress-io/cypress/issues/21068). ### [`v9.5.4`](https://togithub.com/cypress-io/cypress/releases/tag/v9.5.4) [Compare Source](https://togithub.com/cypress-io/cypress/compare/v9.5.3...v9.5.4) *Released 4/11/2022* **Bugfixes:** - Updates were made to silence Electron warnings related to being unable to connect to dbus. These errors are normal and expected, and do not result in test failures. Because they are always present when running Electron inside docker containers, it has incorrectly led people to believe it is the root-cause of an error within their test run. By silencing these errors, it will improve the debug experience to allow users to focus on meaningful warning and error messages. Fixed [#19299](https://togithub.com/cypress-io/cypress/issues/19299). - Updates were made to ensure that all `*.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](https://togithub.com/cypress-io/cypress/issues/20618). - Fixed an issue where `cy.type('{enter}')` was not sending the Enter key for Firefox `v98+`. This was not an issue with Firefox `v97` and below. Fixed [#20562](https://togithub.com/cypress-io/cypress/issues/20562). - Fixed a regression in [9.3.0](https://docs.cypress.io/guides/references/changelog#9-3-0) where glob patterns provided to the `--spec` CLI parameter was incorrectly splitting the patterns in unexpected places when it should have split on commas. Fixes [#20794](https://togithub.com/cypress-io/cypress/issues/20794). - Fixed an issue with `cy.root()` to respect the [`timeout`](https://docs.cypress.io/api/commands/root#Arguments) option passed to the command. Previously, when the `timeout` option was provided, it was ignored and the default timeout was used. Fixed [#19985](https://togithub.com/cypress-io/cypress/issues/19985). - Updates were made to decrease the length of the Cypress cache path for Windows to ensure [installing pre-release versions](https://docs.cypress.io/guides/getting-started/installing-cypress#Install-pre-release-version) of the Cypress binary are within the maximum path length of 260 characters. Fixed in [#20961](https://togithub.com/cypress-io/cypress/pulls/20961). - Fixed a regression in [8.6.0](https://docs.cypress.io/guides/references/changelog#8-6-0) which prevented `.pause()` from correctly executing when passing the `--headed --no-exit` CLI flags to `cypress run`. Fixed [#20745](https://togithub.com/cypress-io/cypress/issues/20745). - Fixed a regression in [9.2.0](https://docs.cypress.io/guides/references/changelog#9-2-0) which would sometimes throw an expected error on navigation with `cy.back()` and `cy.go()`. Fixed [#19749](https://togithub.com/cypress-io/cypress/issues/19749) and [#20539](https://togithub.com/cypress-io/cypress/issues/20539). - Corrected the Typescript type for a cookie which was incorrectly typed as `any` when the correct type is `Cookie`. Fixed in [#20513](https://togithub.com/cypress-io/cypress/pull/20513). - Added the missing `Cypress.Command.addAll()` Typescript types. Fixed [#18886](https://togithub.com/cypress-io/cypress/issue/18886). - Fixed an uncommon error observed in `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](https://togithub.com/cypress-io/cypress/pull/20946). **Misc:** - A minor visual update was made to the `cy.session()` command log visuals. Fixed [#20433](https://togithub.com/cypress-io/cypress/issues/20433). **Dependency Updates:** - Upgraded `ansi-regex` dependency from `4.1.0` to `4.1.1` to address the [CVE-2021-3807](https://nvd.nist.gov/vuln/detail/CVE-2021-3807) NVD security vulnerability. Addressed in [#20807](https://togithub.com/cypress-io/cypress/pull/20807). - Upgraded `plist` dependency from `3.0.4` to `3.0.5` to address the [CVE-2022-22912](https://nvd.nist.gov/vuln/detail/CVE-2022-22912) NVD security vulnerability. Addressed in [#20808](https://togithub.com/cypress-io/cypress/pull/20808). ### [`v9.5.3`](https://togithub.com/cypress-io/cypress/releases/tag/v9.5.3) [Compare Source](https://togithub.com/cypress-io/cypress/compare/v9.5.2...v9.5.3) *Released 3/28/2022* **Bugfixes:** - Corrected a logging issue with `cy.intercept()` where the response status code and response body were sometimes missing from the log details in `open` mode. Fixed [#18757](https://togithub.com/cypress-io/cypress/issues/18757). - Fixed an issue in `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](https://togithub.com/cypress-io/cypress/issues/20683). - Updated the Cypress Keyboard shortcuts to only run the shortcut when the pressed shortcut key was not used in conjunction with either the `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](https://togithub.com/cypress-io/cypress/issues/20222). - Updates were made to correctly escape dollar signs in the `CYPRESS_DOWNLOAD_PATH_TEMPLATE` environment variable. Issues were seen utilizing this template when the env was provided from a package manager file. Fixed [#19914](https://togithub.com/cypress-io/cypress/issues/19914). - Fix the `Cypress.Buffer` TypeScript type to reference the static constructor of `Buffer`, instead of incorrectly referencing the `Buffer` instance which caused Type errors. Fixes [#20542](https://togithub.com/cypress-io/cypress/issues/20542). **Dependency Updates:** - Upgraded `electron` dependency from `15.3.4` to `15.3.5` to address the [CVE-2022-21718](https://nvd.nist.gov/vuln/detail/CVE-2022-21718) NVD security vulnerability. Addressed in [#20750](https://togithub.com/cypress-io/cypress/issues/20750). - Upgraded `minimist` dependency from `1.2.5` to `1.2.6`. Addressed in [#20756](https://togithub.com/cypress-io/cypress/issues/20756). - Upgraded `nanoid` dependency from `3.1.20` to `3.1.31` to address the [CVE-2021-23566](https://nvd.nist.gov/vuln/detail/CVE-2021-23566) NVD security vulnerability. Addressed in [#20726](https://togithub.com/cypress-io/cypress/pull/20726). - Upgraded `node-forge` dependency from `1.0.0` to `1.3.0` to address the [CVE-2022-24771](https://nvd.nist.gov/vuln/detail/CVE-2022-24771) NVD security vulnerability. Addressed in [#20727](https://togithub.com/cypress-io/cypress/pull/20727). ### [`v9.5.2`](https://togithub.com/cypress-io/cypress/releases/tag/v9.5.2) [Compare Source](https://togithub.com/cypress-io/cypress/compare/v9.5.1...v9.5.2) *Released 3/14/2022* **Bugfixes:** - Fixed an issue with `.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](https://togithub.com/cypress-io/cypress/pulls/20525). - Fixed a regression in [9.5.0](https://docs.cypress.io/guides/references/changelog#9-5-0) where ANSI colors were not removed from the FireFox warning message about the `chromeWebSecurity` configuration option having no effect on the Firefox browser. Fixes [#20496](https://togithub.com/cypress-io/cypress/issues/20496). - Updates were made to the pre-release build setup such that Cypress will use a unique cache folder for each [pre-release installation](https://docs.cypress.io/guides/getting-started/installing-cypress.md#Install-pre-release-version) on a machine. This removes the need to run `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](https://togithub.com/cypress-io/cypress/pulls/20296). **Misc:** - Updates were made to explicitly disable the `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](https://developer.chrome.com/blog/immutable-document-domain/) 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](https://togithub.com/cypress-io/cypress/issues/20147). **Dependency Updates:** - Upgraded `url-parse` dependency from `1.5.6` to `1.5.9` to address these NVD security vulnerabilities, [CVE-2022-0639](https://nvd.nist.gov/vuln/detail/CVE-2022-0639), [CVE-2022-0686](https://nvd.nist.gov/vuln/detail/CVE-2022-0686) and [CVE-2022-0691](https://nvd.nist.gov/vuln/detail/CVE-2022-0691). Addressed in [#20386](https://togithub.com/cypress-io/cypress/pull/20386) and [#20439](https://togithub.com/cypress-io/cypress/issues/20439). ### [`v9.5.1`](https://togithub.com/cypress-io/cypress/releases/tag/v9.5.1) [Compare Source](https://togithub.com/cypress-io/cypress/compare/v9.5.0...v9.5.1) *Released 2/28/2022* **Bugfixes:** - Added a `ready` event to the Plugins process to ensure all plugins have successfully started before the configuration is loaded and the tests start. Fixed in [#19792](https://togithub.com/cypress-io/cypress/issues/19792). - This fixes an issue where the plugin is never executed and leaves Cypress stuck in the initialization phase, where the user can only view the loading spinner. - This enables support for node's experimental `--loader` flag for plugins. - Made a change to the DNS lookup to improve test performances and reliability on MacOS machines that leverage the VMWare CBCloud SaaS solution. Before this change, random test failures were observed, as well as hanging tests and initially pending HTTP and HTTPS responses. Fixed in [#20062](https://togithub.com/cypress-io/cypress/issues/20062). - Fixed a regression in [9.5.0](https://docs.cypress.io/guides/references/changelog#9-5-0) where ANSI colors were not removed from the `cy.fixtures()` error code frame. Fixes [#20208](https://togithub.com/cypress-io/cypress/issues/20208). - Fixed a regression in [9.5.0](https://docs.cypress.io/guides/references/changelog#9-5-0) where the test config override errors were formatted incorrectly. Fixes [#20208](https://togithub.com/cypress-io/cypress/issues/20208). - Fixed an issue where Cypress would throw an error when reporting or wrapping errors with booleans or numbers. Fixes [#19561](https://togithub.com/cypress-io/cypress/issues/19561). **Dependency Updates:** - Upgraded `url-parse` dependency from `1.5.2` to `1.5.6` to avoid authorization bypass through user-controlled key to address this [NVD security vulnerability](https://nvd.nist.gov/vuln/detail/CVE-2022-0512). Addressed in [#20270](https://togithub.com/cypress-io/cypress/issues/20270). ### [`v9.5.0`](https://togithub.com/cypress-io/cypress/releases/tag/v9.5.0) [Compare Source](https://togithub.com/cypress-io/cypress/compare/v9.4.1...v9.5.0) *Released 2/15/2022* **Features:** - Enhancements were made to the error experience in both run mode and open mode to improve readability and provide meaningful stack traces. Addressed in [#20124](https://togithub.com/cypress-io/cypress/issues/20124). - Updated the `cy.request()` log message to hide the origin when it matched the browser origin to make debugging easier. This reduces the length of the log message that could be partially hidden if a long url is requested. Addressed in [#20009](https://togithub.com/cypress-io/cypress/issues/20009). - Updates were made to log the `ShadowRoot` and `Document` elements as HTML elements. Previously these would be logged as enumerated objects, which were difficult to evaluate. Addressed in [#20049](https://togithub.com/cypress-io/cypress/issues/20049). - Updated the terminal output generated in Cypress run mode to de-emphasis the `node` path in the run header. Addressed in [#20120](https://togithub.com/cypress-io/cypress/issues/20120). **Bugfixes:** - Fixed an issue where files attached during `.selectFile()` could have the wrong `File` prototype. Fixes [#20003](https://togithub.com/cypress-io/cypress/issues/20003). - Updated `.select()` to only dispatch the `change` and `input` events when the selected option is not the currently selected option. This change aligns `.select()` with the browser. Fixes [#19494](https://togithub.com/cypress-io/cypress/issues/19494). - Updated `.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](https://togithub.com/cypress-io/cypress/pull/20067). ### [`v9.4.1`](https://togithub.com/cypress-io/cypress/releases/tag/v9.4.1) [Compare Source](https://togithub.com/cypress-io/cypress/compare/v9.4.0...v9.4.1) *Released 1/31/2022* **Bugfixes:** - Fixed a regression in [9.4.0](https://docs.cypress.io/guides/references/changelog#9-4-0) where the line endings in the public NPM package prevented some users from running Cypress. Fixes [#19986](https://togithub.com/cypress-io/cypress/issues/19986). ### [`v9.4.0`](https://togithub.com/cypress-io/cypress/releases/tag/v9.4.0) [Compare Source](https://togithub.com/cypress-io/cypress/compare/v9.3.1...v9.4.0) *Released 1/31/2022* **Features** - Enhancements were made to `.selectFile()` after receiving feedback after its initial release in [9.3.0](https://docs.cypress.io/guides/references/changelog#9-3-0). - The default behavior was updated to automatically infer the mime type of files based on their extension to correctly encode file uploads. Addressed in [#19751](https://togithub.com/cypress-io/cypress/issues/19751). - Added the `mimeType` property so you can explicitly set the mime type on files using the `mimeType` property. Addressed in [#19751](https://togithub.com/cypress-io/cypress/issues/19751). - Updated file contents types to allow either a [`TypedArray`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray) instance or a `Cypress.Buffer` instance, where previously file contents were expected to only be an instance of `Cypress.Buffer`. Addressed in [#19751](https://togithub.com/cypress-io/cypress/issues/19751). - Updated `.selectFile()` to retain the fileName of files read from disk to work with aliases. Addressed in [#19803](https://togithub.com/cypress-io/cypress/issues/19803). **Bugfixes:** - Fixed a regression in [9.3.0](https://docs.cypress.io/guides/references/changelog#9-3-0) to correctly parse the `--spec` CLI parameter for glob patterns containing a range. Fixes [#19783](https://togithub.com/cypress-io/cypress/issues/19783). - Fixed regression in [9.2.1](https://docs.cypress.io/guides/references/changelog#9-1-1) where the `--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](https://togithub.com/cypress-io/cypress/issues/19712). - Update `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](https://togithub.com/cypress-io/cypress/issues/19541). ### [`v9.3.1`](https://togithub.com/cypress-io/cypress/releases/tag/v9.3.1) [Compare Source](https://togithub.com/cypress-io/cypress/compare/v9.3.0...v9.3.1) *Released 1/19/2022* **Bugfixes:** - Fixed an issue where the bin file was released with windows line breaks. Fixes [#19747](https://togithub.com/cypress-io/cypress/issues/19747). ### [`v9.3.0`](https://togithub.com/cypress-io/cypress/releases/tag/v9.3.0) [Compare Source](https://togithub.com/cypress-io/cypress/compare/v9.2.1...v9.3.0) *Released 1/18/2022* **Features:** - Added a new Cypress command, called [`.selectFile()`](https://docs.cypress.io/api/commands/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](https://docs.cypress.io/guides/references/migration-guide#Migrating-from-cypress-file-upload-to-selectFile) for previous users of that plugin. For more details, see [our blog post](https://cypress.io/blog/2022/01/18/uploading-files-with-selectfile/). Fixes [#19524](https://togithub.com/cypress-io/cypress/issues/19524) and [#170](https://togithub.com/cypress-io/cypress/issues/170). - Exposed the `Buffer` polyfill, as [`Cypress.Buffer`](https://docs.cypress.io/api/utilities/buffer), to enable working with binary data. Addressed in [#19524](https://togithub.com/cypress-io/cypress/issues/19524). - Added the `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](https://docs.cypress.io/guides/getting-started/installing-cypress#Install-binary) documentation. Fixes [#15697](https://togithub.com/cypress-io/cypress/issues/15697). **Bugfixes:** - Fixed an issue where the `--spec` CLI parameter was not working properly when passing multiple glob patterns that are separated by commas. Fixes [#16102](https://togithub.com/cypress-io/cypress/issues/16102). - Fixed an issue with how the `CYPRESS_VERIFY_TIMEOUT` environment variable was read so it can set in a project's `package.json` or it's `.npmrc`. Fixes [#19559](https://togithub.com/cypress-io/cypress/issues/19559). **Dependency Updates:** - Upgraded `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](https://togithub.com/cypress-io/cypress/issues/19676) and resolves [#19610](https://togithub.com/cypress-io/cypress/pull/19610). - **NOTE:** This upgrade to `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](https://togithub.com/cypress-io/cypress/issues/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. - Upgraded `electron` from `15.2.0` to `15.3.4`. Addressed in [#19351](https://togithub.com/cypress-io/cypress/issues/19351). ### [`v9.2.1`](https://togithub.com/cypress-io/cypress/releases/tag/v9.2.1) [Compare Source](https://togithub.com/cypress-io/cypress/compare/v9.2.0...v9.2.1) *Released 1/10/2022* **Bugfixes:** - Fixed a regression in [9.2.0](https://docs.cypress.io/guides/references/changelog#9-2-0) to keep Cypress open after each spec finishes when the `--headed --no-exit` flags are passed to `cypress run`. Fixes [#19485](https://togithub.com/cypress-io/cypress/issues/19485). - Improve heuristic for verifying when the `--openssl-legacy-provider` option should be passed to the plugins' child process when the system Node version is v17+. This prevents Cypress from crashing when a user has Node 17 installed which was built with OpenSSL v1. Fixes [#19320](https://togithub.com/cypress-io/cypress/issues/19320). - Correctly cast the `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](https://togithub.com/cypress-io/cypress/issues/19476). **Dependency Updates:** - Update pinned resolution of `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](https://togithub.com/Marak/colors.js/issues/285). Addresses [#19624](https://togithub.com/cypress-io/cypress/issues/19624). ### [`v9.2.0`](https://togithub.com/cypress-io/cypress/releases/tag/v9.2.0) [Compare Source](https://togithub.com/cypress-io/cypress/compare/v9.1.1...v9.2.0) *Released 12/20/2021* **Features:** - Cypress will throw an error when a user attempts to update a configuration value at run-time using either the Test Configuration or using `Cypress.config()` that is a [readonly option](https://docs.cypress.io/guides/references/configuration#Test-Configuration). Addresses [#6407](https://togithub.com/cypress-io/cypress/issues/6407) and [#19001](https://togithub.com/cypress-io/cypress/issues/19001). - A `timeout` option has been added to the `cy.writeFile()` command, with a default value of `defaultCommandTimeout`. Addresses [#3350](https://togithub.com/cypress-io/cypress/issues/3350). - The default `maxHttpBufferSize` for the internal socket server has been increased to [Node's maximum Buffer size](https://nodejs.org/api/buffer.html#bufferconstantsmax_length) (size varies by OS) to allow large file writes with `cy.writeFile()`. Addresses [#19140](https://togithub.com/cypress-io/cypress/issues/19140). - Add `CYPRESS_VERIFY_TIMEOUT` environment variable to override the timeout duration of the `verify` command. Addresses [#18290](https://togithub.com/cypress-io/cypress/issues/18290). **Bugfixes:** - Prevent unnecessary snapshotting when running default assertions that would unnecessarily increase CPU use in `cypress open` mode which lead to out of memory crashes on certain browsers. Fixes [#18549](https://togithub.com/cypress-io/cypress/issues/18549). - Removed automatic retries for failed HTTP requests through the proxy. This fixes an issue where failed requests could be re-sent too many times in some conditions. This change could increase the number of failed requests that your app sees. Fixes [#19043](https://togithub.com/cypress-io/cypress/issues/19043). - Reduced the occurrence of an issue where logs for `fetch` and `xhr` requests could be associated with the wrong request. Fixes [#19043](https://togithub.com/cypress-io/cypress/issues/19043). - Tests that are skipped within `then` blocks will no longer throw errors causing the test to fail. Tests that are skipped outside of `then` blocks will no longer trigger the fail event. This will prevent screenshots from happening from errors thrown by the fail event.Fixes [#14867](https://togithub.com/cypress-io/cypress/issues/14867) and [#17660](https://togithub.com/cypress-io/cypress/issues/17660). - Fixed a regression in [9.0.0](https://docs.cypress.io/guides/references/changelog#9-0-0) where a fixture provided in a static response to `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](https://togithub.com/cypress-io/cypress/issues/19344). - Fixed a regression in [9.0.0](https://docs.cypress.io/guides/references/changelog#9-0-0) where `cy.contains()` attempted to ignore ` Githubissues.