## TL;DR

Migrate incrementally, not in one big rewrite. Run Cypress and Playwright side by side in CI, write all new tests in Playwright, and migrate existing suites one at a time starting with the most valuable or most flaky. Build a thin helper layer (login, seeding, common assertions) in Playwright first so migrated tests read naturally instead of being line-for-line Cypress translations. Delete the Cypress version of a suite only after its Playwright replacement is green for a few weeks.

## The query

```text
how to migrate from cypress to playwright incrementally
```

## Use this when

- Moving an existing Cypress suite to Playwright.
- You cannot afford a testing freeze during migration.

## Not for

- Greenfield Playwright projects.
- Migrating away from Playwright.

## Steps

1. Set up Playwright alongside Cypress in CI with its own job. Expected output: both frameworks run, CI stays green.
2. Build shared Playwright helpers: login, data seeding, custom assertions. Expected output: a small helper library new tests use.
3. Write all new tests in Playwright; stop adding to the Cypress suite. Expected output: the Cypress suite stops growing.
4. Migrate suites one at a time, most valuable first, and run both versions in parallel for two weeks. Expected output: each migrated suite is proven before the old one is deleted.
5. Delete migrated Cypress specs and, at the end, the Cypress setup itself. Expected output: one framework, no leftovers.

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst_jSMkDt6nSq9Zz9XkVf5iKQ
