react-testing
Тестирование React-компонентов — Testing Library + Vitest/Jest, поведенческие проверки от лица пользователя, MSW для мокинга сети. Use при написании или ревью тестов фронтенда.
SKILL.mdskills/react-testing/SKILL.md
GitHubНавык: React testing
Поведенческие тесты компонентов на Testing Library + Vitest (или Jest).
Принцип
- Тестируй поведение, а не реализацию: то, что видит и делает пользователь.
- Ищи элементы по доступным ролям/тексту:
getByRole,getByLabelText,findByText; избегай тестовыхdata-testid, где есть роль. - Взаимодействие — через
@testing-library/user-event, а не сырыеfireEvent.
Структура (AAA)
- Arrange (рендер + окружение) → Act (действие пользователя) → Assert (видимый результат).
- Оборачивай в нужные провайдеры (QueryClientProvider, стор, тема) через кастомный
renderWithProviders.
Сеть и данные
- Мокай границу сети через MSW (
msw), а не внутренние модули. - Для Query-компонентов давай свежий
QueryClientна тест (без общего кэша),retry: false.
Асинхронность
await findBy*/await waitFor(...)для асинхронного UI; не тестируй по таймингу.- Проверяй состояния loading/empty/error, а не только happy path.
Пример
test('показывает заказы', async () => {
renderWithProviders(<OrdersList />);
expect(await screen.findByText('Заказ #1')).toBeInTheDocument();
});