Testing Library
Not a runner itself, but the query API (getByRole, getByText) that keeps you testing what a user actually sees instead of implementation details.
What is Testing Library?
Testing Library is a family of DOM-testing utilities (React Testing Library is the most common flavor, but there are versions for Vue, Svelte, Angular, and plain DOM) built around one opinion: tests should interact with your UI the way a real user does, not reach into component internals. Instead of asserting on state or props, you query the rendered output by role, label, or visible text, then fire real events at it. It pairs with a test runner like Vitest or Jest rather than replacing one.
Key features
- Query methods (
getByRole,getByLabelText,getByText) that mirror how a screen reader or a user would actually find something on the page - Built-in nudge toward accessible markup, since queries that rely on roles and labels only work if your HTML is structured accessibly
user-eventcompanion library simulates real browser interaction (typing, clicking, tabbing) more faithfully than firing raw DOM events- Deliberately makes it awkward to test implementation details like internal state or specific class names, which keeps tests resilient to refactors
- Works with any test runner and pairs naturally with Vitest or Jest
Who it's for
Any team writing component or integration tests for a web UI, especially ones that have been burned by brittle tests that broke on every refactor. Not a fit if you specifically need to test internal component logic or state in isolation.
Pricing
Free and open source.