Чем Cypress прекрасен для новичков автоматизации?

Документация


Уверен, что никакой другой framework для тестирования не имеет такой понятной, объёмной и обширной документации. Она написана на простом английском языке, содержит описание API, тонну полезных гайдов от разработчиков проекта, к примеру — настройка конфигурации.

image
Каждая страница описывающая дефолтные методы содержит подобную таблицу. В ней находиться описание переменных, аргументов, опшинов и их значения по умолчанию. Также приведены примеры и подсказки, как правильно использовать методы и комбинировать их с другими для достижения результатов. Справа находится меню для быстрой навигации по разделам страницы. Очень удобно в работе, когда что-то забыл, сразу прыгнуть в «Examples» для какой-либо функции.

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

P.S Если с английским совсем не дружите, не беда — у сайта есть русская локализация.



Community


Конечно, оно не на столько велико как у Selenium, но мне всегда удавалось найти решение проблем в «гуглах». Более того, разработчики активно читают github issues и прислушиваются к мнению потребителей. Часто выпускают полезные подкасты и ведут блог .

image

Простота установки и скорость работы


Установить Cypress невероятно просто!

npm install cypress — все что вам нужно.



Cкорость его работы заслуживает отдельной похвалы. К примеру, мой тест кейс на 100+ шагов пробегает менее, чем за 3 минуты. Все благодаря его архитектуре: Cypress написан на JavaScript, а test runner это и есть браузер. Чем выше скорость интернета, тем быстрее Cypress делает свою работу. Framework автоматически ждет завершения команд, запросов и ассёртов, прежде чем продолжить выполнение. Поэтому вам не приходится ломать голову с async await!

Cypress стимулирует изучать API тестируемого приложения


Рано или поздно вы столкнетесь с тем, что тесты падают из-за фейлов в серверных запросах, и было бы круто их обрабатывать.

В Cypress runner мы можем наблюдать запросы, которые отправляются на сервер.



Так вот, их можно хендлить с помощью cy.route



И в нужный момент проверить ответ сервера:



Таким образом, вы снижаете вероятность фейла, всегда в курсе для чего нужен конкретный endpoint, какие данные принимает и что должен вернуть. Кроме того, определять причину возникновения дефекта в разы проще!

Test runner



Это окно — прекрасный инструмент для debugging процесса, ведь вы в реальном времени видите как выполняется тест. Кроме того, если код изменится, Cypress автоматически перезапустит тест, и вам не нужно делать никаких лишних действий. Даже после выполнения теста вы можете вернуться в любую его часть и посмотреть, что происходило, так как Cypress сохраняет скриншоты и видео.

Отдельного внимание заслуживает помощник для селекторов. Тыкакем на значок «прицела», наводим курсор на нужный элемент и получаем селектор:



Изучение селекторов и assertions


Cypress из-под коробки включает JQuery, Chai и Sinon extensions . Что это дает? Вы получаете мощные инструменты для поиска и проверки DOM элементов, которые давно себя зарекомендовали. Гугл изобилует информацией про каждый из них. Пример моих помощников: Xpath helpers, JQueary cheat sheet, CSS selectors

Итоги


Если вы только пробуете себя в автоматизации, я рекомендую учиться работая в Cypress. Конечно он не идеален, к примеру мне в работе попались: проблема с отправкой form-data и cross origin error. Так же Cypress не позволяет запускать тесты в нескольких табах одновременно и переходить на другие ресурсы. Но я хотел сделать упор на достоинствах этого инструмента для легкого старта в автоматизированном тестировании! Ведь научится писать тесты с помощью этого framework`а не трудно благодаря шикарной документации и интуитивно понятном синтаксисе. Согласитесь, свичнуться на что-то другое не станет проблемой, если вы получили хорошую базу.

Комментарии 9

    +3
    Раз уж взялись хвалить Cypress, то напишите и его ограничения:
    — Cypress не работает в случае, если надо открывать New Tabs
    — Cypress работает только с «single origin», то есть тесты не могут переходить с сайта на сайт

    Ну и ещё там по мелочи:
    docs.cypress.io/guides/references/trade-offs.html

    А так, да — удобный инструмент для своих случаев.
      +1

      Нет поддержки iframe. Так же плохо работает с SPA, как и selenium-based тесты. Нет try catch. И что-то ещё по мелочам.

        +1

        iframe — из той же серии, что single origin, насколько я понимаю.


        А что не так с spa?
        Зачем в тесте try/catch?

          0
          Try/catch нужен например, чтобы проверить что система бросает правильное исключение с правильным текстом. У меня, например, есть такие тесты, где нужно проверить, как ведет себя система в случае передачи неправильных параметров
            +2

            Мы же говорим про e2e тестирование веб-приложения, нет? Там нет исключений. Там есть (эмулированные) действия пользователя и видимая реакция приложения (что-то отрисовано, что-то не отрисовано, урл в адресной строке стал такой-то). Исключения — это из другого мира вообще. В юнит тестах может иметь смысл, да.

        0
        Здравствуйте! Добавил в «итоги» проблемы с которыми столкнулся на практике, однако я старался сделать упор на плюсах Cypress для новичков. Я изучал много информации в плане сравнения Cypress с другими фреймворками, но не стал добавлять эту информацию в статью ибо это совсем другая история)
        +2

        Не в обиду, но пост как если бы полный текст взяли, и выкинули абзацы:


        • есть хорошая штука. Она вообще такая сякая. Мы видим таблицу...
          0
          Добрый день, это одна из моих первых проб, самому не нравиться заключение и полнота, просто пока нет времени дополнить ее (вечная рабочая рутина)
          +2
          Работа с сетью в Cypress клевая фича конечно, на selenium такое тяжело сделать :(

          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

          Самое читаемое