Параллелизация тестов — один из ключевых инструментов для ускорения выполнения больших тестовых наборов. В Cypress она тесно интегрирована с Dashboard Service, который позволяет распределять тесты между несколькими CI-агентами, контролировать статус выполнения и собирать подробные отчёты.
Cypress Dashboard использует механизм разделения тестов на группы, называемые shards. Каждый shard запускается на отдельном агенте CI, что обеспечивает одновременное выполнение нескольких частей тестового набора. Это позволяет значительно сократить общее время прогонки, особенно при сотнях и тысячах тестов.
Ключевые моменты:
Для использования параллелизации необходимо:
Включить проект на Dashboard через команду:
npx cypress open
и зарегистрировать проект с уникальным ключом
recordKey.
Запуск с параметром --record и
--parallel:
npx cypress run --record --key <recordKey> --parallel
Этот запуск отправляет информацию о тестах на Dashboard, где она распределяется между доступными агентами.
Настройка CI/CD: большинство популярных систем (GitHub Actions, GitLab CI, Jenkins) позволяют указать несколько параллельных job-агентов. Cypress автоматически определяет, какие тесты должны выполняться на каждом агенте.
Cypress поддерживает два способа шардирования:
Автоматическое распределение файлов тестов: каждый агент получает набор файлов, который минимизирует время выполнения.
Ручное определение групп через
group в конфигурации CI:
npx cypress run --record --group "smoke-tests" --parallel
Это позволяет логически разделять тесты (например, smoke, regression, integration) и контролировать скорость выполнения и приоритет.
Dashboard Service выполняет несколько функций при параллельном запуске:
--ci-build-id: задаёт уникальный
идентификатор сборки CI, чтобы Cypress Dashboard мог сопоставлять все
shards с конкретным прогоном.--group: задаёт логическое имя группы
тестов, которое отображается в Dashboard.--tag: позволяет добавлять метки для
фильтрации прогонов.numTestsKeptInMemory: уменьшение этого
параметра может ускорить выполнение параллельных тестов, особенно при
большом количестве файлов.Пример конфигурации для GitHub Actions с параллельным запуском:
jobs:
cypress-tests:
runs-on: ubuntu-latest
strategy:
matrix:
shard: [1, 2, 3, 4]
steps:
- uses: actions/checkout@v3
- name: Install dependencies
run: npm ci
- name: Run Cypress tests
run: npx cypress run --record --key ${{ secrets.CYPRESS_RECORD_KEY }} --parallel --ci-build-id ${{ github.run_id }}
В этом примере четыре агента одновременно выполняют тесты, каждый получает свою часть тестового набора, а Dashboard собирает результаты в единую панель.
Dashboard предоставляет:
Параллелизация через Cypress Dashboard позволяет эффективно масштабировать тестирование, сокращать время выполнения и повышать стабильность сборок. Правильная настройка CI, использование групп, уникальных build ID и управление шардированием создают основу для оптимального распределения тестов на нескольких агентах.