Что такое скриншотные тесты

Ответ

Скриншотные тесты (Snapshot Testing) — это метод тестирования, при котором сравнивается текущий вывод компонента/страницы с сохранённым эталонным скриншотом. Если есть различия — тест падает.

Как работает:

  1. При первом запуске тест сохраняет эталонный скриншот
  2. При последующих запусках делает новый скриншот и сравнивает с эталоном
  3. Если есть различия — либо баг, либо нужно обновить эталон (при intentional changes)

Пример с Jest + React Testing Library:

it('renders button correctly', () => {
  const {container} = render(<Button>Click me</Button>);
  expect(container).toMatchSnapshot();
});

Плюсы:

  • Быстрое выявление визуальных регрессий
  • Простота написания тестов
  • Хорошо ловит неожиданные изменения

Минусы:

  • Ложные срабатывания (шрифты, анимации, даты)
  • Требуют ручного подтверждения изменений
  • Плохо работают с динамическим контентом