Я не уверен, зачем нужен PhantomJS, и я надеюсь, что кто-то может помочь.
Зачем разработчику вообще нужен PhantomJS, а не просто использовать какой-то фреймворк для тестирования?
Ответы (4)
JavaScript, для которого требуется DOM, должен где-то запускаться, обычно в браузере. Таким образом, тестовые фреймворки часто запускают браузер, который они затем контролируют, чтобы запускать тесты и выполнять утверждения. Сами тестовые фреймворки часто не могут напрямую управлять браузером, поэтому в итоге вы получаете три слоя теста:
- Рамки: например. Жасмин
- Драйвер: например. Селен
- Браузер: например. Fire Fox
Проще говоря, PhantomJS — это браузер, который работает без головы (т.е. не растягивает экран). Преимущество заключается в скорости — если вы управляете реальной программой на своем компьютере, у вас есть определенные накладные расходы на загрузку браузера, настройку профиля и т. д.
PhantomJS в этом намного быстрее (я видел, что тесты выполняются менее чем в 1/3 раза). Единственным недостатком является то, что вы не можете видеть, как выполняются ваши тесты, хотя для автоматизированного пакета это не такая уж большая проблема! Вы также можете делать снимки экрана, если это необходимо (например, при сбоях). Если вы действительно этого хотите, вы можете делать скриншоты со скоростью 24 кадра в секунду и отправлять их в ffmpeg для рендеринга видео ваших тестов, хотя тогда вы можете подорвать свою экономию скорости :)
Это распространенное заблуждение. Потратив некоторое время на документацию, вы обычно устраняете путаницу. Например, PhantomJS часто используется в качестве автоматического запуска тестов для тестов, написанных в десятках фреймворков: Buster.JS, Capybara, Mocha, Jasmine, QUnit, WebDriver, YUI Test и многие другие. Как вы можете видеть здесь, PhantomJS вообще не заменяет эти фреймворки.
Конечно, есть много других применений PhantomJS, от программного захвата веб-страницы до автоматизированного мониторинг сети. Существует список различных сообщений и статей в блогах, демонстрирующих различные варианты использования PhantomJS.
PhantomJS не предназначен для замены среды тестирования, он будет работать вместе с ней.
Например, вот случайный пример: PhantomJS используется вместе с Jasmine.
Также обратите внимание, что PhantomJS предназначен не только для тестирования, вы можете использовать его для таких вещей, как очистка экрана или для разгрузки тяжелой нагрузки рендеринга (например, для мобильных браузеров с нагрузкой на ЦП) на сервер, как в этот пример.
Другой вариант использования, который здесь не упоминался, — это рендеринг веб-страницы и создание изображения или моментальных снимков PDF этой страницы.
Например, вы можете отобразить счет, отчет, документ... как веб-страницу HTML и отобразить ее в формате PDF, чтобы отправить ее конечному пользователю в виде загружаемого документа.
Или, может быть, вам нужны миниатюры скриншотов веб-страницы? Еще один возможный вариант использования.