Back to BlogQuality & Testing

Migrate Off Selenium to Playwright: A Done-for-You Migration

Rupak Amin

Founder & Lead Engineer, RAITHub

7 min read

RAITHub ships and tests production software. See QA as a Service or talk to us.

A Selenium-to-Playwright migration service rewrites your existing browser tests onto Playwright, phased so coverage is never lost: the old suite keeps running until the new one gates the same journeys. RAITHub maps your Selenium tests, rebuilds them with Playwright's auto-waiting to cut flakiness, wires them into CI, and hands over a suite you own. Scope is quoted after a free 15-minute audit.

If you would rather have it done for you, see how RAITHub would do this below, or go straight to the QA and test automation service.

Why do teams move from Selenium to Playwright?

Selenium is the long-standing, standards-based browser automation project (Selenium documentation). Playwright is Microsoft's newer framework, built with auto-waiting and tracing in the core (Playwright documentation). The move is usually about three things.

Pain with the old suiteWhat Playwright changes
Flaky tests full of explicit waits and sleepsWeb-first assertions auto-wait for the app, so most timing code disappears (Playwright best practices)
Separate WebDriver setup and browser drivers to manageBrowsers and the runner ship together; one install
Hard to see why a test failed in CIBuilt-in traces, screenshots and video replay per failure
Slow, serial runsParallel execution and test isolation by default

This is a migration service, not a tutorial. The judgement of whether to move at all, and what you gain, is what you are buying. If you want to compare Playwright with the other common choice first, read Playwright vs Cypress in 2026.

How does a safe migration work, step by step?

The risk in any migration is a gap where neither suite protects you. The way to avoid it is to run both until the new one is trusted.

  1. Audit and inventory. Every Selenium test is listed with the journey it covers, so nothing is dropped by accident.
  2. Priority order. The journeys that make money or hold data are migrated first, not the easiest tests.
  3. Parallel run. The old suite keeps gating while the Playwright version of each journey is built and proven green.
  4. Flake fix on the way. Explicit sleeps become auto-waiting assertions, and brittle selectors become role- or label-based locators.
  5. Cutover. Once a journey's Playwright test is stable in CI, the Selenium equivalent is retired, one journey at a time.
  6. Handover. The new suite, CI wiring and a short guide land in your repository, with the old suite removed.

A before-and-after shows the shape of the change. An explicit wait in Selenium becomes an auto-waiting assertion in Playwright:

Free checklist

AI-Built App Launch Readiness Checklist

25 checks before you let real users in. Enter your email and we’ll reveal it below (and send you a copy).

One email, the checklist, no spam. By submitting you agree we can email you this checklist and reply to your enquiry.

// Before (Selenium, Java): explicit wait
new WebDriverWait(driver, Duration.ofSeconds(10))
  .until(ExpectedConditions.visibilityOfElementLocated(By.id("payment")));

// After (Playwright): the assertion waits
await expect(page.getByRole('heading', { name: 'Payment' })).toBeVisible()

If flakiness, rather than the framework, is the real problem, read how to fix flaky end-to-end tests first; sometimes the existing suite can be stabilised without a full migration.

What happens to the knowledge locked in the old suite?

A long-lived Selenium suite is more than tests: it is a record of edge cases, odd data states and bugs that someone once decided were worth guarding against. The risk in any migration is throwing that away and quietly losing coverage nobody remembers existed. The inventory step exists to prevent exactly that, by mapping every old test to the journey and assertion it protects before a line is rewritten.

During the parallel-run phase, the old and new tests cover the same journey at once, which doubles as a check: if the Selenium test still catches something the Playwright version misses, that gap is visible immediately, before the old test is retired. Any genuinely obsolete tests, guarding a feature that no longer exists, are flagged for removal rather than migrated, so the new suite is leaner than the old one without losing a single real check. The result is a suite that keeps the hard-won knowledge of the old one in a form your team can actually read and extend.

Is the migration worth it? Buy, keep or rebuild

RouteChoose this whenWatch out for
Keep Selenium as it isThe suite is stable, maintained and nobody is complainingA working suite is not a reason to migrate for its own sake
Migrate it yourselfYour team has Playwright skill and time to run both suitesThe parallel-run phase is where teams underestimate effort
A done-for-you migration (RAITHub)You want the move phased, flakiness cut, and the result in your repositoryAgree the journey priority order before work starts

When should you not migrate?

Do not migrate a Selenium suite that is stable, maintained and trusted; a working gate is worth more than a fashionable one. Do not migrate when the suite is so thin that rewriting it is really writing a new suite; in that case, start fresh with a scoped build rather than a migration. And do not reach for a migration when the real problem is the application code, where every fix breaks something else; that calls for a code rescue diagnostic first. If you want a migrated suite kept current alongside manual, mobile and security testing, that is QA as a service.

How RAITHub would do this

  • Scope: inventory the Selenium suite, map each test to its journey, and agree the priority order for migration.
  • Migrate: rebuild journeys in Playwright with auto-waiting assertions and role-based locators, running the old suite in parallel so coverage never drops.
  • Gate: each migrated journey runs on every pull request in your CI, with traces saved, and blocks the merge once proven stable.
  • Handover: the new suite and CI wiring in your repository, the old suite retired, a short guide, full IP assigned to you and a standard NDA.

Timeline: a migration is phased by journey; the most important journeys are gated first inside a fixed-scope engagement, with the rest following on a monthly plan. You receive: the Playwright suite, CI configuration, a handover document, full IP and an NDA. Proof: RAITHub's own suites are counted in real repositories, from 400+ tests on this website to 1,024 on PropDesk, with no migration case study yet, so judge the service on the free audit. Next step: tell RAITHub about your current suite, then get a written fixed quote. No rates are published.

If your goal is to keep and maintain the Selenium suite rather than leave it, read hire someone to write or maintain Selenium tests.

Frequently asked questions

Will I lose test coverage during the migration?

No. The Selenium suite keeps gating your releases until each journey's Playwright version is proven stable in CI. Journeys are cut over one at a time, so there is no gap where neither suite protects you.

Can you migrate Selenium tests written in Java or Python?

Yes. The migration maps each test to the journey it covers and rebuilds that journey in Playwright, so the source language of the old tests does not block the move.

How much flakiness does moving to Playwright remove?

Most timing-related flakiness, because Playwright's web-first assertions wait for the app rather than a fixed timer. Any test that still flakes after the move is traced to its cause and fixed, not just retried.

Do I have to migrate the whole suite at once?

No. Migration is phased by journey priority, starting with the journeys that make money or hold data, so the highest-value tests move first and the rest follow.

Will the new Playwright suite live in my repository?

Yes. The migrated suite and its CI configuration are committed to your repository, and the IP is assigned to you, so it keeps protecting you after the engagement ends.

What if my Selenium suite is actually fine?

Then keep it. RAITHub will say so in the audit. A stable, maintained Selenium suite is worth more than a migration done for its own sake; the move is only worth it when flakiness or maintenance cost is real.

SeleniumPlaywrighttest migrationflaky teststest automation serviceQA as a service

Ready to discuss your project?

Book a free 15-minute technical audit with our engineering team.