Управление сессией на облаке

WebdriverIO предоставляет мощные возможности для управления тестовыми сессиями в облачных средах, таких как BrowserStack, Sauce Labs или LambdaTest. Работа с облаком позволяет запускать тесты на множестве конфигураций браузеров и устройств без необходимости локальной установки среды. Управление сессией включает создание, настройку, мониторинг и завершение тестовых сессий, а также взаимодействие с облачными API для получения расширенной информации о тестах.


Конфигурация облачного провайдера

Для работы с облаком в WebdriverIO необходимо правильно настроить wdio.conf.js:

exports.config = {
    user: process.env.BROWSERSTACK_USER,
    key: process.env.BROWSERSTACK_KEY,
    services: ['browserstack'],
    capabilities: [{
        browserName: 'chrome',
        browserVersion: 'latest',
        'bstack:options': {
            os: 'Windows',
            osVersion: '11',
            sessionName: 'My WebdriverIO Test',
            buildName: 'Build 1'
        }
    }]
};

Ключевые моменты конфигурации:

  • user и key — учетные данные облачного провайдера.
  • services — список сервисов, например 'browserstack' или 'sauce'.
  • capabilities — настройки браузера и устройства.
  • bstack:options (для BrowserStack) или sauce:options (для Sauce Labs) — дополнительные параметры, включая имя сессии, версию ОС, построение сборки, а также метки теста.

Запуск и управление сессией

После настройки конфигурации WebdriverIO автоматически создаёт сессию на облаке при старте тестов. Сессия имеет уникальный идентификатор (sessionId), который позволяет:

  • Отслеживать прогресс теста в облаке.
  • Получать видео и логи выполнения.
  • Завершать сессию по необходимости.

Пример получения sessionId в тесте:

describe('Cloud Session Test', () => {
    it('should log session ID', async () => {
        const sessionId = await browser.getSessionId();
        console.log('Session ID:', sessionId);
    });
});

С помощью sessionId можно интегрироваться с REST API облачного провайдера для получения информации о тесте или обновления его статуса.


Взаимодействие с облачными API

Облачные провайдеры предоставляют REST API для управления сессиями. Примеры возможностей:

  • Обновление статуса теста: пометка теста как успешного или проваленного.
  • Получение видео сессии: скачивание записи прохождения теста.
  • Получение логов и скриншотов: анализ ошибок или проблем с тестовой средой.

Пример для BrowserStack:

const axios = require('axios');

async function updateTestStatus(sessionId, status) {
    const auth = {
        username: process.env.BROWSERSTACK_USER,
        password: process.env.BROWSERSTACK_KEY
    };

    await axios.put(`https://api.browserstack.com/automate/sessions/${sessionId}.json`, 
        { status: status }, 
        { auth }
    );
}

// В тесте
const sessionId = await browser.getSessionId();
await updateTestStatus(sessionId, 'passed');

Важные аспекты работы с API:

  • Авторизация выполняется через логин и ключ API.
  • Формат данных и конечные точки различаются между провайдерами, но принцип работы идентичен.
  • Обновление статуса после завершения теста обеспечивает правильный учёт результатов в облаке.

Контроль сессий и масштабирование

WebdriverIO позволяет управлять одновременно множеством сессий через параллельное выполнение. Конфигурация maxInstances в wdio.conf.js определяет число одновременно работающих сессий:

capabilities: [{
    browserName: 'chrome',
    maxInstances: 5
}]

Это позволяет:

  • Параллельно тестировать различные браузеры и версии ОС.
  • Сократить общее время прогонки тестов.
  • Легко интегрировать с CI/CD пайплайнами (Jenkins, GitHub Actions, GitLab CI).

Для мониторинга и контроля сессий можно использовать:

  • Встроенные логи WebdriverIO (browser.getLogs('browser')).
  • Панель управления облачного провайдера, где отображаются все активные сессии.
  • WebdriverIO hooks (onPrepare, onComplete, afterSession) для кастомных действий перед или после тестов.

Завершение сессии

Сессия автоматически закрывается после завершения теста, но иногда требуется принудительное завершение:

await browser.deleteSession();

При необходимости завершения всех активных сессий на облаке:

  • Использовать API провайдера для массового закрытия.
  • Контролировать таймауты, чтобы не держать ненужные сессии и не расходовать лимит облака.

Ведение отчётности и аналитики

Для облачных сессий полезно собирать:

  • Видео прохождения тестов — помогает анализировать визуальные ошибки.
  • Скриншоты — особенно при падении теста.
  • Логи браузера и WebDriver — для диагностики нестабильного поведения.
  • Статус прохождения тестов — интеграция с CI/CD и отчётами Allure.

Эти данные можно автоматически загружать через API и сохранять для последующего анализа.


Управление сессиями на облаке в WebdriverIO сочетает гибкость конфигурации, мониторинг выполнения, интеграцию с облачными API и масштабируемость. Правильное использование этих возможностей обеспечивает надежное тестирование на разнообразных платформах без ограничения локальной среды.