Запуск отдельных сценариев

В 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
  • wdio.conf.js — главный конфигурационный файл, определяющий браузеры, тестовый фреймворк, репортеры, хуки и пути к тестам.
  • specs/ — папка с тестовыми сценариями (файлы с расширением .test.js).
  • pageobjects/ — папка с объектами страниц, используемыми для повышения читаемости и повторного использования кода.

Запуск теста по имени файла

Самый прямой способ выполнить один тестовый сценарий — указать путь к файлу при запуске команды 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.

Фильтрация по тегам и describe/it

WebdriverIO совместим с тестовыми фреймворками Mocha и Jasmine, что позволяет фильтровать тесты не только по файлу, но и по структуре:

  • Mocha предоставляет возможность использовать .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'
}]

Это позволяет одновременно запускать несколько файлов или тестов внутри одного файла, ускоряя проверку.

Использование фильтрации через grep

Mocha и Jasmine интегрируются с WebdriverIO через опцию --grep, позволяющую запускать тесты по ключевым словам:

npx wdio run wdio.conf.js --grep "корзина"

Все тесты, содержащие в имени корзина, будут выполнены. Для исключения используется --invert:

npx wdio run wdio.conf.js --grep "корзина" --invert

Локальный и CI запуск

Для 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.
  • В CI/CD запускать отдельные группы тестов через --suite, чтобы параллельно тестировать разные функциональные блоки.
  • Маски и переменные окружения позволяют гибко управлять набором тестов без изменения конфигурации.

Итоговая схема запуска

  1. По конкретному файлу: --spec path/to/file.test.js
  2. По группе тестов: --suite suiteName
  3. По ключевым словам: --grep "keyword"
  4. С фильтром исключения: --grep "keyword" --invert
  5. Через переменную окружения: SPEC=... + динамическая конфигурация

Эта система позволяет запускать как отдельные сценарии для локальной отладки, так и масштабные группы тестов для CI/CD, сохраняя гибкость и контроль над процессом тестирования.