Ответ 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 года.