WebdriverIO предоставляет гибкую систему конфигураций, позволяющую запускать тесты в разных средах, с различными параметрами браузеров и фреймворков. Множественные конфигурации особенно полезны при необходимости тестирования на нескольких браузерах, устройствах или с различными наборами данных без дублирования кода.
Конфигурационный файл WebdriverIO (wdio.conf.js)
содержит ключевые настройки для запуска тестов:
specs — пути к файлам с тестами.capabilities — параметры
браузеров.services — подключаемые сервисы,
например, Selenium Standalone или Appium.framework — тестовый фреймворк (Mocha,
Jasmine, Cucumber).reporters — отчётность о выполнении
тестов.mochaOpts / jasmineOpts /
cucumberOpts — опции фреймворка.Каждая секция конфигурации может быть расширена для поддержки нескольких вариантов запуска.
capabilitiesДля одновременного тестирования на разных браузерах используется
массив объектов capabilities. Каждый объект описывает
отдельный браузер:
capabilities: [
{
browserName: 'chrome',
maxInstances: 5,
'goog:chromeOptions': {
args: ['--headless', '--disable-gpu']
}
},
{
browserName: 'firefox',
maxInstances: 3,
'moz:firefoxOptions': {
args: ['-headless']
}
}
]
Ключевые моменты:
maxInstances задаёт максимальное количество
параллельных тестов для конкретного браузера.chromeOptions, firefoxOptions и т.д.).configurations для разных средWebdriverIO поддерживает создание нескольких конфигураций через экспорт функции:
exports.config = () => {
const env = process.env.TEST_ENV || 'dev';
if (env === 'prod') {
return {
specs: ['./tests/prod/**/*.js'],
capabilities: [{ browserName: 'chrome' }]
};
}
return {
specs: ['./tests/dev/**/*.js'],
capabilities: [{ browserName: 'firefox' }]
};
};
Особенности:
process.env) позволяют выбирать
конфигурацию без изменения кода.dev, staging,
prod) обеспечивает гибкость при интеграции с CI/CD.capabilities и режимы параллельного выполненияWebdriverIO поддерживает два основных режима запуска нескольких конфигураций:
capabilities
запускается как отдельный процесс.maxInstances и
параметр shardTestFiles.capabilities: [
{
browserName: 'chrome',
maxInstances: 2,
shardTestFiles: true
}
]
shardTestFiles: true делит файлы тестов между
экземплярами браузера.capabilities с
shardTestFiles позволяет максимально ускорить прогон
большого набора тестов.wdio.conf.override.jsДля сложных проектов удобно иметь базовый конфиг и локальные или специфичные конфиги, которые его расширяют:
const baseConfig = require('./wdio.conf.base.js');
exports.config = {
...baseConfig,
specs: ['./tests/mobile/**/*.js'],
capabilities: [
{
browserName: 'chrome',
platformName: 'Android',
deviceName: 'Pixel_6'
}
]
};
require позволяет поддерживать единый
базовый конфиг.services, reporters и
frameworkOpts.Разные конфигурации можно запускать напрямую через командную строку:
npx wdio wdio.conf.js --spec ./tests/login/*.js --capabilities '{"browserName":"firefox"}'
Или создавать профили в package.json:
"scripts": {
"test:chrome": "wdio wdio.conf.js --capabilities '{\"browserName\":\"chrome\"}'",
"test:firefox": "wdio wdio.conf.js --capabilities '{\"browserName\":\"firefox\"}'"
}
Для поддержки разных конфигураций полезно фильтровать тесты по тегам или папкам:
specs: [
'./tests/**/*.spec.js'
],
exclude: [
'./tests/experimental/**/*.spec.js'
]
exclude позволяет отключать тесты для
определённых конфигураций.require и расширение
объекта.Множественные конфигурации в WebdriverIO обеспечивают масштабируемость тестовой инфраструктуры и позволяют поддерживать сложные проекты с минимальными затратами на поддержку и дублирование кода.