47 lines
1.5 KiB
CoffeeScript
47 lines
1.5 KiB
CoffeeScript
urls = require('system').args.slice(1)
|
|
page = require('webpage').create()
|
|
timeout = 3000
|
|
|
|
qunitHooks = ->
|
|
window.document.addEventListener 'DOMContentLoaded', ->
|
|
for callback in ['log', 'testDone', 'done']
|
|
do (callback) ->
|
|
QUnit[callback] (result) ->
|
|
window.callPhantom
|
|
name: "QUnit.#{callback}"
|
|
data: result
|
|
|
|
page.onInitialized = -> page.evaluate qunitHooks
|
|
|
|
page.onConsoleMessage = (msg) -> console.log msg
|
|
|
|
page.onCallback = (event) ->
|
|
if event.name is 'QUnit.log'
|
|
details = event.data
|
|
if details.result is false
|
|
console.log "✘ #{details.module}: #{details.name}"
|
|
if details.message and details.message isnt "failed"
|
|
console.log " #{details.message}"
|
|
if "actual" of details
|
|
console.log " expected: #{details.expected}"
|
|
console.log " actual: #{details.actual}"
|
|
else if event.name is 'QUnit.testDone'
|
|
result = event.data
|
|
unless result.failed
|
|
console.log "✔︎ #{result.module}: #{result.name}"
|
|
else if event.name is 'QUnit.done'
|
|
res = event.data
|
|
console.log "#{res.total} tests, #{res.failed} failed. Done in #{res.runtime} ms"
|
|
phantom.exit if !res.total or res.failed then 1 else 0
|
|
|
|
for url in urls
|
|
page.open url, (status) ->
|
|
if status isnt 'success'
|
|
console.error "failed opening #{url}: #{status}"
|
|
phantom.exit 1
|
|
else
|
|
setTimeout ->
|
|
console.error "ERROR: Test execution has timed out"
|
|
phantom.exit 1
|
|
, timeout
|