style changes to phantom integration

This commit is contained in:
Jacob Thornton 2012-04-19 17:40:58 -07:00
parent 03f78f7a60
commit f84882122e
2 changed files with 66 additions and 68 deletions

View File

@ -1,65 +1,63 @@
/* // Simple phantom.js integration script
* Simple phantom.js integration script // Adapted from Modernizr
* Adapted from Modernizr
*/
function waitFor(testFx, onReady, timeOutMillis) { function waitFor(testFx, onReady, timeOutMillis) {
var maxtimeOutMillis = timeOutMillis ? timeOutMillis : 3001, //< Default Max Timout is 3s var maxtimeOutMillis = timeOutMillis ? timeOutMillis : 3001 //< Default Max Timout is 3s
start = new Date().getTime(), , start = new Date().getTime()
condition = false, , condition = false
interval = setInterval(function() { , interval = setInterval(function() {
if ( (new Date().getTime() - start < maxtimeOutMillis) && !condition ) { if ((new Date().getTime() - start < maxtimeOutMillis) && !condition) {
// If not time-out yet and condition not yet fulfilled // If not time-out yet and condition not yet fulfilled
condition = (typeof(testFx) === "string" ? eval(testFx) : testFx()); //< defensive code condition = (typeof(testFx) === "string" ? eval(testFx) : testFx()) //< defensive code
} else { } else {
if(!condition) { if(!condition) {
// If condition still not fulfilled (timeout but condition is 'false') // If condition still not fulfilled (timeout but condition is 'false')
console.log("'waitFor()' timeout"); console.log("'waitFor()' timeout")
phantom.exit(1); phantom.exit(1)
} else { } else {
// Condition fulfilled (timeout and/or condition is 'true') // Condition fulfilled (timeout and/or condition is 'true')
typeof(onReady) === "string" ? eval(onReady) : onReady(); //< Do what it's supposed to do once the condition is fulfilled typeof(onReady) === "string" ? eval(onReady) : onReady() //< Do what it's supposed to do once the condition is fulfilled
clearInterval(interval); //< Stop this interval clearInterval(interval) //< Stop this interval
} }
} }
}, 100); //< repeat check every 250ms }, 100) //< repeat check every 100ms
}; }
if (phantom.args.length === 0 || phantom.args.length > 2) { if (phantom.args.length === 0 || phantom.args.length > 2) {
console.log('Usage: phantom.js URL'); console.log('Usage: phantom.js URL')
phantom.exit(); phantom.exit()
} }
var page = new WebPage(); var page = new WebPage()
// Route "console.log()" calls from within the Page context to the main Phantom context (i.e. current "this") // Route "console.log()" calls from within the Page context to the main Phantom context (i.e. current "this")
page.onConsoleMessage = function(msg) { page.onConsoleMessage = function(msg) {
console.log(msg); console.log(msg)
}; };
page.open(phantom.args[0], function(status){ page.open(phantom.args[0], function(status){
if (status !== "success") { if (status !== "success") {
console.log("Unable to access network"); console.log("Unable to access network")
phantom.exit(); phantom.exit()
} else { } else {
waitFor(function(){ waitFor(function(){
return page.evaluate(function(){ return page.evaluate(function(){
var el = document.getElementById('qunit-testresult'); var el = document.getElementById('qunit-testresult')
if (el && el.innerText.match('completed')) { if (el && el.innerText.match('completed')) {
return true; return true
} }
return false; return false
}); })
}, function(){ }, function(){
var failedNum = page.evaluate(function(){ var failedNum = page.evaluate(function(){
var el = document.getElementById('qunit-testresult'); var el = document.getElementById('qunit-testresult')
try { try {
return el.getElementsByClassName('failed')[0].innerHTML; return el.getElementsByClassName('failed')[0].innerHTML
} catch (e) { } } catch (e) { }
return 10000; return 10000
}); });
phantom.exit((parseInt(failedNum, 10) > 0) ? 1 : 0); phantom.exit((parseInt(failedNum, 10) > 0) ? 1 : 0)
}); })
} }
}); })

View File

@ -1,21 +1,21 @@
// Logging setup for phantom integration // Logging setup for phantom integration
// adapted from Modernizr // adapted from Modernizr
QUnit.begin = function() { QUnit.begin = function () {
console.log("Starting test suite"); console.log("Starting test suite")
console.log("================================================\n"); console.log("================================================\n")
}; }
QUnit.moduleDone = function(opts) { QUnit.moduleDone = function (opts) {
if(opts.failed === 0) { if (opts.failed === 0) {
console.log("\u2714 All tests passed in '"+opts.name+"' module"); console.log("\u2714 All tests passed in '" + opts.name + "' module")
} else { } else {
console.log("\u2716 "+ opts.failed +" tests failed in '"+opts.name+"' module"); console.log("\u2716 " + opts.failed + " tests failed in '" + opts.name + "' module")
} }
}; }
QUnit.done = function(opts) { QUnit.done = function (opts) {
console.log("\n================================================"); console.log("\n================================================")
console.log("Tests completed in "+opts.runtime+" milliseconds"); console.log("Tests completed in " + opts.runtime + " milliseconds")
console.log(opts.passed + " tests of "+opts.total+" passed, "+opts.failed+" failed."); console.log(opts.passed + " tests of " + opts.total + " passed, " + opts.failed + " failed.")
}; }