Параметры облачной конфигурации

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).

Основные параметры облачных возможностей

  1. os и osVersion Определяют операционную систему и её версию. Например:

    os: 'Windows', osVersion: '11'
  2. browserName и browserVersion Задают браузер и его версию. Можно использовать latest или конкретный номер версии.

  3. resolution Настройка разрешения экрана для тестируемого устройства в облаке.

  4. local Включение локального туннеля для тестирования локальных сайтов или сайтов, доступных только в корпоративной сети. Пример:

    local: 'true'
  5. seleniumVersion Версия Selenium, используемая в облаке. В некоторых случаях важно задавать её для совместимости с браузерами.

  6. 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 с учётом лимитов облачного сервиса.
  • Использовать отдельные capabilities для разных браузеров и устройств, чтобы тесты можно было запускать параллельно без конфликтов.

Поддержка мобильных устройств

Облачные сервисы предоставляют возможность тестирования на мобильных браузерах и эмуляторах. Пример 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

Облачные параметры легко интегрируются в конвейеры CI/CD (Jenkins, GitHub Actions, GitLab CI):

  • Перед запуском тестов устанавливаются переменные окружения для авторизации.
  • Разделение конфигураций позволяет запускать одни тесты локально, другие — в облаке.
  • Параллельное выполнение ускоряет regression и smoke-тесты.

Пример для 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, сервисов и локального туннеля является ключевым фактором стабильности и эффективности автоматизации.