BrowserStack предоставляет облачную инфраструктуру для запуска автоматизированных тестов на реальных устройствах и браузерах без необходимости локальной настройки среды. WebdriverIO — популярная JavaScript-библиотека для автоматизации браузеров, поддерживающая интеграцию с BrowserStack через WebDriver протокол.
Для подключения к BrowserStack необходимо зарегистрироваться и получить Access Key и Username, которые будут использоваться в конфигурации WebdriverIO.
Файл конфигурации WebdriverIO (wdio.conf.js) требует
изменения следующих параметров:
exports.config = {
user: process.env.BROWSERSTACK_USERNAME || 'your_username',
key: process.env.BROWSERSTACK_ACCESS_KEY || 'your_access_key',
services: ['browserstack'],
capabilities: [{
browserName: 'chrome',
browserVersion: 'latest',
'bstack:options': {
os: 'Windows',
osVersion: '11',
local: false,
seleniumVersion: '4.1.0',
buildName: 'WebdriverIO BrowserStack Build',
sessionName: 'Sample Test Session'
}
}],
framework: 'mocha',
mochaOpts: {
timeout: 60000
},
reporters: ['spec']
};
Ключевые моменты конфигурации:
user и key — аутентификация для доступа к
BrowserStack.services: ['browserstack'] — подключение встроенного
сервиса для упрощенной работы с BrowserStack.capabilities — описание целевого браузера, операционной
системы и других параметров среды.'bstack:options' — дополнительные настройки
BrowserStack, включая возможность запуска локальных тестов
(local: true), версию Selenium и именование сборки.Для тестов, которые требуют доступа к локальным серверам или закрытым средам, используется BrowserStack Local. Он обеспечивает туннель между локальной машиной и облачной инфраструктурой.
'bstack:options': {
local: true,
localIdentifier: 'TestTunnel123'
}
Запуск локального туннеля осуществляется через пакет
browserstack-local:
npm install browserstack-local --save-dev
Пример инициализации в Node.js:
const browserstack = require('browserstack-local');
const bsLocal = new browserstack.Local();
bsLocal.start({ key: process.env.BROWSERSTACK_ACCESS_KEY }, function(error) {
if (error) throw error;
console.log('BrowserStack Local запущен');
});
После завершения тестов туннель необходимо закрыть:
bsLocal.stop(() => console.log('BrowserStack Local остановлен'));
BrowserStack позволяет запускать тесты параллельно на множестве
устройств и браузеров. Для WebdriverIO это настраивается через массив
capabilities. Каждый объект в массиве — отдельная
конфигурация окружения, которая запускается параллельно:
capabilities: [
{
browserName: 'chrome',
'bstack:options': { os: 'Windows', osVersion: '11' }
},
{
browserName: 'firefox',
'bstack:options': { os: 'Windows', osVersion: '10' }
},
{
browserName: 'safari',
'bstack:options': { os: 'OS X', osVersion: 'Monterey' }
}
],
maxInstances: 5
maxInstances ограничивает количество параллельных
сессий. Оптимизация параллельности позволяет ускорить выполнение тестов
на облачных средах.
BrowserStack интегрируется с WebdriverIO через отчёты о сессиях. Можно отслеживать:
Для включения видео и скриншотов достаточно добавить параметры в
'bstack:options':
'bstack:options': {
captureScreenshots: true,
video: true
}
Параметры buildName и sessionName позволяют
группировать тесты и идентифицировать отдельные сессии в интерфейсе
BrowserStack. Это облегчает анализ ошибок и проведение регрессионного
тестирования.
'bstack:options': {
buildName: 'Regression Suite 2026-01',
sessionName: 'Login Page Test'
}
WebdriverIO с BrowserStack обеспечивает полное покрытие тестами без
необходимости иметь локальные машины под все версии браузеров и
устройств. Настройка через wdio.conf.js и
'bstack:options' позволяет гибко управлять тестовой
инфраструктурой, масштабировать запуск и получать полные отчёты о
сессиях.