Headless режим в Cypress позволяет запускать тесты без открытия графического интерфейса браузера. Это критически важно для интеграции в CI/CD процессы, автоматизации тестирования на сервере и ускорения выполнения большого количества тестов. В headless режиме браузер работает «в фоне», что значительно снижает потребление ресурсов и ускоряет выполнение тестов по сравнению с режимом с GUI.
Cypress поддерживает несколько способов запуска тестов в headless режиме через CLI. Основные команды:
npx cypress run
По умолчанию команда запускает тесты в браузере Electron в headless режиме. Для запуска в другом браузере, например Chrome, используется флаг:
npx cypress run --browser chrome
Для выбора конкретной конфигурации тестов или отдельного файла можно использовать:
npx cypress run --spec "cypress/e2e/login.cy.js"
Cypress умеет сохранять видео выполнения тестов даже в headless
режиме. Настройки находятся в cypress.config.js:
module.exports = {
video: true,
screenshotsFolder: 'cypress/screenshots',
videosFolder: 'cypress/videos'
};
Видео записывается автоматически при падении теста. Скриншоты также
могут сохраняться при ошибках или по ручному вызову команды
cy.screenshot().
Headless режим идеально подходит для параллельного запуска тестов в CI/CD. Для этого используются флаги:
npx cypress run --record --parallel
--record — отправка результатов тестов на Cypress
Dashboard.--parallel — распределение тестов между несколькими
раннерами для ускорения.В сочетании с параметром --group <название> можно
логически разделять тесты по группам:
npx cypress run --record --parallel --group "smoke-tests"
Cypress поддерживает несколько браузеров в headless режиме:
Запуск в headless режиме для конкретного браузера выглядит так:
npx cypress run --browser firefox --headless
Для некоторых браузеров --headless можно не указывать,
так как запуск через CLI уже подразумевает headless режим.
В headless режиме полезно использовать флаги для подробного логирования:
DEBUG=cypress:* npx cypress run
Это позволяет отслеживать внутренние процессы Cypress, шаги тестов и запросы к сети. Для отладки сложных сценариев можно включить видео-запись и скриншоты, что позволяет воспроизвести ошибку без GUI.
cy.intercept вместо прямых ожиданий (cy.wait)
по фиксированным таймингам.Headless режим отлично подходит для контейнеризации тестов. Пример команды для запуска Cypress в Docker:
docker run -it -v $PWD:/e2e -w /e2e cypress/included:12.0.0
Этот образ уже содержит Cypress и все зависимости, тесты запускаются в headless режиме по умолчанию, что облегчает CI/CD интеграцию.
Headless режим является стандартом для автоматизации и масштабирования тестирования в профессиональной среде, особенно при интеграции с CI/CD и контейнеризацией.