Параллельное выполнение тестов — одна из ключевых возможностей WebdriverIO, позволяющая ускорить процесс тестирования за счет одновременного запуска нескольких сценариев. Использование параллельных потоков особенно важно для крупных проектов с большим количеством автоматизированных тестов.
WebdriverIO использует параметр maxInstances в
конфигурационном файле wdio.conf.js для определения
количества одновременных экземпляров браузера. Этот параметр может быть
установлен глобально или для конкретного браузера:
exports.config = {
maxInstances: 5,
capabilities: [{
browserName: 'chrome',
maxInstances: 2,
}, {
browserName: 'firefox',
maxInstances: 1,
}]
};
Особенности:
maxInstances определяет
максимальное количество параллельных сессий для всего набора
тестов.maxInstances в
capabilities позволяет контролировать число
экземпляров для конкретного браузера.Таким образом, можно запускать одновременно несколько Chrome и один Firefox, эффективно распределяя нагрузку.
WebdriverIO автоматически распределяет тесты по доступным экземплярам браузеров, если тесты структурированы в разные файлы. Это обеспечивает оптимальное использование параллельных потоков. Рекомендуется организовывать тесты так, чтобы каждый файл содержал отдельный набор сценариев с одной логикой, например:
tests/
├─ login.test.js
├─ cart.test.js
└─ checkout.test.js
При запуске с maxInstances > 1 WebdriverIO создаст
отдельный экземпляр браузера для каждого файла до достижения лимита
потоков.
specs) для управления параллелизмомВ конфигурации можно явно указать, какие тесты должны запускаться
вместе, а какие — независимо, через параметр specs:
exports.config = {
specs: [
'./tests/login.test.js',
'./tests/cart.test.js'
],
exclude: [
'./tests/checkout.test.js'
]
};
Каждый файл из specs может быть запущен параллельно в
отдельном потоке, что позволяет точно управлять приоритетами и
зависимостями тестов.
Параллельное выполнение подразумевает, что тесты не должны зависеть друг от друга. Любые зависимости между сценариями нарушают изоляцию и могут вызвать нестабильные результаты. Для управления состоянием рекомендуется:
before и beforeEach для
подготовки данных перед тестами.after и afterEach для очистки
состояния после тестов.При параллельном выполнении важно корректно собирать логи и отчеты, чтобы можно было идентифицировать ошибки каждого потока. WebdriverIO поддерживает множество репортеров, включая:
spec — стандартный консольный вывод.allure — визуальные отчеты с детальной структурой
тестов.json — машиночитаемые файлы для интеграции с
CI/CD.Для параллельных запусков рекомендуется использовать уникальные директории для каждого потока отчетов, чтобы избежать конфликтов.
reporters: [
['allure', {
outputDir: 'allure-results',
disableWebdriverStepsReporting: true,
disableWebdriverScreenshotsReporting: false,
}]
]
WebdriverIO позволяет запускать тесты параллельно через командную строку, не изменяя конфигурацию:
npx wdio run wdio.conf.js --spec ./tests/*.test.js --maxInstances 3
В этом примере WebdriverIO создаст до трех параллельных сессий для
всех файлов, подходящих под шаблон *.test.js.
maxInstances выше 2–3 может замедлить
выполнение.maxInstances в зависимости от
возможностей машины.Параллельное выполнение тестов в WebdriverIO позволяет значительно
ускорить процесс проверки функциональности, однако требует тщательной
организации тестов, изоляции данных и грамотного управления ресурсами.
Правильная настройка maxInstances, структурирование тестов
и использование репортеров делают параллельное тестирование стабильным и
предсказуемым.