Playwright
What is Playwright
Playwright is an end-to-end testing framework by Microsoft. It is Apache-2.0 licensed and currently at version 1.58.x. With ~24.1M weekly npm downloads and ~84.4k GitHub stars, it is the leading E2E testing framework in the Node.js ecosystem, driving Chromium, Firefox, and WebKit with a single API.
Why we recommend it
- True cross-browser testing — a single API drives Chromium, Firefox, and WebKit. Tests run against real browser engines, not simulated environments.
- Auto-wait & web-first assertions — locators automatically wait for elements to become actionable. No manual sleeps or retry wrappers, eliminating a major source of flaky tests.
- Out-of-process architecture — operates outside the browser's event loop, enabling multi-tab, multi-origin, and iframe scenarios that in-process frameworks cannot handle.
- Built-in parallel execution — tests run in isolated browser contexts by default, with native sharding for splitting across CI machines — no paid cloud service required.
- Rich developer tooling — codegen records user actions into test scripts, trace viewer provides a post-mortem timeline with screenshots and network logs, UI mode gives interactive debugging with watch support.
- TypeScript-native — first-class TypeScript support with strongly typed config and assertions, matching the rest of our stack.
- VS Code integration — official extension for running, debugging, and recording tests directly from the editor.
When to use
- End-to-end testing of React + Vite applications — login flows, multi-step forms, full user journeys
- Cross-browser verification — ensure features work in Chromium, Firefox, and WebKit
- CI pipelines — parallel execution with sharding distributes tests across machines for faster feedback
- Visual regression testing — built-in screenshot comparison catches unintended UI changes
- Complex multi-tab, cross-origin, or auth-gated flows — Playwright's architecture handles these natively
- API testing alongside UI tests — built-in
requestcontext for setup, teardown, or standalone API checks
When NOT to use
- Unit and integration tests — use Vitest with React Testing Library instead; E2E tools are too slow and coarse-grained for isolated logic testing
- Projects targeting only Chrome where the team already uses Cypress — if there's no cross-browser or multi-tab requirement, the migration cost may not be justified
- Non-web testing (native mobile, desktop) — Playwright targets web browsers only
- Component-level testing — Playwright's component testing is still experimental; prefer Vitest + React Testing Library for this
caution
Browser binaries are ~500 MB total. In CI, cache ~/.cache/ms-playwright (or the equivalent for your runner) to avoid downloading browsers on every pipeline run. See the official CI guide for caching recipes.
Resources
- Official Playwright docs
- GitHub repository
- VS Code extension — run and debug tests from the editor
- Vitest — unit and integration testing (pairs with Playwright for full test coverage)
- Vite — the build tool for the apps you're testing