Cypress — это инструмент для энд-ту-энд тестирования веб-приложений, который активно используется в современных DevOps-процессах. Интеграция с системами CI/CD позволяет автоматизировать запуск тестов при каждом изменении кода, повышая качество продукта и сокращая время на проверку функциональности.
Перед интеграцией необходимо убедиться, что проект Cypress корректно настроен для безголового запуска:
npm install cypress --save-dev
package.json Для
запуска тестов в CI полезно иметь отдельный скрипт:"scripts": {
"cypress:open": "cypress open",
"cypress:run": "cypress run"
}
npx cypress run --browser chrome
CYPRESS_baseUrl, CYPRESS_API_KEY и т.д.)
можно передавать через CI, чтобы тесты выполнялись в разных средах
(staging, production).GitHub Actions предоставляет удобный способ автоматизации запуска тестов:
name: Cypress Tests
on:
push:
branches:
- main
pull_request:
jobs:
cypress-run:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 20
- run: npm ci
- run: npx cypress run
env:
CYPRESS_baseUrl: https://staging.example.com
Особенности настройки:
runs-on: ubuntu-latest — обеспечивает чистое окружение
для каждого запуска.npx cypress run запускает все тесты в headless
режиме.Jenkins позволяет гибко настраивать пайплайны:
pipeline {
agent any
stages {
stage('Checkout') {
steps {
checkout scm
}
}
stage('Install Dependencies') {
steps {
sh 'npm ci'
}
}
stage('Run Cypress Tests') {
steps {
sh 'npx cypress run --browser chrome'
}
}
}
post {
always {
archiveArtifacts artifacts: 'cypress/screenshots/**', allowEmptyArchive: true
junit 'cypress/results/*.xml'
}
}
}
Ключевые моменты:
Для CI/CD критично отслеживать результаты тестирования:
cypress-mochawesome-reporter
генерирует детальные HTML отчёты с визуализацией прохождения
тестов.Параллельный запуск сокращает время выполнения тестов. Cypress поддерживает распределение тестов между несколькими CI агентами:
npx cypress run --record --parallel --key <project-record-key>
Пояснения:
--record отправляет результаты на Cypress
Dashboard.--parallel позволяет CI системе распределять тесты
между машинами.<project-record-key> — уникальный ключ проекта
для связи с Dashboard.Для различных сред удобно использовать конфигурационные файлы:
npx cypress run --config-file cypress.staging.json
В файле cypress.staging.json можно переопределять
baseUrl, таймауты и другие параметры. Это упрощает
поддержку нескольких окружений в одном пайплайне.
Интеграция Cypress с CI/CD системами обеспечивает постоянную проверку функциональности приложения, ускоряет выявление ошибок и поддерживает высокий стандарт качества на всех этапах разработки.