- scrollBehavior now accepts a per-axis value such as { block: 'start', inline: 'nearest' } to set vertical and horizontal alignment independently
- cy.request() and cy.intercept() now accept the HTTP QUERY method
- Reduced the sampling overhead of experimentalMemoryManagement when Cypress runs inside a memory-limited container using cgroup v1 by eliminating helper subprocesses on every sampling interval
- Fixed an issue where visibility checks serialized an element's entire text subtree once per overflow-hidden ancestor, which could exhaust the renderer's memory and crash it on text-heavy pages
- Fixed a regression where action commands scrolled an already-visible element's container horizontally
- Fixed a regression where commands that read from the application under test targeted the command log instead of your application when the application set window.name
- Fixed an issue where a cy.* command error message that interpolated a value containing a $ character could render incorrectly
- Fixed an issue where a Cypress error message that interpolated a value containing a $ sequence could render with corrupted or duplicated text
- Fixed an issue where cy.intercept() matching on the auth option compared only the portion of a Basic authentication password before the first colon
- Fixed an issue where cy.intercept() routes specifying a numeric port did not match requests on non-default ports
- Fixed an issue where inline source maps embedded without a charset were not decoded and were silently dropped
- Fixed an issue where TypeScript 7 support did not work and spec and support files failed to compile
- Fixed an issue where a cy.origin() block could intermittently fail with TypeError: Cannot read properties of undefined (reading 'applied')
- Fixed an issue where during a cy.origin() block, session cookies set on the primary origin by the first page visited in a test were not included in the identity provider's callback request
- Fixed an issue where the configuration validation error for passesRequired in the detect-flake-and-pass-on-threshold retry strategy reported the value of an unrelated option
- Fixed an issue where the configuration validation error for an absolute ca filepath in clientCertificates referenced the wrong certificate
Performance:
- Fixed an issue where visibility checks (such as
.should('be.visible')and actionability) serialized an element's entire text subtree once per overflow-hidden ancestor, which on text-heavy pages could exhaust the renderer's memory and crash it (We detected that the Chrome Renderer process just crashed). Fixes #34329. - Reduced the sampling overhead of
experimentalMemoryManagementwhen Cypress runs inside a memory-limited container using cgroup v1. Memory readings no longer spawn helper subprocesses on every sampling interval, which lowers CPU usage that previously competed with the tests, most noticeably on constrained CI machines. Addresses #34105. Fixed in #34331.
Features:
scrollBehaviornow accepts a per-axis value, such as{ block: 'start', inline: 'nearest' }, so the vertical and horizontal alignment used to scroll an element into view before an action command can be set independently. The per-axis form takes the same values as the nativescrollIntoView:'start','end','center', and'nearest'. Addresses #34460.cy.request()andcy.intercept()now accept the HTTPQUERYmethod. Previously it was rejected as an invalid method in the browser. Fixes #28282.
Bugfixes:
- Fixed a regression in 15.18.1 where action commands scrolled an already-visible element's container horizontally. The
scrollBehaviorvalues'top'and'bottom'revert to aligning only the vertical axis; use'start'or'end'to align both. Fixes #34460. - Fixed a regression in 15.19.0 where commands that read from the application under test, such as
cy.url(),cy.title()andcy.reload(), targeted the command log instead of your application when the application setwindow.name. Fixes #34435. - Fixed an issue where a
cy.*command error message that interpolated a value containing a$character could render incorrectly, with a leaked{{...}}placeholder or duplicated or dropped surrounding text. Such values are now inserted verbatim. Fixed in #34221. - Fixed an issue where a Cypress error message that interpolated a value containing a
$sequence (such as$&,$`,$', or$$) could render with corrupted or duplicated text. Such values are now shown verbatim. Fixed in #34220. - Fixed an issue where
cy.intercept()matching on theauthoption compared only the portion of a Basic authentication password before the first colon, so a request whose password contained a colon (permitted by RFC 7617) failed to match. The full password is now compared. Fixed in #34206. - Fixed an issue where
cy.intercept()routes specifying a numericport(for exampleport: 8080orport: [8080]) did not match requests on non-default ports. Such routes now match as documented. Fixes #17653. Fixed in #34205. - Fixed an issue where inline source maps embedded without a
charset(for example those emitted by esbuild) were not decoded and were silently dropped. These inline source maps are now decoded. Fixed in #34204. - Fixed an issue where the TypeScript 7 support added in 15.18.0 did not work: TypeScript spec and support files failed to compile with
Error: Cannot find module '@babel/preset-typescript'. Fixes #34359. - Fixed an issue where a
cy.origin()block could intermittently fail withTypeError: Cannot read properties of undefined (reading 'applied'), incorrectly reported as originating from your test code. Addressed in #34376. - Fixed an issue where, during a
cy.origin()block, session cookies set on the primary origin by the first page visited in a test were not included in the identity provider's callback request back to the primary origin (for example,POST /auth/callbackin an OAuth Authorization Code flow). Fixes #29719. Fixed in #34287. - Fixed an issue where the configuration validation error shown when
passesRequiredis omitted from the experimentaldetect-flake-and-pass-on-thresholdretry strategy reported the value of an unrelated option instead of thepassesRequiredvalue. Fixed in #34202. - Fixed an issue where the configuration validation error for an absolute
cafilepath inclientCertificatesreferenced the wrong certificate. Fixed in #34201. - Fixed an issue where HTTP
3xxresponses (such as304 Not Modified) were shown with a failed (red) indicator in the Command Log. These responses now display as successful. Fixes #34066. Fixed in #34282.
Misc:
- Fixed an issue where passing the
optionsargument tocy.env(), such ascy.env(['FOO'], { log: false }), raised a TypeScript error (Expected 1 arguments, but got 2). Fixes #34284.
Dependency Updates:
- Upgraded
tarfrom6.2.1to7.5.21to address CVE-2026-59873 reported in security scans. Addresses #34333. Addressed in #34335. - Upgraded
archfrom2.2.0to3.0.0. Addressed in #34426. - Removed
tslib(previously1.14.1) from thecypresspackage's runtime dependencies. Addressed in #34372. - Upgraded
wsfrom8.18.3to8.21.1. Addressed in #34392.