Артефакты и отчеты в CI

При интеграции автоматических тестов в процессы непрерывной интеграции (CI) важным аспектом является сбор и хранение артефактов и отчетов. Playwright позволяет эффективно собирать и анализировать результаты тестов, что помогает в дальнейшем улучшать стабильность и производительность приложения.

Архитектура Playwright для CI

Playwright предоставляет множество инструментов для автоматизации тестирования веб-приложений. В рамках CI часто возникает необходимость сохранения промежуточных и итоговых данных, таких как:

  • Логи выполнения тестов
  • Скриншоты и видео, сделанные во время тестов
  • Отчеты о покрытии кода
  • Статистики о скорости и стабильности тестов

Эти данные, также называемые артефактами, играют ключевую роль в мониторинге процесса тестирования и анализа его результатов.

Настройка генерации отчетов

Одним из важнейших элементов интеграции Playwright в CI является настройка отчетности. Для этого Playwright предоставляет встроенную поддержку для различных форматов отчетов, таких как JSON, HTML и JUnit.

Пример конфигурации отчета в JSON формате

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 формата

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-отчеты и предоставляет статистику в удобном виде.

Сбор артефактов в CI

Во время выполнения тестов могут возникать ошибки, которые требуют дополнительного анализа. Для этого 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',
  },
});

Видео будет записываться для каждого теста и сохраняться в соответствующей папке, что позволяет детально анализировать последовательность действий перед ошибкой.

Интеграция с CI/CD

Артефакты и отчеты играют ключевую роль при интеграции тестов Playwright в систему CI/CD. В большинстве CI-платформ существует возможность сохранять артефакты, чтобы впоследствии они могли быть использованы для анализа. Например, в GitHub Actions или GitLab CI можно настроить сохранение скриншотов, видео и отчетов как артефактов после завершения выполнения тестов.

GitHub Actions

Пример конфигурации для 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

Конфигурация для 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 могут быть использованы для построения различных графиков, отображающих статистику о времени выполнения тестов, их стабильности и количестве ошибок.

Инструменты для анализа

Некоторые популярные инструменты для анализа отчетов:

  • Allure Framework: интегрируется с Playwright для визуализации отчетов и создания более детализированных представлений о выполнении тестов.
  • ReportPortal: агрегирует отчеты и предоставляет более сложный интерфейс для отслеживания результатов тестов в реальном времени.

Эти инструменты позволяют улучшить процесс анализа результатов, выявлять узкие места и быстро реагировать на сбои.

Сохранение и удаление артефактов

Системы CI, такие как Jenkins, GitLab и GitHub Actions, позволяют настроить автоматическое удаление артефактов через некоторое время, что помогает сохранять место и избегать переполнения хранилища. Важно правильно настроить жизненный цикл артефактов, чтобы они сохранялись столько времени, сколько необходимо для анализа, и удалялись по завершении.

Пример настройки для 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 улучшает автоматизацию и контроль качества кода.