Файл конфигурации playwright.config.js является
неотъемлемой частью работы с фреймворком Playwright. Он используется для
определения настроек тестового окружения, таких как параметры браузера,
стратегии выполнения, пути к тестам и многое другое. Важно понимать, что
грамотное использование конфигурационного файла позволяет значительно
упростить управление тестами и повысить гибкость тестового процесса.
Для начала работы с Playwright, необходимо создать файл
playwright.config.js в корне проекта. Этот файл должен быть
JavaScript файлом, в котором экспортируются настройки, применяемые к
тестам.
Пример базового конфигурационного файла:
// playwright.config.js
module.exports = {
timeout: 30000, // общий таймаут для всех тестов
retries: 2, // количество повторных попыток для тестов, которые не прошли
use: {
headless: true, // запуск браузера в фоновом режиме
viewport: { width: 1280, height: 720 }, // размер экрана
video: 'on-first-retry', // запись видео для первых неудачных попыток
},
};
Конфигурация экспортируется через module.exports, что
позволяет Playwright использовать её при запуске тестов. В этом примере
указаны несколько общих параметров, таких как таймаут и количество
повторных попыток.
1. timeout
Этот параметр задаёт максимальное время ожидания для всех операций в тестах. Если действие не завершается в указанный промежуток времени, то тест будет считаться провалившимся. Этот параметр можно переопределить на уровне конкретных тестов, если нужно задать уникальное время ожидания.
timeout: 20000, // таймаут в 20 секунд
2. retries
Количество повторных попыток для тестов, которые не прошли. Это полезно для обработки нестабильных тестов, которые могут иногда давать сбои по временным причинам, например, из-за медленного отклика сервера.
retries: 3, // три попытки для каждого теста
3. use
Объект use позволяет задать параметры по умолчанию для
всех тестов. Эти параметры включают настройки для браузера, устройства,
стратегии выполнения и многое другое.
use: {
headless: false, // запуск браузера в видимом режиме
viewport: { width: 1920, height: 1080 }, // разрешение экрана
video: 'on', // всегда записывать видео
actionTimeout: 10000, // таймаут для отдельных действий
baseURL: 'https://example.com', // базовый URL для всех тестов
}
4. projects
Параметр projects позволяет создавать несколько
конфигураций для разных групп тестов. Это полезно, если нужно запускать
тесты для различных браузеров, операционных систем или конфигураций.
projects: [
{
name: 'Chrome',
use: { browserName: 'chromium' },
},
{
name: 'Firefox',
use: { browserName: 'firefox' },
},
],
В этом примере заданы два проекта — один для браузера Chromium, другой для Firefox. Такой подход позволяет запускать тесты для разных браузеров с одной конфигурацией.
1. video
Параметр video управляет записью видео во время
выполнения тестов. Возможные значения:
'on' — всегда записывать видео для каждого теста.'on-first-retry' — записывать видео только для первых
неудачных попыток.'off' — не записывать видео.use: {
video: 'on-first-retry',
},
2. screenshots
Параметр screenshots регулирует создание скриншотов при
неудачных тестах. Возможные значения:
'on' — делать скриншоты при любых сбоях.'only-on-failure' — делать скриншоты только при
сбоях.'off' — не делать скриншоты.use: {
screenshots: 'only-on-failure',
},
3. baseURL
baseURL позволяет задать базовый URL для тестов, что
упрощает написание тестов, не требующих указания полного адреса.
Например, если у вас есть несколько тестов, которые обращаются к одной и
той же системе, достаточно указать baseURL один раз, и
тесты будут использовать его автоматически.
use: {
baseURL: 'https://example.com',
},
.env файлов для конфигурацииДля динамического изменения настроек конфигурации часто используют
.env файлы, где можно хранить ключи API, URL или другие
переменные окружения. Для того чтобы использовать такие файлы,
необходимо установить пакет dotenv и подключить его в
конфигурации.
Пример:
require('dotenv').config();
module.exports = {
use: {
baseURL: process.env.BASE_URL,
video: process.env.VIDEO ? 'on' : 'off',
},
};
В этом примере настройки baseURL и video
читаются из .env файла. Это позволяет не хранить
чувствительные данные в самом коде, что повышает безопасность и гибкость
конфигурации.
1. Reporter
Playwright поддерживает различные репортеры для вывода результатов
тестов. По умолчанию используется репортер dot, но можно
указать другие варианты, такие как json, html,
list и другие.
reporter: [
['dot'], // вывод в виде точек
['json', { outputFile: 'test-results.json' }], // вывод в формате JSON
],
2. Global setup и teardown
Playwright позволяет настроить глобальную подготовку (setup) и очистку (teardown) перед и после запуска тестов. Эти функции могут быть полезны для настройки окружения, например, для инициализации базы данных или очистки кеша.
globalSetup: require.resolve('./global-setup'),
globalTeardown: require.resolve('./global-teardown'),
Файлы global-setup.js и global-teardown.js
могут содержать код для выполнения операций до и после запуска
тестов.
require('dotenv').config();
module.exports = {
timeout: 20000,
retries: 2,
use: {
headless: true,
viewport: { width: 1280, height: 720 },
video: process.env.VIDEO ? 'on' : 'off',
baseURL: process.env.BASE_URL,
actionTimeout: 10000,
screenshots: 'only-on-failure',
},
projects: [
{
name: 'Chrome',
use: { browserName: 'chromium' },
},
{
name: 'Firefox',
use: { browserName: 'firefox' },
},
],
reporter: [
['dot'],
['json', { outputFile: 'test-results.json' }],
],
globalSetup: require.resolve('./global-setup'),
globalTeardown: require.resolve('./global-teardown'),
};
Этот конфигурационный файл демонстрирует использование различных
настроек и интеграцию с .env файлами для повышения гибкости
и безопасности.