GitLab CI/CD — это система непрерывной интеграции и доставки, которая позволяет автоматически запускать тесты, собирать и деплоить приложения при каждом изменении в коде. Playwright — это современная библиотека для автоматизации тестирования веб-приложений. Для интеграции Playwright с GitLab CI необходимо настроить соответствующий конфигурационный файл, который будет определять, как и когда запускать тесты.
Конфигурационный файл .gitlab-ci.yml описывает
пайплайны, состоящие из различных этапов (jobs), которые выполняются на
определенных стадиях процесса CI/CD. В случае с Playwright пайплайн
должен включать установку зависимостей, запуск тестов, а также,
возможно, деплой и другие этапы.
Для начала необходимо определить, как будет происходить установка всех зависимостей, включая Playwright. В этом случае важным шагом является установка всех нужных пакетов, включая браузеры, которые Playwright использует для тестирования.
stages:
- install
- test
install_dependencies:
stage: install
image: node:16
before_script:
- npm ci
script:
- npx playwright install
В этом примере:
npm ci используется для установки зависимостей проекта
согласно package-lock.json.npx playwright install — команда для установки
браузеров, поддерживаемых Playwright.Для запуска тестов необходимо создать отдельный этап в пайплайне, который будет отвечать за выполнение тестов с использованием Playwright.
run_tests:
stage: test
image: mcr.microsoft.com/playwright:v1.23.0-focal
script:
- npx playwright test
artifacts:
paths:
- test-results
only:
- merge_requests
- master
В этом случае:
npx playwright test запускает тесты, написанные с
использованием Playwright.test-results,
чтобы они были доступны после выполнения.master
или при создании merge request.После того как тесты будут выполнены, важно сохранить результаты в
GitLab и обеспечить возможность их просмотра. Для этого можно
использовать артефакты. В предыдущем примере результат тестов
сохраняется в директорию test-results, которая
автоматически будет доступна через интерфейс GitLab.
Кроме того, можно настроить отчеты о тестах, чтобы они были более наглядными и удобными для анализа. Для этого Playwright поддерживает создание отчетов в формате JUnit, который можно легко интегрировать с GitLab.
run_tests:
stage: test
image: mcr.microsoft.com/playwright:v1.23.0-focal
script:
- npx playwright test --reporter=junit
artifacts:
paths:
- test-results
only:
- merge_requests
- master
Здесь используется параметр --reporter=junit, чтобы
тесты генерировали отчеты в формате JUnit, который GitLab может
использовать для отображения результатов тестов в своем интерфейсе.
Для выполнения тестов Playwright необходимо, чтобы на CI-сервере были
установлены браузеры, такие как Chromium, Firefox и WebKit. В
Docker-образе mcr.microsoft.com/playwright эти браузеры уже
установлены. Однако если используется кастомный образ или тесты
выполняются в другом окружении, нужно позаботиться о ручной установке
браузеров.
install_browsers:
stage: install
image: node:16
script:
- npm ci
- npx playwright install
Для ускорения процесса сборки можно настроить кэширование зависимостей. GitLab CI поддерживает кэширование директорий и файлов между пайплайнами, что позволяет избежать повторной загрузки зависимостей и ускоряет работу системы.
cache:
paths:
- node_modules/
- .npm/
В этом примере кэшируются директории node_modules/ и
.npm/, чтобы ускорить установку зависимостей в будущих
пайплайнах.
Если в проекте используется несколько окружений (например, staging и production), можно настроить разные пайплайны или этапы для каждого из них. В зависимости от ветки или других условий, можно запускать различные тесты.
run_tests_staging:
stage: test
image: mcr.microsoft.com/playwright:v1.23.0-focal
script:
- npx playwright test --project=staging
only:
- staging
run_tests_production:
stage: test
image: mcr.microsoft.com/playwright:v1.23.0-focal
script:
- npx playwright test --project=production
only:
- master
В этом примере тесты для ветки staging будут запускаться
с проектом staging, а для ветки master — с
проектом production.
Playwright поддерживает параллельное выполнение тестов, что позволяет существенно ускорить процесс тестирования. В GitLab CI можно настроить параллельный запуск нескольких этапов или тестов.
run_tests_parallel:
stage: test
image: mcr.microsoft.com/playwright:v1.23.0-focal
script:
- npx playwright test --project=staging --workers=4
only:
- master
Параметр --workers=4 позволяет запустить тесты с 4
параллельными процессами, что ускоряет выполнение тестов, если их
много.
GitLab CI прекрасно работает с Docker-контейнерами, что дает возможность изолировать среду выполнения тестов. В случае с Playwright можно использовать уже готовые образы, такие как mcr.microsoft.com/playwright, которые включают в себя все необходимые компоненты для работы. Это позволяет избежать необходимости ручной настройки браузеров и библиотек.
run_tests:
stage: test
image: mcr.microsoft.com/playwright:v1.23.0-focal
script:
- npx playwright test
stages:
- install
- test
install_dependencies:
stage: install
image: node:16
before_script:
- npm ci
script:
- npx playwright install
run_tests:
stage: test
image: mcr.microsoft.com/playwright:v1.23.0-focal
script:
- npx playwright test --reporter=junit
artifacts:
paths:
- test-results
only:
- merge_requests
- master
cache:
paths:
- node_modules/
- .npm/
install_browsers:
stage: install
image: node:16
script:
- npm ci
- npx playwright install
Этот пример охватывает все основные этапы: установку зависимостей, выполнение тестов и создание отчетов, а также использование кэширования для ускорения работы.