Какой лучший способ провести интеграционное тестирование тяжелого пользовательского интерфейса Javascript в приложении rails? - PullRequest
6 голосов
/ 06 апреля 2011

У нас есть веб-приложение, которое широко использует AJAXy Javascript в пользовательском интерфейсе.У нас есть почти полное покрытие кода нашего бэкэнда с использованием Следует и Вебрата, и мы хотели бы расширить наш набор тестов, чтобы включить полное тестирование интеграции с помощью пользовательского интерфейса Javascript.

Мы пробовали Selenium, но нашли его хрупким и темпераментным.Есть ли более надежные варианты?

ОБНОВЛЕНИЕ

Для тех, кто все еще проверяет это, мы в конечном итоге использовали Xvfb, поэтому мы можем запустить Firefox без экрана.Позволяет нам запустить тест на безголовом сервере Jenkins CI.Нам все еще приходится время от времени запускать тесты «вживую» локально для отладки, но это работает довольно хорошо.

Ответы [ 5 ]

3 голосов
/ 06 апреля 2011

Один из гуру JavaScript, где я работаю, недавно отметил PhantomJS как интересный инструмент для тестирования наших веб-приложений, насыщенных JavaScript. Мы еще не опробовали его, но идея безголового WebKit для DOM-тестирования звучит многообещающе.

2 голосов
/ 06 апреля 2011

Это то, с чем я боролся некоторое время, так как я делаю некоторую работу с ExtJS (очень мощным JavaScript-интерфейсом для браузера) и Rails.

После исследования довольно много разных вариантов.Я до сих пор не нашел идеального решения для этого.В идеале я мог бы запустить их без головы и просто сообщить о выходе.К сожалению, похоже, что ни один из эмуляторов не может беспрепятственно запускать JavaScript с полной поддержкой DOM (по крайней мере, ни один из найденных вариантов не существует).Так что это в значительной степени означает, что вы должны запустить свой полнофункциональный код JavaScript в реальном интерпретаторе (таком как браузер).Webrat с Selenium работает достаточно хорошо, если вы готовы справиться с болью попыток правильно направить ваши запросы в пользовательский интерфейс.Если вы реализуете свой собственный JavaScript, это может быть проще.Но когда дело доходит до сторонней библиотеки пользовательского интерфейса, которую вы не можете контролировать, она, безусловно, может быть, скажем так, интересной.

Возможно, это не самый полезный ответ, но это были мои выводыдо сих пор!

1 голос
/ 26 октября 2012

проверьте драгоценный камень jasminerice, чтобы проверить свою логику js.

https://github.com/bradphelan/jasminerice

для интеграционного теста я бы рекомендовал использовать rspec с капибарой в качестве приемочных тестов. различать спецификации запросов и спецификации приемки! другая возможность - использовать репу как альтернативу огурцу.

https://github.com/jnicklas/turnip

чтобы ускорить ваши тесты безголовых испытаний. Вы можете использовать capybara-webkit (зависит от qt) или poltergeist (который зависит от phantomjs). оба легко настроить. Я предпочитаю полтергейст.

1 голос
/ 06 апреля 2011

Хм Я бы посмотрел на Капибару, он может использовать селен-webdriver (не путать с selenium-RC, они разные) для тестирования javascript. Я не нашел его очень хрупким по сравнению с Вебратом ... кажется, он довольно последовательный.

Как говорит Крис Рюбер, на самом деле нет безголовых интерпретаторов DOM, которые также поддерживают JS - сейчас он запускает веб-браузер для вашей автоматизации или пишет модульные тесты в самом javascript (что на самом деле не является интеграционным тестированием) либо).

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

0 голосов
/ 06 апреля 2011

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

Я рекомендую Жасмин : https://github.com/pivotal/jasmine

Вы можететакже проверьте Culerity : https://github.com/langalex/culerity

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...