WebdriverIO предоставляет гибкие возможности для организации и запуска тестов с использованием тегов, что особенно важно для крупных проектов с множеством сценариев. Теги позволяют группировать тесты по функциональности, приоритету, окружению или другим критериям и запускать только необходимые наборы тестов без изменения кода самих сценариев.
Теги обычно используются вместе с фреймворками Cucumber
или Mocha. В случае Cucumber каждый сценарий может
содержать тег в формате @имя_тега. Пример:
@smoke
Scenario: Проверка авторизации
Given пользователь открывает страницу входа
When он вводит корректные данные
Then отображается главная страница
Для Mocha можно реализовать теги через специальные комментарии или
кастомные функции фильтрации, хотя нативной поддержки нет, и чаще
используется библиотека wdio-cucumber-framework или
mocha-grep.
Файл конфигурации wdio.conf.js позволяет указать
фильтрацию тестов через опцию
cucumberOpts.tagExpression:
exports.config = {
// другие настройки
framework: 'cucumber',
cucumberOpts: {
require: ['./test/steps/**/*.js'],
tagExpression: '@smoke and not @wip', // запуск всех тестов с тегом @smoke, кроме @wip
timeout: 60000
},
};
Ключевые моменты:
@smoke and @regression – запускает тесты, содержащие
оба тега.@smoke or @regression – запускает тесты, содержащие
хотя бы один из тегов.not @wip – исключает тесты с тегом
@wip.WebdriverIO позволяет переопределять теги прямо при запуске тестов из командной строки. Это удобно для CI/CD, когда нужно запускать разные наборы тестов в зависимости от ветки или окружения:
npx wdio run wdio.conf.js --cucumberOpts.tagExpression="@smoke and not @wip"
Преимущество такого подхода в том, что конфигурационный файл можно оставить универсальным, а конкретные сценарии выбирать динамически.
Теги упрощают управление приоритетом тестов. Например, можно разделить тесты на три категории:
@smoke) – быстрые
проверки основных функций.@regression) –
полный набор сценариев для проверки стабильности.@wip) –
незавершённые тесты, исключаемые из регулярного запуска.Такое разделение позволяет в CI запускать только быстрые smoke-тесты при каждом коммите, а regression-тесты – только перед релизом.
Часто требуется сложная комбинация тегов. Например, запуск smoke-тестов только для авторизации и одновременно исключение нестабильных тестов:
tagExpression: '(@smoke and @auth) and not @unstable'
Это обеспечивает максимальную гибкость и позволяет создавать динамичные сценарии запуска без изменения структуры тестов.
Если используется Mocha, можно подключить пакет
mocha-grep для имитации тегов:
mochaOpts: {
ui: 'bdd',
timeout: 60000,
grep: '@smoke' // запускает только тесты, содержащие @smoke в описании
}
В тестах это выглядит так:
describe('Авторизация @smoke', () => {
it('успешный вход с валидными данными', () => {
// тест
});
});
grep фильтрует тесты по регулярному выражению, что
аналогично тегам в Cucumber, но с меньшей выразительностью.
Использование тегов идеально сочетается с Jenkins, GitLab CI или GitHub Actions. Примеры практического применения:
main перед
деплоем.@wip исключаются из всех автоматических
прогонов.Это снижает время выполнения тестов и повышает стабильность сборок.
Запуск тестов по тегам в WebdriverIO позволяет структурировать тестовую базу, ускорять процесс проверки и адаптировать автоматизацию под разные сценарии. Грамотное использование тегов обеспечивает эффективное управление тестами и их приоритетностью, делает CI/CD-процессы более гибкими и уменьшает время выполнения автоматизации.