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

В этой главе описывается, как интегрировать тесты Playwright в конвейеры CI/CD, включая GitHub Actions и другие распространённые CI-платформы.


Интеграция с GitHub Actions

Когда выnpm init playwright@latestвыбираете Add GitHub Actions, Playwright автоматически сгенерирует конфигурацию рабочего процесса.

Автоматически созданный рабочий процесс

Пример

# Путь к файлу: .github/workflows/playwright.yml
name
: Тесты Playwright

на
:
  push
:
    branches
: [main, master]
  pull_request
:
    branches
: [main, master]

jobs
:
  test
:
    timeout-minutes
: 60
    runs-on
: ubuntu-latest
    steps
:
      - uses
: actions/checkout@v4      # 1. Получить код
      - uses
: actions/setup-node@v4     # 2. Установить Node.js
        with
:
          node-version
: 20
      - name
: Установка зависимостей
        run
: npm ci                     # 3. Установить зависимости
      - name
: Установить браузеры Playwright
        run
: npx playwright install --with-deps  # 4. Установить браузеры и системные зависимости
      - name
: Запустить тесты Playwright
        run
: npx playwright test        # 5. Запустить тесты
      - uses
: actions/upload-artifact@v4
        if
: always()                    # 6. Загрузить отчёт о тестировании (загружать, даже если тесты не прошли)
        with
:
          name
: playwright-report
          path
: playwright-report/
          retention-days
: 30

Просмотреть результаты CI-тестов

Просмотреть логи тестов

На странице Actions репозитория GitHub нажмите на каждый запуск, чтобы просмотреть подробные логи тестов.

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

Просмотреть HTML-отчёт

Если вы настроилиreporter: 'html', вы можете скачать из Artifactsplaywright-report/чтобы просмотреть полный HTML-отчёт локально.

Публикация отчёта в интернете

Пример

# Путь к файлу: .github/workflows/playwright.yml
# Развернуть HTML-отчёт на GitHub Pages (упрощённый пример)
- name
: Загрузить отчёт
  uses
: actions/upload-artifact@v4
  if
: always()
  with
:
    name
: playwright-report
    path
: playwright-report/
    retention-days
: 30

Другие CI-платформы

Jenkins

pipeline {
  agent any
  stages {
    stage('Install') {
      steps {
        sh 'npm ci'
        sh 'npx playwright install --with-deps'
      }
    }
    stage('Test') {
      steps {
        sh 'npx playwright test'
      }
    }
  }
  post {
    always {
      archiveArtifacts artifacts: 'playwright-report/**'
      junit 'test-results/junit.xml'
    }
  }
}

GitLab CI

Пример

# Путь к файлу: .gitlab-ci.yml
playwright-tests
:
  image
: mcr.microsoft.com/playwright:v1.52.0-jammy
  script
:
   - npm ci
    - npx playwright test
  artifacts
:
    when
: always
    paths
:
     - playwright-report/
    expire_in
: 30 days

Запуск Playwright с Docker

Microsoft предоставляет официальный Docker-образ со всеми предустановленными системными зависимостями, готовый к использованию из коробки.

Использование официального образа

# 拉取镜像
docker pull mcr.microsoft.com/playwright:v1.52.0-jammy

# 在容器中运行测试
docker run --rm -v $(pwd):/work -w /work \
  mcr.microsoft.com/playwright:v1.52.0-jammy \
  npx playwright test

Пример Dockerfile

Пример

# Путь к файлу: Dockerfile
FROM mcr.microsoft.com/playwright:v1.52.0-jammy

WORKDIR /app
COPY package.json package-lock.json ./
RUN npm ci
COPY . .

CMD ["npx", "playwright", "test"]

Лучшие практики для CI-окружения

ПрактикаОписание
Используйте--with-depsnpx playwright install --with-depsАвтоматическая установка системных зависимостей Linux
Зафиксируйте версию PlaywrightВpackage.jsonЗафиксируйте версию в@playwright/testверсию, чтобы избежать случайных обновлений в CI
Кэшируйте браузерыКэшированиеms-playwrightкаталог, чтобы не скачивать браузеры каждый раз
Управляйте количеством воркеровИспользуйтеworkers: process.env.CI ? 1 : undefinedчтобы контролировать использование ресурсов в CI
Установите тайм-аутСреды CI медленнее локальных, увеличьте соответствующим образомtimeoutиretries
Сохраняйте артефакты тестовЗагружайте Trace, скриншоты, видео и отчёты как артефакты CI
Другие расширения