WebdriverIO предоставляет гибкую систему конфигураций, позволяющую адаптировать тестовую среду под разные задачи и окружения. Профили конфигурации упрощают управление настройками для локальной разработки, CI/CD, различных браузеров и мобильных платформ.
Файл конфигурации WebdriverIO (wdio.conf.js или
.ts) является центральным элементом настройки тестовой
среды. Он включает параметры:
Конфигурация позволяет задавать глобальные переменные, тайм-ауты, hooks для выполнения действий до и после тестов.
Разделение конфигураций на профили позволяет иметь несколько вариантов настроек в рамках одного проекта. Основные сценарии использования профилей:
Локальная разработка Настройки ориентированы на скорость и удобство отладки:
CI/CD Профили для интеграции с системами автоматической сборки:
Кросс-браузерное тестирование Позволяет запускать один и тот же набор тестов на разных браузерах или устройствах:
Мобильное тестирование Профили для Appium и эмуляторов:
iOS,
Android), версию OS и устройство.WebdriverIO поддерживает передачу параметров при запуске через CLI:
npx wdio run wdio.conf.js --profile ci
В конфигурационном файле можно определить объект
profiles, где каждый профиль наследует общие настройки и
переопределяет необходимые:
exports.config = {
runner: 'local',
specs: ['./tests/**/*.js'],
capabilities: [],
services: ['selenium-standalone'],
framework: 'mocha',
reporters: ['spec'],
profiles: {
ci: {
capabilities: [
{ browserName: 'chrome', 'goog:chromeOptions': { args: ['--headless'] } }
],
reporters: ['spec', ['allure', { outputDir: 'allure-results' }]]
},
mobile: {
services: ['appium'],
capabilities: [
{ platformName: 'iOS', deviceName: 'iPhone 14', platformVersion: '16.0' },
{ platformName: 'Android', deviceName: 'Pixel 7', platformVersion: '13' }
]
}
}
};
При использовании профилей можно переопределять любые
параметры, включая specs,
capabilities, services, timeouts
и hooks.
Для сложных сценариев возможно создание динамической конфигурации с использованием функций и переменных окружения:
const environment = process.env.TEST_ENV || 'local';
exports.config = {
runner: 'local',
specs: ['./tests/**/*.js'],
capabilities: [],
services: ['selenium-standalone'],
framework: 'mocha',
reporters: ['spec'],
...require(`./wdio.profiles.${environment}.js`)
};
Такой подход позволяет хранить отдельные файлы для каждого профиля
(wdio.profiles.ci.js, wdio.profiles.local.js)
и автоматически подключать нужный.
Hooks (before, after,
beforeSuite, afterSuite) также можно
адаптировать под профиль. Например, для CI можно добавлять
дополнительные логирования или отчеты:
before: function (capabilities, specs) {
if (process.env.TEST_ENV === 'ci') {
console.log('Запуск тестов в CI среде');
}
}
Object.assign для объединения
настроек.Профили конфигурации позволяют сделать тестовую инфраструктуру гибкой, масштабируемой и легко адаптируемой под разные задачи, что особенно важно при поддержке большого количества браузеров, платформ и окружений.