В WebdriverIO управление выполнением тестов реализуется через конфигурационные файлы и командную строку. Возможность запускать отдельные сценарии или группы тестов критична для оптимизации процессов разработки, быстрого обнаружения ошибок и интеграции с CI/CD.
Тестовый проект на WebdriverIO обычно имеет следующую структуру:
project/
│
├─ wdio.conf.js
├─ package.json
├─ test/
│ ├─ specs/
│ │ ├─ login.test.js
│ │ ├─ cart.test.js
│ │ └─ checkout.test.js
│ └─ pageobjects/
│ ├─ login.page.js
│ ├─ cart.page.js
│ └─ checkout.page.js
.test.js).Самый прямой способ выполнить один тестовый сценарий — указать путь к файлу при запуске команды WebdriverIO:
npx wdio run wdio.conf.js --spec ./test/specs/login.test.js
--spec позволяет указать один или несколько
тестовых файлов через запятую.npx wdio run wdio.conf.js --spec "./test/specs/*cart*.test.js"
Это запускает все тесты, имена которых содержат
cart.
WebdriverIO совместим с тестовыми фреймворками Mocha и Jasmine, что позволяет фильтровать тесты не только по файлу, но и по структуре:
.only для запуска одного сценария или группы:describe.only('Тестирование корзины', () => {
it('добавление товара в корзину', async () => {
// тест
});
});
it.only('добавление товара в корзину', async () => {
// тест
});
.skip позволяет пропустить отдельные
тесты, сохраняя их в коде для будущего выполнения:it.skip('удаление товара из корзины', async () => {
// тест временно не выполняется
});
В wdio.conf.js можно определить группы тестов, чтобы
запускать их выборочно:
exports.config = {
specs: [
'./test/specs/**/*.test.js'
],
suites: {
login: [
'./test/specs/login.test.js'
],
cart: [
'./test/specs/cart.test.js',
'./test/specs/checkout.test.js'
]
}
};
Запуск конкретного набора:
npx wdio run wdio.conf.js --suite login
WebdriverIO поддерживает параллельное выполнение тестов через опцию
maxInstances:
capabilities: [{
maxInstances: 3,
browserName: 'chrome'
}]
Это позволяет одновременно запускать несколько файлов или тестов внутри одного файла, ускоряя проверку.
Mocha и Jasmine интегрируются с WebdriverIO через опцию
--grep, позволяющую запускать тесты по ключевым словам:
npx wdio run wdio.conf.js --grep "корзина"
Все тесты, содержащие в имени корзина, будут выполнены.
Для исключения используется --invert:
npx wdio run wdio.conf.js --grep "корзина" --invert
Для CI/CD удобно запускать отдельные сценарии, передавая параметры через переменные окружения:
SPEC=./test/specs/cart.test.js npx wdio run wdio.conf.js
В конфигурации можно использовать переменную:
specs: process.env.SPEC ? [process.env.SPEC] : ['./test/specs/**/*.test.js']
Это позволяет динамически изменять набор тестов без изменения кода.
beforeEach и afterEach помогает обеспечить
чистое состояние браузера..only на уровне
describe или it.--suite, чтобы параллельно тестировать разные
функциональные блоки.--spec path/to/file.test.js--suite suiteName--grep "keyword"--grep "keyword" --invertSPEC=... +
динамическая конфигурацияЭта система позволяет запускать как отдельные сценарии для локальной отладки, так и масштабные группы тестов для CI/CD, сохраняя гибкость и контроль над процессом тестирования.