Cypress alternatives: where to go and how to move your tests
Nine destinations, one per reason for leaving, and an eight-step migration plan.
Short answer: Playwright for most teams that write tests in code. It's free, runs in parallel out of the box and covers Chromium, Firefox and WebKit. Pick WebdriverIO if you also ship a native mobile app, Selenium if your team writes Java, Python or C#, and Katalon, Ghost Inspector or BugBug if nobody wants to maintain test code. QA Wolf fits if you'd rather pay per run than hire a QA engineer. One thing to know up front: no tool imports a Cypress suite as is. You rewrite, partly by hand. We compared all nine destinations and read their official pricing pages in 2026.
The ranking is editorial: a sponsored placement is always labeled on its card, and no affiliate link changes a score.
Why Cypress starts to pinch
Day to day, Cypress is pleasant. Its interactive runner, which lets you step back through every command, is often called the best debugger in the category. People leave for other reasons: an architecture that runs your test inside the browser, and a Cypress Cloud bill that grows with your suite. Here are six reasons, each one checked against Cypress's own docs or against teams that moved.
One tab, one origin, one browser
Cypress's docs list these as "permanent trade-offs": it can't drive more than one browser at a time, and each test is bound to a single superdomain (you need cy.origin() to leave it). Multiple tabs only work through the @cypress/puppeteer plugin. A chat app that needs two logged-in users, or a checkout that redirects to a payment provider, quickly turns into workarounds. One team described a nine-step login and logout dance just to fake two people in a chat.
JavaScript only, by design
Because the test runs in the browser, Cypress speaks the browser's language. The docs say plainly that JavaScript is the only language it will ever support. If your backend developers write Python or Java and want to add tests, they have to switch to TypeScript first. Playwright supports Node.js, Python, Java and .NET; Selenium adds C#, Ruby and Kotlin.
Safari is still experimental
Cypress runs Chrome-family browsers (Chrome, Chromium, Edge) and Firefox. WebKit, the engine behind Safari, sits behind an experimental flag (experimentalWebKitSupport, added in 10.8) that relies on the playwright-webkit package. The docs warn that experimental features can change or be removed. If a big share of your users are on iPhones and Macs, that's a real gap.
Cloud billing counts every it()
The runner is free and MIT-licensed, but recording results goes through Cypress Cloud. Every passed or failed it() counts as one test result. The free Starter plan includes 500 a month, so a 100-test suite run six times a month is already over. At the limit, parallelization switches off and new results are hidden until the next cycle. Team costs $799 a year for 120,000 results, Business $3,199 a year, and flake detection only starts on Team.
Third-party dashboards blocked since v13
In 2023, starting with version 13, Cypress blocked recording to Sorry Cypress and Currents, two alternatives to its Cloud. Currents now supports Cypress only up to 12.17.4. One team that hit the block built its own reporting tool and says its monthly reporting bill dropped from $405 to $90. For a lot of teams, that was the moment trust broke.
Big suites get slow and brittle
Field reports mention browsers crashing between tests and chained commands making tests flaky, since only queries are retried, not actions. One team says a suite went from 2 hours 27 minutes to 16 minutes after moving, mostly thanks to parallel runs and sharding. That's one team's number, not a benchmark: your suite may gain far less.
You're leaving because… go to…
The right Cypress alternative depends on what's pushing you out. Usually only one row applies. Each card jumps to the full write-up below.
Parallel by default, free sharding, merged reports with no paid service.
You need to cover a native mobile appWebdriverIOiOS, Android and Flutter with the same syntax as web tests.
Your team writes Java, Python or C#SeleniumSix languages and a Grid to spread runs across machines.
You want to stay in JavaScript with minimal setupTestCafeOne npm package, multiple windows on Chrome and Firefox.
Nobody wants to maintain test codeGhost Inspector or BugBugRecord a flow in the browser, the tool replays it.
You have no QA engineer to hireQA WolfThey write and fix the tests, you pay per run.
Cypress alternatives, tool by tool
For each tool: why move there, who it's for, its catch, how to migrate from Cypress, and what it costs. Prices come from the official pricing pages in 2026, in US dollars.
The tools
Playwright: the default destination
Default pickWhy move to Playwright. It fixes Cypress's three big complaints at once. It drives Chromium, Firefox and WebKit on Windows, Linux and macOS, handles multiple tabs and origins in a single test, and runs tests in parallel by default. Splitting a suite across CI machines (--shard=1/4, --shard=2/4…) is free, and npx playwright merge-reports stitches the results into one HTML report. What Cypress Cloud charges for ships in the open-source package (Apache-2.0, about 99k GitHub stars).
Who it's for. Developer teams in TypeScript, and just as well Python, Java or .NET, who want one test codebase for every browser.
Who it's not for. A team with no developers, or one that mainly loves Cypress's interactive runner. Playwright's UI mode gets close, but it doesn't feel the same.
The catch. Tests run in Node.js, outside the browser, so you write await everywhere and waiting works a little differently. The old experimental component testing packages (React, Vue) have been removed, so if you lean on Cypress component tests, read Playwright's guide before you move. Sharding only splits tests that can run in parallel: tests sharing one demo account need to be separated first.
How to migrate. There's no official converter. Community converters handle the bulk and flag what they can't translate (one team saw unconverted calls prefixed with FIXME_). Basic mappings: cy.get() becomes page.locator(), cy.intercept() becomes page.route(), and cy.session() becomes a saved login state (storageState). Tip: log in once in a global setup project instead of logging in for every test, which a lot of Cypress suites do. It's usually the first speed win.
- Price
- free, open source
- Browsers
- Chromium, Firefox, WebKit
- Languages
- JS/TS, Python, Java, .NET
- Catch
- no official converter
WebdriverIO: web and mobile with the same code
Native mobileWhy move to WebdriverIO. It's the JavaScript option that reaches furthest beyond the browser. It's built on the WebDriver and WebDriver BiDi standards, drives Chrome, Firefox, Safari and Edge, and also covers native and hybrid iOS, Android and Flutter apps. Component tests run in a real browser, with Testing Library for React, Preact, Svelte or Vue. The project is open source (MIT) and says every feature is free.
Who it's for. Teams with a web app and a mobile app that want one way to write tests.
Who it's not for. A small team testing a single web app. Setup is heavier than Playwright, with more choices to make (framework, services, reporters).
The catch. Native mobile means running the mobile environment next to it: emulators, real devices or a cloud device farm. The code is free, the infrastructure isn't.
How to migrate. Coming from Cypress feels natural: same language, similar selector logic, expect-style assertions. Start with the setup wizard (npm init wdio@latest), keep Mocha, the default, so you get the familiar describe and it blocks, then move file by file.
- Price
- free, open source
- Mobile
- iOS, Android, Flutter
- Protocols
- WebDriver and BiDi
- Catch
- heavier setup
Selenium: when your team doesn't write JavaScript
Multi-languageWhy move to Selenium. It's the veteran, and still the one that covers six languages: Java, Python, C#, Ruby, JavaScript and Kotlin. If your QA team writes Java with JUnit, or your developers write Python with pytest, Selenium saves them from learning a new language. Selenium Grid spreads tests across machines and browsers from one hub. Apache-2.0 license.
Who it's for. Large multi-language QA teams, and companies that already run a Grid or pay for a browser cloud.
Who it's not for. A front-end team used to Cypress's comfort. Selenium doesn't wait for elements on its own, so you handle waits yourself.
The catch. More code for the same test, and flaky tests if waits are sloppy. You host and maintain the Grid, or you pay someone to.
How to migrate. It's a full rewrite, since the language often changes. Set up a Page Object Model and explicit waits from day one. Our switch from Selenium page covers the reverse trip, which is handy for seeing what makes teams leave.
- Price
- free, open source
- Languages
- Java, Python, C#, Ruby, JS, Kotlin
- Scale-out
- Selenium Grid
- Catch
- you manage waits
TestCafe: stay in JavaScript, skip the setup
LightestWhy move to TestCafe. It installs as a single npm package (npm i -g testcafe) and launches common browsers with no extra setup: Chrome, Firefox, Safari, Edge and Opera. It can open and switch between browser windows in a test, which Cypress can't do without a plugin (on local Chrome and Firefox only, not remote browsers). Tests are JavaScript or TypeScript, and DevExpress publishes it as open source (MIT).
Who it's for. A small JavaScript team that wants out of Cypress fast without learning a bigger tool.
Who it's not for. A team that wants the tool the community is betting on. TestCafe has about 9,900 GitHub stars, a tenth of Playwright's, so there are fewer ready-made answers.
The catch. A smaller ecosystem (plugins, examples, job listings) and no native mobile.
How to migrate. Syntax changes (t.click() instead of cy.get().click(), selectors through Selector()), but the logic stays the same. Port your five most critical flows first and judge the tool on your own app before converting the rest.
- Price
- free, open source
- Install
- one npm package
- Browsers
- Chrome, Firefox, Safari, Edge, Opera
- Catch
- smaller community
Katalon: a full platform, with or without code
PlatformWhy move to Katalon. Katalon covers web, mobile, API and desktop in one tool, with a recorder for testers who don't code and a scripting mode for those who do. For a mixed QA team, that's one tool instead of three.
Who it's for. QA teams mixing manual testers and automation engineers that want reporting and test management in one place.
Who it's not for. A developer team that wants tests in the repo, reviewed in pull requests like everything else.
The catch. The free plan runs locally only, up to 40 suites, with no parallel or CI runs. CI needs Professional at $1,800 per seat per year, about $150 a month per person. A five-person team pays $9,000 a year.
How to migrate. No Cypress import: you rebuild flows with the recorder or in script. Use the 30-day trial to rebuild your ten critical flows and see whether the team actually adopts it.
- Free
- local, up to 40 suites
- Paid
- Professional $1,800/seat/yr
- Covers
- web, mobile, API, desktop
- Catch
- CI only on paid
Ghost Inspector: record a flow, replay it every day
No-codeWhy move to Ghost Inspector. You record a flow in your browser (sign-up, add to cart, checkout) and Ghost Inspector replays it in its cloud on a schedule or after every deploy. No CI to build, no browsers to install. For a product or marketing team that wants to know a form broke before customers do, it's the shortest path.
Who it's for. Teams without a dedicated test engineer, and agencies monitoring client sites.
Who it's not for. Teams that want tests versioned with the code, or complex cases (generated data, API calls). The recorder hits its limits fast.
The catch. Price. Starter is $125 a month, or $109 a month billed annually ($1,308 a year), for 10,000 test runs a month. Growth is $249 ($225 annually) for 30,000. One run is one test executed once: 30 tests run ten times a day burn 9,000 runs a month.
How to migrate. No Cypress import. Re-record your critical flows one by one during the 14-day trial, which needs no credit card and unlocks every Scale plan feature.
- Trial
- 14 days, no card
- Paid
- Starter $109/mo billed yearly
- Included
- 10,000 runs/mo
- Catch
- complex cases are hard
BugBug: the cheapest no-code way to start
Free locallyWhy move to BugBug. Same idea as Ghost Inspector (record, then replay), with a free plan that allows unlimited local runs. For a small team that wants its key flows covered with no budget, it's a solid starting point.
Who it's for. Startups, small product teams and founders who want a safety net before each release.
Who it's not for. A suite of several hundred tests, or heavy cross-browser coverage.
The catch. Free runs locally only: one user, one project, 15 tests, 4 suites, 7 days of history. Cloud runs start with Core at $99 a month billed annually, then Pro at $189 a month billed annually. Each extra parallel run costs $80 a month.
How to migrate. Re-record your 15 most important flows on the free plan. If the team really uses it after a month, move to Core to run them in the cloud after every deploy.
- Free
- local, 15 tests, 1 user
- Paid
- Core $99/mo billed yearly
- Extra parallel
- $80/mo
- Catch
- not for big suites
QA Wolf: hand off testing, pay per run
Managed serviceWhy move to QA Wolf. It's not a framework, it's a service. Their team writes your tests, runs them, fixes the ones that break and files bug tickets in Linear or Jira. Tests are written in standard Playwright and are exportable, so if you leave, you keep the code.
Who it's for. A product team with no QA and no plan to hire one, or whose Cypress suite has been left to rot.
Who it's not for. Teams that want control over every test, or tight budgets, since every run is billed.
The catch. Cost scales with frequency. QA Wolf charges $1 per web test run (Chrome, Firefox, WebKit) and $2 for mobile or desktop, with up to 5 minutes per test and 3 attempts included. Their own example: 50 web tests run once every business day, 260 days a year, cost $13,000 a year, about $1,083 a month. Run them on every pull request and the bill climbs with it.
How to migrate. Give them access to your app and your list of critical flows. Your Cypress suite becomes the spec: each test is a flow to cover. Keep it running until their coverage catches up with yours.
- Price
- $1 per web run
- Mobile, desktop
- $2 per run
- Tests
- Playwright, exportable
- Catch
- cost follows frequency
mabl: self-healing tests for larger teams
EnterpriseWhy move to mabl. mabl covers web and mobile UI tests, APIs, performance and accessibility in one tool, with AI agents that keep tests current as the UI changes (mabl calls it auto-healing). Local runs are free; cloud runs use credits.
Who it's for. Companies that want one testing platform across several teams, with a sales contact.
Who it's not for. A startup that wants to see a price before talking to anyone.
The catch. No published prices: everything goes through a quote. The starting allotment includes 500 credits a month for cloud runs, shared across every test type. Ask how many credits one web test uses, or you won't be able to compare with Cypress Cloud.
How to migrate. Rebuild your flows during the 14-day free trial, starting with the ones that break most often in Cypress. That's where auto-healing proves itself.
- Trial
- 14 days
- Price
- quote only
- Credits
- 500/mo to start
- Catch
- no public price
Cypress and 9 alternatives side by side
Our default pick: Playwright for teams that code, Ghost Inspector or BugBug for teams that don't. For scale, take a 200-test suite run twice every workday, roughly 8,800 results a month. Cypress Cloud's free tier stops at 500, so you need Team ($799 a year), and its 120,000 yearly results barely cover that pace (about 105,000 a year). With Playwright, sharding only costs your CI minutes. At QA Wolf, the same 8,800 web runs come to about $8,800 a month, but you never write or fix a test.
| What's free | First paid tier and migration | |
|---|---|---|
| CypressStarting point | MIT runner; Cloud Starter: 500 results/mo, 10 users | Team $799/yr (120,000 results), Business $3,199/yr |
| PlaywrightDefault pick | Everything: runner, parallel, sharding, reports | None; rewrite with a community converter |
| WebdriverIONative mobile | Everything, mobile and components included | None (mobile infra extra); same language |
| SeleniumMulti-language | Everything, Selenium Grid included | None (Grid to host); rewrite |
| TestCafeLightest | Everything, one npm package | None; syntax to adapt |
| KatalonPlatform | Local only, 40 suites | Professional $1,800/seat/yr; flows rebuilt |
| Ghost InspectorNo-code | 14-day trial, no card | Starter $109/mo billed yearly (10,000 runs); re-record |
| BugBugNo-code, small budget | Local, 15 tests, 1 user | Core $99/mo billed yearly; re-record |
| QA WolfManaged service | None | $1 per web run; their team writes the tests |
| mablEnterprise | 14-day trial, free local runs | Quote only (500 cloud credits/mo to start) |
Prices exclude tax, in US dollars, read from official pricing pages in 2026, and can change. Always check against your own test volume.
Move off Cypress in eight steps
Order matters. A botched test migration means weeks of red CI and a team that ends up skipping tests. These steps apply to Playwright, WebdriverIO or TestCafe; for a no-code tool, keep steps 1, 2, 7 and 8.
The steps
Inventory the suite
Day 1Count your spec files, custom commands (Cypress.Commands.add), cy.task calls, plugins and network intercepts. Also list what depends on Cypress Cloud: dashboard, flake detection, automatic Jira tickets.
Why? The tests themselves convert fairly well. Custom commands, cy.task (the bridge between the browser and Node.js) and plugins are where the time goes.
- Time
- half a day
- Risk if rushed
- a forgotten plugin
Pilot with five hard tests
Week 1Don't start with the easy ones. Pick the five hardest: the one that crosses origins, the one inside an iframe, the flakiest, the one that uploads a file. If the destination handles those, the rest will follow.
This is also when you measure run time and failure rate, before and after, on the same CI.
- Time
- a few days
- Measure
- duration and failure rate
Convert the bulk of the suite
Run a community converter over the whole suite to get a baseline, then fix by hand whatever it flagged. Field reports vary a lot: one team moved a small suite in a few hours, another moved 200+ tests in about two weeks.
Remove fixed waits (cy.wait(100)) as you go. Playwright already waits for elements to be ready, so those pauses only slow you down.
- Mapping
- cy.get → page.locator
- Network
- cy.intercept → page.route
Turn custom commands into functions
Cypress custom commands have no direct equivalent. In Playwright they become helper functions, page objects or fixtures (things set up before each test). cy.task goes away: the test already runs in Node.js, so it can call your database directly.
Standardize selectors while you're at it: one attribute (data-testid) or accessibility roles.
- Risk if rushed
- duplicated code everywhere
Log in once for the whole suite
Quick winMany Cypress suites log in on every test. In Playwright, log in once in a setup project, save the state (storageState) and reuse it everywhere. On a suite of a few hundred tests, that cuts minutes off every run before any other tuning.
- Gain
- minutes per run
Run both suites side by side
CriticalKeep Cypress in CI until the new suite covers everything. Stop writing new Cypress tests the day migration starts, and disable each Cypress spec once its migrated version is validated, so you don't pay twice for the same results in Cypress Cloud.
Don't delete the Cypress files right away: they're your reference when a migrated test behaves differently.
- Time
- a few weeks
- Risk if rushed
- coverage gaps
Wire CI: parallel, sharding, reports
Turn on fullyParallel, split the suite across jobs with --shard, use the blob reporter on each job, then merge them with merge-reports into one HTML report. Keep traces (a recording of every step) only on first retry, or your CI storage will balloon.
- Command
- npx playwright test --shard=1/4
- Cost
- your CI minutes
Shut down Cypress Cloud at the right time
Once the new suite has been stable for two to four weeks, pull Cypress out of CI, then drop Cypress Cloud to the free Starter plan instead of closing the account: history stays visible for 30 days. Export what you need first (test durations, flakiest specs).
- Before
- 2 to 4 stable weeks
- Starter history
- 30 days
Is your tool missing from this page? Email us: hello@hackceleration.com
What makes a Cypress migration fail
The same mistakes show up again and again in write-ups from teams that left Cypress. None of them is a tooling problem. They're planning choices, and each one costs weeks.
Leaving over a problem that will follow you
Flaky tests often come from shared test data, fixed waits or an undersized CI runner. Those flaws migrate with the suite. Before you leave, look at your five flakiest tests: if the cause is in the test, fix that first.
Rewriting everything in one go
A big-bang migration leaves the team without a safety net for weeks. Go file by file, keep both suites running, and start with the hardest tests.
Copying bad habits across
Line-by-line conversion keeps fixed cy.wait() calls, per-test logins and brittle selectors. Strip them out during the move. That's where most of the speed gain comes from.
Forgetting component tests
If you run component tests in Cypress, check the destination before you move. Playwright removed its old experimental component packages; WebdriverIO runs component tests in a real browser. Or keep Cypress for components and move only end-to-end.
Counting the tool's price, not the team's time
Playwright is free, but migrating 500 tests takes weeks of work. A service like QA Wolf costs a lot per run but removes writing and fixing tests. Compare the full yearly cost, time included. Our switch from Playwright and switch from BrowserStack pages show the other side of these trade-offs.
Shutting off Cypress Cloud too early
Flake history and durations help you balance the new suite. Drop to the free Starter plan instead of closing the account, and export what matters first.
- Custom commands, cy.task, plugins and Cloud dependencies inventoried
- Five hard tests piloted, duration measured before and after
- No new tests written in Cypress
- Custom commands rewritten as functions or fixtures
- Login done once and reused
- Fixed waits removed
- Cypress specs disabled as they're migrated
- CI running in parallel, reports merged
- New suite stable for two to four weeks
- Cypress Cloud dropped to free, history exported
Cypress alternatives: frequently asked questions
Is Playwright better than Cypress?
For most new suites, yes: more browsers (WebKit included), more languages, and free parallel runs and sharding. Cypress is still a good fit for a single-origin app owned by a front-end team that loves its interactive runner. If you're torn, port five hard tests to each and compare.
Is Cypress still free?
The runner is: it's open source under MIT, and
cypress runwithout--recordsends nothing to Cypress Cloud. Recording results is what you pay for past 500 a month: Team at $799 a year, Business at $3,199 a year.Can I run Cypress in parallel without paying for Cypress Cloud?
Yes, by splitting spec files across CI jobs yourself with a community tool like cypress-split. You lose the dashboard and duration-based balancing. Third-party services like Currents only support Cypress up to 12.17.4 since the v13 block.
Does Cypress support Safari?
Only experimentally. The
experimentalWebKitSupportflag runs WebKit, Safari's engine, through theplaywright-webkitpackage. If Safari matters to your traffic, Playwright, WebdriverIO, Selenium and TestCafe cover it as standard.How long does a Cypress to Playwright migration take?
It depends mostly on your custom commands. Teams report a few hours for a small suite and about two weeks for 200+ tests. Add two to four weeks of running both suites before you turn Cypress off.
Is there a no-code alternative to Cypress?
Yes: Ghost Inspector, BugBug and Katalon record a flow in the browser and replay it; mabl adds self-healing tests, priced on quote. BugBug has a free local plan; Ghost Inspector starts at $109 a month billed annually. The downside: tests are harder to version and review in pull requests.
Can I write Cypress tests in Python?
No. Cypress supports JavaScript and TypeScript only, and its docs say that won't change. A Python team should look at Playwright (official Python library) or Selenium with pytest.
Should I keep Cypress for component testing?
It's a reasonable call. Cypress component testing is mature, and Playwright removed its old experimental packages. Plenty of teams migrate end-to-end only and keep Cypress, without the Cloud, for components. For API tests, see our switch from Postman page.
Get the next migration guide in your inbox
One tool to leave, one destination, one migration plan. Nothing else.