Конфигурация: проекты и браузеры
Один файл конфигурации управляет всем: какими браузерами гонять тесты, где базовый адрес, какие таймауты.
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поднимает приложение перед тестами автоматически и ждёт его готовности.