Компоненты тестируют как пользователь: найти кнопку по роли и подписи, нажать, проверить видимый результат. Внутреннее состояние и число рендеров не проверяют.
render(<Counter />);
await userEvent.click(screen.getByRole("button", { name: /нажато/i }));
expect(screen.getByRole("button")).toHaveTextContent("Нажато 1");
Что важно знать
- Стек: Vitest (или Jest) + React Testing Library + user-event.
- Сеть — через MSW: те же обработчики работают в тестах и в разработке.
- Компоненты с провайдерами (роутер, кэш запросов, тема) — общая функция
renderWithProviders. - Хуки —
renderHook. - Сквозные сценарии — Playwright.