Переменные окружения в WebdriverIO используются для управления
конфигурацией тестов без изменения исходного кода. Это позволяет гибко
настраивать запуск тестов под разные среды: локальную разработку,
staging, продакшн или CI/CD. WebdriverIO поддерживает как стандартные
системные переменные окружения, так и переменные, определяемые в файле
.env или через специальные плагины.
Для доступа к переменным окружения в конфигурации WebdriverIO
применяется объект process.env. Его можно использовать в
любом месте wdio.conf.js или wdio.conf.ts.
exports.config = {
specs: ['./test/specs/**/*.js'],
baseUrl: process.env.BASE_URL || 'http://localhost:3000',
capabilities: [{
browserName: 'chrome',
'goog:chromeOptions': {
args: process.env.HEADLESS === 'true' ? ['--headless', '--disable-gpu'] : []
}
}],
};
В примере:
BASE_URL задаёт базовый URL для тестов, с возможностью
fallback на локальный адрес.HEADLESS управляет запуском браузера в безголовом
режиме.Такой подход исключает жесткое хардкодирование конфигурации в коде.
.envДля удобства работы с множеством переменных окружения применяется
пакет dotenv. Он позволяет хранить значения в отдельном
файле .env и автоматически подставлять их в
process.env.
npm install dotenv --save-dev
require('dotenv').config();
exports.config = {
baseUrl: process.env.BASE_URL,
services: ['selenium-standalone'],
capabilities: [{
browserName: 'firefox',
'moz:firefoxOptions': {
args: process.env.HEADLESS === 'true' ? ['-headless'] : []
}
}],
};
.env файла:BASE_URL=https://staging.example.com
HEADLESS=true
API_KEY=12345abcde
Использование .env позволяет централизованно управлять
настройками и безопасно хранить секретные ключи.
WebdriverIO поддерживает передачу переменных напрямую через командную строку:
BASE_URL=https://prod.example.com HEADLESS=false npx wdio run wdio.conf.js
В конфигурации они будут доступны через
process.env.BASE_URL и process.env.HEADLESS.
Этот способ часто применяется в CI/CD, где значения переменных задаются
в настройках пайплайна.
Переменные окружения позволяют изменять конфигурацию в зависимости от среды. Например, для разных браузеров:
const browserName = process.env.BROWSER || 'chrome';
exports.config = {
capabilities: [{
browserName: browserName,
...(browserName === 'chrome' && { 'goog:chromeOptions': { args: ['--headless'] } }),
...(browserName === 'firefox' && { 'moz:firefoxOptions': { args: ['-headless'] } })
}]
};
Такой подход облегчает поддержку одного конфигурационного файла для нескольких окружений и сокращает дублирование кода.
Переменные окружения безопасно применяются для хранения чувствительных данных:
exports.config = {
baseUrl: process.env.BASE_URL,
before: function (capabilities, specs) {
browser.addCommand('login', async function () {
await browser.url('/login');
await $('#username').setValue(process.env.USERNAME);
await $('#password').setValue(process.env.PASSWORD);
await $('button[type="submit"]').click();
});
}
};
Таким образом, логины, пароли и API-ключи не попадают в исходный код и не сохраняются в системе контроля версий.
.env
или CI/CD..env.staging,
.env.prod и загружать нужный файл через
dotenv.config({ path: '.env.staging' }).Переменные окружения в WebdriverIO обеспечивают:
wdio.conf.js для нескольких сред.Использование process.env совместно с
dotenv и CLI-переменными формирует надежную и адаптируемую
систему управления конфигурацией тестов.