Тестирование с Playwright
Теория: Скриншот тестирование
Скриншот тестирование — это метод автоматического тестирования, при котором делаются снимки экрана приложения на различных этапах выполнения тестов. Затем эти снимки сравниваются с эталонными изображениями, чтобы выявить визуальные изменения. Если картинки совпадают, то тест проходит, иначе, падает с ошибкой и визуализацией различий между скриншотами. Diff подсвечивает различия накладывая картинки друг на друга.
Основная цель скриншот-тестирования, проверка визуальных изменений.
- Скриншот тестирование помогает выявить непредвиденные изменения в интерфейсе пользователя, такие как смещения элементов, неправильные цвета или шрифты.
- Оно обеспечивает визуальную консистентность между различными версиями приложения, что особенно важно при работе с дизайном и пользовательским интерфейсом.
- Скриншот тестирование помогает обнаружить ошибки, связанные с CSS и другими стилями, которые могут быть упущены при функциональном тестировании.
- Скриншоты могут быть полезны для команды разработки и дизайнеров для предоставления конкретных примеров изменений или проблем.
Скриншот-тестирование дорогое удовольствие, оно очень чувствительно даже к малейшим изменениям, которые не влияют на функциональность. Для включения его в процесс тестирования, нужно четко понимать, что вам это зачем-то нужно, иначе можно сделать только хуже замедлением и удорожанием процесса тестирования. Особенно сложно понимать, когда провалившийся тест это не баг, а реально изменившийся дизайн.
Визуальное сравнение
В скриншот-тестах, вместо обычных проверок используется проверка toHaveScreenshot(). Она отвечает и за генерацию скриншотов при первом запуске и за сравнение с эталоном при повторных. Первый запуск в таком случае делается по-особому, с флагом --update-snapshots:
Эта же команда используется при обновлении скриншотов в случае изменения дизайна.
Во время генерации различий между скриншотами, Playwright вычисляет различие в количестве пикселей, о чем пишет в выводе:
Количество разных пикселей отвечает за чувствительность к ошибкам. Чем больше разных пикселей допускается, тем реже будут падать тесты, но тем больше может быть различий, которые не вызывают остановку тестов. По умолчанию различие даже в один пиксель считается ошибкой, но это поведение можно изменить в конфигурации или в конкретной проверке:
Создание скриншотов без тестов
Бывает, что скриншоты нужны, для того чтобы поделиться ими с кем-то. Playwright позволяет генерировать их без тестирования. Для этого используется метод screenshot():


