Непрерывная интеграция
Введение
Тесты Playwright можно запускать в средах CI. Мы подготовили примеры конфигураций для распространённых провайдеров CI.
3 шага, чтобы запустить тесты в CI:
-
Убедитесь, что агент CI может запускать браузеры: используйте наш образ Docker на агентах Linux или установите зависимости с помощью интерфейса командной строки.
-
Установите Playwright:
# Install NPM packages npm ci # Install Playwright browsers and dependencies npx playwright install --with-deps
-
Запустите тесты:
npx playwright test
Воркеры
В средах CI мы рекомендуем установить значение workers равным "1", чтобы повысить стабильность и воспроизводимость. Последовательный запуск тестов гарантирует, что каждый тест получит все системные ресурсы, и позволяет избежать потенциальных конфликтов. Однако, если у вас мощная собственная система CI, можно включить параллельный запуск тестов. Для более широкого распараллеливания рассмотрите возможность разделения на сегменты — распределения тестов между несколькими заданиями CI.
import { defineConfig, devices } from '@playwright/test';
export default defineConfig({
// Opt out of parallel tests on CI.
workers: process.env.CI ? 1 : undefined,
}); Конфигурации CI
Для установки всех зависимостей операционной системы в CI можно использовать инструменты командной строки.
GitHub Actions
При push/pull_request
Тесты будут запускаться при push или pull request в ветки main/master. Рабочий процесс установит все зависимости и Playwright, а затем запустит тесты. Также будет создан HTML-отчёт.
name: Playwright Tests
on:
push:
branches: [ main, master ]
pull_request:
branches: [ main, master ]
jobs:
test:
timeout-minutes: 60
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions/setup-node@v6
with:
node-version: lts/*
- name: Install dependencies
run: npm ci
- name: Install Playwright Browsers
run: npx playwright install --with-deps
- name: Run Playwright tests
run: npx playwright test
- uses: actions/upload-artifact@v5
if: ${{ !cancelled() }}
with:
name: playwright-report
path: playwright-report/
retention-days: 30 При push/pull_request (с разделением на сегменты)
GitHub Actions поддерживает разделение тестов между несколькими заданиями. Ознакомьтесь с нашей документацией по разделению на сегменты, чтобы узнать больше об этом подходе и посмотреть пример для GitHub Actions: в нём показано, как настроить запуск тестов на нескольких машинах и объединить HTML-отчёты.
С помощью контейнеров
GitHub Actions поддерживает запуск заданий в контейнере с помощью параметра jobs.<job_id>.container. Это позволяет не засорять среду хоста зависимостями и обеспечивает единообразную среду, например, для тестирования снимков экрана и визуальной регрессии в разных операционных системах.
name: Playwright Tests
on:
push:
branches: [ main, master ]
pull_request:
branches: [ main, master ]
jobs:
playwright:
name: 'Playwright Tests'
runs-on: ubuntu-latest
container:
image: mcr.microsoft.com/playwright:v1.63.0-noble
options: --user 1001
steps:
- uses: actions/checkout@v6
- uses: actions/setup-node@v6
with:
node-version: lts/*
- name: Install dependencies
run: npm ci
- name: Run your tests
run: npx playwright test При развёртывании
Тесты запускаются после того, как развёртывание GitHub переходит в состояние success. Такой подход используют, например, сервисы вроде Vercel, чтобы вы могли запускать сквозные тесты в развёрнутой ими среде.
name: Playwright Tests
on:
deployment_status:
jobs:
test:
timeout-minutes: 60
runs-on: ubuntu-latest
if: github.event.deployment_status.state == 'success'
steps:
- uses: actions/checkout@v6
- uses: actions/setup-node@v6
with:
node-version: lts/*
- name: Install dependencies
run: npm ci
- name: Install Playwright
run: npx playwright install --with-deps
- name: Run Playwright tests
run: npx playwright test
env:
PLAYWRIGHT_TEST_BASE_URL: ${{ github.event.deployment_status.target_url }} Быстрый отказ
Выполнение больших наборов тестов может занимать много времени. Предварительный запуск тестов с флагом --only-changed позволяет в первую очередь выполнить файлы тестов, которые с наибольшей вероятностью завершатся ошибкой. Это ускорит получение обратной связи и немного снизит нагрузку на CI при работе над pull request. Чтобы определить файлы тестов, затронутые изменениями, --only-changed анализирует граф зависимостей ваших наборов тестов. Это эвристический метод, который может пропустить некоторые тесты, поэтому после предварительного запуска важно всегда выполнять весь набор тестов.
name: Playwright Tests
on:
push:
branches: [ main, master ]
pull_request:
branches: [ main, master ]
jobs:
test:
timeout-minutes: 60
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
with:
# Force a non-shallow checkout, so that we can reference $GITHUB_BASE_REF.
# See https://github.com/actions/checkout for more details.
fetch-depth: 0
- uses: actions/setup-node@v6
with:
node-version: lts/*
- name: Install dependencies
run: npm ci
- name: Install Playwright Browsers
run: npx playwright install --with-deps
- name: Run changed Playwright tests
run: npx playwright test --only-changed=origin/$GITHUB_BASE_REF
if: github.event_name == 'pull_request'
- name: Run Playwright tests
run: npx playwright test
- uses: actions/upload-artifact@v5
if: ${{ !cancelled() }}
with:
name: playwright-report
path: playwright-report/
retention-days: 30 Docker
У нас есть готовый образ Docker, который можно использовать напрямую или взять за основу для обновления существующих определений Docker. Следуйте рекомендациям из раздела Рекомендуемая конфигурация Docker, чтобы обеспечить максимальную производительность.
Azure Pipelines
Для агентов Windows или macOS дополнительная настройка не требуется: просто установите Playwright и запустите тесты.
Для агентов Linux можно использовать наш контейнер Docker, поскольку Azure Pipelines поддерживает запуск заданий в контейнерах. Также можно воспользоваться инструментами командной строки, чтобы установить все необходимые зависимости.
Чтобы запустить тесты Playwright, используйте эту задачу конвейера:
trigger:
- main
pool:
vmImage: ubuntu-latest
steps:
- task: UseNode@1
inputs:
version: '22'
displayName: 'Install Node.js'
- script: npm ci
displayName: 'npm ci'
- script: npx playwright install --with-deps
displayName: 'Install Playwright browsers'
- script: npx playwright test
displayName: 'Run Playwright tests'
env:
CI: 'true' Загрузка папки playwright-report с помощью Azure Pipelines
Если какой-либо тест Playwright завершится с ошибкой, выполнение конвейера завершится неудачно. Если вы также хотите интегрировать результаты тестов с Azure DevOps, используйте задачу PublishTestResults, например:
trigger:
- main
pool:
vmImage: ubuntu-latest
steps:
- task: UseNode@1
inputs:
version: '22'
displayName: 'Install Node.js'
- script: npm ci
displayName: 'npm ci'
- script: npx playwright install --with-deps
displayName: 'Install Playwright browsers'
- script: npx playwright test
displayName: 'Run Playwright tests'
env:
CI: 'true'
- task: PublishTestResults@2
displayName: 'Publish test results'
inputs:
searchFolder: 'test-results'
testResultsFormat: 'JUnit'
testResultsFiles: 'e2e-junit-results.xml'
mergeTestResults: true
failTaskOnFailedTests: true
testRunTitle: 'My End-To-End Tests'
condition: succeededOrFailed()
- task: PublishPipelineArtifact@1
inputs:
targetPath: playwright-report
artifact: playwright-report
publishLocation: 'pipeline'
condition: succeededOrFailed()
Примечание: средство формирования отчётов JUnit необходимо соответствующим образом настроить через
import { defineConfig } from '@playwright/test';
export default defineConfig({
reporter: [['junit', { outputFile: 'test-results/e2e-junit-results.xml' }]],
}); в playwright.config.ts.
Azure Pipelines (с разделением на сегменты)
trigger:
- main
pool:
vmImage: ubuntu-latest
strategy:
matrix:
chromium-1:
project: chromium
shard: 1/3
chromium-2:
project: chromium
shard: 2/3
chromium-3:
project: chromium
shard: 3/3
firefox-1:
project: firefox
shard: 1/3
firefox-2:
project: firefox
shard: 2/3
firefox-3:
project: firefox
shard: 3/3
webkit-1:
project: webkit
shard: 1/3
webkit-2:
project: webkit
shard: 2/3
webkit-3:
project: webkit
shard: 3/3
steps:
- task: UseNode@1
inputs:
version: '22'
displayName: 'Install Node.js'
- script: npm ci
displayName: 'npm ci'
- script: npx playwright install --with-deps
displayName: 'Install Playwright browsers'
- script: npx playwright test --project=$(project) --shard=$(shard)
displayName: 'Run Playwright tests'
env:
CI: 'true' Azure Pipelines (в контейнере)
trigger:
- main
pool:
vmImage: ubuntu-latest
container: mcr.microsoft.com/playwright:v1.63.0-noble
steps:
- task: UseNode@1
inputs:
version: '22'
displayName: 'Install Node.js'
- script: npm ci
displayName: 'npm ci'
- script: npx playwright test
displayName: 'Run Playwright tests'
env:
CI: 'true' CircleCI
Запуск Playwright в CircleCI очень похож на запуск в GitHub Actions. Чтобы указать готовый образ Docker Playwright, достаточно изменить определение агента в конфигурации, добавив docker:, например:
executors:
pw-noble-development:
docker:
- image: mcr.microsoft.com/playwright:v1.63.0-noble Примечание: используя определение агента docker, вы задаёте для ресурса, на котором запускается Playwright, уровень «medium» здесь. По умолчанию Playwright устанавливает количество воркеров равным обнаруженному числу ядер (2 для уровня medium). Если задать число воркеров больше этого значения, это приведёт к ненужным тайм-аутам и сбоям.
Разделение на сегменты в CircleCI
В CircleCI сегменты нумеруются с 0, поэтому необходимо переопределить переменные среды по умолчанию для параллелизма. В следующем примере показано, как запустить Playwright с параллелизмом CircleCI, равным 4: к CIRCLE_NODE_INDEX прибавляется 1, чтобы передать значение аргументу командной строки --shard.
playwright-job-name:
executor: pw-noble-development
parallelism: 4
steps:
- run: SHARD="$((${CIRCLE_NODE_INDEX}+1))"; npx playwright test --shard=${SHARD}/${CIRCLE_NODE_TOTAL} Jenkins
Jenkins поддерживает Docker-агенты для конвейеров. Используйте образ Docker Playwright, чтобы запускать тесты в Jenkins.
pipeline {
agent { docker { image 'mcr.microsoft.com/playwright:v1.63.0-noble' } }
stages {
stage('e2e-tests') {
steps {
sh 'npm ci'
sh 'npx playwright test'
}
}
}
} Bitbucket Pipelines
Bitbucket Pipelines может использовать общедоступные образы Docker в качестве сред сборки. Чтобы запускать тесты Playwright в Bitbucket, используйте наш общедоступный образ Docker (см. Dockerfile).
image: mcr.microsoft.com/playwright:v1.63.0-noble
GitLab CI
Чтобы запускать тесты Playwright в GitLab, используйте наш общедоступный образ Docker (см. Dockerfile).
stages: - test tests: stage: test image: mcr.microsoft.com/playwright:v1.63.0-noble script: ...
Разделение на сегменты
GitLab CI поддерживает разделение тестов между несколькими заданиями с помощью ключевого слова parallel. Задание тестирования будет разделено на несколько небольших заданий, выполняемых параллельно. Параллельные задания нумеруются последовательно от job_name 1/N до job_name N/N.
stages:
- test
tests:
stage: test
image: mcr.microsoft.com/playwright:v1.63.0-noble
parallel: 7
script:
- npm ci
- npx playwright test --shard=$CI_NODE_INDEX/$CI_NODE_TOTAL GitLab CI также поддерживает разделение тестов между несколькими заданиями с помощью параметра parallel:matrix. Задание тестирования будет запускаться несколько раз параллельно в рамках одного конвейера, но с разными значениями переменных для каждого экземпляра задания. В примере ниже используются 2 значения PROJECT и 10 значений SHARD, поэтому всего будет запущено 20 заданий.
stages:
- test
tests:
stage: test
image: mcr.microsoft.com/playwright:v1.63.0-noble
parallel:
matrix:
- PROJECT: ['chromium', 'webkit']
SHARD: ['1/10', '2/10', '3/10', '4/10', '5/10', '6/10', '7/10', '8/10', '9/10', '10/10']
script:
- npm ci
- npx playwright test --project=$PROJECT --shard=$SHARD Google Cloud Build
Чтобы запускать тесты Playwright в Google Cloud Build, используйте наш общедоступный образ Docker (см. Dockerfile).
steps: - name: mcr.microsoft.com/playwright:v1.63.0-noble script: ... env: - 'CI=true'
Drone
Чтобы запускать тесты Playwright в Drone, используйте наш общедоступный образ Docker (см. Dockerfile).
kind: pipeline
name: default
type: docker
steps:
- name: test
image: mcr.microsoft.com/playwright:v1.63.0-noble
commands:
- npx playwright test Кэширование браузеров
Кэшировать исполняемые файлы браузеров не рекомендуется, так как восстановление кэша занимает примерно столько же времени, сколько и загрузка этих файлов. Кроме того, особенно в Linux, необходимо устанавливать зависимости операционной системы, которые нельзя кэшировать.
Если вы всё же хотите кэшировать исполняемые файлы браузеров между запусками CI, добавьте эти каталоги в конфигурацию CI и используйте хеш версии Playwright.
Отладка запуска браузеров
Playwright поддерживает переменную среды DEBUG для вывода журналов отладки во время выполнения. Установка значения pw:browser помогает при отладке ошибок Error: Failed to launch browser.
DEBUG=pw:browser npx playwright test
Запуск с отображением интерфейса
По умолчанию Playwright запускает браузеры в безголовом режиме. Инструкции по запуску тестов с отображением интерфейса приведены в руководстве Запуск тестов.
Для запуска с отображением интерфейса на агентах Linux необходимо установить Xvfb. В нашем образе Docker и GitHub Action Xvfb уже установлен. Чтобы запустить браузеры с отображением интерфейса с помощью Xvfb, добавьте xvfb-run перед самой командой.
xvfb-run npx playwright test
© 2026 Microsoft
Licensed under the Apache License, Version 2.0.
https://playwright.dev/docs/ci