Конфигурация: проекты и браузеры

Один файл конфигурации управляет всем: какими браузерами гонять тесты, где базовый адрес, какие таймауты.

playwright.config — центральный файл настроек: браузеры (проекты), базовый URL, таймауты, ретраи, трейсы и отчёты задаются здесь.

Структура конфига

Конфиг — это объект, который возвращает defineConfig. Разберём ключевые поля.

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

export default defineConfig({
  testDir: './tests',          // где лежат тесты
  timeout: 30_000,             // таймаут на тест
  retries: 2,                  // ретраи (полезно в CI)
  reporter: 'html',            // отчёт
  use: {
    baseURL: 'http://localhost:3000',  // базовый адрес
    trace: 'on-first-retry',           // трейс при ретрае
  },
});

baseURL: меньше повторов

Когда задан baseURL, в тестах можно писать относительные пути. Это удобно: один параметр меняет адрес для всего набора (локально, staging, прод) — не нужно искать и заменять домен в сотне файлов.

// с baseURL = http://localhost:3000
await page.goto('/login');   // → http://localhost:3000/login

Проекты: один тест, несколько браузеров

Проект — это вариант запуска тестов. Чаще всего проекты соответствуют браузерам: один и тот же набор тестов гоняется в Chromium, Firefox и WebKit.

export default defineConfig({
  projects: [
    { name: 'chromium', use: { ...devices['Desktop Chrome'] } },
    { name: 'firefox',  use: { ...devices['Desktop Firefox'] } },
    { name: 'webkit',   use: { ...devices['Desktop Safari'] } },
    // мобильный проект
    { name: 'mobile',   use: { ...devices['Pixel 5'] } },
  ],
});

Так тесты проверяют кросс-браузерную совместимость без дублирования кода. Запустить только один проект:

npx playwright test --project=firefox

Опции use: общие и точечные

Блок use на верхнем уровне задаёт опции для всех, а внутри проекта — переопределяет их. Можно задать headless, viewport, locale, geolocation и многое другое.

ОпцияНазначение
baseURLбазовый адрес для относительных путей
headlessбраузер без окна (по умолчанию true)
viewportразмер окна
localeязык интерфейса браузера
traceкогда писать трейс

Локальный сервер для тестов

Playwright может сам поднять ваше приложение перед тестами через webServer — удобно, чтобы не запускать сервер вручную и чтобы в CI всё стартовало одной командой.

export default defineConfig({
  webServer: {
    command: 'npm run start',
    url: 'http://localhost:3000',
    reuseExistingServer: true,  // не поднимать, если уже запущен
  },
});

Playwright дождётся, пока по указанному url приложение ответит, и только потом начнёт тесты — это убирает гонку «тесты стартовали раньше сервера».

Итог

  • playwright.config централизует все настройки прогона.
  • baseURL позволяет писать относительные пути и легко менять окружение.
  • Проекты гоняют один набор тестов в разных браузерах и на мобильных устройствах.
  • webServer поднимает приложение перед тестами автоматически и ждёт его готовности.
Проверьте себя
1. Что даёт настройка baseURL в конфиге?
AУскоряет запуск браузера
BПозволяет писать относительные пути и менять окружение одним параметром
CОтключает ретраи
DЗадаёт пароль для входа
2. Что такое проект (project) в playwright.config?
AОтдельный репозиторий с тестами
BВариант запуска набора тестов, чаще всего соответствующий браузеру или устройству
CОдин тестовый файл
DПапка со скриншотами
3. Зачем нужна секция webServer в конфиге?
AЧтобы публиковать отчёты в интернет
BЧтобы Playwright сам поднял приложение перед тестами и дождался его готовности
CЧтобы заменить бэкенд моками
DЧтобы хранить storage state
Поддержать проект