WebdriverIO поддерживает параллельное выполнение тестов, что позволяет значительно ускорить процесс тестирования, особенно при работе с большим числом сценариев. Управление количеством рабочих процессов — один из ключевых аспектов оптимизации тестовой инфраструктуры.
В WebdriverIO за параллельность отвечает параметр
maxInstances, который задаётся в конфигурационном файле
wdio.conf.js. Он определяет максимальное количество
одновременных экземпляров браузеров, которые могут запускаться
для выполнения тестов.
Пример настройки:
exports.config = {
capabilities: [{
browserName: 'chrome',
maxInstances: 5
}],
// остальная конфигурация
};
В этом примере одновременно могут запускаться до пяти экземпляров браузера Chrome. Если тестов больше, чем доступных процессов, WebdriverIO будет ставить их в очередь.
maxInstancesКроме уровня отдельной capabilities, можно задавать глобальное
количество процессов через параметр maxInstances в корне
конфигурации. Он ограничивает суммарное число всех одновременных
инстансов, независимо от браузеров.
exports.config = {
maxInstances: 10, // максимум процессов для всех capabilities
capabilities: [
{ browserName: 'chrome', maxInstances: 5 },
{ browserName: 'firefox', maxInstances: 5 }
],
};
В данном случае одновременно могут выполняться не более 10 тестов, распределённых между Chrome и Firefox.
WebdriverIO использует очередь тестов для распределения нагрузки. При большом количестве тестов важно оптимизировать количество процессов под возможности хоста.
Для оценки оптимального числа процессов часто используют формулу:
maxInstances = количество ядер CPU × 2 / 3
Эта эмпирическая формула помогает избежать перегрузки хоста при параллельном запуске.
Каждый рабочий процесс WebdriverIO запускает отдельный Node.js
процесс, в котором выполняются тесты, заданные в конкретном файле
спецификации (spec file). То есть один процесс не
может выполнять тесты из нескольких файлов одновременно.
Пример структуры specs в конфигурации:
exports.config = {
specs: [
'./test/specs/login/*.js',
'./test/specs/cart/*.js'
],
maxInstances: 4,
};
Если указано четыре процесса, WebdriverIO запустит до четырёх файлов спецификаций одновременно.
При тестировании на нескольких браузерах каждый браузер учитывается как отдельная capability. Каждый процесс назначается на определённую capability.
exports.config = {
maxInstances: 6,
capabilities: [
{ browserName: 'chrome', maxInstances: 3 },
{ browserName: 'firefox', maxInstances: 3 }
],
};
При использовании облачных провайдеров, таких как Selenium Grid,
BrowserStack или Sauce Labs, управление рабочими процессами также важно.
Параметр maxInstances определяет количество
параллельных сессий, которые могут быть одновременно созданы на
облачной платформе.
В случае превышения лимита облачного сервиса, новые сессии будут ждать освобождения слотов, что может замедлять тестирование.
maxInstances — основной инструмент контроля
параллельности.Правильная конфигурация количества рабочих процессов позволяет ускорить тестирование, снизить вероятность сбоев и рационально использовать вычислительные ресурсы.