Run Cypress once for each installed browser with npx cypress run --browser <browser>. Cypress supports Chrome-family browsers, Firefox, and experimental WebKit; WebKit is not the Safari application. For continuous integration (CI), install the browsers in the job environment and choose full-suite or risk-focused coverage for each browser based on your product’s support commitments and available run time.
Which browsers can Cypress test?
Cypress documents support for Chrome-family browsers—including Chrome, Chromium, and Microsoft Edge—and Firefox. It also offers experimental support for WebKit, the browser engine used by Safari. A browser must be installed on the machine where Cypress runs.
As an Amazon Associate I earn from qualifying purchases.
| Browser family or option | What to know |
|---|---|
| Chrome | Supported. Cypress recommends Chrome for Testing when you need a versioned browser binary that does not auto-update. |
| Chromium | Supported; Cypress can use a detected installation or a specified binary path. |
| Microsoft Edge | Supported. Cypress’s documented official support policy covers the latest three major versions of Edge. |
| Firefox | Supported. Cypress’s documented official support policy covers the latest three major versions. Its browser reference currently says it cannot launch Firefox earlier than version 140 because older releases have incomplete WebDriver BiDi implementations; check the current reference before pinning a version. |
| WebKit | Experimental. This tests the WebKit engine, not Safari itself. It requires enabling the experimental integration and installing Playwright’s WebKit browser. Linux may need additional dependencies. |
| Electron | Cypress marks Electron as deprecated as a test browser and says it will be removed in a future Cypress version. Prefer explicitly selecting Chrome or another installed browser. |
Support details can change. Consult the Cypress browser launch reference for the current version policy, detected browsers, and WebKit limitations. In particular, Cypress documents that WebKit does not support cy.origin() or Test Replay and may differ in other ways. A WebKit pass is useful engine coverage, but it is not proof of full Safari equivalence.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Run the same tests in multiple browsers locally
Install the browsers you want to test, then run Cypress separately for each one. These commands use the standard identifiers:
#1 Best Overall
npx cypress run --browser chrome
npx cypress run --browser firefox
npx cypress run --browser edge
Use chromium for a Chromium installation. Cypress also documents browser channel variants such as beta, canary, and developer builds for several browser families. The selected browser must be available on the machine running the command. See the Cypress CLI reference for the --browser option.
When Cypress does not detect a browser
If you have a custom or portable browser installation, pass the path to its executable instead of an identifier. For example, on a Linux system where Chromium is at /usr/bin/chromium:
npx cypress open --browser /usr/bin/chromium
Use the corresponding binary path for your operating system and installation. For a test run rather than the interactive runner, use npx cypress run --browser /path/to/browser.
The Tool Desk
Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →Use the interactive runner or see the browser
Start Cypress with npx cypress open and choose a detected browser from the browser dropdown. For headed command-line debugging, add --headed, for example npx cypress run --browser chrome --headed. Command-line runs are headless by default. Cypress launches a separate testing profile, so it does not reuse your regular browsing cookies, history, or extensions.
Add convenient project scripts
For repeated runs, define aliases in 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 run one with your package manager, such as npm run cy:run:firefox. Add only the browsers your project actually provisions.
Enable experimental WebKit testing
WebKit coverage takes extra setup and has documented differences from other Cypress browsers. Install the playwright-webkit package, enable the experimental flag in the Cypress configuration, and then select WebKit when launching the tests.
Rank #2
-
Install the browser package as a development dependency:
npm install --save-dev playwright-webkit.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. -
In
cypress.config.js, enable WebKit:const { defineConfig } = require('cypress') module.exports = defineConfig({ experimentalWebKitSupport: true, e2e: { setupNodeEvents(on, config) { // Register any project-specific Node event listeners here. return config } } }) -
Run the suite using the WebKit browser identifier recognized by your Cypress installation, for example
npx cypress run --browser webkit. If it is not detected, check the current Cypress WebKit setup instructions and your installed package.
On Linux, missing system libraries can prevent WebKit from launching. Install the dependencies required by the current Cypress and Playwright instructions for your distribution. Before making WebKit a release gate, review Cypress’s documented limitations, including the lack of cy.origin() and Test Replay support.
Choose a practical CI browser matrix
Multi-browser CI is a trade-off among confidence, elapsed test time, and infrastructure capacity. Cypress’s cross-browser guide gives one useful pattern: run the full suite in Chrome and a critical-path subset in Firefox. That is an example, not a universal Cypress requirement.
Start with browser coverage that matches your support promise
-
List the browsers and versions your product commits to support.
Recommended Free Tools
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy. -
Provision those browsers in CI, or use a maintained Cypress Docker image that includes the browsers you need. Verify the image’s browser contents rather than assuming every image includes every browser.
-
Run the broad suite in the browser that gives your team the most useful regular feedback.
-
Run critical user flows in additional supported browsers. Expand to the full suite where browser-specific risk, release policy, or observed defects justify the extra time and capacity.
-
Align browser versions and operating-system coverage with the environments you claim to support. Consider a pinned Chrome for Testing binary when reproducibility matters.
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Cypress’s cross-browser testing guide shows browser-specific groups recorded to Cypress Cloud. If your project records runs there, you can name groups so results are distinguishable:
npx cypress run --browser chrome --record --group "Chrome full suite"
npx cypress run --browser firefox --record --group "Firefox critical path"
Recording requires a configured Cypress Cloud project and its recording key. Without that setup, omit --record and --group. Cypress’s CircleCI guide describes provisioning browsers and geckodriver in a CI environment; its Real World App example also illustrates parallel execution across machines, browsers, device sizes, and operating systems.
Keep shared tests shared; isolate real browser differences
Most application behavior should be covered by the same tests across browsers. Avoid duplicating entire suites just to select another browser: run the shared tests once per browser, and add browser-specific handling only when a real behavior or capability requires it.
Rank #4
Cypress supports browser-specific test or suite configuration to include or exclude tests for selected browsers. You can also use Cypress.isBrowser() to branch on the browser when needed. See the cross-browser guide and the Cypress.isBrowser API reference for the documented options.
Do these 3 things before closing this tab:
1Clear out junk files and repair common Windows errors2Scan for outdated or missing drivers - takes under a minute3Repair Windows errors before they cause bigger problemsChange launch settings only for a concrete need
For lower-level setup, register before:browser:launch from setupNodeEvents. Cypress allows the hook to modify launch arguments, preferences, environment, or extensions. For example, the shape of a configuration hook is:
const { defineConfig } = require('cypress')
module.exports = defineConfig({
e2e: {
setupNodeEvents(on, config) {
on('before:browser:launch', (browser, launchOptions) => {
// Add a launch argument only when your test environment requires it.
return launchOptions
})
return config
}
}
})
Do not add browser flags speculatively; they can change behavior and make runs harder to reproduce. See the browser launch API reference for the hook’s supported controls.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Troubleshoot common cross-browser run failures
-
“Browser not detected” or launch fails: The browser may not be installed in the current environment, may not be in Cypress’s detection paths, or may use a custom location. Install it in the local or CI job environment, or provide its executable path with
--browser. -
Firefox fails to launch: Check the installed version. Cypress’s browser reference currently sets a floor of Firefox 140 because earlier releases lack complete WebDriver BiDi support. Check the live reference if your pinned version is older.
Quick wins for a faster PC:
Repair Windows errors before they cause bigger problemsFix Now →Scan for outdated or missing drivers - takes under a minuteDriver Scan →Clear out junk files and repair common Windows errorsFree Scan →Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy. -
WebKit will not start: Confirm that
experimentalWebKitSupport: trueis set,playwright-webkitis installed, and required Linux dependencies are present. Then check Cypress’s current WebKit setup guidance for version-specific requirements. -
A WebKit test behaves differently or an API is unavailable: Check Cypress’s documented WebKit limitations before treating this as an application regression. WebKit support is experimental and does not imply Safari-app parity.
-
Local and CI results differ: Compare the installed browser version and operating system, and confirm both environments are using the intended browser rather than an automatically updated installation. A versioned Chrome for Testing binary can improve browser-version reproducibility.
-
CI takes too long: Measure the cost of the matrix against the confidence it adds. A full suite in one browser with critical-path tests in others is a documented Cypress example; expand browser coverage selectively as product risk warrants.
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy. -
A Cypress command fails with an unknown browser option: Verify the browser identifier against the browser list detected by Cypress and the current CLI documentation. Use a binary path for an installation Cypress does not recognize by name.
Or skip the browser setup
If your goal is to capture a website rather than test your application in real browser engines, ScreenshotNeo is a website screenshot API and MCP server. One GET request returns a PNG, JPEG, WebP, or PDF. For example, with cURL:
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 parameters. It accepts cookie or consent banners as a visitor and removes 60+ known consent platforms, newsletter popups, and chat widgets before capture; each step can be disabled. Bot checks, blank pages, failed loads, timeouts, and cache hits cost nothing, and response headers report the page verdict and billing status. Its MCP server offers take_screenshot, get_page_info, and capture_pdf for Claude, Cursor, and other MCP clients. The free plan includes 1,000 screenshots per month with no card; paid plans start at $5 for 3,000.
Sign up for ScreenshotNeo’s free plan.
Frequently Asked Questions
Does Cypress test Safari?
Cypress offers experimental WebKit-engine testing, not testing in the Safari application. WebKit coverage should not be treated as full Safari equivalence.
Can I run Chrome, Firefox, and Edge tests in one Cypress command?
The documented approach is to invoke Cypress once per browser, using a separate --browser selection for each run.
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.




