clearInterval(interval);
result.time = (new Date().getTime() - start);
result.failed ? failFx(result) : readyFx(result);
- phantom.exit(result.failed == 0 ? 0 : 2);
+
+ // See: https://github.com/ariya/phantomjs/issues/12697
+ // phantomjs 1.9.8
+ page.close();
+ setTimeout(function () {
+ phantom.exit(result.failed == 0 ? 0 : 2);
+ }, 0);
}
// timeout
}, 500); //< repeat check every N ms
};
+function dump_html(file) {
+ // not yet implemented
+ var spawn = require('child_process').spawn,
+ lynx = spawn("lynx", ["-nolist", "-dump", file]);
+
+ lynx.stdout.on('data', function (data) {
+ console.log('lynx >> ' + data);
+ });
+
+ // lynx.stderr.on('data', function (data) { console.log('stderr: ' + data); });
+ // lynx.on('close', function (code) { console.log('child process exited with code ' + code) });
+};
+
// redirect webkit console.log() output
page.onConsoleMessage = function (message) {
if (debug >= 2) console.log(message);
var exit = wait_for_jasmine(function () {
return page.evaluate(function () {
- if (!window || !window.$ || !window.mkws) {
+ if (!window || !window.mkws || !window.mkws.$) {
console.log("No window object found");
return false;
}
- var $ = window.$;
+ var $ = window.mkws.$;
var error_msg = [""];
- var passing = $(".passingAlert").text() || window.$(".failingAlert").text();
+ var passing = $(".passingAlert").text() || $(".failingAlert").text();
// extract failed tests
var list = $('.results > #details > .specDetail.failed');
html: $("html").html(),
duration: $(".duration").text(),
error_msg: error_msg,
- failed: list.length,
+ failed: (list.length > 0 || !passing),
passing: passing
};
})
var error_png = "./mkws-error.png";
var error_html = "./mkws-error.html";
+ var html = result.html + "\n\n<!-- mkws: " + JSON.stringify(result.mkws) + " -->\n";
+ var fs = require('fs');
+ fs.write(error_html, html, "wb");
+ dump_html(error_html);
+
console.log("MKWS tests failed after " + result.time / 1000 + " seconds");
console.log(result.error_msg.join("\n"));
console.log("keep screenshot in '" + error_png + "'");
page.render(error_png);
console.log("keep html DOM in '" + error_html + "'");
- console.log("you may run: lynx -nolist -dump " + error_html);
- var html = result.html + "\n\n<!-- mkws: " + JSON.stringify(result.mkws) + " -->\n";
- var fs = require('fs');
- fs.write(error_html, html, "wb");
+ // console.log("you may run: lynx -nolist -dump " + error_html);
}, run_time * 1000);
});