Skip to content

Commit

Permalink
Merge pull request #31 from mislav/headless-tests
Browse files Browse the repository at this point in the history
Add headless testing & Travis CI support for QUnit
  • Loading branch information
eligrey committed Jul 24, 2014
2 parents 8e96a4e + 70090d8 commit 1b844dc
Show file tree
Hide file tree
Showing 6 changed files with 84 additions and 30 deletions.
4 changes: 4 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
script: script/test
language: node_js
node_js:
- '0.10'
23 changes: 23 additions & 0 deletions script/test
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
#!/bin/bash
set -e

if [ -t 1 ]; then
red="$(printf "\033[31m")"
brightred="$(printf "\033[31;1m")"
green="$(printf "\033[32m")"
reset="$(printf "\033[m")"
else
red=
brightred=
green=
reset=
fi

phantomjs tests/runner.coffee tests/qunit.html | sed -E "
# failure line:
s/^(✘.+)/${red}\\1${reset}/
# failure details:
s/^( .+)/${brightred}\\1${reset}/
# success marker:
s/(✔︎)/${green}\\1${reset}/
"
30 changes: 0 additions & 30 deletions tests/duplicationTest.html

This file was deleted.

1 change: 1 addition & 0 deletions tests/qunit.html
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,6 @@
<script src="http://code.jquery.com/qunit/qunit-1.14.0.js"></script>
<script src="../classList.js"></script>
<script src="tests.js"></script>
<script src="remove.js"></script>
</body>
</html>
10 changes: 10 additions & 0 deletions tests/remove.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
QUnit.module("classList.remove");

QUnit.test("Removes duplicated instances of class", function(assert) {
var el = document.createElement("p"), cList = el.classList;
el.className = "ho ho ho"

cList.remove("ho");
assert.ok(!cList.contains("ho"), "Should remove all instances of 'ho'");
assert.strictEqual(el.className, "")
});
46 changes: 46 additions & 0 deletions tests/runner.coffee
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
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

0 comments on commit 1b844dc

Please sign in to comment.