При интеграции автоматических тестов в процессы непрерывной интеграции (CI) важным аспектом является сбор и хранение артефактов и отчетов. Playwright позволяет эффективно собирать и анализировать результаты тестов, что помогает в дальнейшем улучшать стабильность и производительность приложения.
Playwright предоставляет множество инструментов для автоматизации тестирования веб-приложений. В рамках CI часто возникает необходимость сохранения промежуточных и итоговых данных, таких как:
Эти данные, также называемые артефактами, играют ключевую роль в мониторинге процесса тестирования и анализа его результатов.
Одним из важнейших элементов интеграции Playwright в CI является настройка отчетности. Для этого Playwright предоставляет встроенную поддержку для различных форматов отчетов, таких как JSON, HTML и JUnit.
import { defineConfig, devices } from '@playwright/test';
export default defineConfig({
projects: [
{
name: 'firefox',
use: { ...devices['Desktop Firefox'] },
},
],
reporter: [['json', { outputFile: 'test-results/test-results.json' }]],
});
Этот конфигурационный фрагмент генерирует отчет в формате JSON и
сохраняет его в файл test-results.json. JSON-формат удобен
для дальнейшей обработки и интеграции с различными системами анализа
данных.
JUnit — это популярный формат для представления результатов тестирования, который поддерживают многие CI-системы, такие как Jenkins, GitLab CI, CircleCI и другие. В Playwright можно настроить вывод отчетов в формате JUnit следующим образом:
import { defineConfig } from '@playwright/test';
export default defineConfig({
reporter: [
['junit', { outputFile: 'test-results/test-results.xml' }],
],
});
Этот отчет в формате XML можно легко интегрировать с CI-системой для визуализации и анализа. Например, Jenkins автоматически парсит JUnit-отчеты и предоставляет статистику в удобном виде.
Во время выполнения тестов могут возникать ошибки, которые требуют дополнительного анализа. Для этого Playwright позволяет собирать скриншоты и записывать видео, чтобы дать разработчикам и тестировщикам больше информации для отладки.
Для того чтобы делать снимки экрана в случае неудачных тестов, можно использовать следующее решение в конфигурации Playwright:
import { defineConfig, devices } from '@playwright/test';
export default defineConfig({
use: {
screenshot: 'only-on-failure',
},
});
Этот флаг настроит Playwright так, что снимки экрана будут делаться только в случае сбоя теста. Скриншоты можно сохранить в CI как артефакты, чтобы позднее проанализировать поведение приложения в моменты ошибок.
Запись видео также может быть полезна для диагностики нестабильных тестов. В Playwright можно включить запись видео для каждого теста:
import { defineConfig, devices } from '@playwright/test';
export default defineConfig({
use: {
video: 'on',
},
});
Видео будет записываться для каждого теста и сохраняться в соответствующей папке, что позволяет детально анализировать последовательность действий перед ошибкой.
Артефакты и отчеты играют ключевую роль при интеграции тестов Playwright в систему CI/CD. В большинстве CI-платформ существует возможность сохранять артефакты, чтобы впоследствии они могли быть использованы для анализа. Например, в GitHub Actions или GitLab CI можно настроить сохранение скриншотов, видео и отчетов как артефактов после завершения выполнения тестов.
Пример конфигурации для GitHub Actions:
name: Playwright Tests
on:
push:
branches:
- main
jobs:
test:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Set up Node.js
uses: actions/setup-node@v2
with:
node-version: '14'
- name: Install dependencies
run: npm install
- name: Run Playwright tests
run: npx playwright test
- name: Upload test results
uses: actions/upload-artifact@v2
with:
name: playwright-reports
path: test-results/
В этом примере результаты тестов, такие как отчет в формате JSON и видео, будут сохранены как артефакты GitHub Actions, чтобы в дальнейшем их можно было просмотреть и проанализировать.
Конфигурация для GitLab CI может выглядеть следующим образом:
stages:
- test
test_playwright:
stage: test
image: mcr.microsoft.com/playwright:v1.15.0-focal
script:
- npm install
- npx playwright test
artifacts:
paths:
- test-results/
После выполнения тестов все артефакты, включая отчеты и медиафайлы, будут доступны для скачивания и анализа через интерфейс GitLab.
После завершения тестов в CI важно уметь правильно анализировать собранные отчеты. В случае с Playwright, отчеты в формате JSON могут быть использованы для построения различных графиков, отображающих статистику о времени выполнения тестов, их стабильности и количестве ошибок.
Некоторые популярные инструменты для анализа отчетов:
Эти инструменты позволяют улучшить процесс анализа результатов, выявлять узкие места и быстро реагировать на сбои.
Системы CI, такие как Jenkins, GitLab и GitHub Actions, позволяют настроить автоматическое удаление артефактов через некоторое время, что помогает сохранять место и избегать переполнения хранилища. Важно правильно настроить жизненный цикл артефактов, чтобы они сохранялись столько времени, сколько необходимо для анализа, и удалялись по завершении.
jobs:
test:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Install dependencies
run: npm install
- name: Run Playwright tests
run: npx playwright test
- name: Upload test results
uses: actions/upload-artifact@v2
with:
name: playwright-reports
path: test-results/
retention-days: 7
В этом примере артефакты сохраняются на 7 дней, после чего автоматически удаляются.
Интеграция артефактов и отчетов в процесс CI с Playwright помогает не только улучшить качество тестирования, но и повысить прозрачность процесса разработки. Скриншоты, видео и детализированные отчеты позволяют разработчикам и тестировщикам быстро находить и устранять ошибки, а интеграция с системами CI/CD улучшает автоматизацию и контроль качества кода.