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
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
# Развернуть 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-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"]
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-deps | npx 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 |