WebdriverIO поддерживает интеграцию с удалёнными Selenium Grid или облачными сервисами, такими как BrowserStack, Sauce Labs, LambdaTest и другими. Использование удалённого Grid сервера позволяет запускать тесты параллельно на множестве платформ и браузеров, обеспечивая масштабируемость и ускорение тестирования.
wdio.conf.js для удалённого GridДля подключения к удалённому Selenium Grid ключевыми параметрами являются:
hostname — адрес сервера Grid.port — порт, на котором доступен Grid (по умолчанию
4444 для Selenium Grid 3).path — путь к эндпоинту WebDriver (обычно
/wd/hub).protocol — протокол передачи данных (http
или https).Пример базовой конфигурации:
exports.config = {
hostname: 'grid.example.com',
port: 4444,
path: '/wd/hub',
protocol: 'http',
capabilities: [{
browserName: 'chrome',
browserVersion: 'latest',
'goog:chromeOptions': {
args: ['--headless', '--disable-gpu']
}
}],
logLevel: 'info',
framework: 'mocha',
reporters: ['spec'],
};
Ключевой момент: в capabilities
необходимо указывать браузеры и их версии, которые поддерживает
удалённый Grid. Для некоторых облачных сервисов добавляются
специфические опции, например bstack:options для
BrowserStack.
Для облачных Grid-сервисов настройки могут включать авторизацию. Например, для BrowserStack:
exports.config = {
user: process.env.BROWSERSTACK_USER,
key: process.env.BROWSERSTACK_KEY,
hostname: 'hub.browserstack.com',
port: 443,
protocol: 'https',
path: '/wd/hub',
capabilities: [{
browserName: 'firefox',
browserVersion: 'latest',
'bstack:options': {
os: 'Windows',
osVersion: '11',
seleniumVersion: '4.8.0',
local: 'false'
}
}],
logLevel: 'info',
framework: 'mocha',
reporters: ['spec'],
};
Особенности:
BROWSERSTACK_USER и
BROWSERSTACK_KEY безопаснее хранить вне кода.bstack:options.local позволяет запускать тесты на
локальных ресурсах через BrowserStack Local.Для Sauce Labs и LambdaTest структура аналогична, но с другими именами опций.
WebdriverIO позволяет запускать несколько сессий одновременно. Для удалённого Grid это особенно важно, чтобы ускорить тестирование на разных браузерах:
exports.config = {
maxInstances: 5,
capabilities: [
{
browserName: 'chrome',
maxInstances: 3
},
{
browserName: 'firefox',
maxInstances: 2
}
],
};
Пояснение:
maxInstances на уровне конфигурации ограничивает
количество одновременных сессий для всего тестового запуска.capabilities можно задавать
индивидуальное количество параллельных экземпляров браузера.Иногда Grid доступен через нестандартный порт или защищён HTTPS-сертификат. WebdriverIO поддерживает такие сценарии:
exports.config = {
protocol: 'https',
hostname: 'secure-grid.example.com',
port: 8443,
path: '/wd/hub',
capabilities: [{
browserName: 'chrome',
acceptInsecureCerts: true
}],
};
Важно: acceptInsecureCerts: true
позволяет работать с самоподписанными сертификатами на тестовом
Grid.
Проверка работы с Grid включает несколько шагов:
curl http://grid.example.com:4444/wd/hub/status.logLevel: 'debug' помогает видеть
отправляемые команды и ответы сервера.Проблемы подключения часто связаны с неверным path,
портом или отсутствием поддержки нужного браузера на удалённом Grid.
При интеграции в CI/CD важно учитывать:
maxInstances и capabilities.connectionRetryTimeout и
waitforTimeout.Пример:
exports.config = {
connectionRetryTimeout: 120000,
waitforTimeout: 15000,
connectionRetryCount: 3,
};
Эти настройки повышают устойчивость тестов к временным задержкам и сбоям сети.
Selenium Grid 4 использует W3C WebDriver протокол по умолчанию. WebdriverIO полностью совместим с этим протоколом, что гарантирует корректную работу команд для всех браузеров, включая новые версии Chrome, Firefox и Edge.
Для передачи специфичных опций браузера используется формат W3C
capabilities с именованными объектами
(goog:chromeOptions, moz:firefoxOptions), что
является стандартом для современных Grid-серверов.
Подключение к удалённому Grid серверу обеспечивает гибкость
тестирования, масштабируемость и параллельное выполнение тестов, при
этом ключевыми аспектами остаются правильная конфигурация
wdio.conf.js, корректные capabilities и учет
специфики используемого Grid или облачного провайдера.