Testing
Unit, integration, end-to-end, component, and visual testing.
Unit / integration
- ★ Vitest — Vite-native, Jest-compatible API, fast. The default for new TS projects.
- Jest — long-running standard; still huge install base. Vitest reads Jest tests with minimal changes.
- Bun test — built into Bun; very fast for Bun projects.
- node:test — Node's built-in runner; good for libraries that can't depend on a third-party runner.
End-to-end
- ★ Playwright — fastest, most reliable, multi-browser, traces, screenshots, codegen, component testing. Default for new E2E.
- Cypress — still hugely popular; richer dev UI; some teams prefer it for component tests.
- Puppeteer — narrower scope; mostly used for PDFs / scraping now.
- WebdriverIO — when you need real Selenium / Appium / mobile.
Component / Storybook
- ★ Storybook 9 — component workshop + visual regression + interaction tests.
- Ladle — lighter Storybook alternative built on Vite.
- Chromatic — visual regression hosted; free tier.
- Histoire — Vue-first Storybook alternative.
Mocking / fixtures
- ★ MSW (Mock Service Worker) — intercept fetch / XHR; use the same mocks in tests, dev, and Storybook.
- Mirage JS — older alternative.
vitest-mock-extended, Faker.js,@anatine/zod-mock— fixture generation.
React-specific testing
- ★ Testing Library (
@testing-library/react) — encourages user-perspective tests. - happy-dom / jsdom — DOM simulation under Vitest/Jest.
- React Native Testing Library — RN equivalent.
Pick this if…
- Unit / integration: Vitest + Testing Library.
- E2E: Playwright.
- Component workshop: Storybook.
- Mocking network: MSW.
- Visual regression: Chromatic (or Playwright traces + Argos).