React Testing

Testing strategies with RTL and Jest/Vitest.

majiayu000 Updated 567 repo stars

File contents

React Testing

Priority: P2 (MAINTENANCE)

Reliable tests focusing on user behavior.

Implementation Guidelines

  • Tooling: React Testing Library + Vitest.
  • Philosophy: Test behavior, not implementation (State/Internal vars).
  • Queries: getByRole > getByText > getByTestId.
  • Events: Use userEvent (async) over fireEvent.
  • Async: await screen.findBy* for async updates.
  • Mocks: MSW for network. Mock heavy 3rd-party libs.
  • Accessibility: Testing Lib implicitly tests a11y roles.

Anti-Patterns

  • No Shallow Rendering: Render full tree.
  • No Testing Implementation Details: Don't check component.state.
  • No Wait: Use findBy, avoid waitFor if possible.

Code

test('submits form', async () => {
  const user = userEvent.setup();
  render(<LoginForm />);

  await user.type(screen.getByLabelText(/email/i), 'test@test.com');
  await user.click(screen.getByRole('button', { name: /login/i }));

  expect(await screen.findByText(/welcome/i)).toBeInTheDocument();
});

majiayu000/claude-skill-registry-data/tree/main/testing/testing-hoangnguyen0403-agent-skills-standar-6 commit 094ba7b768

Frequently asked questions

npx skillmds@latest add majiayu000/react-testing-4