Чем отличаются poltergeist / PhantomJS и capybara-webkit?
- в чем разница между PhantomJS и capybara-webkit?
- в чем преимущества capybara-webkit перед PhantomJS?
- какой из двух инструментов является наиболее эффективным?
- другие ...
4 ответа:
полтергейст это драйвер capybara для PhantomJS, безголовый браузер, который построен на WebKit. capybara-webkit-это драйвер capybara, который использует WebKit напрямую.
poltergeist / PhantomJS имеет некоторые большие преимущества перед capybara-webkit:
- по моему опыту poltergeist / PhantomJS всегда тайм-аут, когда он должен, тогда как capybara-webkit иногда зависает.
- сообщения об ошибках гораздо яснее. Например, это на самом деле скажет вам, если он не может щелкнуть элемент, который находится на странице, потому что перед ним есть другой элемент.
- можно сказать, чтобы повторно поднять ошибки Javascript в качестве ошибок теста (путем создания экземпляра драйвера с помощью js_errors: true).
- помощи PhantomJS-это гораздо проще, чем установка отдельного движка WebKit. PhantomJS предоставляет почти свободный от зависимостей исполняемый файл, который вы можете скачать, в то время как автономный WebKit имеет много зависимостей библиотеки ОС, которые у вас могут быть чтобы обновить или иным образом возиться.
TL; DR
- полтергейст / PhantomJS легче настроить
- полтергейст/PhantomJS имеет меньше зависимостей
- Capybara-webkit является более стабильным и надежным, и это лучше для CI
долгих:
Я использую Poltergeist + PhantomJS уже более одного года. Мой самый большой проект имеет много вызовов Ajax, загрузок файлов, манипуляций с изображениями, шаблонов JS и чистых анимаций CSS3.
время от времени, Полтергейст и PhantomJS генерируют случайные ошибки.
некоторые из них были мои ошибки. Тестирование Ajax-это сложно. Распространенной ошибкой было то, что в конце успешного теста database_cleaner gem усек базу данных, однако один вызов Ajax все еще выполнялся и создавал исключение в контроллере из-за пустой базы данных. Это не всегда легко исправить, если вы не хотите использовать спящий режим(). (Я не знаю).
однако многие ошибки с полтергейстом не были моими ошибками. У меня есть тест, который делает то же самое в 30 раз (по уважительной причине) и время от времени 1 из 30 раз это не сработало. Полтергейст вообще не нажимал на кнопку. Это была видимая, не анимированная, обычная кнопка. Я мог бы исправить это (нажав на него снова), однако, это уродливый Хак и чувствует себя неправильно.
иногда скрипт, который работал во всех браузерах, генерировал случайные ошибки javascript с Poltergeist/PhantomJS. Около 1 или 2 из 100 раз.
с двумя разными Ajax плагин uploader я испытал, что PhantomJS 1.9 и 2.0 ведет себя по-разному. 2.0 является более стабильным и последовательным, но он далек от совершенства.
Это была огромная боль, с помощью Jenkins. Примерно каждый третий запуск был неудачным, потому что 1 или 2 из 400 функций (тесты браузера js) генерировали случайные ошибки.
две недели назад я попробовал Capybara-webkit. Мне потребовалось несколько часов, чтобы мигрировать, так как они по-разному относятся к невидимым элементам. Капибара-WebKit-это более правильный или строгий в этом. Я заметил то же самое о перекрывающихся элементов.
тестирование загрузки Ajax и манипуляции с изображениями требует пользовательских скриптов, которые мне пришлось изменить для Capybara-webkit.
Я использую Mac OS X для разработки, FreeBSD для производства и Linux для Дженкинса. Capybara-webkit было сложнее настроить, чем Poltergeist, потому что он требует экрана и имеет много зависимостей. Только помощи PhantomJS-это действительно безголовые и автономные. Я мог бы запустить PhantomJS на производстве серверы, если я хотел. Я бы не сделал этого с capybara-webkit из-за зависимостей.
теперь у меня есть 100% стабильный Дженкинс CI. Все случайные ошибки javascript-это воспоминания о прошлом. Capybara-webkit всегда нажимает на кнопку, на которую я хочу нажать. Javascript всегда работает отлично. В настоящее время у меня есть около 20-25 стабильных сборок по прямой линии.
для проектов с большим количеством Ajax, я рекомендую capybara-webkit.
мой совет основан на текущем, последние версии в августе 2015 года.
capybara-webkit и PhantomJS оба используют Webkit под капотом для визуализации веб-страниц без головы, т. е. без необходимости в браузере. Однако это разные инструменты:
- capybara-webkit служит адаптером для Capybara, Ruby gem, который позволяет писать и выполнять высокоуровневое тестирование пользовательского интерфейса для приложения Rails или Rack.
- PhantomJS-это инструмент более низкого уровня, который просто позволяет запускать скрипты на веб-странице. Он также может быть использован для написания тестов пользовательского интерфейса (см. Каспер, например, или любой другой инструменты тестирования которые строятся на PhantomJS).