X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=test%2Fphantom%2Fevaluate.js;h=0cf56f0d52a5fe74afb0c4914afb4d660bbefcaa;hb=5a126c522666307f9dffd7835c70fe1889d276cc;hp=949e0368caf4c8b86c4bf5ba47a5af183aad4437;hpb=305cb38efc0d57d12e9145000f83a7de88457b81;p=mkws-moved-to-github.git diff --git a/test/phantom/evaluate.js b/test/phantom/evaluate.js index 949e036..0cf56f0 100644 --- a/test/phantom/evaluate.js +++ b/test/phantom/evaluate.js @@ -14,23 +14,32 @@ if (system.args.length === 1) { } var url = system.args[1]; +var run_time = 8; // poll up to seconds +if (system.args[2] && parseFloat(system.args[2]) > 0) { + run_time = parseFloat(system.args[2]); +} + page.viewportSize = { width: 1200, height: 1000 }; -var run_time = 12; // poll up to seconds +// 0: silent, 1: some infos, 2: display console.log() output +var debug = 2; +if (typeof system.env['DEBUG'] != 'undefined' && parseInt(system.env['DEBUG']) != NaN) { + debug = system.env['DEBUG']; + if (debug > 0) console.log("reset debug level to: " + debug); +} /************************/ function wait_for_jasmine(checkFx, readyFx, failFx, timeout) { var max_timeout = timeout ? timeout : run_time * 1000, start = new Date().getTime(), - result, - condition = false; + result, condition = false; - var interval = setInterval(function() { - console.log("."); + var interval = setInterval(function () { + if (debug == 1) console.log("."); // success if (condition) { @@ -42,7 +51,7 @@ function wait_for_jasmine(checkFx, readyFx, failFx, timeout) { } // timeout - else if ( new Date().getTime() - start >= max_timeout ) { + else if (new Date().getTime() - start >= max_timeout) { result.time = (new Date().getTime() - start); failFx(result); phantom.exit(1); @@ -51,48 +60,77 @@ function wait_for_jasmine(checkFx, readyFx, failFx, timeout) { // checking else { result = checkFx(); - if (result) - condition = result.mkws.jasmine_done; + if (result) condition = result.mkws.jasmine_done; } }, 500); //< repeat check every N ms }; +// redirect webkit console.log() output +page.onConsoleMessage = function (message) { + if (debug >= 2) console.log(message); +}; + +// cat webkit alert() +page.onAlert = function (msg) { + console.log("Alert: " + msg); +}; +// display HTTP errors +page.onResourceError = function (resourceError) { + // console.log('phantomjs error code: ' + resourceError.errorCode); + console.log(resourceError.errorString); + phantom.exit(3); +}; page.open(url, function (status) { - console.log("fetch " + url + " with status: " + status); + if (debug >= 1) console.log("fetch " + url + " with status: " + status); + if (status != 'success') { - console.log("Failed to fetch page, give up"); + console.log("Failed to fetch page, give up. Network error?"); phantom.exit(1); } - console.log("polling MKWS jasmine test status..."); + if (debug >= 1) console.log("polling MKWS jasmine test status for " + run_time + " seconds"); + var exit = wait_for_jasmine(function () { return page.evaluate(function () { if (!window || !window.$ || !window.mkws) { return false; } else { + var passing = window.$(".passingAlert").text() || window.$(".failingAlert").text(); + return { mkws: window.mkws, + html: window.$("html").html(), duration: window.$(".duration").text(), - passing: window.$(".passingAlert").text() + passing: passing }; } - })}, - - function(result) { - console.log("MKWS tests are successfully done in " + result.time/1000 + " seconds. Hooray!"); - console.log("jasmine duration: " + result.duration); - console.log("jasmine passing: " + result.passing); - }, - - function (result) { - var error_png = "./mkws-error.png"; - console.log("MKWS tests failed after " + result.time/1000 + " seconds"); - console.log("keep screenshot in '" + error_png + "'"); - page.render(error_png); - }, - run_time * 1000); + }) + }, + + function (result) { + if (debug < 1) return; + + console.log(""); + console.log("MKWS tests are successfully done in " + result.time / 1000 + " seconds. Hooray!"); + console.log("jasmine duration: " + result.duration); + console.log("jasmine passing: " + result.passing); + }, + + function (result) { + var error_png = "./mkws-error.png"; + var error_html = "./mkws-error.html"; + + console.log("MKWS tests failed after " + result.time / 1000 + " seconds"); + console.log("keep screenshot in '" + error_png + "'"); + page.render(error_png); + + console.log("keep html DOM in '" + error_html + "'"); + var html = result.html + "\n\n\n"; + var fs = require('fs'); + fs.write(error_html, html, "wb"); + }, run_time * 1000); });