Windows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstallOutdated Drivers Are Slowing You Down
One free scan finds every outdated or missing driver and matches the right update for your exact hardware.Free scan · exact hardware matchCypress 14.0.0, released January 16, 2025, changed more than the package version: it raises environment and component-testing minimums, retires older APIs and CLI commands, and requires explicit cy.origin() handling when a test crosses origins. Before upgrading, check your runtime, operating system, CI browsers, test code, and component-testing stack against the migration guide. Cypress 14 is not the latest major version, so teams targeting a newer release should follow Cypress’s migration guides one major version at a time.
What changed in Cypress 14?
The 14.0.0 release introduced component-testing performance improvements and support for newer frameworks and dev servers, alongside breaking changes in cross-origin behavior and compatibility. The release notes summarize the changes; the migration guide is the practical checklist for upgrading an existing project.
As an Amazon Associate I earn from qualifying purchases.
See Cypress’s changelog and the version migration guide. The migration index includes later majors, so Cypress 14 instructions alone are not a complete route to the current release.
Free tools Windows power users keep installed
One-click scans. No signup required.
Check compatibility before changing the package
Node.js, Linux, and macOS
- Node.js: Cypress 14’s migration guide requires Node.js 18 or newer to install Cypress. Node.js 16 and 21 are no longer supported. This refers to the system Node.js used for package installation; Cypress bundles a separate runtime.
- Linux: Prebuilt Cypress binaries no longer work on distributions based on glibc older than 2.28.
- macOS: The minimum is macOS 11 (Big Sur), following the move to bundled Electron 33.2.1.
Browsers in local development and CI
Cypress 14 officially supports the latest three major versions of Chrome, Firefox, and Edge. Check the browser versions in CI and containers, not just a developer’s local installation. If your project uses Firefox, the current installation compatibility note says Firefox 141 or newer requires Cypress 14.1.0 or newer; that specific constraint is not satisfied by Cypress 14.0.0 alone. Consult Cypress’s installation compatibility notes when choosing the exact Cypress and Firefox versions.
Component-testing frameworks and bundlers
Check the actual versions used by your component-testing configuration before upgrading:
| Component-testing dependency | Cypress 14 requirement or change |
|---|---|
| Webpack via Cypress’s webpack dev server | Webpack 5 minimum; Webpack 4 is no longer supported. |
Vite via @cypress/vite-dev-server |
Vite 5 minimum; Vite 4 is no longer supported. |
@cypress/vite-dev-server configuration |
The package is ESM-only. A CommonJS Cypress config must move to an ESM context or a TypeScript config to use it. |
| Angular component testing | Angular 18 minimum; the mount import changes from cypress/angular to @cypress/angular. |
| Vue 2 component testing | Cypress no longer bundles the Vue 2 harness. The guide describes separately installable @cypress/vue2 as a temporary, deprecated workaround for projects not yet migrated to Vue 3. |
JIT component compilation is now the default through the justInTimeCompile component configuration option. The migration guide says JIT does not apply with Vite. For another supported setup, set justInTimeCompile: false only if you have a reason to disable it.
Update tests that cross origins
Cypress 14 no longer injects document.domain into text/html by default. An origin is defined by its scheme, hostname, and port; a change to any of those means a different origin. When a test navigates to another origin, commands interacting with that page must run inside cy.origin(), even when both hostnames share a superdomain. The cy.origin() documentation explains the command’s behavior.
For example, after visiting https://www.cypress.io, commands for a page at https://docs.cypress.io belong in a block for the docs origin:
cy.visit('https://www.cypress.io')
cy.origin('https://docs.cypress.io', () => {
cy.visit('https://docs.cypress.io')
cy.get('body').should('be.visible')
})
Adapt the assertions and navigation to your application. The important migration is to put commands for the second origin inside the matching cy.origin() callback.
Transition option: injectDocumentDomain
Cypress added injectDocumentDomain as a transition aid for reducing immediate cy.origin() work on subdomains. It is deprecated, may break sites, and triggers a warning when enabled. Prefer explicit origin blocks, then remove the option. The configuration reference documents its caveats.
Rank #4
Find removed APIs, options, and commands
Search application tests, Cypress configuration, and package scripts for these migration points:
Recommended Free Tools
resourceTypeincy.intercept()is deprecated; avoid relying on it for new behavior.- Remove
experimentalFetchPolyfill; usecy.intercept()for fetch handling. - Remove
experimentalSkipDomainInjection; its behavior is now the default. - In the
before:browser:launchevent, the second argument islaunchOptions, not an array. Read browser arguments fromlaunchOptions.args. See the browser launch API. - Replace
cypress open-ctandcypress run-ctin scripts and CI withcypress open --componentandcypress run --component. - Remove undocumented
Cypress.backend('firefox:force:gc')andCypress.backend('log:memory:pressure')calls. The migration guide gives no replacement. - In Electron, do not call
fetchorXMLHttpRequestfromabout:blankbefore navigation. Usecy.request()or visit a page first.
Upgrade in a controlled sequence
- Record the current setup. Note the installed Cypress version, package manager, Node.js version used for installation, OS image, browser versions, component framework and bundler versions, Cypress config module format, and CI commands.
- Check each environment requirement. Confirm Node.js 18 or newer, supported Linux glibc or macOS 11 or newer, supported browser majors, and compatible component-testing dependencies.
- Search and update tests and configuration. Migrate cross-origin interactions to
cy.origin(); remove deprecated options and undocumented backend calls; update launch event handling and component-testing commands. - Update Cypress using the project’s package-manager workflow. Cypress does not prescribe a single package-manager command for every repository. Use the package manager and lockfile already adopted by your project rather than introducing a different install method.
- Run the project’s verification commands locally and in CI. Exercise the test types you use, particularly multi-origin end-to-end tests and component tests. Update pinned CI browser and OS images where they fail compatibility checks.
- For a later Cypress major, continue sequentially. Review each intervening migration guide instead of assuming a direct jump from an older version to 14, or from 14 to the latest major, is covered here.
Common upgrade failures and fixes
| Symptom | Likely cause | What to check or change |
|---|---|---|
| Installation or binary startup fails | Unsupported system Node.js, Linux glibc, or macOS version. | Verify the install-time Node.js version is at least 18, Linux glibc is at least 2.28, or macOS is at least 11, as applicable. |
| A test fails after navigating to another host or port | Commands for the new origin are outside cy.origin(). |
Wrap interactions with the second origin in a callback whose origin matches the page’s scheme, hostname, and port. |
| Component tests fail to start or the dev server cannot load | Unsupported bundler/framework version or a CommonJS config with the ESM-only Vite dev-server package. | Check Cypress 14’s Webpack, Vite, Angular, and Vue requirements; use an ESM or TypeScript config with @cypress/vite-dev-server. |
| Component-testing script is not recognized | A script still uses an old open-ct or run-ct command. |
Use cypress open --component or cypress run --component. |
| Browser launch hook behaves unexpectedly | Code treats the second before:browser:launch argument as an array. |
Use it as launchOptions and inspect or modify launchOptions.args. |
| Firefox compatibility issue on a newer browser | The installed Cypress version is older than the compatibility note’s minimum for Firefox 141+. | Use Cypress 14.1.0 or newer for Firefox 141 or newer, according to the installation note. |
Or skip the browser setup
If your task is to capture a web page rather than migrate a Cypress test suite, ScreenshotNeo is a website screenshot API with a single GET request for an image or PDF. It is a separate tool, not a Cypress upgrade or replacement for Cypress tests. See the ScreenshotNeo documentation.
Best Value
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
Cookie and consent banners are accepted and removed before capture, along with known newsletter popups and chat widgets; each step can be turned off. Bot checks, blank pages, timeouts, failed loads, and cache hits are not billed, and the response identifies the page verdict and billing status. An MCP server provides take_screenshot, get_page_info, and capture_pdf tools for AI agents. The free plan includes 1,000 shots per month with no card; paid plans start at $5 for 3,000 shots.
Sign up for ScreenshotNeo’s free plan: 1,000 screenshots a month, no card required.
Frequently Asked Questions
Is Cypress 14 the latest Cypress major version?
No. Cypress’s migration index includes later majors; use the intervening migration guides if your goal is the current version.
Does Cypress 14 require every project to use component testing?
No. The component-testing compatibility changes apply to projects using that test type; end-to-end projects should still check the runtime, platform, browser, and API changes.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

