GitHub Actions представляет собой мощный инструмент для автоматизации процессов разработки и тестирования. В сочетании с Playwright, который обеспечивает быстрые и надежные автоматизированные тесты для веб-приложений, он становится идеальным решением для организации CI/CD процессов. В этой статье рассмотрим, как настроить интеграцию Playwright с GitHub Actions, чтобы автоматизировать запуск тестов на различных браузерах и платформах.
GitHub Actions позволяет создавать автоматизированные рабочие процессы (workflows), которые запускаются при различных событиях в репозитории. Для автоматизации тестирования с использованием Playwright необходимо создать файл конфигурации workflow, в котором указываются все шаги, включая установку зависимостей, запуск тестов и сбор логов.
Рабочий процесс GitHub Actions описывается в YAML файле, который
размещается в директории .github/workflows вашего
репозитория. Этот файл определяет последовательность шагов, которые
GitHub будет выполнять, начиная с установки зависимостей и заканчивая
запуском тестов.
Пример конфигурации workflow:
name: Run Playwright Tests
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
browser: [chromium, firefox, webkit]
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Set up Node.js
uses: actions/setup-node@v2
with:
node-version: '16'
- name: Install dependencies
run: |
npm install
- name: Run Playwright Tests
run: |
npx playwright install
npm test
name: Название workflow, которое будет отображаться в интерфейсе GitHub Actions.
on: Указывает, при каких событиях должен
запускаться workflow. В примере выше workflow запускается при push в
ветку main или при создании pull request в ту же
ветку.
jobs: Описывает задачи, которые выполняются в рамках workflow. В примере только одна задача — тестирование.
ubuntu-latest.chromium, firefox и webkit.steps: Содержит список шагов, которые будут выполнены:
package.json, включая
Playwright.Для корректной работы Playwright в вашем проекте необходимо
установить несколько зависимостей. В package.json вашего
проекта должна быть указана зависимость от Playwright. Например:
{
"dependencies": {
"playwright": "^1.20.0"
},
"scripts": {
"test": "playwright test"
}
}
После этого можно установить все зависимости с помощью команды:
npm install
Playwright автоматически установит все необходимые браузеры (Chromium, Firefox, WebKit), если они не были установлены ранее.
GitHub Actions предоставляет возможность запускать тесты на
нескольких браузерах одновременно благодаря использованию матриц. Это
означает, что при каждом запуске workflow GitHub Actions будет запускать
тесты на трех браузерах: chromium, firefox и
webkit. Это обеспечит кросс-браузерную совместимость вашего
веб-приложения.
В файле конфигурации workflow шаг Run Playwright Tests
сначала установит все необходимые браузеры командой
npx playwright install, а затем запустит тесты с помощью
команды npm test. Эта команда должна быть прописана в
секции scripts вашего package.json.
Пример использования матрицы для одновременного тестирования:
strategy:
matrix:
browser: [chromium, firefox, webkit]
В результате, при каждом запуске workflow будет создано три параллельных задания для каждого браузера.
GitHub Actions автоматически собирает логи выполнения каждого шага workflow, которые можно просмотреть в интерфейсе GitHub. Для просмотра логов необходимо перейти в раздел Actions, выбрать нужный workflow и кликнуть на соответствующий шаг.
Если тесты завершились с ошибками, логи позволят быстро определить, где именно произошла ошибка, что поможет значительно ускорить процесс отладки.
Если необходимо сохранять результаты тестов или другие важные артефакты, можно использовать шаги для загрузки артефактов в GitHub. Это может быть полезно, если нужно сохранять отчеты или скриншоты, полученные во время тестирования. Пример использования артефактов:
- name: Upload Playwright Test Report
uses: actions/upload-artifact@v2
with:
name: playwright-test-report
path: playwright-report/
Этот шаг загрузит отчет, который был сгенерирован Playwright, в виде артефакта, доступного для скачивания через интерфейс GitHub Actions.
Для повышения надежности и скорости тестирования можно настроить
кэширование зависимостей и установленных браузеров. GitHub Actions
поддерживает кэширование с помощью встроенных actions, таких как
actions/cache.
Пример добавления кэширования:
- name: Cache Playwright browsers
uses: actions/cache@v2
with:
path: ~/.cache/ms-playwright
key: ${{ runner.os }}-playwright-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-playwright-
Этот шаг кэширует браузеры Playwright, чтобы избежать их повторной установки при каждом запуске workflow, что ускоряет процесс.
Интеграция Playwright с GitHub Actions позволяет автоматизировать процесс тестирования веб-приложений, обеспечивая кросс-браузерное тестирование на разных платформах. С помощью этой интеграции можно легко настроить и запустить тесты при каждом изменении кода, что значительно повышает качество и стабильность приложения.