Кажется, Playwright уже лучше чем Cypress

playwright vs cypress

.

В 2020 году Cypress был лидером в своем сегменте, и крайне популярной вещью — имея уникальные, как для 2020 года, функции. Но были и минусы, а обещанные усовершенствования так и не заработали, как обещали клиентам. Перешедшие на Cypress клиенты, тем не менее, не были готовы возвращаться назад на Selenium, ожидали улучшений в Cypress или похожие альтернативные решения. А их долго не было, да и возникла привычка, в конце концов.

А сейчас, осенью 2021, есть Playwright, и это весьма крепкий конкурент Cypress. Несмотря на то что вышел тоже в прошлом году, Playwright активно обновляется, имеет широкий функционал, в нем не наблюдается характерных минусов Cypress’а. Правильно будет сказать, что Playwright сейчас в тренде, и выглядит так, что это будущий основной фреймворк автоматизации.

Что плохо в Cypress

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

Проблемы со сторонней авторизацией. То, о чем на форумах говорят как о Cross-Origin/Third Party Login Issue. В Cypress пытались объяснять свой отказ поддерживать такие сценарии автоматизации, но как-то неубедительно. В этой сфере как правило применяется E2E-тестирование, а в Cypress призывают тестировать такие сценарии через тестирование API, или еще как-то по другому. Это приводит к ситуациям, когда компания вынуждена модифицировать свою систему авторизации лишь для автоматизации тестирования, и вообще интегрировать Cypress у себя в процессы, чего может быть хотят не все. Это всего лишь тестирование, и многие компании не хотят инвестировать в такие узкие сферы, кастомизировать всю свою авторизацию лишь для Cypress.

Если в компании пользуются решениями авторизации типа SSO или подобными, автоматизация таких вещей достаточно сложное дело: Cypress не поддерживает несколько Cross-Origin domain в одном скрипте.

Нет поддержки нескольких окон и вкладок. Cypress не поддерживает мультивкладки и окна, но дали обходной путь — удалить target-атрибут. Тестировщику может понадобиться реплицировать какой-то сценарий как это делают конечные пользователи, но это выглядит “неправильным хаком”, многим не нравятся такие обходные пути.

Поддержка браузеров. Cypress все еще не поддерживает Safari. Большинство владельцев Маков сидят в Safari, а тестировщик обязан прогонять тесты на всех популярных браузерах.

Не поддерживается параллельное тестирование в браузере. На локальной машине можно запустить лишь один браузер с Cypress, параллельное тестирование заблокировано. Многие тестировщики не хотят тратить время на последовательное выполнение тестов.

Паттерн Page Object. Применяется во многих компаниях и в различных инструментах для автоматизированного тестирования, однако Cypress это не одобряет. Что не мешает тестировщикам применять паттерн, несмотря на позицию владельцев Cypress. А владельцы продвигают, вместо Page Objects, свой якобы перспективный паттерн App Actions.

Проблемы с интеграцией CI/CD. Если в компании применяется сторонний софт, нужно ставить Cypress на каждую прогонку тестов. Время на установку иногда достигает 10-15 минут, а если компания платит за софт для билда по времени пользования, то получается теряет что-то на каждой установке Cypress.

Проблемы с async/await. Применение в Cypress заставляет тесты вести себя непредсказуемо, что неприемлемо для современного фреймворка.

Проблемы с созданием тест-сьютов. Если тестировщик не хочет создавать наборы, если он планирует переходить с Protractor и хочет иметь те же функции в Cypress, то его ждет разочарование — в Cypress все еще не сделали такую простую функцию, будучи на рынке много лет.

XPath. Cypress поддерживает локаторы, пользоваться удобно, но, опять же, работа с XPath требует установки дополнительного плагина.

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

Дебаг. Cypress удалил прямую поддержку дебага из Visual Studio Code, так что надо работать с developer tools и дебаггером. Не всем это нравится.

Автоматическое ожидание. В документации Cypress говорится, что он ожидает загрузки всех элементов до начала любого действия, но существует много ситуаций когда это не подходит.

Что касается E2E-тестирования, много кто хотел бы иметь функциональность “как в Селениуме”, однако Cypress все еще отстает.

Cypress был лидером в своем сегменте пару лет, и за это время разработчики “полировали” проблемы с Github-ом, а лучше бы (как считают многие) сосредоточились на перечисленных выше проблемах.

