Подтвердить что ты не робот

Как отличаются полтергейст /PhantomJS и capybara-webkit?

  • В чем отличия между PhantomJS и capybara-webkit?
  • Каковы преимущества capybara-webkit над PhantomJS?
  • Какой из двух наиболее эффективный инструмент?
  • Другие...
4b9b3361

Ответ 1

poltergeist является драйвером capybara для PhantomJS, браузера без браузера, который построен на WebKit. capybara-webkit - это драйвер capybara, который напрямую использует WebKit.

poltergeist/PhantomJS имеет некоторые большие преимущества перед capybara-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, такие как аудио/видео, которые действительно отсасывают.