|
| 1 | +urls = require('system').args.slice(1) |
| 2 | +page = require('webpage').create() |
| 3 | +timeout = 3000 |
| 4 | + |
| 5 | +qunitHooks = -> |
| 6 | + window.document.addEventListener 'DOMContentLoaded', -> |
| 7 | + for callback in ['log', 'testDone', 'done'] |
| 8 | + do (callback) -> |
| 9 | + QUnit[callback] (result) -> |
| 10 | + window.callPhantom |
| 11 | + name: "QUnit.#{callback}" |
| 12 | + data: result |
| 13 | + |
| 14 | +page.onInitialized = -> page.evaluate qunitHooks |
| 15 | + |
| 16 | +page.onConsoleMessage = (msg) -> console.log msg |
| 17 | + |
| 18 | +page.onCallback = (event) -> |
| 19 | + if event.name is 'QUnit.log' |
| 20 | + details = event.data |
| 21 | + if details.result is false |
| 22 | + console.log "✘ #{details.module}: #{details.name}" |
| 23 | + if details.message and details.message isnt "failed" |
| 24 | + console.log " #{details.message}" |
| 25 | + if "actual" of details |
| 26 | + console.log " expected: #{details.expected}" |
| 27 | + console.log " actual: #{details.actual}" |
| 28 | + else if event.name is 'QUnit.testDone' |
| 29 | + result = event.data |
| 30 | + unless result.failed |
| 31 | + console.log "✔︎ #{result.module}: #{result.name}" |
| 32 | + else if event.name is 'QUnit.done' |
| 33 | + res = event.data |
| 34 | + console.log "#{res.total} tests, #{res.failed} failed. Done in #{res.runtime} ms" |
| 35 | + phantom.exit if !res.total or res.failed then 1 else 0 |
| 36 | + |
| 37 | +for url in urls |
| 38 | + page.open url, (status) -> |
| 39 | + if status isnt 'success' |
| 40 | + console.error "failed opening #{url}: #{status}" |
| 41 | + phantom.exit 1 |
| 42 | + else |
| 43 | + setTimeout -> |
| 44 | + console.error "ERROR: Test execution has timed out" |
| 45 | + phantom.exit 1 |
| 46 | + , timeout |
0 commit comments