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