Запись тестовых прогонов

Cypress предоставляет встроенные возможности для записи тестов, позволяя фиксировать их выполнение и собирать подробную информацию о каждом прогоне. Этот функционал особенно важен для анализа ошибок, воспроизведения багов и интеграции с системами CI/CD. Запись тестов осуществляется через Cypress Dashboard и локальные механизмы логирования, обеспечивая детальный отчет о каждом действии браузера и состоянии приложения.


Настройка записи тестов

Для начала необходимо настроить проект для записи прогонов. Cypress использует файл конфигурации cypress.config.js или cypress.json в зависимости от версии. Основные параметры записи включают:

module.exports = {
  e2e: {
    baseUrl: 'http://localhost:3000',
    video: true,
    screenshotsFolder: 'cypress/screenshots',
    videosFolder: 'cypress/videos',
    experimentalInteractiveRunEvents: true,
  },
};
  • video: true — включение записи видео прогонов тестов.
  • screenshotsFolder и videosFolder — указание папок для хранения скриншотов и видео.
  • experimentalInteractiveRunEvents — позволяет отслеживать события прогонов для более гибкой аналитики.

Запуск тестов с записью выполняется командой:

npx cypress run --record --key <project-record-key>

--record указывает на необходимость записи, а --key связывает прогон с проектом в Cypress Dashboard.


Работа с Cypress Dashboard

Cypress Dashboard позволяет хранить и анализировать результаты прогонов. Основные возможности:

  1. История прогонов — каждый тест фиксируется с отметкой времени, статусом и метаданными.
  2. Видеозаписи и скриншоты — при ошибках автоматически сохраняются для последующего анализа.
  3. Фильтрация и поиск по тестам — позволяет быстро найти прогон по названию теста, статусу или тегам.
  4. Интеграция с CI/CD — результаты прогонов можно подключать к Jenkins, GitHub Actions, GitLab CI.

Использование Dashboard повышает прозрачность тестирования и облегчает командную работу.


Скриншоты и видео

Cypress автоматически делает скриншоты при падении теста. Можно настроить ручное снятие скриншотов:

cy.screenshot('login-page');

Для записи видео всех прогонов используется параметр video: true. Cypress сохраняет видео только для тестов, которые запускались командой cypress run в headless-режиме. Видео позволяет:

  • Визуально проверить последовательность действий.
  • Найти момент возникновения ошибки.
  • Использовать для отчета перед командой QA или менеджерами.

Метаданные и теги прогонов

Cypress позволяет добавлять метаданные к тестам для удобной фильтрации:

it('Проверка логина', { tags: ['smoke', 'auth'] }, () => {
  cy.visit('/login');
  cy.get('#username').type('admin');
  cy.get('#password').type('1234');
  cy.get('button[type="submit"]').click();
  cy.url().should('include', '/dashboard');
});

Теги и названия тестов помогают при аналитике прогонов в Dashboard и CI/CD, облегчая выбор тестов для повторного запуска или мониторинга конкретных функциональностей.


Уведомления и алерты

Запись прогонов можно интегрировать с системами уведомлений, чтобы получать сообщения о падении тестов:

  • Slack, Microsoft Teams — уведомление с ссылкой на видео и скриншоты.
  • Email — детальная информация о каждом падении теста.
  • Webhooks — автоматическая обработка результатов прогонов.

Пример интеграции с Slack через CI/CD:

- name: Notify Slack
  run: |
    curl -X POST -H 'Content-type: application/json' \
    --data '{"text":"Прогон Cypress завершился: $STATUS"}' \
    $SLACK_WEBHOOK_URL

Запись прогонов в локальной среде

Помимо Dashboard, Cypress поддерживает локальную запись прогонов. В этом случае видео и скриншоты сохраняются на диске, а журнал логов доступен в консоли. Это полезно при тестировании на локальных ветках или при ограниченном доступе к облачным сервисам.


Преимущества записи тестов

  • Быстрое выявление ошибок: возможность увидеть шаги воспроизведения.
  • Историчность данных: доступ к прошлым прогонам и результатам тестов.
  • Поддержка CI/CD: автоматизация анализа тестов при каждом пуше.
  • Аналитика стабильности тестов: выявление flaky-тестов через повторные прогоны.

Практические рекомендации

  1. Всегда использовать ключ записи проекта при интеграции с Dashboard.
  2. Включать видео для регрессионных и критичных тестов.
  3. Добавлять скриншоты вручную для сложных UI-сценариев.
  4. Использовать теги для группировки и фильтрации прогонов.
  5. Интегрировать уведомления в систему мониторинга качества продукта.

Запись тестовых прогонов в Cypress позволяет создавать прозрачную, воспроизводимую и управляемую среду для автоматизированного тестирования, обеспечивая полный контроль над качеством веб-приложения.