Скриншоты как инструмент тестирования Скриншоты в Playwright используются для визуальной проверки состояния страницы, элементов интерфейса и результатов взаимодействия. Они позволяют фиксировать текущее состояние приложения, сравнивать его с эталонным и обнаруживать визуальные регрессии. Важной частью работы со скриншотами является их структурированное хранение и версионирование, что обеспечивает долгосрочную поддержку тестов и контроль изменений интерфейса.
Директории и структура файлов Рекомендуется
создавать отдельную папку для скриншотов, например
tests/screenshots. Структура может быть следующей:
tests/
└─ screenshots/
├─ login/
│ ├─ login-page.png
│ └─ error-message.png
├─ dashboard/
│ ├─ overview.png
│ └─ widget-status.png
└─ checkout/
└─ confirmation.png
Практические рекомендации:
png для сохранения
качества и прозрачности.Использование динамических имен файлов Для тестов, где важен контекст времени или состояние данных, можно добавлять таймстемпы или идентификаторы сессий. Пример:
const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
await page.screenshot({ path: `tests/screenshots/login/login-page-${timestamp}.png` });
Это полезно для отладки, но для постоянного сравнения визуальных регрессий лучше использовать фиксированные имена.
Git и контроль версий Скриншоты должны храниться в
системе контроля версий только в случае стабильных эталонных снимков.
Для временных или отладочных скриншотов рекомендуется использовать
.gitignore. Пример:
tests/screenshots/debug/*
Эталонные скриншоты для визуального тестирования
Playwright позволяет проводить сравнение текущего скриншота с эталонным
через метод toMatchSnapshot():
import { test, expect } from '@playwright/test';
test('страница логина соответствует эталону', async ({ page }) => {
await page.goto('https://example.com/login');
const screenshot = await page.screenshot();
expect(screenshot).toMatchSnapshot('login-page.png');
});
Механизм версионирования:
--update-snapshots.npx playwright test --update-snapshots
CI/CD и хранение артефактов Скриншоты можно сохранять как артефакты сборки в системах CI/CD. Это позволяет:
Пример конфигурации сохранения артефактов в GitHub Actions:
- name: Run Playwright tests
uses: microsoft/playwright-github-action@v1
with:
runTests: true
recordVideo: false
- name: Upload Screenshots
uses: actions/upload-artifact@v3
with:
name: screenshots
path: tests/screenshots
Сравнение разных версий Скриншоты можно сравнивать не только с эталонными, но и между ветками с помощью специализированных инструментов визуального сравнения (например, Pixelmatch или Playwright Test Reporter с включенной визуальной проверкой). Это повышает точность выявления мелких изменений интерфейса.
Хранение и версионирование скриншотов является ключевым элементом визуального тестирования в Playwright. Правильная организация директорий, использование эталонных снимков и интеграция с CI/CD обеспечивает стабильность тестов и прозрачность изменений интерфейса.