Files
openmct/platform/framework/test/lib/run_jasmine_test.coffee
Victor Woeltjen a753818b24 [Build] Initial test dependencies
Initial commit of test dependencies, as brought over
from prototype, to continue establishing build. WTD-519.
2014-10-30 16:04:38 -07:00

54 lines
1.4 KiB
CoffeeScript

#!/usr/local/bin/phantomjs
# 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
class PhantomJasmineRunner
constructor: (@page, @exit_func = phantom.exit) ->
@tries = 0
@max_tries = 10
get_status: -> @page.evaluate(-> console_reporter.status)
terminate: ->
switch @get_status()
when "success" then @exit_func 0
when "fail" then @exit_func 1
else @exit_func 2
# Script Begin
if phantom.args.length == 0
console.log "Need a url as the argument"
phantom.exit 1
page = new WebPage()
runner = new PhantomJasmineRunner(page)
# Don't supress console output
page.onConsoleMessage = (msg) ->
console.log msg
# Terminate when the reporter singals that testing is over.
# We cannot use a callback function for this (because page.evaluate is sandboxed),
# so we have to *observe* the website.
if msg == "ConsoleReporter finished"
if phantom.args.length > 1
filename = phantom.args[1]
fs = require('fs');
try
fs.write(filename, page.content)
catch e
console.log "Failed to write test page content."
runner.terminate()
address = phantom.args[0]
page.open address, (status) ->
if status != "success"
console.log "Can't load the address!"
phantom.exit 1
# Now we wait until onConsoleMessage reads the termination signal from the log.