Могу ли я использовать phantom.js для тестирования тяжелого javascript-приложения?

В настоящее время я использую комбинацию Specflow, Selen, Fluent Automation и Xunit для тестирования моего приложения браузера на развернутом экземпляре веб-сайта в Chrome. Это хорошо работает на компьютере разработчика, но часто дает сбой агентам сервера сборки без видимой причины, за исключением того, что агенты сервера сборки работают медленно.

Я изучал всю документацию по phantom.js, пытаясь понять, могу ли я использовать phantom.js для полного тестирования своего приложения.

В моем приложении много логики javascript, я использую requirejs для загрузки всех своих модулей, и мне интересно, могу ли я использовать функциональность безголового браузера phantom для проверки всей его функциональности. Будет ли он загружать все файлы javascript, а затем позволять мне выполнять действия над dom, например запускать модалы с формами в них? Много пользовательского интерфейса построен с использованием шаблонов.

Я сделал несколько поисков, но ничего определенного не пришло. У кого-нибудь есть совет по этому поводу? На данный момент меня не беспокоит кросс-браузерное тестирование, для этого у нас есть ручной контроль качества. Это было бы просто для системы раннего оповещения "счастливый путь", которая отказывала функционировать посредством автоматизации пользовательского интерфейса всех пользовательских историй.


В конце всего этого я сделал пару изменений, которые были действительно полезны

  • Доступ к селеновому драйверу и проверка jQuery.active
  • Создайте новый waitOne/assertOne, который выбрасывает, если селектор css возвращает более одного элемента для селектора

2 ответа

Решение

PhantomJs - это полная реализация браузера, которая просто не отображается на экране (у нее есть буфер, который может быть захвачен через скриншот). Если ручное тестирование охватывает предпочтительные браузеры и вам просто нужно знать о серьезных сбоях, попробуйте!

FluentAutomation.SeleniumWebDriver поддерживает PhantomJs из коробки в текущих версиях. Просто выберите PhantomJs в качестве "браузера", и он будет работать. Поставщик FluentAutomation.PhantomJs устарел и будет удален.

FluentAutomation.SeleniumWebDriver.Bootstrap(FluentAutomation.SeleniumWebDriver.Browser.PhantomJs);

Да.

Вы можете найти CasperJS более полезным для тестирования. Встроенный модуль тестирования довольно прост в использовании. Casper также открывается с помощью SlimerJS (для тестирования Gecko/Firefox) без дополнительного кода.

В Phantom или Casper вы можете использовать page.evaluate() для запуска любого клиентского JavaScript, так что это не должно быть проблемой.

Другие вопросы по тегам