Объяснение конфигурации Playwright

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


Обзор файла конфигурации

playwright.config.ts— это центральный файл конфигурации Playwright, в котором определены все параметры выполнения тестов.

Пример

// Путь к файлу: playwright.config.ts
import { defineConfig, devices } from '@playwright/test';

export default defineConfig({
  // ===== Базовая конфигурация =====
  testDir: './tests',
  fullyParallel: true,
  forbidOnly: !!process.env.CI,
  retries: process.env.CI ? 2 : 0,
  workers: process.env.CI ? 1 : undefined,
  reporter: 'html',
  timeout: 30000,

  // ===== Общая глобальная конфигурация =====
  использовать: {
    baseURL: 'http://localhost:3000',
    trace: 'on-first-retry',
    screenshot: 'only-on-failure',
    video: 'retain-on-failure',
  },

  // ===== Мультибраузерные проекты =====
  projects: [
    { name: 'chromium', use: { ...devices['Desktop Chrome'] } },
    { name: 'firefox',  use: { ...devices['Desktop Firefox'] } },
    { name: 'webkit',   use: { ...devices['Desktop Safari'] } },
  ],

  // ===== Веб-сервер =====
  webServer: {
    command: 'npm run start',
    url: 'http://localhost:3000',
    reuseExistingServer: !process.env.CI,
  },
});

Основные параметры конфигурации

Элемент конфигурацииTypeЗначение по умолчаниюОписание
testDirstringtestsКаталог, в котором находятся тестовые файлы
fullyParallelлогическое значениеfalseЗапускать ли все тесты полностью параллельно (включая тесты внутри одного файла)
workersчислоЯдра CPU / 2Количество параллельно выполняющихся воркеров
retriesчисло0Количество повторных попыток для проваленных тестов
timeoutчисло30000Общий тайм-аут на каждый тест (миллисекунды)
reporterстрока/массивlistТип репортера тестов
forbidOnlyлогическое значениеfalseЗавершать с ошибкой, если в CI обнаружен test.only()
testMatchstring/RegExp*.spec.(ts\|js)Шаблон сопоставления тестовых файлов
testIgnorestring/RegExp-Шаблоны игнорируемых тестовых файлов

Пример конфигурации

Пример

export default defineConfig({
  // Поиск тестов в каталоге e2e
  testDir: './e2e',

  // Все тесты полностью параллельны
  fullyParallel: true,

  // Автоматически распределять количество воркеров
  workers: undefined,

  // Без повторных попыток при сбое (локально) / повтор 2 раза (CI)
  retries: process.env.CI ? 2 : 0,

  // Использовать как отчёты командной строки, так и HTML-отчёты
  reporter: [
    ['list'],
    ['html', { open: 'never' }],
  ],
});

использовать общую конфигурацию

useКонфигурация в нём применяется ко всем тестам и проектам:

Элемент конфигурацииTypeОписание
baseURLstringБазовый URL, относительные пути можно использовать в тестах (например.await page.goto('/login'))
viewport{width, height}Размер области просмотра браузера, по умолчанию{ width: 1280, height: 720 }
localestringЯзык браузера, например.'zh-CN'、'en-US'
timezonestringЧасовой пояс, например.'Asia/Shanghai'
colorSchemestringЦветовая схема:'light'|'dark'|'no-preference'
geolocation{latitude, longitude}Симулированная геолокация
permissionsstring[]Предоставленные разрешения браузера (например.['geolocation'])
userAgentstringПользовательская строка User-Agent
tracestringСтратегия сбора трассировки:'on'|'off'|'on-first-retry'
screenshotstringСтратегия создания скриншотов:'on'|'off'|'only-on-failure'
videostringСтратегия записи видео:'on'|'off'|'retain-on-failure'
storageStatestringПуть к файлу состояния аутентификации
testIdAttributestringПользовательское имя атрибута testId, по умолчанию'data-testid'
actionTimeoutчислоТаймаут для каждой операции (click, fill)
navigationTimeoutчислоТаймаут для каждой навигации

Конфигурация webServer

webServerКонфигурация позволяет Playwright автоматически запускать ваш сервер разработки перед запуском тестов:

Пример

export default defineConfig({
  webServer: {
    // Команда запуска
    command: 'npm run dev',

    // Подождите, пока этот URL станет доступен, прежде чем запускать тесты
    url: 'http://localhost:5173',

    // Длительность ожидания тайм-аута (миллисекунды)
    timeout: 120000,

    // Использовать ли уже запущенный сервер (можно переиспользовать локально, перезапускать в CI)
    reuseExistingServer: !process.env.CI,
  },
});

globalSetup / globalTeardown Глобальные хуки

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

Пример

export default defineConfig({
  globalSetup: './global-setup.ts',
  globalTeardown: './global-teardown.ts',
});

Пример

// Путь к файлу: global-setup.ts
import { FullConfig } from '@playwright/test';

async function globalSetup(config: FullConfig) {
  // Выполняется перед запуском всех тестов
  console.log('Запуск глобальной настройки...');
  // Например: инициализировать тестовую базу данных, создать тестовых пользователей и т. д.
}

export default globalSetup;
Другие расширения