GitHub Actions и WebdriverIO

GitHub Actions предоставляет возможность автоматизировать различные процессы разработки, включая запуск тестов, сборку и деплой. Когда речь идет о тестировании веб-приложений, WebdriverIO идеально интегрируется с GitHub Actions, обеспечивая гибкость и мощность в процессе тестирования.

Настройка GitHub Actions для запуска WebdriverIO тестов

GitHub Actions позволяет создавать рабочие процессы, которые выполняются при изменении кода в репозитории. Для тестирования веб-приложений с помощью WebdriverIO нужно создать YAML-конфигурацию, которая будет запускать тесты на сервере GitHub.

  1. Создание рабочего процесса Создание файла конфигурации рабочего процесса происходит в директории .github/workflows в корне репозитория. Это можно сделать, создав файл, например webdriverio-tests.yml.
name: WebdriverIO Tests

on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main

jobs:
  test:
    runs-on: ubuntu-latest

    steps:
    - name: Checkout repository
      uses: actions/checkout@v2

    - name: Set up Node.js
      uses: actions/setup-node@v2
      with:
        node-version: '14'

    - name: Install dependencies
      run: npm install

    - name: Run WebdriverIO tests
      run: npm test
  1. Пояснение структуры

    • on: Указывает на какие события будет реагировать рабочий процесс, в данном случае это пуш или пулл-реквест в ветку main.

    • jobs: Определяет, какие задания будут выполняться. В данном случае у нас есть одно задание test, которое выполняется на последней версии Ubuntu.

    • steps: Описание шагов, которые будут выполнены:

      • actions/checkout: Клонирует репозиторий.
      • actions/setup-node: Устанавливает нужную версию Node.js.
      • npm install: Устанавливает все зависимости.
      • npm test: Запускает тесты WebdriverIO.

Настройка WebdriverIO для использования в GitHub Actions

WebdriverIO требует некоторых зависимостей и конфигурации для корректного выполнения тестов. Для начала необходимо настроить WebdriverIO в проекте.

  1. Установка WebdriverIO Если WebdriverIO еще не установлен, его нужно добавить в проект:
npm install --save-dev webdriverio @wdio/cli

Затем можно сгенерировать конфигурационный файл WebdriverIO с помощью команды:

npx wdio config
  1. Конфигурация WebdriverIO для CI В конфигурации WebdriverIO (wdio.conf.js) необходимо настроить параметры, которые будут работать в CI-среде. Важно настроить правильный браузер и используемые сервисы.

Пример конфигурации для GitHub Actions:

exports.config = {
  runner: 'local',
  framework: 'mocha',
  spec: ['./tests/**/*.js'],
  reporters: ['spec'],
  
  capabilities: [{
    browserName: 'chrome',
    'goog:chromeOptions': {
      args: ['--headless', '--disable-gpu', '--window-size=1920x1080']
    }
  }],
  
  services: ['selenium-standalone'],
  
  mochaOpts: {
    timeout: 60000
  },
  
  before: function () {
    // Устанавливаем необходимые настройки перед тестами
  }
}

Запуск тестов в headless-режиме

При выполнении тестов в CI-системе часто используется headless-режим браузера, что позволяет запускать тесты без необходимости в графическом интерфейсе. В примере выше для Chrome указан параметр --headless, который запускает браузер в фоновом режиме.

Советы по отладке и оптимизации

  1. Логи и отчеты Для более удобной отладки важно настроить вывод логов и отчетов. WebdriverIO поддерживает различные репортеры, такие как spec, allure, json и другие. В GitHub Actions полезно использовать JSON-репортер, чтобы можно было собирать подробную информацию о выполнении тестов.
reporters: ['json', 'spec'],
reporterOptions: {
  json: {
    outputDir: './reports/json/'
  }
}
  1. Браузер и версия GitHub Actions поддерживает использование различных операционных систем и браузеров. В конфигурации можно указать, какой браузер будет использоваться для тестов. Пример с Chrome указан выше, но также можно настроить Firefox или другие браузеры, которые поддерживает WebdriverIO.

  2. Параллельный запуск тестов Чтобы ускорить выполнение тестов, можно настроить параллельный запуск. WebdriverIO позволяет запускать тесты в нескольких сессиях одновременно, что значительно сокращает время выполнения тестового набора.

Пример настройки параллельного запуска:

maxInstances: 5

Использование GitHub Secrets для хранения конфиденциальных данных

GitHub Actions поддерживает секреты (Secrets) для безопасного хранения данных, таких как API-ключи или логины. Эти секреты можно использовать в конфигурации для доступа к внешним сервисам или базам данных.

Чтобы использовать секреты, их нужно сначала добавить в репозиторий через настройки GitHub. Затем в рабочем процессе можно использовать эти секреты, как показано ниже:

env:
  BROWSERSTACK_USER: ${{ secrets.BROWSERSTACK_USER }}
  BROWSERSTACK_KEY: ${{ secrets.BROWSERSTACK_KEY }}

Секреты будут автоматически подставляться в процессе выполнения.

Проблемы и их решение

  1. Проблемы с браузерами в CI Иногда в CI-среде возникают проблемы с браузерами, такими как отсутствие необходимых зависимостей для запуска. В таких случаях полезно использовать сервисы, как BrowserStack или Sauce Labs, которые предоставляют удаленные браузеры для тестирования.

  2. Интервалы между тестами Если тесты не могут работать параллельно из-за ограничений на использование ресурсов, можно настроить интервалы между тестами, чтобы уменьшить нагрузку на систему.

Заключение

GitHub Actions предоставляет мощный и гибкий механизм для автоматизации тестирования в WebdriverIO. С помощью настройки рабочего процесса можно интегрировать тесты в CI/CD pipeline, что позволяет обеспечить стабильность и качество веб-приложений на всех этапах разработки.