8 лучших JavaScript-фреймворков для тестирования в 2019

<p>Автоматическое тестирование используется все чаще. За спросом потянулось и предложение. Для этой цели разработано много фреймворков. На какой стоит стоит тратить время, далеко не всегда понятно. Этот список поможет в них разобраться и выбрать подходящий.</p>

09 / 08 / 19

Автоматическое тестирование релизов упрощает обработку повторяющихся сценариев. Поэтому многие команды разработчиков включают ее в процесс. Как результат возрастающего спроса на автоматизацию появились JavaScript-фреймворки для разных целей. Некоторые больше подходят для юнит-тестинга, некоторые для End-to-End. 


Их разнообразие запутывает. Это нормально, ведь чем больше вариантов, тем больше времени уходит на выбор подходящего под ваши требования. Этот список поможет в них разобраться.





1. Jest


Опрос stateofjs 2018 года отдал Jest первое место. Он был разработан Фейсбуком и используется для тестирования Javascript кода, особенно React JS приложений.


Преимущества:

  • Самый главный плюс Джеста в его простой настройке. Он идет в комплекте с mock-объектами и библиотекой утверждений. Тест кейсы написаны с BDD подходом. 
  • Хорошая документация.
  • Предоставляет надежный tooling.
  • Дает возможность проводить регрессионные тесты. Это особенно удобно для исправления багов с UI при react разработке. Делает скриншоты и сравнивает их с предыдущими, чтобы убедиться в том, что интерфейс не поехал.

Недостатки:

  • Поддерживает не так много библиотек. Поэтому если вы кодите в IDE, которая не поддерживает Jest, то он скорее всего не подойдет.
  • Сложен в освоении.
  • Тестирование больших снапшотов невозможно.

Использовать его или нет зависит от проекта. Если он требует отладки в IDE, которая не поддерживает Jest, выбирайте Jasmine. Но в любом случае, если вы пишете React приложения, его стоит попробовать.





2. Mocha


Mocha разработан для тестирования Node.js приложений. Он находится на втором месте вышеупомянутого опроса. 


Преимущества:

  • Гибкое open-source приложение.
  • Легко поддерживает кодогенераторы.
  • Большое количество туториалов и документов в открытом доступе.
  • Последовательное выполнение тест кейсов с гибким составлением отчетов.
  • Простое сопоставление исключений с соответствующими кейсами.

Недостатки: 

  • Tooling оставляет желать лучшего.
  • С появлением Jest, популярность Mocha заметно упала.
  • Производительность и набор функций может быть лучше.

Из-за долгой установки и настройки Mocha все менее и менее популярен. Jest превосходит его практически по всем показателям. Несмотря на это, многие используют этот фреймворк из-за развитой экосистемы.





3. Jasmine


Jasmine чаще всего используется для тестинга асинхронного кода, но у него много возможностей. Работает на Node.js и составляет точные и гибкие отчеты, периодически запуская кейсы. Завершает тройку прошлогодних лидеров.


Преимущества:

  • Один из самых гибких вариантов. Главный плюс этого сервиса в его совместимости со всеми JS фреймворками и библиотеками. 
  • Крупное комьюнити с множеством библиотек, туториалов и блог постов.
  • Легок в освоении.
  • Предоставляет удобные шаблоны.

Недостатки:

  • Требует долгой настройки. Пользователь должен выбрать и установить mocking фреймворк и библиотеку утверждений самостоятельно.
  • Библиотека для снапшот-тестинга сложна в интеграции.
  • Как и в случае с Mocha, популярность сервиса падает. 

Jasmine хорошо подходит, если у вас масштабный проект с интеграцией большого количества внешних библиотек. Но если вы используете React и ваш проект не такой большой, то лучше остановиться на Джесте.





4. Nightwatch


Это мощный фреймворк для автоматизации, который замечательно подходит для тестинга веб приложений, особенно написанных на Node.js. Nightwatch использует Selenium WebDriver API, что позволяет проводить End-to-End тесты. Главной функцией является упрощение процесса написания автоматических кейсов и настройки непрерывной интеграции.


Преимущества:

  • Легкая установка.
  • Требуется только одна Селениум библиотека.
  • Довольно большое комьюнити. Много полезных блогов и туториалов.
  • Очень простой язык. Требуется только базовые знания объект-ориентированного программирования.
  • Любой бэкенд разработчик, который знает Java, может быстро писать автоматические тест кейсы, повышая продуктивность команды.

Недостатки:

  • Тест кейсы плохо читаются. Синтаксис довольно сложен, а комментарии не отображаются в логах.
  • Текст ошибок можно настроить, но читаемость кода снизится.

Nightwatch прекрасно подходит для End-to-End тестинга Node.js веб приложений. Но если ваши требования выходят за эти рамки, то лучше выбрать другой вариант.



