Cypress

Тема дорожной карты · QA-инженер

Cypress — это современный JavaScript-фреймворк end-to-end тестирования, разработанный специально для веб-приложений, запускающий тесты непосредственно в браузере и дающий QA-инженерам и разработчикам непревзойдённую видимость и контроль над тестируемым приложением. В отличие от Selenium WebDriver, Cypress работает в том же цикле событий, что и приложение, обеспечивая надёжное автоматическое ожидание, снимки DOM в реальном времени, перехват сетевых запросов через cy.intercept() и отладку с возможностью путешествия во времени через интерактивный Test Runner. Наборы тестов Cypress структурированы блоками describe() и it(), используют cy.get() с CSS и пользовательскими атрибутными селекторами, и поддерживают хуки before/beforeEach для настройки состояния — те же паттерны, что привычны из Mocha и Jest. Cypress нативно встраивается в CI/CD-пайплайны через официальный cypress-io/github-action для GitHub Actions или Dockerfile-настройки для Jenkins, а Allure или встроенный репортер Mochawesome генерируют подробные HTML-отчёты о тестах.

Как это работает

Cypress использует browser-automation тулы (Playwright, Cypress, Selenium) для управления реальными браузерами. Стабильные локаторы критичны: предпочитайте data-testid-атрибуты (добавляют разработчики), затем ARIA-роли + accessible names, потом текст, в крайнем случае CSS-селекторы. Используйте явные wait (await page.waitForSelector(...)), никогда sleep. Изоляция тестов: каждый создаёт свои данные или гонится на свежем state. Параллельно для скорости; в CI с retry-on-flake.

Когда применять

Playwright — для новых проектов (лучший DX, быстро, multi-browser, скриншоты/видео встроены). Мокайте сеть на границе (msw, Playwright route) — UI-тесты не должны зависеть от надёжности реального backend. Visual regression (Percy, Chromatic, Playwright snapshot) — для design-sensitive флоу. Тегайте тесты по скорости + критичности (@smoke, @regression); smoke — на каждый PR, regression — еженочно.

Типичные ошибки

Ловушки Cypress: локаторы через автогенерированные CSS-классы (следующий деплой их ломает); общий test-state даёт зависимость от порядка; UI-тесты без параллелизма в CI (1-часовые прогоны тормозят команду); flake-тесты оставлены — один flake подрывает доверие ко всему suite (чините или удаляйте).

Связанные понятия

Полезные ресурсы