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
облачного провайдера для получения информации о тесте или обновления его
статуса.
Облачные провайдеры предоставляют 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:
WebdriverIO позволяет управлять одновременно множеством сессий через
параллельное выполнение. Конфигурация
maxInstances в wdio.conf.js определяет число
одновременно работающих сессий:
capabilities: [{
browserName: 'chrome',
maxInstances: 5
}]
Это позволяет:
Для мониторинга и контроля сессий можно использовать:
browser.getLogs('browser')).onPrepare,
onComplete, afterSession) для кастомных
действий перед или после тестов.Сессия автоматически закрывается после завершения теста, но иногда требуется принудительное завершение:
await browser.deleteSession();
При необходимости завершения всех активных сессий на облаке:
Для облачных сессий полезно собирать:
Эти данные можно автоматически загружать через API и сохранять для последующего анализа.
Управление сессиями на облаке в WebdriverIO сочетает гибкость конфигурации, мониторинг выполнения, интеграцию с облачными API и масштабируемость. Правильное использование этих возможностей обеспечивает надежное тестирование на разнообразных платформах без ограничения локальной среды.