Команды для запуска тестов

WebdriverIO предоставляет гибкую и мощную систему запуска тестов с возможностью конфигурирования различных параметров и сценариев выполнения. Управление тестами осуществляется через CLI, npm-скрипты и интеграцию с различными тестовыми фреймворками, такими как Mocha, Jasmine и Cucumber.

Запуск тестов через CLI

Для запуска тестов используется команда:

npx wdio run wdio.conf.js
  • wdio.conf.js — основной файл конфигурации WebdriverIO, где определены все настройки тестового окружения.

  • Параметры CLI позволяют изменять поведение запуска без редактирования конфигурации. Например:

    • --spec — запуск конкретного тестового файла:

      npx wdio run wdio.conf.js --spec ./test/specs/login.spec.js
    • --suite — запуск определённого набора тестов, определённого в suites конфигурации:

      npx wdio run wdio.conf.js --suite smoke
    • --maxInstances — ограничение количества параллельно запускаемых экземпляров браузера:

      npx wdio run wdio.conf.js --maxInstances 2

Использование npm-скриптов

Для удобства часто создают скрипты в package.json:

{
  "scripts": {
    "test": "wdio run wdio.conf.js",
    "test:smoke": "wdio run wdio.conf.js --suite smoke",
    "test:login": "wdio run wdio.conf.js --spec ./test/specs/login.spec.js"
  }
}

Это позволяет запускать тесты простыми командами:

npm run test
npm run test:smoke
npm run test:login

Конфигурация тестового запуска

Файл wdio.conf.js управляет большинством параметров запуска:

  • Capabilities — определяют браузеры, в которых будут выполняться тесты. Пример для Chrome и Firefox:
capabilities: [
    {
        browserName: 'chrome',
        maxInstances: 2
    },
    {
        browserName: 'firefox',
        maxInstances: 1
    }
],
  • Test Framework — указывает используемый фреймворк (mocha, jasmine, cucumber) и его опции:
framework: 'mocha',
mochaOpts: {
    ui: 'bdd',
    timeout: 60000
},
  • Selenium Standalone или удалённый сервер — задаёт адрес сервера, на котором будут исполняться тесты:
services: ['selenium-standalone'],
seleniumArgs: {
    drivers: {
        chrome: { version: 'latest' },
        firefox: { version: 'latest' }
    }
},

Параллельный запуск тестов

WebdriverIO поддерживает параллельное выполнение тестов на уровне файлов и на уровне инстансов браузера:

  • maxInstances в capabilities контролирует количество параллельно открываемых браузеров.
  • Опция parallel в конфигурации запуска через CLI может быть использована совместно с Test Runner.

Пример параллельного запуска двух файлов в Chrome:

npx wdio run wdio.conf.js --spec ./test/specs/*.spec.js --maxInstances 2

Фильтрация тестов и наборов

  • Тестовые сьюты задаются в конфигурации:
suites: {
    smoke: ['./test/specs/login.spec.js', './test/specs/dashboard.spec.js'],
    regression: ['./test/specs/**/*.spec.js']
}
  • Фильтр по тегам (для Cucumber) позволяет запускать только сценарии с определёнными метками:
npx wdio run wdio.conf.js --cucumberOpts.tagExpression "@smoke"

Отчётность и логирование

WebdriverIO интегрируется с различными репортерами. В конфигурации указываются используемые репортеры:

reporters: ['spec', ['allure', { outputDir: 'allure-results' }]],

При запуске тестов создаются отчёты, которые можно просматривать после выполнения командой Allure:

npx allure serve allure-results

Дополнительные полезные команды

  • Отладка тестов:
npx wdio run wdio.conf.js --debug
  • Запуск с конкретной средой (например, dev или prod):
npx wdio run wdio.conf.js --env dev
  • Очистка кэша браузера перед запуском:
beforeSession: function (config, capabilities, specs) {
    browser.deleteAllCookies();
}

Интеграция с CI/CD

WebdriverIO легко интегрируется с Jenkins, GitLab CI, GitHub Actions:

  • Jenkins Pipeline:
stage('Run Tests') {
    steps {
        sh 'npm ci'
        sh 'npm run test'
    }
}
  • GitHub Actions:
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-node@v3
        with:
          node-version: 20
      - run: npm ci
      - run: npm run test

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