testengineer.ru

Домой Новости Playwright уже лучше чем Cypress

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-отделе, и личных предпочтений. 

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

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

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

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

ОСТАВЬТЕ ОТВЕТ

Пожалуйста, введите ваш комментарий!
пожалуйста, введите ваше имя здесь

Последние публикации

Последние комментарии