WebdriverIO поддерживает возможность запуска тестов не только локально, но и в облачных сервисах, таких как BrowserStack, Sauce Labs, LambdaTest и других. Облачная конфигурация позволяет масштабировать тестирование, параллельно запускать тесты на разных браузерах и устройствах, а также использовать инфраструктуру с высокой доступностью без необходимости разворачивать её самостоятельно. Для корректной работы требуется правильно настроить параметры подключения и окружение.
wdio.conf.js для облачного запускаОсновной файл конфигурации WebdriverIO (wdio.conf.js)
содержит секцию capabilities и секцию
services, которые критически важны для облачного
запуска:
exports.config = {
user: process.env.BROWSERSTACK_USER || 'USERNAME',
key: process.env.BROWSERSTACK_KEY || 'ACCESS_KEY',
services: ['browserstack'],
updateJob: false,
specs: [
'./test/specs/**/*.js'
],
capabilities: [{
browserName: 'chrome',
browserVersion: 'latest',
'bstack:options': {
os: 'Windows',
osVersion: '11',
resolution: '1920x1080',
local: 'false',
seleniumVersion: '4.0.0'
}
}],
logLevel: 'info',
framework: 'mocha',
reporters: ['spec']
};
Ключевые моменты:
user и key — обязательные параметры для
авторизации в облаке. Рекомендуется хранить их через переменные
окружения.services — массив подключаемых сервисов WebdriverIO.
Для облака указывается, например, browserstack или
sauce.capabilities — массив объектов, описывающих
конфигурацию браузеров, версий, ОС и дополнительных опций.bstack:options — пространство имен для дополнительных
настроек BrowserStack. Для других сервисов, таких как Sauce Labs,
структура будет отличаться (sauce:options).os и osVersion
Определяют операционную систему и её версию. Например:
os: 'Windows', osVersion: '11'browserName и
browserVersion Задают браузер и его версию. Можно
использовать latest или конкретный номер версии.
resolution Настройка разрешения
экрана для тестируемого устройства в облаке.
local Включение локального туннеля
для тестирования локальных сайтов или сайтов, доступных только в
корпоративной сети. Пример:
local: 'true'seleniumVersion Версия Selenium,
используемая в облаке. В некоторых случаях важно задавать её для
совместимости с браузерами.
buildName и
projectName Используются для организации тестов в
панели облачного сервиса. Пример:
buildName: 'Regression Build - Jan 2026',
projectName: 'WebdriverIO Automation'WebdriverIO позволяет использовать ключ maxInstances для
управления количеством параллельных запусков:
capabilities: [{
browserName: 'chrome',
maxInstances: 5,
'bstack:options': {
os: 'Windows',
osVersion: '11'
}
}]
maxInstances определяет, сколько сессий одного браузера
может запускаться одновременно.capabilities.Пример с несколькими браузерами и ОС:
capabilities: [
{
browserName: 'chrome',
browserVersion: 'latest',
'bstack:options': { os: 'Windows', osVersion: '11' }
},
{
browserName: 'firefox',
browserVersion: 'latest',
'bstack:options': { os: 'OS X', osVersion: 'Monterey' }
}
]
Для тестирования сайтов, недоступных извне, облачные сервисы
предоставляют локальный туннель. Настройка
осуществляется через параметр local и запуск
вспомогательного процесса:
'browserstack.local': true
На практике это часто сопровождается запуском утилиты BrowserStack Local или Sauce Connect перед стартом тестов. В WebdriverIO это можно автоматизировать через сервис:
services: [['browserstack', {
browserstackLocal: true
}]]
Облачные сервисы позволяют добавлять метаданные для удобного отслеживания тестов:
buildName — имя сборки.projectName — название проекта.name — индивидуальное имя теста, которое будет
отображаться в панели сервиса.Пример:
'bstack:options': {
os: 'Windows',
osVersion: '11',
buildName: 'Regression Build',
projectName: 'WebdriverIO Automation',
name: 'Login Test'
}
Эти параметры помогают фильтровать тесты и отслеживать историю выполнения.
user, key), чтобы не хранить
их в репозитории.wdio.local.conf.js и
wdio.cloud.conf.js).maxInstances с учётом лимитов облачного
сервиса.Облачные сервисы предоставляют возможность тестирования на мобильных браузерах и эмуляторах. Пример capability для iOS:
capabilities: [{
deviceName: 'iPhone 14',
platformName: 'iOS',
browserName: 'Safari',
'bstack:options': {
osVersion: '16',
realMobile: 'true'
}
}]
Для Android:
capabilities: [{
deviceName: 'Samsung Galaxy S22',
platformName: 'Android',
browserName: 'Chrome',
'bstack:options': {
osVersion: '13',
realMobile: 'true'
}
}]
realMobile указывает на использование реального
устройства, а не эмулятора.osVersion задаёт версию операционной системы
устройства.Облачные параметры легко интегрируются в конвейеры CI/CD (Jenkins, GitHub Actions, GitLab CI):
Пример для GitHub Actions:
env:
BROWSERSTACK_USER: ${{ secrets.BROWSERSTACK_USER }}
BROWSERSTACK_KEY: ${{ secrets.BROWSERSTACK_KEY }}
jobs:
e2e-tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install dependencies
run: npm ci
- name: Run WebdriverIO tests
run: npx wdio run wdio.cloud.conf.js
Параметры облачной конфигурации WebdriverIO обеспечивают гибкость при масштабировании тестирования, управлении браузерами и устройствами, а также интеграции с CI/CD. Правильная настройка capabilities, сервисов и локального туннеля является ключевым фактором стабильности и эффективности автоматизации.