Testing Library for React 19 - render, screen, userEvent, waitFor, Suspense. Use when writing tests for React components with Vitest.
From fuse-reactnpx claudepluginhub fusengine/agents --plugin fuse-reactThis skill uses the workspace's default tool permissions.
references/accessibility-testing.mdreferences/async-testing.mdreferences/hooks-testing.mdreferences/installation.mdreferences/mocking-patterns.mdreferences/msw-setup.mdreferences/queries.mdreferences/react-19-hooks.mdreferences/templates/accessibility-audit.mdreferences/templates/api-integration.mdreferences/templates/basic-setup.mdreferences/templates/component-async.mdreferences/templates/component-basic.mdreferences/templates/error-boundary.mdreferences/templates/form-testing.mdreferences/templates/hook-basic.mdreferences/templates/suspense-testing.mdreferences/user-events.mdreferences/vitest-config.mdProvides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
Builds 3-5 year financial models for startups with cohort revenue projections, cost structures, cash flow, headcount plans, burn rate, runway, and scenario analysis.
Test React components the way users interact with them.
Before ANY implementation, use TeamCreate to spawn 3 agents:
After implementation, run fuse-ai-pilot:sniper for validation.
| Feature | Benefit |
|---|---|
| User-centric | Tests what users see |
| Accessible queries | Encourages a11y markup |
| No implementation details | Resilient to refactoring |
| Vitest integration | 10-20x faster than Jest |
getByRole is most accessiblesetTimeout| Topic | Reference |
|---|---|
| Setup & installation | references/installation.md |
| Query priority | references/queries.md |
| User interactions | references/user-events.md |
| Async patterns | references/async-testing.md |
| API mocking | references/msw-setup.md |
| React 19 hooks | references/react-19-hooks.md |
| Accessibility | references/accessibility-testing.md |
| Custom hooks | references/hooks-testing.md |
| Vitest config | references/vitest-config.md |
| Mocking patterns | references/mocking-patterns.md |
| Template | Use Case |
|---|---|
templates/basic-setup.md | Vitest + RTL + MSW config |
templates/component-basic.md | Simple component tests |
templates/component-async.md | Loading/error/success |
templates/form-testing.md | Forms + useActionState |
templates/hook-basic.md | Custom hook tests |
templates/api-integration.md | MSW integration tests |
templates/suspense-testing.md | Suspense + use() |
templates/error-boundary.md | Error boundary tests |
templates/accessibility-audit.md | axe-core a11y audit |
| Pattern | Reason | Alternative |
|---|---|---|
fireEvent | Not realistic | userEvent |
setTimeout | Flaky | waitFor, findBy |
getByTestId first | Not accessible | getByRole |
| Direct fetch mocking | Hard to maintain | MSW |
Empty waitFor | No assertion | Add expect() |
npm install -D vitest @testing-library/react \
@testing-library/user-event @testing-library/jest-dom \
jsdom msw
→ See templates/basic-setup.md for complete configuration
import { render, screen } from '@testing-library/react'
import userEvent from '@testing-library/user-event'
test('button click works', async () => {
const user = userEvent.setup()
render(<Button onClick={fn}>Click</Button>)
await user.click(screen.getByRole('button'))
expect(fn).toHaveBeenCalled()
})
→ See templates/component-basic.md for more examples
getByRole - Buttons, headings, inputsgetByLabelText - Form inputsgetByText - Static textgetByTestId - Last resort// Preferred: findBy
await screen.findByText('Loaded')
// Alternative: waitFor
await waitFor(() => expect(...).toBeInTheDocument())
→ See templates/component-async.md
const user = userEvent.setup()
await user.click(button)
await user.type(input, 'text')
→ See references/user-events.md