Перевод статьи Alister Scott: Five reasons why Playwright is better than Cypress Очевидно, что я не фанат Cypress, о чем, собственно, 2 года назад написал пост. За это время мое внимание привлек Playwright. Я специально вернулся к Cypress, чтобы сравнить его с Playwright и посмотреть, были ли исправлены претензии по отношению к первому фреймворку. На основании проведенного сравнения, могу смело рассказать о причинах, почему Cypress все еще проигрывает конкуренцию. Сравниваемые версии:Cypress: 8.7.0 on Electron 93Playwright: 1.16.0 Зафиксированный результат — до 4-х раз быстрее!Берем простой пример из документации Cypress: Работает 8 секунд на моем M1 Macbook Air Тот же пример на Playwright: В 4 раза быстрее!😎 Чтобы запустить тесты параллельно, нужно отправить их в Cypress Dashboard (или Sorry Cypress). Только так возможна работа в несколько потоков на одной машине, хотя разработчики Cypress и не рекомендуют заниматься подобным. В то же время, на Playwright параллельные тесты запускаются без проблем. “While parallel tests can also technically run on a single machine, we do not recommend it since this machine would require significant resources to run your tests efficiently.” https://docs.cypress.io/guides/guides/parallelization#Overview Либо Cypress так раздут, что для параллельных тестов требуется дорогое оборудование, либо команда Cypress хочет, чтобы пользователи платили за их службу параллельного выполнения. А может быть, и то, и другое? Например, в Playwright я могу запустить эти 8 тестов параллельно: на моем Macbook Air занимает всего 6 секунд 😎 Чтобы запустить эти тесты параллельно (с использованием сервера) в Cypress, мне нужно было бы структурировать их как отдельные файлы (по одной спецификации на каждый): И чтобы провести эти тесты, на той же машине потребуется 45 секунд, что в 7,5 раз медленнее. Нет цепочек прототипов, никакого сложного для понимания кода, никакой магии. Вы можете видеть, откуда берутся test, expect и page. Тот же тест в Cypress: Обратите внимание, как функция вызывает цепочку. Неплохая реализация в данном примере, но происходящее быстро выходит из-под контроля. Нет никаких указаний, что это синхронный код — отсутствует await на вызовы функций. “Магия” происходит в случае с cy и describe, и при этом совершенно отсутствует импорт. В Cypress много ограничений. Большую часть из них можно исправить плагинами, но некоторые проблемы таковыми остаются ввиду отсутствия “лекарства”. Нужно нажать клавишу tab? Для этого есть плагин. И, судя по ишью Github он вообще не работает из-за отсутствия поддержки этой самой клавиши. Тема открыта с 2016 года по сей день. Вопрос актуален в течение всего времени с момента, когда я последний раз писал о Cypress. Нужно загрузить файл? Для этого также есть плагин. Вам нужно выполнить тесты n раз подряд, чтобы проверить стабильность тестов? Для этого есть плагин. К счастью, Playwright изначально поддерживает всё вышеописанное и множество других функций без каких-либо плагинов. 😎 Как видите, я все еще не фанат Cypress 😀Тем более теперь есть инструмент, который стал намного лучше и доступен совершенно бесплатно.Так что я буду придерживаться вывода двухлетней давности: Издалека Cypress выглядит как идеальный инструмент для автоматизированного тестирования. Я думаю, что его неправильно позиционируют, как инструмент е2е тестирования, хотя на самом деле фреймворк годится только для проверки компонентов. В нем слишком много ограничений, чтобы заниматься созданием настоящих e2e тестов.https://alisterbscott.com/2019/07/06/my-oughtts-on-cypress-io/ QA Engineer