Итак, сейчас у пользователей Cypress есть хорошая альтернатива в виде Playwright.

Этот продукт агрессивно вошел на рынок, обладая приличной функциональностью. Не прекратил развитие после презентации и выхода, и сейчас это вполне состоявшийся продукт. И да, он опенсорсный, хотя и принадлежит Microsoft.

Почему Playwright хорошо зашел

Нет проблем с iFrame. То есть нет ограничений в Playwright на действия с iFrame.

Нет проблем с Cross-Origin-входом. Playwright не привязывает к одному домену; можно запустить несколько экземпляров браузера и автоматизировать тестирование таких сценариев.

Браузеры. Поддерживает Chromium, Firefox, и Safari (и все браузеры iOS-платформы WebKit).

Параллельное выполнение. Поддерживает параллельное выполнение тестов.

XPath. Не нужно ставить дополнительные плагины для XPath, все нормально работает из коробки.

Дебаг в Visual Studio Code. Playwright хорошо работает с VS Code, поддерживается дебаг и все инструменты.

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

Автоматическое ожидание. Есть встроенный механизм, который может настраиваться, с возможностью задавать время ожидания.

Поддержка нескольких окон и табов. Можно работать в нескольких окнах/вкладках, конфигурировать их.

Загрузка и передача файлов. Много опций управления передачей и загрузкой, для этого не нужны дополнительные плагины.

Паттерн Page Object. В отличие от Cypress полностью поддерживает паттерн, если разобраться с документацией, можно все сделать еще лучше.

Фичи Playwright, которые лучше чем в Cypress

Добавим, не только в Cypress, а вообще свежо, для 2020-21 года. 

Поддержка нескольких языков. А именно JavaScript, Java, C#, и Python.

Генерация кода в CodeGen. Тесты можно записывать в Playwright CodeGen, и этот инструмент генерирует код тестовых скриптов.

Тестирование Safari на Windows. При установке фреймворка также ставится целый набор браузеров — Chrome, Firefox, Webkit. Последний представляет собой опенсорсную версию Safari, способную запускаться на Windows, в целях тестирования.

Эмуляция девайсов. Выполнение тестов на эмулированных девайсах, запускается одной командой из оболочки Playwhight.

Генерация PDF-документов. Хорошая фича, в других фреймворках пока не реализована.

Перезапуск тестов. Можно указать количество перезапусков, это стандартная функция но реализована чуть удобнее.

Отчеты Allure. Функция интегрирована лучше чем у конкурентов.

По общему впечатлению в комьюнити, у Playwright богатый функционал, особенно в сравнении с конкурентами. Разработка активно продолжается, баги устраняются оперативно, так что можно ожидать дальнейшего расширения функциональности.

Итак

Переходить ли со знакомого Cypress, решает компания. Это разумеется зависит от задач в QA-отделе, и личных предпочтений. 

Автоматизация тестирования

Какой была ваша первая зарплата в QA и как вы искали первую работу?

Мега обсуждение в нашем телеграм-канале о поиске первой работы. Обмен опытом и мнения.

2 КОММЕНТАРИИ

Подписаться
Уведомить о
guest

2 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
aviator
aviator
2 лет назад

Походу проплаченная статья))

Пользуюсь Cypress, многие из «недостатков» Cypress высосаны из пальца или на данный момент неактуальны.

testengineer.ru
2 лет назад
Ответить на  aviator

Нет, это нерекламная статья. Она отражает точку зрения нашего автора.

Мы в Telegram

Наш официальный канал
Полезные материалы и тесты
Готовимся к собеседованию
Project- и Product-менеджмент

? Популярное

? Telegram-обсуждения

Наши подписчики обсуждают, как искали первую работу в QA. Некоторые ищут ее прямо сейчас.
Наши подписчики рассказывают о том, как не бояться задавать тупые вопросы и чувствовать себя уверенно в новой команде.
Обсуждаем, куда лучше податься - в менеджмент или по технической ветке?
Говорим о конфликтных ситуациях в команде и о том, как их избежать
$1100*
медианная зарплата в QA в июне 2023

*по результатам опроса QA-инженеров в нашем телеграм-канале

Собеседование

19%*
IT-специалистов переехало или приняло решение о переезде из России по состоянию на конец марта 2022

*по результатам опроса в нашем телеграм-канале

live

Обсуждают сейчас