На чем писать UI тесты для AngularJS приложения?

Добрый день коллеги.
Запускаем новый проект, который будет использовать AngularJS.

  • Тесты нужно иметь возможность запускать на мобильных, и на десктоп браузерах.
  • Из-за angular могут быть проблемы с элементами. Нужен надежный механизм нахождения элементов.

Апликуха разбита на 2 куска - сам WebApplication и API для него. Соответственно ищем способы тестировать UI приложения - остальное надеемся покрывать силами разработчиков, заставив их писать юнит тесты, а API будем заглушать специальным моком.
После некоторого инвестигейта - нашли Protractor - по сути обвертка над WebDriverJS.

У кого есть опыт использования? Стоит ли уже начинать учить JavaScript или поискать чего другого? Изначально писал на Java, нет ли чего похожего для упрощения жизни с Angular на Java?

На XP Days был хороший доклад про то, что AngularJS идеально подходит для тестирования.
Для кода, написанного на AngularJS. отлично пишутся юнит-тесты на JS:

http://xpdays.com.ua/materials/tdd-angularjs/

1 лайк

“Ванильный” WebDriverJS - всего лишь реализация WebDriver bindings, придется озаботиться о выборе тестовой оболочки и раннеров (jasmine-node, mocha, тысячи их…), убедиться в возможности их интеграции со своей билд-системой (! об этом почему-то вспоминают в самом конце ).

WebDriverJS асинхронна изначально, реализована с использованием promises. Придется в них разобраться, если реализовывать что-то посложнее “google.com” примеров: свои надстройки, PageFactory/PageObject паттерны.

Основные бантики Protractor - дополнительные селекторы для AngularJS (by model, binding, repeater…), раннер с Jasmine по-умолчанию, упрощенная работа с WebDriverJS promises.

Если не хочется использовать JavaScript bindings, все эти селекторы можно без труда реализовать на любом языке. Я бы сказал, что выбор языка здесь - это скорее вопрос того, что уже использует команда и насколько четко разделение труда в команде между разрабами и тестировщиками (автоматизаторами), какой опыт у тех и других в этом языке.

Если команде все-равно, и переходить на JS не хочется, все эти кастомные селекторы можно без труда реализовать на любом языке. Если есть желание оставаться с Java, советую взглянуть на Selenide или Geb (Groovy) .

3 лайка