Playwright предоставляет мощные инструменты для автоматизации тестирования веб-приложений, и одним из важнейших аспектов настройки тестов является конфигурация test runner. Test runner в Playwright служит для управления процессом выполнения тестов, их запуском, настройкой окружения, интеграцией с различными инструментами и отчетами. В этой главе рассмотрены ключевые аспекты конфигурации test runner в Playwright с акцентом на практические примеры и рекомендации.
При настройке Playwright для автоматизации тестов, проект обычно организуется по следующей структуре:
/tests
/example.spec.ts
/otherTest.spec.ts
/playwright.config.ts
/package.json
Главным файлом конфигурации является
playwright.config.ts (или playwright.config.js
для проектов на JavaScript). В нем описываются глобальные настройки для
всех тестов, такие как браузеры, тестовые фреймворки, обработка ошибок,
таймауты и другие параметры.
Playwright поддерживает несколько браузеров, включая Chromium, Firefox и WebKit. В конфигурации можно задать, какие браузеры использовать для запуска тестов.
import { defineConfig } from 'playwright/test';
export default defineConfig({
projects: [
{
name: 'firefox',
use: { browserName: 'firefox' },
},
{
name: 'webkit',
use: { browserName: 'webkit' },
},
{
name: 'chrome',
use: { browserName: 'chromium' },
},
],
});
Каждый проект может быть настроен отдельно с использованием параметра
use, где можно указать настройки браузера. Например, для
использования конкретной версии браузера или настройки дополнительного
окружения.
Таймауты — важный элемент для стабильного выполнения тестов. В Playwright можно настроить глобальные таймауты на тесты, шаги внутри тестов и ожидания.
export default defineConfig({
timeout: 30000, // глобальный таймаут для тестов
projects: [
{
name: 'chrome',
use: {
launchOptions: {
timeout: 10000, // таймаут на запуск браузера
},
},
},
],
});
Если тест превышает указанный таймаут, он будет автоматически завершен с ошибкой. Таймауты можно настроить для разных уровней: для всего теста, отдельных шагов или браузера.
Для каждого теста важно очистить состояние между запусками, чтобы избежать побочных эффектов от предыдущих тестов. Playwright предлагает опцию для конфигурации очистки, которая включает:
Это можно настроить в параметре use.
export default defineConfig({
projects: [
{
name: 'chrome',
use: {
storageState: 'storage.json',
clearCookies: true, // Очистка кук
clearLocalStorage: true, // Очистка локального хранилища
},
},
],
});
Playwright позволяет контролировать поведение браузера, включая запуск в headless или headed режиме, настройку размеров экрана и другие параметры.
export default defineConfig({
use: {
headless: false, // отключение режима без головой
viewport: { width: 1280, height: 720 }, // настройка размера экрана
screen: { width: 1920, height: 1080 }, // использование больших экранов для тестирования адаптивности
},
});
Это удобно для отладки, так как можно наблюдать за процессом выполнения тестов в режиме «с открытым» браузером.
Тестовые отчеты — важный элемент в процессе тестирования. Playwright поддерживает несколько способов вывода отчетов и логов, включая интеграцию с такими инструментами как Allure и JUnit.
export default defineConfig({
reporter: [['dot'], ['allure-playwright']],
});
Этот пример показывает, как настроить несколько репортеров для отображения прогресса выполнения тестов и для создания подробных отчетов. Кроме того, можно указать настройки для логирования ошибок и создания видео.
Playwright позволяет настроить дополнительные параметры для запуска тестов, такие как пользовательские хуки, настройки для определенных тестов или проектных конфигураций.
export default defineConfig({
globalSetup: './global-setup.ts', // глобальная настройка для всех тестов
globalTeardown: './global-teardown.ts', // завершение тестирования
setup: './setup.ts', // настройка перед каждым тестом
teardown: './teardown.ts', // завершение после каждого теста
});
Пользовательские хуки могут использоваться для сложной настройки тестовой среды или для инициализации внешних сервисов (например, базы данных).
Playwright предоставляет механизм для включения или исключения тестов в зависимости от окружения или специфических настроек. Например, можно запускать отдельные тесты только для определенной среды, использовав разные конфигурации:
export default defineConfig({
projects: [
{
name: 'staging',
use: { baseURL: 'https://staging.example.com' },
testMatch: /.*\.staging\.spec\.ts/,
},
{
name: 'production',
use: { baseURL: 'https://example.com' },
testMatch: /.*\.prod\.spec\.ts/,
},
],
});
С помощью таких настроек можно управлять запуском тестов в разных средах, что полезно для CI/CD.
Одним из важнейших аспектов конфигурации является возможность параллельного запуска тестов. Playwright поддерживает параллельное выполнение тестов для ускорения процесса тестирования.
export default defineConfig({
workers: 4, // количество рабочих процессов для параллельного выполнения
});
Чем больше рабочих процессов, тем быстрее тесты, но следует учитывать ресурсы машины. Важно находить баланс между количеством параллельных потоков и нагрузкой на систему.
Playwright может быть интегрирован в любой CI/CD pipeline. Для этого достаточно настроить соответствующие скрипты для запуска тестов. Например, для использования с GitHub Actions или Jenkins, достаточно прописать шаги для установки зависимостей, запуска тестов и публикации отчетов.
name: Playwright CI
on: [push]
jobs:
test:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Set up Node.js
uses: actions/setup-node@v2
with:
node-version: '16'
- name: Install dependencies
run: npm install
- name: Run Playwright tests
run: npx playwright test
Это пример простого pipeline для GitHub Actions, который запускает тесты Playwright при каждом пуше в репозиторий.
Конфигурация test runner в Playwright является мощным инструментом для гибкой настройки среды тестирования. С помощью правильных настроек можно существенно улучшить скорость выполнения тестов, их стабильность и интеграцию с другими системами, такими как CI/CD. Умение эффективно настроить тестовый фреймворк является неотъемлемой частью работы с Playwright, и понимание ключевых параметров конфигурации помогает создать устойчивую и производительную тестовую среду.