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

Run Cypress once per installed browser with npx cypress run --browser <browser>. Cypress officially supports Chrome-family browsers, Firefox, and Edge; WebKit support is experimental and is not a test of the Safari application itself. In CI, install the browsers in the job environment and choose a full-suite or tiered test matrix based on your coverage needs.

Which browsers can Cypress test?

Cypress documents support for Chrome, Chromium, Microsoft Edge, and Firefox. Its browser reference says official support covers the latest three major versions of Chrome, Firefox, and Edge. Cypress currently cannot launch Firefox earlier than version 140 because older versions have incomplete WebDriver BiDi support; check the browser reference for changes to that floor.

Cypress also offers experimental support for WebKit, the browser engine used by Safari. That is not the Safari application and does not establish full Safari equivalence. WebKit requires enabling experimentalWebKitSupport: true and installing playwright-webkit; Linux may need additional dependencies. Cypress documents limitations including no cy.origin() support and no Test Replay. Consult the WebKit browser notes before relying on it.

Cypress lists stable, beta, canary, and developer variants for several browser families. For reproducible automation, Cypress recommends Chrome for Testing because its binary is versioned and does not auto-update. Electron is deprecated as a test browser and is slated for removal in a future Cypress version, so explicitly select a supported installed browser instead. See Cypress browser launching documentation.

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

Run tests locally in each browser

The target browser must be installed on the machine running Cypress. From your project directory, run the command for each browser you want to cover:

npx cypress run --browser chrome
npx cypress run --browser firefox
npx cypress run --browser edge

Use chromium when that is the detected installation you intend to run. Cypress also documents browser channel variants. The --browser option selects the browser to launch; see the CLI reference and browser reference for accepted identifiers and behavior.

Use a custom browser binary

If Cypress does not detect a portable or custom installation, pass the binary path. For example:

npx cypress open --browser /usr/bin/chromium

The path must match the machine where Cypress runs. The browser reference documents path-based selection.

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

Choose a browser in interactive mode

Run npx cypress open, choose E2E or component testing, then select an installed browser from Cypress’s browser dropdown. For a visible run from the CLI, add --headed:

npx cypress run --browser chrome --headed

CLI runs are headless by default. Cypress launches an isolated testing profile, so ordinary browsing cookies, history, and extensions are not inherited. These behaviors are described in the browser reference.

Add convenient npm scripts

For repeated local runs, add named scripts to package.json:

{
  "scripts": {
    "cy:run:chrome": "cypress run --browser chrome",
    "cy:run:firefox": "cypress run --browser firefox",
    "cy:run:edge": "cypress run --browser edge"
  }
}

Then call a script with your package manager, such as npm run cy:run:firefox. The aliases are project conveniences; choose names and package-manager commands that fit your repository. Cypress’s cross-browser guide shows this general pattern.

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

Plan cross-browser coverage in CI

Provision each browser in the CI job or use an environment image that includes it. Cypress’s CircleCI guide describes installing Chrome, Chrome for Testing, Edge, Firefox, and geckodriver; Cypress also provides Docker images. Match browser versions and operating-system coverage to the compatibility promise your product makes, rather than assuming a browser installed on a developer’s machine is present in CI. See the cross-browser guide and CircleCI guide.

Use a tiered matrix when full coverage is too costly

Cypress’s documented example runs the full suite on Chrome and a critical-path subset on Firefox, with named groups recorded to Cypress Cloud. This is an example, not a mandatory matrix. It is a practical starting point when test duration or infrastructure capacity makes running every test in every browser too expensive.

  • Run the complete suite in the browser that gives your team the most useful routine feedback.
  • Run high-risk user journeys in additional browsers, especially where browser-specific failures would affect important workflows.
  • Expand to full suites across browsers when product risk, release policy, or observed defects justify the added time and compute.

If the project records runs to Cypress Cloud, use --record --group <name> to label browser-specific groups. For example:

npx cypress run --browser chrome --record --group "Chrome full suite"
npx cypress run --browser firefox --record --group "Firefox critical path"

Recording requires the project’s Cypress Cloud setup and credentials. The commands are based on the grouping pattern in the official cross-browser guide.

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.

Keep tests shared unless behavior truly differs

Most application tests should run unchanged across browsers. When a test genuinely applies only to selected browsers, Cypress supports browser-specific test or suite configuration; Cypress.isBrowser can also detect the current browser. Use these mechanisms for real product or platform differences, not to conceal a failing shared test. Details are in the cross-browser guide and Cypress.isBrowser API documentation.

Change launch settings only for a concrete need

For browser startup requirements, use the before:browser:launch event in setupNodeEvents. It can modify launch arguments, preferences, environment variables, or extensions. Avoid adding browser flags without a specific reason: launch customizations can make results less representative of ordinary user conditions. Refer to the browser launch API.

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

Troubleshoot common cross-browser failures

  • Cypress cannot find the browser: Install it in the environment that runs Cypress, use a recognized browser identifier, or supply the binary path. Check the browser launch reference.
  • Firefox fails to launch: Cypress currently documents a minimum of Firefox 140 because earlier releases have incomplete WebDriver BiDi support. Update Firefox or select another supported browser; recheck the documented floor as versions change.
  • WebKit setup fails on Linux: Confirm playwright-webkit is installed, enable experimentalWebKitSupport: true, and install any Linux dependencies required by the WebKit setup instructions.
  • A test passes in Chrome but fails elsewhere: Reproduce it in the affected browser, then check for assumptions about browser-specific rendering or behavior. Keep shared tests shared unless a real browser-specific condition warrants a conditional test.
  • CI behaves differently from a local run: Confirm the CI image has the intended browser and version, and that the same test configuration is used. Chrome for Testing can help avoid version drift because its binary does not auto-update.
  • A run appears in the wrong browser group or is not recorded: Check the browser command, group name, and Cypress Cloud recording configuration; the --record --group pattern is for projects configured to record runs.

Or skip the browser setup

For website screenshots rather than Cypress test execution, ScreenshotNeo is a screenshot API and MCP server. A single GET request captures a URL as an image or PDF; it is not a replacement for running Cypress assertions across browsers.

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

See the ScreenshotNeo API documentation for request options. Cookie banners are accepted and removed before capture, along with supported newsletter popups and chat widgets; bot checks, blank pages, failed loads, timeouts, and cache hits are not billed. Its MCP server lets AI agents use screenshot tools, and the free plan includes 1,000 screenshots per month with no card; paid plans start at $5 for 3,000. Sign up for free.

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

Frequently Asked Questions

Can Cypress test Safari?

Cypress’s documented option is experimental WebKit, Safari’s browser engine; it is not the Safari application and does not guarantee Safari-equivalent behavior.

Does Cypress run all tests in every browser automatically?

No. Select a browser for each run with `–browser` and configure the CI matrix that fits your coverage and runtime needs.

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.