GitHub Actions предоставляет возможность автоматизировать различные процессы разработки, включая запуск тестов, сборку и деплой. Когда речь идет о тестировании веб-приложений, WebdriverIO идеально интегрируется с GitHub Actions, обеспечивая гибкость и мощность в процессе тестирования.
GitHub Actions позволяет создавать рабочие процессы, которые выполняются при изменении кода в репозитории. Для тестирования веб-приложений с помощью WebdriverIO нужно создать YAML-конфигурацию, которая будет запускать тесты на сервере GitHub.
.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
Пояснение структуры
on: Указывает на какие события будет реагировать
рабочий процесс, в данном случае это пуш или пулл-реквест в ветку
main.
jobs: Определяет, какие задания будут выполняться. В
данном случае у нас есть одно задание test, которое
выполняется на последней версии Ubuntu.
steps: Описание шагов, которые будут выполнены:
actions/checkout: Клонирует репозиторий.actions/setup-node: Устанавливает нужную версию
Node.js.npm install: Устанавливает все зависимости.npm test: Запускает тесты WebdriverIO.WebdriverIO требует некоторых зависимостей и конфигурации для корректного выполнения тестов. Для начала необходимо настроить WebdriverIO в проекте.
npm install --save-dev webdriverio @wdio/cli
Затем можно сгенерировать конфигурационный файл WebdriverIO с помощью команды:
npx wdio config
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 () {
// Устанавливаем необходимые настройки перед тестами
}
}
При выполнении тестов в CI-системе часто используется headless-режим
браузера, что позволяет запускать тесты без необходимости в графическом
интерфейсе. В примере выше для Chrome указан параметр
--headless, который запускает браузер в фоновом режиме.
spec, allure,
json и другие. В GitHub Actions полезно использовать
JSON-репортер, чтобы можно было собирать подробную информацию о
выполнении тестов.reporters: ['json', 'spec'],
reporterOptions: {
json: {
outputDir: './reports/json/'
}
}
Браузер и версия GitHub Actions поддерживает использование различных операционных систем и браузеров. В конфигурации можно указать, какой браузер будет использоваться для тестов. Пример с Chrome указан выше, но также можно настроить Firefox или другие браузеры, которые поддерживает WebdriverIO.
Параллельный запуск тестов Чтобы ускорить выполнение тестов, можно настроить параллельный запуск. WebdriverIO позволяет запускать тесты в нескольких сессиях одновременно, что значительно сокращает время выполнения тестового набора.
Пример настройки параллельного запуска:
maxInstances: 5
GitHub Actions поддерживает секреты (Secrets) для безопасного хранения данных, таких как API-ключи или логины. Эти секреты можно использовать в конфигурации для доступа к внешним сервисам или базам данных.
Чтобы использовать секреты, их нужно сначала добавить в репозиторий через настройки GitHub. Затем в рабочем процессе можно использовать эти секреты, как показано ниже:
env:
BROWSERSTACK_USER: ${{ secrets.BROWSERSTACK_USER }}
BROWSERSTACK_KEY: ${{ secrets.BROWSERSTACK_KEY }}
Секреты будут автоматически подставляться в процессе выполнения.
Проблемы с браузерами в CI Иногда в CI-среде возникают проблемы с браузерами, такими как отсутствие необходимых зависимостей для запуска. В таких случаях полезно использовать сервисы, как BrowserStack или Sauce Labs, которые предоставляют удаленные браузеры для тестирования.
Интервалы между тестами Если тесты не могут работать параллельно из-за ограничений на использование ресурсов, можно настроить интервалы между тестами, чтобы уменьшить нагрузку на систему.
GitHub Actions предоставляет мощный и гибкий механизм для автоматизации тестирования в WebdriverIO. С помощью настройки рабочего процесса можно интегрировать тесты в CI/CD pipeline, что позволяет обеспечить стабильность и качество веб-приложений на всех этапах разработки.