Структура wdio.conf.js

Файл wdio.conf.js является ядром конфигурации WebdriverIO. Он определяет, каким образом будут выполняться тесты, какие браузеры использовать, как обрабатывать отчёты и логирование, а также задаёт глобальные настройки фреймворка. Рассмотрим ключевые секции и параметры.


Основные экспорты

Конфигурация экспортируется через модуль:

exports.config = {
    // настройки
};

Все параметры внутри объекта config управляют поведением тестовой среды. Этот объект можно условно разделить на несколько логических блоков: сервер и запуск, браузеры, фреймворк и тесты, репортеры, хуки и глобальные настройки.


Сервер и запуск

Параметры подключения к Selenium или другим драйверам:

hostname: 'localhost',
port: 4444,
path: '/wd/hub',
  • hostname — адрес сервера Selenium или Grid.
  • port — порт сервера.
  • path — путь к эндпоинту WebDriver.

Для запуска тестов через локальный браузер можно опустить эти параметры, если используется встроенный сервис (chromedriver).


Настройка браузеров (Capabilities)

Секция capabilities определяет, какие браузеры и с какими свойствами будут использоваться:

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

Можно определить несколько объектов в массиве capabilities для кросс-браузерного тестирования.


Путь к тестам и их структура

specs: [
    './test/specs/**/*.js'
],
exclude: [
    './test/specs/example.exclude.js'
],
  • specs — шаблон для поиска тестовых файлов. Поддерживается glob-нотация.
  • exclude — файлы, которые необходимо исключить из выполнения.

Для организации тестов обычно используют структуру:

/test
    /specs
    /pageobjects
    /helpers

Фреймворк тестирования

framework: 'mocha',
mochaOpts: {
    ui: 'bdd',
    timeout: 60000
},
  • framework'mocha', 'jasmine', 'cucumber'.

  • mochaOpts / jasmineNodeOpts / cucumberOpts — дополнительные настройки выбранного фреймворка:

    • ui — стиль написания тестов (bdd или tdd).
    • timeout — максимальное время выполнения одного теста.

Репортеры

Репортеры отвечают за визуализацию результатов:

reporters: ['spec', ['allure', { outputDir: 'allure-results' }]],
  • spec — стандартный вывод в консоль.
  • allure — создание структурированных отчетов.
  • Дополнительные репортеры могут быть подключены через npm-пакеты.

Сервисы

Сервисы расширяют функциональность WebdriverIO:

services: ['chromedriver', 'selenium-standalone'],
  • chromedriver — позволяет запускать Chrome без отдельного Selenium.
  • selenium-standalone — автоматическая установка Selenium сервера.
  • devtools — интеграция с Chrome DevTools Protocol.

Сервисы часто сокращают необходимость ручного управления драйверами.


Глобальные настройки

logLevel: 'info',
bail: 0,
baseUrl: 'http://localhost',
waitforTimeout: 10000,
connectionRetryTimeout: 120000,
connectionRetryCount: 3,
  • logLevel — уровень логирования: 'trace', 'debug', 'info', 'warn', 'error', 'silent'.
  • bail — число ошибок до остановки тестов.
  • baseUrl — базовый адрес для относительных URL в тестах.
  • waitforTimeout — стандартное время ожидания элементов.
  • connectionRetryTimeout — таймаут повторного подключения к Selenium.
  • connectionRetryCount — число повторных попыток подключения.

Хуки (Hooks)

Хуки позволяют внедрять кастомный код на разных этапах выполнения тестов:

before: function (capabilities, specs) {
    console.log('Запуск теста');
},
afterTest: function(test, context, { error, result, duration, passed, retries }) {
    if (!passed) {
        console.log(`Тест провален: ${test.title}`);
    }
}

Основные хуки:

  • onPrepare — перед запуском всех тестов.
  • before — перед каждым тестом.
  • afterTest — после каждого теста.
  • onComplete — после выполнения всех тестов.

Используются для логирования, скриншотов, отчётов и интеграций.


Оптимизация и масштабирование

  • Параллельные тесты через maxInstances и несколько capability.
  • Селекторы и Page Objects для чистого и поддерживаемого кода.
  • Глобальные переменные через before или globals для общих данных.
  • Интеграция с CI/CD через сервисы и репортеры.

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