12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- 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
|