Ответ
Скриншотные тесты (Snapshot Testing) — это метод тестирования, при котором сравнивается текущий вывод компонента/страницы с сохранённым эталонным скриншотом. Если есть различия — тест падает.
Как работает:
- При первом запуске тест сохраняет эталонный скриншот
- При последующих запусках делает новый скриншот и сравнивает с эталоном
- Если есть различия — либо баг, либо нужно обновить эталон (при intentional changes)
Пример с Jest + React Testing Library:
it('renders button correctly', () => {
const {container} = render(<Button>Click me</Button>);
expect(container).toMatchSnapshot();
});
Плюсы:
- Быстрое выявление визуальных регрессий
- Простота написания тестов
- Хорошо ловит неожиданные изменения
Минусы:
- Ложные срабатывания (шрифты, анимации, даты)
- Требуют ручного подтверждения изменений
- Плохо работают с динамическим контентом