Проекты
Введение
Проект — это логическая группа тестов, выполняемых с одинаковой конфигурацией. Мы используем проекты, чтобы выполнять тесты на разных браузерах и устройствах. Проекты настраиваются в файле 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. Чтобы запустить тесты в других/нескольких браузерах, щелкните раскрывающееся меню кнопки воспроизведения в боковой панели тестирования и выберите другой профиль или измените профиль по умолчанию, нажав Выбрать профиль по умолчанию, и выберите браузеры, в которых вы хотите запустить свои тесты.
Выберите конкретный профиль, несколько профилей или все профили для запуска тестов.
Настройка проектов для нескольких сред
Настройка проектов также позволяет запускать группу тестов с различными таймаутами или повторными попытками, или запускать группу тестов в разных средах. Например, мы можем запустить наши тесты в среде разработки с 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'],
},
],
}); Последовательность запуска
При работе с тестами, имеющими зависимость, зависимость всегда выполняется первой, а после того, как все тесты из этого проекта пройдены, другие проекты запускаются параллельно.
Порядок выполнения:
-
Выполняются тесты в проекте «setup». После того, как все тесты из этого проекта пройдены, тесты из зависимых проектов начнут выполняться.
-
Параллельно выполняются тесты в проектах «chromium», «webkit» и «firefox». По умолчанию эти проекты выполняются параллельно с учётом ограничения максимального количества рабочих процессов.
Если существует более одной зависимости, то эти зависимости проектов будут выполнены сначала и параллельно. Если тесты из какой-либо зависимости завершатся неудачей, тесты, которые зависят от этого проекта, не будут выполнены.
Порядок выполнения:
- Тесты в проектах «Вход в браузер» и «База данных» выполняются параллельно:
- «Вход в браузер» пройден
- ❌ «База данных» завершился неудачей!
- Проект «e2e тесты» не выполняется!
Разборка
Вы также можете выполнить разборку вашей настройки, добавив свойство testProject.teardown в проект настройки. Разборка выполняется после выполнения всех зависимых проектов. Дополнительную информацию см. в руководстве по разборке.
Фильтрация тестов
Если используется --grep/--grep-invert или --shard параметр, фильтр имен файлов тестов указан в командной строке или используется test.only(), он будет применяться только к тестам из самых глубоких проектов в цепочке зависимостей проектов. Другими словами, если соответствующий тест принадлежит проекту, который имеет проектные зависимости, Playwright запустит все тесты из проектных зависимостей, игнорируя фильтры.
Настраиваемые параметры проекта
Проекты также можно использовать для параметризации тестов с помощью вашей пользовательской конфигурации — ознакомьтесь с этим отдельным руководством.
© 2024 Microsoft
Licensed under the Apache License, Version 2.0.
https://playwright.dev/docs/test-projects