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.

Romain CochardCEO of Hack'celeration
Updated 20269destinations compared8migration steps2026prices checked

The ranking is editorial: a sponsored placement is always labeled on its card, and no affiliate link changes a score.

The real reasons

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.

9 alternatives

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.

01

Playwright: the default destination

Default pick

Why 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
Read the Playwright docs →
02

WebdriverIO: web and mobile with the same code

Native mobile

Why 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
Visit the WebdriverIO site →
03

Selenium: when your team doesn't write JavaScript

Multi-language

Why 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
Visit the Selenium site →
04

TestCafe: stay in JavaScript, skip the setup

Lightest

Why 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
Visit the TestCafe site →
05

Katalon: a full platform, with or without code

Platform

Why 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
See Katalon pricing →
06

Ghost Inspector: record a flow, replay it every day

No-code

Why 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
See Ghost Inspector pricing →
07

BugBug: the cheapest no-code way to start

Free locally

Why 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
See BugBug pricing →
08

QA Wolf: hand off testing, pay per run

Managed service

Why 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
See QA Wolf pricing →
09

mabl: self-healing tests for larger teams

Enterprise

Why 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
See mabl's plans →
Comparison

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 freeFirst paid tier and migration
CypressStarting pointMIT runner; Cloud Starter: 500 results/mo, 10 usersTeam $799/yr (120,000 results), Business $3,199/yr
PlaywrightDefault pickEverything: runner, parallel, sharding, reportsNone; rewrite with a community converter
WebdriverIONative mobileEverything, mobile and components includedNone (mobile infra extra); same language
SeleniumMulti-languageEverything, Selenium Grid includedNone (Grid to host); rewrite
TestCafeLightestEverything, one npm packageNone; syntax to adapt
KatalonPlatformLocal only, 40 suitesProfessional $1,800/seat/yr; flows rebuilt
Ghost InspectorNo-code14-day trial, no cardStarter $109/mo billed yearly (10,000 runs); re-record
BugBugNo-code, small budgetLocal, 15 tests, 1 userCore $99/mo billed yearly; re-record
QA WolfManaged serviceNone$1 per web run; their team writes the tests
mablEnterprise14-day trial, free local runsQuote 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.

Migration plan

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.

01

Inventory the suite

Day 1

Count 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
02

Pilot with five hard tests

Week 1

Don'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
03

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
04

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
05

Log in once for the whole suite

Quick win

Many 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
06

Run both suites side by side

Critical

Keep 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
07

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
08

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

Migration pitfalls

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
FAQ · 8 questions

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 run without --record sends 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 experimentalWebKitSupport flag runs WebKit, Safari's engine, through the playwright-webkit package. 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.

Hack'celeration Labs

Get the next migration guide in your inbox

One tool to leave, one destination, one migration plan. Nothing else.

No spam. One-click unsubscribe.