BrowserStack сервис

Основы интеграции WebdriverIO и BrowserStack

BrowserStack предоставляет облачную инфраструктуру для запуска автоматизированных тестов на реальных устройствах и браузерах без необходимости локальной настройки среды. WebdriverIO — популярная JavaScript-библиотека для автоматизации браузеров, поддерживающая интеграцию с BrowserStack через WebDriver протокол.

Для подключения к BrowserStack необходимо зарегистрироваться и получить Access Key и Username, которые будут использоваться в конфигурации WebdriverIO.

Конфигурация WebdriverIO для BrowserStack

Файл конфигурации 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

Для тестов, которые требуют доступа к локальным серверам или закрытым средам, используется 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'
}

Примеры практического использования

  • Кросс-браузерное тестирование: запуск одного теста на Chrome, Firefox и Safari с разными версиями ОС.
  • Тестирование мобильных приложений: подключение эмуляторов iOS и Android для проверки UI и функциональности.
  • Локальные разработки: проверка внутреннего сервера через BrowserStack Local.

WebdriverIO с BrowserStack обеспечивает полное покрытие тестами без необходимости иметь локальные машины под все версии браузеров и устройств. Настройка через wdio.conf.js и 'bstack:options' позволяет гибко управлять тестовой инфраструктурой, масштабировать запуск и получать полные отчёты о сессиях.