Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Upgrade Cypress one major version at a time: move a Cypress 13 project to 14, complete that migration, then move to 15. A project already on Cypress 14 can proceed directly to 15 after checking the runtime, browser, component-testing, and code changes that apply to it. Finish by verifying the Cypress installation and running your project’s tests.

Before upgrading: confirm the starting version and environment

Check the version the project actually resolves, rather than relying only on a version range in package.json:

npx cypress version

Review both package.json and the lockfile as well. If Cypress 13 is installed, follow the Cypress 13-to-14 migration first; only after that is complete should you start the 14-to-15 migration.

Check Node.js and Linux compatibility

Cypress 15 requires Node.js 20, 22, 24, or later to install its Cypress binary. Node.js 18 and 23 are no longer supported. On Linux, prebuilt Cypress binaries require glibc 2.31 or newer. Check the Node.js version used in local development and CI, and check the Linux base image where applicable, before changing the Cypress dependency. See the Cypress migration guide.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Check Firefox against the Cypress 15 minor version

Firefox compatibility depends on the Cypress 15 minor release: Cypress 15.0.0 through 15.18.1 requires Firefox 135 or later, while Cypress 15.19.0 and later requires Firefox 140 or later. If your tests use Firefox, check the exact Cypress version you intend to install and update any pinned browser, CI image, or provider-installed version that falls below its requirement.

Upgrade in stages

For a project on Cypress 13

  1. Update Cypress to the latest 14.x release using your project’s package manager.
  2. Apply the Cypress 14 migration changes that affect your project, then run the project’s tests before proceeding.
  3. Update Cypress from 14.x to 15.x using the package manager and lockfile workflow already used by the project.
  4. Apply the Cypress 15 changes below, verify the installation, and run the tests again.

For a project already on Cypress 14

  1. Confirm the installed version with npx cypress version.
  2. Check Node.js, Linux glibc if relevant, and Firefox if used against the target Cypress 15 release.
  3. Update the Cypress dependency to 15.x and commit the resulting manifest and lockfile changes.
  4. Apply the relevant Cypress 15 code and component-testing changes, then verify and test.

Use your package manager’s normal dependency-update command so it updates the correct dependency declaration and lockfile. For example, with npm, an explicit major-version installation can be run as:

npm install --save-dev cypress@15

If the project uses Yarn or pnpm, use its equivalent dependency command instead; do not mix package managers or discard the project’s lockfile as part of the upgrade.

Apply Cypress 15 code changes

Use exitCode with cy.exec()

Change code that reads the command result through code to read exitCode:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
// Before
cy.exec('some-command').its('code')

// After
cy.exec('some-command').its('exitCode')

Pass stub behavior through callsFake()

Replace the three-argument form cy.stub(object, name, fn) with a stub followed by callsFake(fn):

// Before
cy.stub(object, 'method', fn)

// After
cy.stub(object, 'method').callsFake(fn)

Search application tests and support code for these patterns, then update assertions and any dependent logic to match the new property or stub setup.

Review component testing and Vite configuration

Cypress 15 drops component-testing support for Webpack 4, Vite 4, and Angular 17. Projects using component testing should move to Webpack 5, Vite 5, and Angular 18 or newer, respectively, before relying on Cypress 15 compatibility.

The @cypress/vite-dev-server package is ESM-only. If the Cypress configuration imports or uses it from CommonJS, convert the configuration to an ESM context—for example, rename the config file to cypress.config.mjs and use ESM import syntax. Check the rest of the configuration for CommonJS-only assumptions during that conversion.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Verify the installation and test the project

  1. Run npx cypress verify to verify the Cypress binary installation.
  2. Run the project’s end-to-end and component-test commands in the same environments used by the team and CI.
  3. Where applicable, run the Firefox suite using a version that meets the threshold for the chosen Cypress 15 minor.
  4. Review failures individually: installation compatibility problems, migration-related code changes, browser differences, and application test failures need different fixes.

A successful binary verification confirms the Cypress installation; it does not establish that an application’s tests will pass. The Cypress migration guide also documents Cypress 16, so Cypress 15 is a specific target rather than the newest major version covered there.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Troubleshooting common upgrade failures

Cypress binary installation fails

Check that the active Node.js runtime is 20, 22, 24, or later, and that a Linux environment has glibc 2.31 or newer. Confirm that the Cypress package version and installed binary are aligned, then run npx cypress verify again.

Tests fail after the package update

Search for .its('code') after cy.exec() and three-argument cy.stub() calls. Update those patterns as needed, then run the affected tests before diagnosing unrelated test failures.

Component tests or dev-server startup fail

Check whether component tests depend on Webpack 4, Vite 4, or Angular 17, all of which are outside Cypress 15’s supported component-testing set. If the setup uses @cypress/vite-dev-server, ensure the Cypress config is ESM rather than CommonJS.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Firefox tests do not start or behave unexpectedly

Compare the installed Firefox version with the threshold for the exact Cypress 15 minor: 135 for 15.0.0–15.18.1, or 140 for 15.19.0 and later. Update the browser supplied locally or by the CI image/provider if it is below that minimum.

Or skip the browser setup

If the task is capturing a website rather than running Cypress tests, ScreenshotNeo offers a one-request screenshot API. It accepts a URL and returns an image or PDF; see the ScreenshotNeo API documentation for request options.

curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp

ScreenshotNeo removes cookie banners, newsletter popups, and chat widgets before capture; bot checks, blank pages, and failed loads are not billed. Its MCP server lets AI agents take screenshots, and the free plan includes 1,000 screenshots per month with no card required; paid plans start at $5 for 3,000. Learn more at ScreenshotNeo, or sign up free.

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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.