Для работы с удалёнными браузерами через облачные сервисы, такие как 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('============================');
}
Эта функция позволяет интегрировать данные о браузере в отчёты автоматизации или выводить их в лог для отладки.
Помимо стандартных возможностей WebdriverIO, облачные платформы предоставляют расширенные команды для получения детальной информации:
browser.executeScript() можно получить данные о платформе
или конфигурации.sessionId.Пример запроса с использованием 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
позволяет:
Такой подход обеспечивает прозрачность и предсказуемость тестирования в распределённых облачных средах.