Конфигурационный файл wdio.conf.js

wdio.conf.js — это основной файл конфигурации WebdriverIO, который определяет поведение тестового окружения, настройки браузеров, фреймворков, репортеров и других компонентов автоматизированного тестирования. Правильная организация и понимание этого файла критически важны для стабильного и масштабируемого тестирования.


Структура файла конфигурации

Файл wdio.conf.js экспортирует объект с настройками, в котором можно выделить несколько ключевых блоков:

  1. Runner и путь до драйвера

    exports.config = {
        runner: 'local',
        path: '/wd/hub',
    };
    • runner — определяет, где будут выполняться тесты: локально ('local') или через удаленный сервис ('browserstack', 'sauce').
    • path — путь до Selenium Grid или локального сервера WebDriver. Для большинства локальных сценариев используется /wd/hub.
  2. Тестовые файлы

    specs: [
        './test/specs/**/*.js'
    ],
    exclude: [
        './test/specs/ignore/*.js'
    ],
    • specs — массив путей до тестовых файлов. Используются шаблоны glob, позволяющие легко подключать несколько тестов.
    • exclude — массив файлов, которые не должны запускаться.
  3. Capabilities (возможности браузера)

    maxInstances: 5,
    capabilities: [{
        browserName: 'chrome',
        'goog:chromeOptions': {
            args: ['--headless', '--disable-gpu']
        }
    }],
    • maxInstances — максимальное количество параллельных сессий.

    • capabilities — массив объектов с настройками конкретных браузеров.

      • browserName — имя браузера (chrome, firefox, edge).
      • Опции браузера (args) позволяют запускать его в headless режиме, отключать уведомления, управлять профилями.
  4. Логирование

    logLevel: 'info',
    outputDir: './logs',
    • logLevel — уровень логирования (trace, debug, info, warn, error, silent).
    • outputDir — директория для хранения логов WebDriver.
  5. Фреймворк тестирования

    framework: 'mocha',
    mochaOpts: {
        ui: 'bdd',
        timeout: 60000
    },
    • framework — фреймворк для написания тестов (mocha, jasmine, cucumber).
    • mochaOpts — настройки для Mocha: стиль интерфейса (bdd/tdd) и таймауты.
  6. Репортеры

    reporters: ['spec', ['allure', { outputDir: 'allure-results' }]],
    • Репортеры выводят результаты тестов в консоль или сохраняют в файлы для анализа.
    • spec — стандартный вывод в консоль.
    • allure — интеграция с Allure Report, требует указания директории для результатов.
  7. Hooks (хуки жизненного цикла тестов) WebdriverIO позволяет использовать хуки для выполнения кода в определенные моменты:

    beforeSession: function (config, capabilities, specs) {
        console.log('Начало сессии');
    },
    before: function (capabilities, specs) {
        browser.setTimeout({ implicit: 5000 });
    },
    afterTest: function(test, context, { error, result, duration, passed, retries }) {
        if (!passed) {
            browser.takeScreenshot();
        }
    },
    onComplete: function(exitCode, config, capabilities, results) {
        console.log('Тестирование завершено');
    }
    • beforeSession — выполняется до создания сессии WebDriver.
    • before — перед каждым тестом, используется для установки таймаутов и глобальных настроек браузера.
    • afterTest — после выполнения теста, удобно для скриншотов и логирования ошибок.
    • onComplete — после завершения всех тестов, используется для генерации отчетов.
  8. Настройки таймаутов

    waitforTimeout: 10000,
    connectionRetryTimeout: 120000,
    connectionRetryCount: 3,
    • waitforTimeout — глобальный таймаут ожидания элементов.
    • connectionRetryTimeout — время ожидания при проблемах с соединением WebDriver.
    • connectionRetryCount — количество повторных попыток подключения.

Практические рекомендации

  • Разделение capabilities: Для параллельного тестирования можно задать массив capabilities с разными браузерами или версиями.
  • Использование хуков: Позволяет централизованно управлять логами, скриншотами и глобальными настройками без дублирования кода в тестах.
  • Конфигурация репортеров: Allure и другие визуальные репортеры значительно упрощают анализ большого объема тестов.
  • Логирование и отладка: Для CI/CD важно сохранять логи в отдельную директорию и устанавливать уровень логирования на debug или info.
  • Подключение дополнительных сервисов: WebdriverIO поддерживает сервисы для ChromeDriver, Selenium Standalone, Appium, BrowserStack и Sauce Labs, которые подключаются через отдельные строки в конфигурации.

Файл wdio.conf.js является ядром автоматизации на WebdriverIO. Корректная настройка всех блоков — от браузеров до хуков и репортеров — обеспечивает стабильное, управляемое и масштабируемое тестирование веб-приложений.