2020-03-04 10:49:59
Cypress vs TestCafeДолго ломал голову между тем что выбрать: Cypress или TestCafe.
Пару лет назад я выбрал Cypress для написания тестов для одного проекта. Все было красиво и молодежно, но все же были некоторые проблемы с моками fetch API и тем, что некоторые тесты периодически случайным образом падали. Позднее мне снова потребовалось написать e2e тесты для другого проекта. В этот раз я решил выбрать TestCafe, т.к. этот инструмент тоже весьма популярный, поддерживает, по сути, все браузеры и девайсы и имеет немного другой принцип работы, что открывает потенциально интересные возможности в плане моков. К тому моменту я уже забыл впечатления от Cypress и в целом работа с TestCafe мне показалась вполне комфортной, хоть и немного болезненной. Да, нету красивого интерфейса в браузере, но за то API с православными async/await, а не волшебной очередью, как у Cypress.
Однако на этом мои эксперименты с фреймворками не окончились. Так получилось, что я вернулся к старому проекту с тестами на Cypress. На этот раз мне нужно было его немного обновить и отрефакторить, что в свою очередь так же задевало и тесты. В процессе рефакторинга я обнаружил, что все те проблемы, которые у меня когда-то были, на самом деле, легко решаются (просто в те времена у меня немного не хватало опыта).
Но что самое главное, я ощутил насколько приятнее, проще и быстрее работать с Cypress по сравнению с TestCafe. Основная разница заключается в том, что у TestCafe хоть и на первый взгляд более "правильная" апи, но при этом она еще очень "verbose". Тебе нужно все время создавать дополнительные обвертки-объекты для всех сушностей (селектор, мок запросов, логгер запросов (ага, чтобы проверить, что запрос был совершен, тебе нужно его мокнуть, а потом еще отдельно создать логгер, через который можно проверить был ли выполнен запрос), учить немного не типичную API тестов и ассертов. С добавлением суппорта TypeScript в TestCafe тоже пришлось слегка попотеть.
В общем, спустя пару недель мучительного взвешивания "за" и "против" я все же решил переписать второй проект с TestCafe на Cypress. Кстати, на тот момент я так и не воспользовался главным преимуществом TestCafe — возможность тестировать в десятках разных браузеров, так что при смене фреймворка я особо ничего не терял в плане функционала.
Буквально за пару дней я переписал все тесты на Cypress (кстати да, на конвертацию ушло очень мало времени. Думаю, переход с Cypress на TestCafe был бы значительно сложнее) и убедился, что это был правильный выбор. Если какой-то инструмент предоставляет более крутой dev experience и имеет большую комьюнити, лучше всегда отдавать предпочтение именно ему, пока не возникнет ситуация, в которой вы будете вынуждены использовать менее удобные инструменты в пользу их уникальной функциональности без которой вы не сможете достичь своих целей.
Если мне когда-нибудь понадобится выполнять кросс-браузерные тесты, я скорее всего сделаю второй mini-test-suite на TestCafe, который будет покрывать только те кейсы, которые требуют кросс-браузерного тестирования. При этом большая часть тестов все равно останется на Cypress потому, что так быстрее и проще.
А теперь, собственно, о главном в этом посте. Я записал видео сравнение выполнения одного и того же тест сьюта написанного на Cypress и TestCafe. Приятного просмотра!
49 viewsedited 07:49