Конфигурация test runner

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, // количество рабочих процессов для параллельного выполнения
});

Чем больше рабочих процессов, тем быстрее тесты, но следует учитывать ресурсы машины. Важно находить баланс между количеством параллельных потоков и нагрузкой на систему.

Интеграция с CI/CD

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, и понимание ключевых параметров конфигурации помогает создать устойчивую и производительную тестовую среду.