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 test runner запускает ваши тесты в браузере по умолчанию Chrome. Чтобы запустить тесты в других/нескольких браузерах, щелкните раскрывающееся меню кнопки воспроизведения в боковой панели тестирования и выберите другой профиль или измените профиль по умолчанию, нажав Выбрать профиль по умолчанию, и выберите браузеры, в которых вы хотите запустить свои тесты.

selecting browsers

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

choosing default profiles

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

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

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 зависят от проекта настройки.

import { defineConfig } 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. Тесты в проектах «Вход в браузер» и «База данных» выполняются параллельно:
    • «Вход в браузер» пройден
    • ❌ «База данных» завершился неудачей!
  2. Проект «e2e тесты» не выполняется!
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(), он будет применяться только к тестам из самых глубоких проектов в цепочке зависимостей проектов. Другими словами, если соответствующий тест принадлежит проекту, который имеет проектные зависимости, Playwright запустит все тесты из проектных зависимостей, игнорируя фильтры.

Настраиваемые параметры проекта​

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

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

Spec-Zone.ru

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