# Cypress v15.21.0 - Product: Cypress (https://whatsnew.fyi/product/cypress) - Vendor: Cypress.io - Date: 2026-08-18 - Version: v15.21.0 - Original notes: https://github.com/cypress-io/cypress/releases/tag/v15.21.0 - Permalink: https://whatsnew.fyi/product/cypress/releases/v15.21.0 What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. --- - **deprecated** — cy.exec() has been deprecated and will be removed in a future major release; use cy.task() instead - **deprecated** — execTimeout configuration option has been deprecated in favor of taskTimeout - **added** — Added the cypress tap command, which gives AI agents direct access to open-mode Cypress sessions and enables listing sessions, starting and rerunning specs, reporting run status and results, printing failing test errors and Command Log, and inspecting the DOM and accessibility tree - **added** — Added CYPRESS_DISABLE_GUEST_TELEMETRY environment variable to disable reporting Cypress sends for non-logged sessions - **fixed** — Fixed WebKit runs hanging indefinitely when more parallel requests than the browser's per-host connection pool were intercepted by a cy.intercept() route with a request handler - **fixed** — Fixed test-level blockHosts overrides having no effect when overriding project-level configuration - **fixed** — Fixed cypress run printing the (Attempt N of M) line twice when both beforeEach and afterEach hooks failed during the same attempt - **fixed** — Fixed have.attr, have.css, and have.prop assertions applying styles, attributes, or properties to the element instead of asserting on them when passed an object - **fixed** — Fixed cy.env() command console props output listing environment variable names under numbered keys instead of a single Env vars label - **fixed** — Fixed Windows issue where adding, renaming, moving or deleting a spec file while cypress open was running was not reflected in the specs list - **changed** — Upgraded @sinonjs/fake-timers from 11.3.1 to 14.0.0; cy.clock() now implements performance.mark() and performance.measure() and reports faked performance.timeOrigin **Deprecations:** - [`cy.exec()`](https://on.cypress.io/exec) has been deprecated and will be removed in a future major release of Cypress. Use [`cy.task()`](https://on.cypress.io/task) instead, which runs in Node without depending on the operating system, shell, or terminal of the machine running Cypress. The [`execTimeout`](https://docs.cypress.io/app/references/configuration#Timeouts) configuration option is deprecated alongside it, in favor of [`taskTimeout`](https://docs.cypress.io/app/references/configuration#Timeouts). Addresses [#34639](https://github.com/cypress-io/cypress/issues/34639). **Features:** - Added the `cypress tap` command, which gives your AI agent direct access to your open-mode Cypress session. It lists the open-mode Cypress sessions running on the machine, starts and reruns a spec, reports a run's status and results, prints a failing test's error and Command Log, and inspects the DOM and accessibility tree of the application under test. Every subcommand prints readable output by default and machine-readable JSON with `--json`. Run `cypress tap --help` for the full list of subcommands. Addresses [#34036](https://github.com/cypress-io/cypress/issues/34036). - Added a `CYPRESS_DISABLE_GUEST_TELEMETRY` environment variable, which disables any reporting Cypress sends for non-logged sessions. This includes anonymous usage events within Cypress open-mode and the Cypress CLI. Addressed in [#34540](https://github.com/cypress-io/cypress/pull/34540). **Bugfixes:** - Fixed an issue where WebKit runs could hang indefinitely when more parallel requests than the browser's per-host connection pool were intercepted by a [`cy.intercept()`](https://on.cypress.io/intercept) route with a request handler. Fixes [#33926](https://github.com/cypress-io/cypress/issues/33926) and addresses [#23807](https://github.com/cypress-io/cypress/issues/23807). - Fixed an issue where overriding [`blockHosts`](https://on.cypress.io/configuration#blockHosts) with test configuration (for example `describe('...', { blockHosts: [...] }, ...)`) had no effect, so requests were still blocked or allowed according to the project-level value. Test-level `blockHosts` overrides now take effect at runtime and are restored between specs. Fixes [#21151](https://github.com/cypress-io/cypress/issues/21151). - Fixed an issue where `cypress run` printed the `(Attempt N of M)` line twice for the same attempt when a `beforeEach` and an `afterEach` hook both failed during that attempt. Fixes [#26143](https://github.com/cypress-io/cypress/issues/26143). - Fixed an issue where passing an object to the [`have.attr`, `have.css`, or `have.prop` assertions](https://on.cypress.io/assertions), such as `.should('have.css', { backgroundColor: 'rgb(128, 0, 0)' })`, applied those styles, attributes, or properties to the element and passed instead of asserting on them. These assertions now fail with an error stating that the name must be a string. Fixes [#26451](https://github.com/cypress-io/cypress/issues/26451). - Fixed an issue where the console props output for a [`cy.env()`](https://on.cypress.io/env) command listed the requested environment variable names under numbered keys instead of a single `Env vars` label. Addressed in [#34615](https://github.com/cypress-io/cypress/pull/34615). - Fixed an issue on Windows where adding, renaming, moving or deleting a spec file while `cypress open` was running was not reflected in the specs list, leaving stale specs until Cypress was restarted. Clicking a spec that had been renamed or moved could then fail to run. Projects whose [`specPattern`](https://docs.cypress.io/app/references/configuration#e2e) contains a directory, such as the End-to-End Testing default `cypress/e2e/**/*.cy.{js,jsx,ts,tsx}`, were affected. Fixes [#22303](https://github.com/cypress-io/cypress/issues/22303). **Dependency Updates:** - Upgraded `@sinonjs/fake-timers` from `11.3.1` to `14.0.0`. While [`cy.clock()`](https://on.cypress.io/clock) is active, _[Truncated at 4000 characters — full notes: https://github.com/cypress-io/cypress/releases/tag/v15.21.0]_