WebdriverIO — это мощный инструмент для автоматизации тестирования
веб-приложений на JavaScript. Его гибкость обеспечивается через
конфигурационный файл wdio.conf.js, где задаются все
ключевые параметры работы фреймворка. Конфигурация позволяет управлять
поведением тестов, интеграцией с сервисами, отчетностью и
взаимодействием с браузерами.
Файл конфигурации экспортирует объект, содержащий основные настройки:
exports.config = {
runner: 'local',
specs: ['./test/specs/**/*.js'],
exclude: [],
maxInstances: 5,
capabilities: [],
logLevel: 'info',
bail: 0,
baseUrl: 'http://localhost',
waitforTimeout: 10000,
connectionRetryTimeout: 120000,
connectionRetryCount: 3,
services: [],
framework: 'mocha',
reporters: ['spec']
};
Каждое свойство имеет строгое назначение и влияет на поведение WebdriverIO.
runner — определяет, где будут запускаться тесты:
локально (local) или удалённо через облачные сервисы
(например, browserstack или sauce).maxInstances — максимальное количество параллельных
экземпляров браузера. Если тестов много, увеличение этого параметра
сокращает общее время прогона, но требует больше ресурсов.capabilities — массив объектов, задающих параметры
запуска браузеров. Пример для Chrome:capabilities: [{
maxInstances: 2,
browserName: 'chrome',
'goog:chromeOptions': {
args: ['--headless', '--disable-gpu']
}
}]
Ключевые моменты:
capabilities описывает один тип
браузера.maxInstances внутри capabilities ограничивает
количество параллельных сессий конкретного браузера.specs — массив шаблонов путей к тестовым файлам.exclude — исключает определённые файлы или директории
из прогонов.Пример:
specs: ['./tests/**/*.test.js'],
exclude: ['./tests/helpers/*.js']
Важно поддерживать структурированную иерархию файлов, чтобы
specs легко масштабировались при росте проекта.
logLevel — уровень логирования: trace,
debug, info, warn,
error, silent. Рекомендуется использовать
info или debug для отладки.bail — количество тестов, после которого выполнение
прекращается при последовательных падениях.waitforTimeout — таймаут ожидания для команд
waitFor* в миллисекундах.connectionRetryTimeout — время ожидания ответа от
удалённого сервера.connectionRetryCount — количество повторных попыток
подключения.Эти параметры критичны для стабильного выполнения тестов, особенно в CI/CD среде, где нестабильное соединение может приводить к ложным падениям.
baseUrl — основной адрес приложения. Используется для
сокращения ссылок в тестах:browser.url('/login'); // откроет http://localhost/login
waitforTimeout и waitforInterval (если
указан) позволяют глобально управлять временем ожидания элементов.framework — выбирается тестовый фреймворк:
mocha, jasmine или cucumber.mochaOpts: {
ui: 'bdd',
timeout: 60000
}
Ключевое значение параметра timeout — контроль времени
выполнения каждого теста, предотвращение «зависания» прогонов.
services — подключаемые сервисы WebdriverIO,
облегчающие интеграцию с браузерами, облачными платформами, отчетностью.
Примеры:services: ['chromedriver', 'selenium-standalone']
chromedriver автоматически управляет драйвером
Chrome.selenium-standalone позволяет запускать локальный
Selenium сервер без отдельной установки.reporters — массив подключаемых репортеров:
spec, allure, dot,
junit.Пример интеграции Allure:
reporters: ['spec', ['allure', { outputDir: 'allure-results' }]]
Ключевые моменты:
outputDir — директория для хранения результатов.Конфигурация позволяет использовать хуки, которые выполняются в определённые моменты тестового цикла:
before — перед запуском каждого теста.afterTest — после завершения теста, полезно для
скриншотов при падениях.onComplete — после завершения всего прогона.Пример хука для скриншотов:
afterTest: async function(test, context, { error }) {
if (error) {
await browser.saveScreenshot(`./errorShots/${test.title}.png`);
}
}
Хуки делают конфигурацию гибкой, позволяя централизованно обрабатывать ошибки, настраивать окружение и вести аудит тестов.
baseUrl,
browser и timeout, чтобы конфигурация была
переносимой между локальной и CI средой.maxInstances для предотвращения
перегрузки системы при параллельных прогонах.Эта конфигурация задает фундамент стабильной и масштабируемой автоматизации тестирования с WebdriverIO. Она охватывает запуск браузеров, структуру тестов, логирование, таймауты, интеграцию сервисов и управление отчетностью, обеспечивая контроль над всеми ключевыми аспектами тестового процесса.