/** * Runs a Jasmine Suite from an html page. * `page` is a PhantomJs page object. * `exit_func` is the function to call in order to exit the script. */ var PhantomJasmineRunner, address, page, runner; PhantomJasmineRunner = (function() { function PhantomJasmineRunner(page, exit_func) { this.page = page; this.exit_func = exit_func != null ? exit_func : phantom.exit; this.tries = 0; this.max_tries = 10; } PhantomJasmineRunner.prototype.get_status = function() { return this.page.evaluate(function() { return console_reporter.status; }); }; PhantomJasmineRunner.prototype.terminate = function() { switch (this.get_status()) { case "success": return this.exit_func(0); case "fail": return this.exit_func(1); default: return this.exit_func(2); } }; return PhantomJasmineRunner; })(); if (phantom.args.length === 0) { console.log("Need a url as the argument"); phantom.exit(1); } page = new WebPage(); runner = new PhantomJasmineRunner(page); page.onConsoleMessage = function(msg) { console.log(msg); if (msg === "ConsoleReporter finished") { return runner.terminate(); } }; address = phantom.args[0]; page.open(address, function(status) { if (status !== "success") { console.log("can't load the address!"); return phantom.exit(1); } });