SoftwareTesting

Cypress vs Playwright

Примеры: e2e

Плюсы/Минусы

Cypress

➕ Очень низкий порог входа. Getting started показывает как за пару минут запустить свои первые тесты
➕ Удобное приложение с репортингом, можно подробно посмотреть что происходило, какие элементы были найдены, что пошло не так
➕ Подробная документация
➕ Код не превращается в сплошные await
➕ Chainable дизайн лично мне нравится больше. К тому же он расширяем
➖ Не понятно как нормально запускать сервер через сам Cypress. На сайте вообще написано

Anti-Pattern: Trying to start a web server from within Cypress scripts with cy.exec() or cy.task()

➖ По сути вшит Mocha. Когда у тебя проект с Jest, то ты либо вынужден перейти, либо писать на 2х фрейморках. Но есть ишуя на гитхабе, может в будущем это будет исправлено
➖ Нет поддержки WebKit
➖ Нельзя запустить тесты сразу для нескольких браузеров

Playwright

➕ Сервер можно нормально запустить перед Playwright тестами автоматически
➕ Есть поддержка WebKit
➕ Можно запустить тесты сразу для нескольких браузеров
➕ Не зависит от тест раннера (Например, интегрируется с Jest)
➖ Все в чертовых await
➖ Порог входа выше. В Getting started рассказано как написать тест, но ничего о том, как запустить. Для Jest есть какой-то ‘плагин’, но я убил кучу времени, чтоб завести его в своем проекте
➖ Довольно бесполезный фронт раннера
➖ Селекторы более громоздкие
➖ Тесты долго работают (может дело в Jest-плагине)

Сравнение

Хотя концепт фреймворков очень похож, они мне показались совершенно разными. Работа с ними организована крайне непохоже. Cypress лучше подойдет для новичков, потому что с ним проще разобраться. Но, наверное, отсутствие WebKit является большой преградой для полноценных проектов. Вообще Cypress выглядит менее гибким, поэтому в проде его использовать проблемно

Мне не нравится ни тот, ни другой фреймворки, но Cypress импонирует больше из-за низкого порога входа и красивого кода тестов