WebdriverIO предоставляет гибкие механизмы передачи параметров в тестовые сценарии, что позволяет создавать универсальные и повторно используемые тесты. Параметры могут передаваться через конфигурационный файл, командную строку, переменные окружения и динамически внутри тестов.
Конфигурационный файл wdio.conf.js является центральным
местом для задания параметров тестовой среды. В секции
capabilities или в глобальных свойствах можно задать
значения, которые будут использоваться во всех тестах:
exports.config = {
baseUrl: 'https://example.com',
maxInstances: 5,
capabilities: [{
browserName: 'chrome',
'goog:chromeOptions': {
args: ['--headless', '--disable-gpu']
}
}],
params: {
login: {
username: 'testuser',
password: 'securepass'
}
}
};
Ключевой момент — использование объекта params. Он
позволяет централизованно хранить данные для тестов, которые можно
динамически считывать через browser.config.params:
const username = browser.config.params.login.username;
const password = browser.config.params.login.password;
Это особенно полезно для передачи учетных данных, URL, токенов или других конфигурационных значений.
WebdriverIO поддерживает передачу параметров при запуске через CLI. С
помощью флага --suite, --spec, а также
пользовательских параметров можно управлять поведением тестов без
изменения кода.
Пример запуска с передачей переменной окружения:
npx wdio run wdio.conf.js --baseUrl=https://staging.example.com
В конфигурации это значение можно прочитать через
process.argv или через browser.options:
const baseUrl = browser.options.baseUrl || 'https://default.example.com';
Такой подход позволяет запускать один и тот же набор тестов в разных средах, изменяя только параметры запуска.
Использование переменных окружения обеспечивает безопасную и гибкую передачу секретных данных, например токенов или паролей.
export LOGIN_USER=testuser
export LOGIN_PASS=securepass
npx wdio run wdio.conf.js
В тесте можно получить доступ к этим переменным через
process.env:
const username = process.env.LOGIN_USER;
const password = process.env.LOGIN_PASS;
Комбинирование переменных окружения с параметрами из конфигурации повышает переносимость тестов между разными машинами и CI/CD системами.
WebdriverIO поддерживает передачу параметров прямо в тестовые
функции. Например, с использованием Mocha можно
реализовать динамическое создание тестов через forEach или
map:
const users = [
{ username: 'user1', password: 'pass1' },
{ username: 'user2', password: 'pass2' }
];
users.forEach(({ username, password }) => {
it(`Логин для ${username}`, async () => {
await browser.url('/login');
await $('#username').setValue(username);
await $('#password').setValue(password);
await $('#loginButton').click();
const successMessage = await $('#success').getText();
expect(successMessage).toContain('Welcome');
});
});
Подход позволяет запускать один и тот же сценарий с разными данными, не дублируя код тестов.
Сервисы WebdriverIO и хуки (before, after,
beforeTest, afterTest) также могут
использовать параметры из конфигурации или переменных окружения.
beforeTest: async (test) => {
const env = process.env.TEST_ENV || 'staging';
console.log(`Тест выполняется в окружении: ${env}`);
}
Такой способ передачи параметров помогает управлять поведением тестов до их выполнения, включая настройку данных, очистку окружения и логирование.
При работе с TypeScript параметры удобно типизировать. Например, для
объекта params:
interface LoginParams {
username: string;
password: string;
}
const loginParams: LoginParams = browser.config.params.login;
Типизация повышает читаемость кода и предотвращает ошибки при использовании параметров.
wdio.conf.js или через переменные
окружения..env файлы или секретные хранилища
CI/CD.Эффективное управление параметрами позволяет создавать масштабируемые, переносимые и легко поддерживаемые тестовые сценарии с WebdriverIO.