Получение информации о браузере в облаке

Настройка подключения к облачному сервису

Для работы с удалёнными браузерами через облачные сервисы, такие как BrowserStack, Sauce Labs или LambdaTest, WebdriverIO предоставляет встроенную поддержку удалённых сессий. Основной принцип работы заключается в использовании удалённого веб-драйвера, который управляет браузером, запущенным в облаке, через стандартный протокол WebDriver.

Для подключения необходимо определить capabilities и удалённый URL сервиса:

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: 'WebdriverIO Cloud Session'
        }
    }],
    logLevel: 'info',
    framework: 'mocha',
    reporters: ['spec'],
    mochaOpts: {
        ui: 'bdd',
        timeout: 60000
    }
};

Ключевые моменты:

  • user и key — учётные данные для доступа к облачному сервису.
  • capabilities определяют конфигурацию браузера, операционной системы и дополнительных опций сессии.
  • bstack:options — специфические настройки BrowserStack, включающие имя сессии и версию ОС.

Получение информации о браузере

WebdriverIO предоставляет объект browser, через который можно получить различные сведения о сессии. В контексте облака важны следующие методы:

  • browser.capabilities — объект, содержащий все характеристики запущенного браузера. С его помощью можно узнать версию браузера, платформу и другие параметры.
console.log('Браузер:', browser.capabilities.browserName);
console.log('Версия браузера:', browser.capabilities.browserVersion);
console.log('ОС:', browser.capabilities.platformName);
  • browser.getSession() — возвращает объект с информацией о текущей сессии. Полезно для логирования и интеграции с отчётами тестирования.
const session = await browser.getSession();
console.log('ID сессии:', session.sessionId);
console.log('Статус сессии:', session.capabilities);

Проверка и вывод данных сессии в облаке

В облачных сервисах важно корректно отслеживать, какие браузеры и ОС используются для тестирования. Можно создавать универсальную функцию для вывода полной информации о сессии:

async function printBrowserInfo() {
    const caps = browser.capabilities;
    console.log('============================');
    console.log('Информация о браузере:');
    console.log('Браузер:', caps.browserName);
    console.log('Версия браузера:', caps.browserVersion || caps.version);
    console.log('Операционная система:', caps.platformName || caps.os);
    console.log('Название сессии:', caps['bstack:options']?.sessionName || 'не указано');
    console.log('ID сессии:', (await browser.getSession()).sessionId);
    console.log('============================');
}

Эта функция позволяет интегрировать данные о браузере в отчёты автоматизации или выводить их в лог для отладки.

Использование команд WebDriver для расширенной информации

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

  • BrowserStack: через browser.executeScript() можно получить данные о платформе или конфигурации.
  • Sauce Labs: поддерживает REST API, где можно получить полную информацию о сессии по её sessionId.
  • LambdaTest: позволяет получать URL для видео-записи сессии, сетевой лог и информацию о тестируемом устройстве.

Пример запроса с использованием executeScript:

const browserName = await browser.execute(() => navigator.userAgent);
console.log('User Agent:', browserName);

Автоматическая интеграция информации в отчёты

В WebdriverIO часто применяются Allure или Spec Reporter для визуализации результатов. Информацию о браузере удобно прикреплять к каждому тесту:

const { addAttachment } = require('@wdio/allure-reporter').default;

addAttachment('Browser Info', JSON.stringify(browser.capabilities, null, 2), 'application/json');

Это обеспечивает полную трассировку среды тестирования, особенно при работе с различными версиями браузеров и ОС в облаке.

Выводы по работе с браузерами в облаке

Использование browser.capabilities, browser.getSession() и дополнительных команд WebDriver позволяет:

  • Получать полные данные о браузере, версии и платформе.
  • Логировать и интегрировать информацию в отчёты.
  • Отслеживать, какая среда используется для конкретного теста в облаке.
  • Сохранять уникальные идентификаторы сессий для последующего анализа.

Такой подход обеспечивает прозрачность и предсказуемость тестирования в распределённых облачных средах.