WebdriverIO предоставляет гибкие возможности для конфигурации и запуска тестов на различных браузерах. Управление браузерами происходит через capabilities, а также через интеграцию с драйверами браузеров, такими как ChromeDriver, GeckoDriver и EdgeDriver.
Capabilities — это объект, который описывает, как должен быть запущен браузер для тестирования. Основные параметры:
exports.config = {
capabilities: [{
browserName: 'chrome', // Указываем браузер: 'firefox', 'edge', 'safari'
'goog:chromeOptions': {
args: ['--headless', '--disable-gpu', '--window-size=1280,800']
}
}],
logLevel: 'info',
};
chrome, firefox,
edge, safari.'moz:firefoxOptions', для Edge
— 'ms:edgeOptions'.WebdriverIO поддерживает запуск параллельных сессий
с разными браузерами. Для этого в конфигурации достаточно добавить
несколько объектов в массив capabilities:
capabilities: [
{
browserName: 'chrome',
'goog:chromeOptions': { args: ['--window-size=1280,800'] }
},
{
browserName: 'firefox',
'moz:firefoxOptions': { args: ['-headless'] }
}
]
Каждый объект создаёт отдельную сессию. Тесты будут выполняться
параллельно на указанных браузерах при использовании фреймворка,
поддерживающего параллельное выполнение, например Mocha с параметром
maxInstances.
Для гибкого управления браузером часто применяются переменные окружения. Это позволяет запускать тесты на разных браузерах без изменения конфигурации:
const browserName = process.env.BROWSER || 'chrome';
exports.config = {
capabilities: [{
browserName: browserName,
'goog:chromeOptions': { args: ['--headless'] }
}]
};
Запуск с указанием браузера:
BROWSER=firefox npx wdio run wdio.conf.js
Это особенно удобно для CI/CD систем, где нужно запускать один и тот же тест на разных браузерах.
Размер окна и режим запуска браузера влияет на корректность тестирования, особенно для адаптивного дизайна:
'goog:chromeOptions': {
args: ['--headless', '--window-size=1920,1080']
}
--headless — запуск без GUI, ускоряет тесты и экономит
ресурсы.--window-size — задаёт точное разрешение для тестов,
что важно для проверки адаптивности интерфейса.Для Firefox используется аналогичная настройка:
'moz:firefoxOptions': {
args: ['-headless', '--width=1920', '--height=1080']
}
Каждый браузер имеет свои особенности и ограничения:
goog:chromeOptions.moz:firefoxOptions.ms:edgeOptions.Для запуска тестов на конкретных браузерах в распределенной среде
используется Selenium Grid. WebdriverIO подключается
через hostname, port и path:
exports.config = {
hostname: 'localhost',
port: 4444,
path: '/wd/hub',
capabilities: [{
browserName: 'chrome',
'goog:chromeOptions': { args: ['--headless'] }
}]
};
Можно задавать разные capabilities для разных узлов Grid, чтобы тесты выполнялись на конкретных браузерах и операционных системах.
Для ускорения тестирования WebdriverIO позволяет запускать несколько экземпляров браузера одновременно:
capabilities: [{
browserName: 'chrome',
maxInstances: 3,
'goog:chromeOptions': { args: ['--headless'] }
}]
maxInstances.WebdriverIO поддерживает динамическую смену браузера через сервисы
или hooks. Например, можно использовать hook
beforeSession:
beforeSession: function (config, capabilities, specs) {
const browserType = process.env.BROWSER || 'chrome';
capabilities.browserName = browserType;
}
Такой подход позволяет полностью управлять браузером во время выполнения тестов без изменения конфигурационных файлов.
Настройка WebdriverIO для запуска тестов на конкретных браузерах обеспечивает максимальную гибкость в автоматизации и позволяет строить масштабируемые, параллельные и стабильные тестовые сценарии.