Ответ
Для тестирования фронтенда применяю следующий стек инструментов, соответствующий современным best practices:
Модульное и компонентное тестирование:
- Jest — основной фреймворк для модульного тестирования JavaScript/TypeScript кода.
- React Testing Library — для тестирования React-компонентов с фокусом на поведении, а не реализации.
Интеграционное и E2E-тестирование:
- Cypress — для быстрых и стабильных E2E-тестов с удобным отладчиком.
- Playwright — для кросс-браузерной автоматизации и тестирования сложных сценариев (мультитабы, файлы, сети).
Дополнительные инструменты:
- Selenium WebDriver — для legacy-проектов или специфичных кросс-браузерных задач.
- Postman / Swagger — для тестирования API, от которых зависит фронтенд.
- Lighthouse CI — для интеграции аудитов производительности, доступности и SEO в CI/CD.
- ESLint / Prettier — для статического анализа и поддержания качества кода.
- Chrome DevTools — для отладки, анализа производительности и проверки манипуляций с DOM.
Пример модульного теста на Jest + React Testing Library:
import { render, screen, fireEvent } from '@testing-library/react';
import Button from './Button';
test('кнопка вызывает переданный обработчик onClick при клике', () => {
const handleClick = jest.fn();
render(<Button onClick={handleClick}>Нажми меня</Button>);
const buttonElement = screen.getByRole('button', { name: /нажми меня/i });
fireEvent.click(buttonElement);
expect(handleClick).toHaveBeenCalledTimes(1);
});
Выбор инструмента зависит от типа теста (unit, integration, e2e), стека проекта и требований к скорости выполнения и стабильности.