Новинки Cypress 13 и выше: подробный разбор с примерами

Детальный обзор ключевых нововведений в Cypress, начиная с версии 13. Статья объясняет такие фичи, как компонентное тестирование для Vue/Angular/Svelte, расширенные возможности cy.intercept(), улучшения Test Runner и работу с cy.origin(), подкрепляя теорию практическими примерами кода.
Инструмент для end-to-end тестирования Cypress продолжает стремительно развиваться, предлагая разработчикам и QA-инженерам все более мощные и удобные возможности. Версии 13, 14 и последующие релизы принесли ряд значимых нововведений, которые меняют подход к написанию и организации тестов. В этой статье мы подробно разберем ключевые новинки, объясним их назначение и покажем на практических примерах, как они делают процесс тестирования более эффективным и надежным.

Одной из самых ожидаемых и значимых новинок, представленной в Cypress 13, стало стабильное внедрение компонентного тестирования для фреймворков, отличных от React. Если ранее эта функциональность была в экспериментальном режиме или ограничена, то теперь она полноценно поддерживает Vue, Angular, Svelte и, конечно, React с такими мета-фреймворками, как Next.js или Nuxt. Компонентное тестирование позволяет тестировать отдельные компоненты пользовательского интерфейса в изоляции, монтируя их прямо в Cypress, без необходимости запуска всего приложения. Это дает невероятную скорость выполнения и детальный контроль над пропсами, состоянием и событиями.

Например, чтобы протестировать кнопку Vue-компонента, ваш тест может выглядеть так:
`cy.mount()`
`cy.get('button').should('contain', 'Save').click()`
`cy.get('@onClickSpy').should('have.been.calledOnce')`
Это кардинально отличается от e2e-теста, где нужно было бы открыть целую страницу, дождаться загрузки и пройти через множество шагов, чтобы добраться до нужного состояния. Теперь разработчики могут использовать один инструмент и для модульных, и для интеграционных, и для end-to-end тестов, создавая так называемую "тестовую пирамиду" внутри единой экосистемы.

Еще одно важное улучшение — расширение возможностей команды `cy.intercept()`. Теперь она стала еще более гибкой для управления сетевыми запросами. Добавлена возможность легко перехватывать и модифицировать запросы на основе их порядка или типа контента. Например, вы можете перехватить только второй POST-запрос к определенному эндпоинту или подменить ответ для запросов с `Content-Type: application/json`. Это бесценно для тестирования сложных сценариев, зависящих от последовательности API-вызовов или различных форматов данных.

В области UX и отладки Cypress сделал огромный шаг вперед с обновлением Test Runner. Запуск тестов теперь стал заметно быстрее, особенно при использовании компонентного тестирования. Улучшена панель команд (Command Log) — она стала более информативной и наглядной. Например, для перехваченных запросов и ответов теперь отображаются тайминги, заголовки и тело в структурированном виде прямо в логе, что избавляет от необходимости постоянно переходить в DevTools. Также появилась улучшенная визуализация для цепочек ассертов (утверждений), что помогает быстрее находить причину падения теста.

Безопасность и контроль зависимостей также не остались без внимания. Cypress продолжает укреплять свою политику в отношении `cy.origin()`, которая используется для тестирования сценариев, выходящих за пределы одного супердомена (cross-origin). В новых версиях улучшена изоляция и безопасность выполнения кода внутри разных origin, что делает тестирование таких сценариев, как OAuth-авторизация или платежные шлюзы, более предсказуемым и безопасным. Это критически важно для современных веб-приложений, активно взаимодействующих с внешними сервисами.

Для команд, практикующих CI/CD, важны нововведения в области конфигурации и производительности. Появились новые опции для более тонкого управления кэшированием зависимостей и бинарных файлов Cypress на CI-серверах, что значительно сокращает время установки перед прогоном тестов. Улучшена интеграция с популярными CI-платформами (GitHub Actions, GitLab CI, CircleCI), включая более детальные отчеты о прохождении тестов прямо в интерфейсе пулл-реквеста.

Отдельно стоит отметить прогресс в поддержке TypeScript. Cypress теперь предлагает еще более качественные типы "из коробки". Улучшена типизация для цепочек команд, кастомных команд и плагинов, что снижает количество ошибок на этапе написания тестов и улучшает автодополнение в IDE. Для больших проектов с TypeScript это существенный прирост в продуктивности.

В заключение, тренд развития Cypress очевиден: инструмент движется от простого "рекордера" кликов к полноценной платформе для тестирования всех уровней современного веб-приложения. Компонентное тестирование, мощные возможности для управления сетью, улучшенный опыт отладки и фокус на производительности в CI — все это делает Cypress 13 и выше обязательным к рассмотрению для любых серьезных проектов. Начинать изучение новинок лучше с официальной документации, которая также была значительно переработана и стала более структурированной и понятной.
266 4

Комментарии (14)

avatar
7waz8oqi 28.03.2026
Автор, вы упомянули про улучшение стабильности тестов. А есть статистика или кейсы, подтверждающие это на практике?
avatar
tqmekby 28.03.2026
Примеры с `cy.session()` — это то, что нужно! Наконец-то понял, как правильно кэшировать состояние логина.
avatar
v8klhx 29.03.2026
Статья полезная, но слишком техническая для начинающих. Не хватает введения с объяснением базовых концепций Cypress.
avatar
efcxa34l2n48 29.03.2026
Отличный обзор! Особенно заинтересовала новая система компонентных тестов. Жду продолжения про практическое применение.
avatar
ifj9repxyoe 29.03.2026
Не увидел упоминания про изменения в Cypress Cloud. А там тоже были важные апдейты для командной работы.
avatar
s1pctjeagk 29.03.2026
Мне кажется, статья немного перехваливает нововведения. Не все из них так критично важны в ежедневной работе.
avatar
vx330p2t 30.03.2026
Жаль, что мало внимания уделили обновлению документации и новому туториалу. Это сильно помогает в освоении.
avatar
e02tmfmyg 30.03.2026
Информативно, но чувствуется, что автор поверхностно коснулся изменений в производительности. Хотелось бы глубже.
avatar
kkxiu5078 30.03.2026
После прочтения захотелось сразу обновиться и попробовать новые фичи. Отличная мотивация для прокачки тестов.
avatar
u2tn9tfri 30.03.2026
Всё четко и по делу. Особенно ценно, что выделили breaking changes — это сэкономит много времени при обновлении.
Вы просмотрели все комментарии