Spec-Zone.ru › Playwright

Непрерывная интеграция

Введение​

Тесты Playwright можно запускать в средах CI. Мы подготовили примеры конфигураций для распространённых провайдеров CI.

3 шага, чтобы запустить тесты в CI:

  1. Убедитесь, что агент CI может запускать браузеры: используйте наш образ Docker на агентах Linux или установите зависимости с помощью интерфейса командной строки.

  2. Установите Playwright:

    # Install NPM packages
    npm ci
    
    # Install Playwright browsers and dependencies
    npx playwright install --with-deps
  3. Запустите тесты:

    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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API