WebdriverIO предоставляет гибкие возможности для интеграции с облачными сервисами автоматизации тестирования, такими как Sauce Labs, BrowserStack, LambdaTest и другими. Использование этих платформ позволяет запускать тесты на множестве браузеров и устройств без необходимости локальной инфраструктуры, а также масштабировать тестирование в режиме реального времени.
Подключение к облачному сервису начинается с настройки
конфигурационного файла wdio.conf.js.
Основные изменения касаются секции
services,
user, key и
capabilities.
Пример для Sauce Labs:
exports.config = {
user: process.env.SAUCE_USERNAME,
key: process.env.SAUCE_ACCESS_KEY,
services: ['sauce'],
capabilities: [{
browserName: 'chrome',
platformName: 'Windows 11',
browserVersion: 'latest',
'sauce:options': {
screenResolution: '1920x1080',
build: 'WebdriverIO Cloud Tests',
name: 'Sample Test'
}
}],
logLevel: 'info',
framework: 'mocha',
reporters: ['spec']
};
Ключевые моменты:
user и key — аутентификационные данные
облачного сервиса. Рекомендуется хранить их в переменных окружения.services — подключаемый плагин WebdriverIO для работы с
выбранной платформой.capabilities — определяет параметры запуска браузера,
включая версию, платформу и специфические опции сервиса
(sauce:options).Для BrowserStack и LambdaTest структура конфигурации схожа, различаются только имена сервисов и специфические ключи в capabilities.
Облачные сервисы предоставляют удалённый Selenium
Grid, к которому WebdriverIO подключается через
hostname,
port и
protocol.
Пример подключения к BrowserStack:
exports.config = {
user: process.env.BROWSERSTACK_USERNAME,
key: process.env.BROWSERSTACK_ACCESS_KEY,
hostname: 'hub.browserstack.com',
port: 443,
protocol: 'https',
services: ['browserstack'],
capabilities: [{
browserName: 'firefox',
browserVersion: 'latest',
'bstack:options': {
os: 'Windows',
osVersion: '11',
buildName: 'WDIO Cloud Test',
sessionName: 'Sample Firefox Test'
}
}]
};
Особенности:
hostname, port, protocol
позволяют явно указать адрес удаленного хоста.WebdriverIO поддерживает параллельный запуск тестов на
нескольких устройствах через конфигурацию
maxInstances в capabilities:
capabilities: [{
browserName: 'chrome',
maxInstances: 5,
platformName: 'Windows 11',
browserVersion: 'latest',
'sauce:options': {
build: 'Parallel Test Build'
}
}]
maxInstances задаёт количество параллельных сессий для
одной capability.Облачные сервисы предоставляют API для мониторинга и управления тестами. WebdriverIO позволяет интегрировать их с тестами через hooks:
exports.config = {
afterTest: async function(test, context, { error, result, duration, passed, retries }) {
if (!passed) {
await browser.takeScreenshot();
}
}
};
afterTest позволяет автоматически делать скриншоты при
падении теста.capabilities можно задавать build и
name для упрощения идентификации сессий в панели
управления.Для тестирования мобильных приложений на облачных платформах WebdriverIO поддерживает Appium:
capabilities: [{
platformName: 'iOS',
deviceName: 'iPhone 14',
platformVersion: '16.0',
automationName: 'XCUITest',
app: 'bs://<hashed-app-id>',
'bstack:options': {
projectName: 'Mobile Automation',
buildName: 'iOS Build',
sessionName: 'iPhone Test'
}
}]
app может указывать на загруженное в облако приложение
через URL сервиса.automationName выбирает движок автоматизации (Appium:
XCUITest для iOS, UiAutomator2 для Android).Облачные сервисы интегрируются с CI/CD инструментами (Jenkins, GitHub Actions, GitLab CI). WebdriverIO позволяет:
maxInstances и разные capabilities.Пример с GitHub Actions:
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.conf.js
env:
BROWSERSTACK_USERNAME: ${{ secrets.BROWSERSTACK_USERNAME }}
BROWSERSTACK_ACCESS_KEY: ${{ secrets.BROWSERSTACK_ACCESS_KEY }}
Подключение к облачным сервисам делает WebdriverIO мощным инструментом для масштабного кросс-браузерного и мобильного тестирования, обеспечивая автоматизацию без необходимости локальной инфраструктуры.