Spec-Zone.ru › Playwright

Проекты

Введение​

Проект — это логическая группа тестов, выполняемых с одной конфигурацией. Проекты позволяют запускать тесты в разных браузерах и на разных устройствах. Проекты настраиваются в файле playwright.config.ts, после чего можно запускать тесты во всех проектах или только в определённом проекте. Проекты также позволяют запускать одни и те же тесты с разными конфигурациями. Например, можно запускать одни и те же тесты в состоянии, когда пользователь вошёл в систему, и в состоянии, когда пользователь вышел из системы.

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

Настройка проектов для нескольких браузеров​

С помощью проектов вы можете запускать тесты в нескольких браузерах, например chromium, webkit и firefox, а также в браузерах определённых брендов, таких как Google Chrome и Microsoft Edge. Playwright также поддерживает эмуляцию планшетов и мобильных устройств. Полный список выбранных настольных компьютеров, планшетов и мобильных устройств см. в реестре параметров устройств.

import { defineConfig, devices } from '@playwright/test';

export default defineConfig({
  projects: [
    {
      name: 'chromium',
      use: { ...devices['Desktop Chrome'] },
    },

    {
      name: 'firefox',
      use: { ...devices['Desktop Firefox'] },
    },

    {
      name: 'webkit',
      use: { ...devices['Desktop Safari'] },
    },

    /* Test against mobile viewports. */
    {
      name: 'Mobile Chrome',
      use: { ...devices['Pixel 5'] },
    },
    {
      name: 'Mobile Safari',
      use: { ...devices['iPhone 12'] },
    },

    /* Test against branded browsers. */
    {
      name: 'Microsoft Edge',
      use: {
        ...devices['Desktop Edge'],
        channel: 'msedge'
      },
    },
    {
      name: 'Google Chrome',
      use: {
        ...devices['Desktop Chrome'],
        channel: 'chrome'
      },
    },
  ],
});

Запуск проектов​

По умолчанию Playwright запускает все проекты.

npx playwright test

Running 7 tests using 5 workers

  ✓ [chromium] › example.spec.ts:3:1 › basic test (2s)
  ✓ [firefox] › example.spec.ts:3:1 › basic test (2s)
  ✓ [webkit] › example.spec.ts:3:1 › basic test (2s)
  ✓ [Mobile Chrome] › example.spec.ts:3:1 › basic test (2s)
  ✓ [Mobile Safari] › example.spec.ts:3:1 › basic test (2s)
  ✓ [Microsoft Edge] › example.spec.ts:3:1 › basic test (2s)
  ✓ [Google Chrome] › example.spec.ts:3:1 › basic test (2s)

Используйте параметр командной строки --project, чтобы запустить один проект.

npx playwright test --project=firefox

Running 1 test using 1 worker

  ✓ [firefox] › example.spec.ts:3:1 › basic test (2s)

Средство запуска тестов VS Code запускает тесты в браузере Chrome, выбранном по умолчанию. Чтобы запустить тесты в других браузерах или нескольких браузерах, нажмите кнопку раскрывающегося списка рядом с кнопкой запуска на боковой панели тестирования и выберите другой профиль либо измените профиль по умолчанию: нажмите Выбрать профиль по умолчанию и выберите браузеры, в которых нужно запускать тесты.

selecting browsers

Выберите определённый профиль, несколько профилей или все профили, чтобы запустить тесты.

choosing default profiles

Настройка проектов для нескольких сред​

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

import { defineConfig } from '@playwright/test';

export default defineConfig({
  timeout: 60000, // Timeout is shared between all tests.
  projects: [
    {
      name: 'staging',
      use: {
        baseURL: 'staging.example.com',
      },
      retries: 2,
    },
    {
      name: 'production',
      use: {
        baseURL: 'production.example.com',
      },
      retries: 0,
    },
  ],
});

Разделение тестов на проекты​

Мы можем разделить тесты на проекты и использовать фильтры для запуска подмножества тестов. Например, можно создать проект, который запускает тесты с помощью фильтра, выбирающего все тесты с определённым именем файла. Затем можно создать другую группу тестов, исключающую определённые файлы тестов.

Ниже приведён пример с общим тайм-аутом и двумя проектами. Проект "Smoke" запускает небольшое подмножество тестов без повторных попыток, а проект "Default" запускает все остальные тесты с повторными попытками.

import { defineConfig } from '@playwright/test';

export default defineConfig({
  timeout: 60000, // Timeout is shared between all tests.
  projects: [
    {
      name: 'Smoke',
      testMatch: /.*smoke.spec.ts/,
      retries: 0,
    },
    {
      name: 'Default',
      testIgnore: /.*smoke.spec.ts/,
      retries: 2,
    },
  ],
});

Зависимости​

Зависимости — это список проектов, которые должны выполниться до запуска тестов в другом проекте. Они могут быть полезны при настройке действий глобальной подготовки, если один проект должен зависеть от предварительного выполнения другого. При использовании зависимостей между проектами репортёры тестов отображают тесты подготовки, а просмотрщик трассировок записывает трассировки подготовки. С помощью инспектора можно просмотреть снимок DOM в трассировке тестов подготовки, а также использовать фикстуры в процессе подготовки.

В этом примере проекты chromium, firefox и webkit зависят от проекта setup.

import { defineConfig, devices } from '@playwright/test';

export default defineConfig({
  projects: [
    {
      name: 'setup',
      testMatch: '**/*.setup.ts',
    },
    {
      name: 'chromium',
      use: { ...devices['Desktop Chrome'] },
      dependencies: ['setup'],
    },
    {
      name: 'firefox',
      use: { ...devices['Desktop Firefox'] },
      dependencies: ['setup'],
    },
    {
      name: 'webkit',
      use: { ...devices['Desktop Safari'] },
      dependencies: ['setup'],
    },
  ],
});

Последовательность выполнения​

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

Порядок выполнения:

  1. Запускаются тесты проекта 'setup'. После успешного завершения всех тестов этого проекта начинают выполняться тесты зависимых проектов.

  2. Одновременно запускаются тесты проектов 'chromium', 'webkit' и 'firefox'. По умолчанию эти проекты будут выполняться параллельно с учётом максимального количества рабочих процессов.

chromium, webkit and firefox projects depend on setup project

Если зависимостей несколько, соответствующие проекты-зависимости сначала выполняются параллельно. Если тесты в проекте-зависимости завершаются с ошибкой, тесты, зависящие от этого проекта, не запускаются.

Порядок выполнения:

  1. Тесты проектов 'Browser Login' и 'DataBase' запускаются параллельно:
    • проект 'Browser Login' проходит успешно
    • ❌ проект 'DataBase' завершается с ошибкой!
  2. Проект 'e2e tests' не запускается!
Browser login project is blue, database is red and e2e tests relies on both

Очистка​

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

global setup and teardown

Фильтрация тестов​

Все параметры фильтрации тестов, такие как --grep/--grep-invert, --shard, фильтрация по расположению непосредственно в командной строке или использование test.only(), напрямую выбирают основные тесты для запуска. Если эти тесты принадлежат проекту с зависимостями, также запускаются все тесты из этих зависимостей.

Чтобы игнорировать все зависимости и очистку, передайте параметр командной строки --no-deps. Будут запущены только проекты, выбранные вами напрямую.

Пользовательские параметры проекта​

Проекты также можно использовать для параметризации тестов с помощью собственной конфигурации — см. отдельное руководство.

© 2026 Microsoft
Licensed under the Apache License, Version 2.0.
https://playwright.dev/docs/test-projects

Spec-Zone.ru

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