5. Protractor


Для Angular приложений разработан Protractor. Он автоматизирует End-to-End тестинг для SPA, написанных на Angular и Angular JS. Взаимодействует с приложением как настоящий пользователь, используя веб браузер.


Преимущества:

  • Из-за того, что он использует Selenium WebDriver, легко делать кросс-браузерное тестирование.
  • По сравнению с Selenium WebDriver, у него есть такие дополнительные локаторы как repeater, model, binding и много других.
  • Легкое создание и управление объектами страницы.
  • Встроенная waits функция, которой нет у WebDriver.
  • Если приложение разработано c BDD методологией, этот фреймворк идеален, так как он поддерживает Cucumber, Jasmine, Mocha и другие.
  • Автоматическая съемка скриншотов и быстрое их сравнение.
  • Поддержка параллельного выполнения кейсов с нескольких рабочих станций.

Недостатки:

  • Хорошо работает в Chrome, но поддержка других браузеров хромает.
  • Нет поддержки Robot классов.
  • Маленькое комьюнити по сравнению с Селениумом, который был на рынке дольше.

Protractor хорош для Ангуляра, но из-за того, что он работает только на Хроме, для кросс-браузерного тестирования лучше использовать Селениум.



6. Selenium WebDriver


Комьюнити JavaScript разработчиков любит Selenium и считает лучшим фреймворком для веб приложений. Его автоматическое кросс-браузерное тестирование более полное, чем у конкурентов. Открытый исходный код закрепляет его место среди лидеров. Кроме того, он работает не только с JavaScript, но и с другими языками программирования. 


Преимущества:

  • Простой в освоении IDE с открытым исходным кодом.
  • Долго находится на рынке. Поэтому у него большое комьюнити, где всегда можно найти решение для любой проблемы.
  • Несмотря на то, что у него свой язык, поддерживает связь с Java, JavaScript, PHP и другими.

Недостатки:

  • Нет официальной службы поддержки.
  • Для использования всего набора функций придется устанавливать плагины.
  • Ограниченная масштабируемость. Невозможно проводить параллельный тестинг. Поэтому специально для этой цели Селениум выпустил Selenium Grid.

LambdaTest — инструмент, который позволяет извлечь максимум пользы из Селениума. Это облачное решение предоставляет более двух тысяч браузеров на разных операционных системах и устройствах. Он устраняет все ограничения Selenium.


  • LambdaTest Selenium Grid совместим со всем, что поддерживает Селениум.
  • Круглосуточная служба поддержки.
  • Легкое масштабирование.
  • Возможность параллельного тестирования.
  • Интеграция с многими CI/CD-пайплайнами.
  • API для извлечения отчетов.

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





7. Puppeteer


Node библиотека Puppeteer предоставляет API, который работает поверх протокола DevTools у Хрома. Благодаря этому многие сценарии, которые можно выполнить вручную в браузере, автоматизируются с помощью Puppeteer.


Преимущества:


Вместо генерации полезной нагрузки веб-сокетов, вызов API автоматически:

  • Запустит Хром
  • Откроет новую вкладку
  • Зайдет на тестируемый сайт
  • Сделает скриншот и закроет браузер

Puppeteer имитирует ресурсы, избегая проблем с надежностью, постоянством и скоростью. Тест выполняется быстрее за счет манипулирования такими внешними ресурсами, как CSS селекторы.


Недостатки:


Главный минус в том, что он работает только с Хромом. Если необходимо провести тестинг на других браузерах, то потребуется дополнительная настройка.




8. Karma


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


Преимущества:

  • Простая автоматизация тестирования на разных устройствах и браузерах. Можно выполнять сценарии с планшетов, смартфонов и даже headless-браузеров.
  • Возможность контролировать весь процесс работы напрямую из IDE. Тест запускается сразу после сохранения файла.
  • Можно выполнять сценарии с помощью Mocha, Jasmin или другого удобного вам адаптера.
  • Исходный код находится в открытом доступе. 
  • Активное комьюнити.
  • Поддерживает непрерывную интеграцию через Jenkins, Semaphore и Travis.

Недостатки:

Никаких существенных недостатков не выявлено.


Карма, на наш взгляд, один из лучших JS фреймворков этого года. По сравнению с прошлогодним лидером, у Jest много багов и он не поддерживает файлы .mjs нативно. Для Кармы это не проблема.


Заключение


Мы перечислили как узко специфичные фреймворки, так и приложения с более широким применением. Какой подходит вам, полностью зависит от особенностей вашего проекта. Учтите нужна ли вам кросс-браузерная поддержка, какие инструменты используются в разработке, какой методологии придерживаетесь и сделайте обдуманный выбор.

https://dev.to/arnabroychowdhury/top-8-javascript-automation-testing-frameworks-in-2019-32dk

4.9