Я пытаюсь найти способ выполнить следующие шаги.Headless Browserify JavaScript Testing с Phantom.js
- Написать Node.js код для браузера
- Скомпилировать с browserify
- Test кода браузера в терминал
Я хотел бы получить console.logs
, что браузер получает, но внутри терминала. Это не только сэкономит мне время (создание HTML-файла, запуск сервера, открытие браузера), это также позволит использовать такие классные вещи, как автоматическое тестирование перед развертыванием.
Я пытаюсь сделать что-то под названием headless-test.js
phantomjs
скрипт, который будет получить передается аргумент, используя system.args[1]
и fs.read
может получить содержимое любой Javascript вы передаете ему.
var content = fs.read(system.args[1])
page.content = '<html><body><script type="text/javascript">'+content+'</script></body></html>'
Это позволит мне сделать что-то вроде этого:
phantomjs ./headless-test.js ./bundle.js
Я получаю эту ошибку SyntaxError: Multiline comment was not closed properly
поэтому убедитесь, что вы уродовать свой bundle.js
.
Все это было бы замечательно и работать, если бы я мог получить эту демо ниже работы. Минимальный жизнеспособный продукт:
var system = require("system")
var webPage = require('webpage')
var page = require('webpage').create()
page.content = '<html><body><script type="text/javascript">console.log("hello world")</script></body></html>';
page.onConsoleMessage = function(msg, lineNum, sourceId) {
console.log('CONSOLE: ' + msg + ' (from line #' + lineNum + ' in "' + sourceId + '")');
};
page.evaluate(function(){
})
phantom.exit();
Ожидаемые результаты здесь:
$ phantomjs ./headless-test.js
hello world
Однако я не получаю не stdout
от фантома.