GitHub Actions предоставляет мощный инструмент для организации CI/CD-процессов, включая автоматическое выполнение тестов на Protractor при каждом коммите или pull request. Интеграция Protractor с GitHub Actions позволяет гарантировать стабильность фронтенд-приложения и своевременно обнаруживать регрессии.
Все workflow для GitHub Actions хранятся в репозитории в папке
.github/workflows/. Для автоматического запуска тестов
создаётся YAML-файл, например protractor-tests.yml.
Основная структура файла включает:
Пример минимальной конфигурации:
name: Protractor Tests
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
e2e-tests:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Set up Node.js
uses: actions/setup-node@v3
with:
node-version: '18'
- name: Install dependencies
run: npm ci
- name: Start Selenium Server
run: npx webdriver-manager update && npx webdriver-manager start &
- name: Run Protractor tests
run: npx protractor protractor.conf.js
Для корректной работы тестов необходимо установить все зависимости проекта и подготовить WebDriver.
npm ci используется вместо npm install для
стабильной установки зависимостей согласно lock-файлу.webdriver-manager update скачивает последнюю версию
Selenium Server и драйверов браузеров.webdriver-manager start & запускает сервер в фоне,
чтобы тесты могли подключаться к нему.GitHub Actions поддерживает matrix-стратегию, позволяющую запускать тесты одновременно на нескольких версиях Node.js или браузеров.
Пример:
strategy:
matrix:
node-version: [16, 18]
browser: [chrome, firefox]
Каждая комбинация node-version и browser
будет выполняться в отдельной задаче, ускоряя проверку на совместимость
с разными средами.
Protractor интегрируется с различными репортерами (например, Jasmine Spec Reporter, Allure). Для GitHub Actions рекомендуется сохранять отчёты как артефакты, чтобы можно было анализировать результаты после завершения workflow:
- name: Upload test reports
uses: actions/upload-artifact@v3
with:
name: protractor-report
path: reports/
Эта конфигурация позволяет сохранять HTML или JSON отчёты, создаваемые тестами, в рамках workflow, доступные для скачивания через интерфейс GitHub.
Чтобы workflow был надёжным и не падал из-за временных проблем, можно использовать следующие приёмы:
retry в Bash:npx protractor protractor.conf.js || npx protractor protractor.conf.js
sleep 5
- name: Cache node modules
uses: actions/cache@v3
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ hashFiles('package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-
Workflow можно настроить так, чтобы тесты запускались только для pull
request в ветку main. Это обеспечивает автоматическую
проверку изменений перед слиянием и предотвращает попадание
некорректного кода в основную ветку.
on:
pull_request:
branches:
- main
Для тестов, требующих авторизации или внешних API, GitHub Actions позволяет безопасно хранить ключи и токены через Secrets. В workflow они доступны через переменные окружения:
env:
API_KEY: ${{ secrets.API_KEY }}
Значение переменной можно использовать в конфигурации Protractor или в тестах для подключения к API.
chromeOptions: { args: ['--headless', '--disable-gpu'] })
сокращает потребление ресурсов.GitHub Actions вместе с Protractor формируют устойчивую систему непрерывного тестирования фронтенд-приложений, обеспечивая автоматизацию, контроль качества и удобную интеграцию с процессом разработки.