diff options
Diffstat (limited to 'www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/phantomjs/runner.js')
-rw-r--r-- | www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/phantomjs/runner.js | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/phantomjs/runner.js b/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/phantomjs/runner.js new file mode 100644 index 00000000..fdc82428 --- /dev/null +++ b/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/phantomjs/runner.js @@ -0,0 +1,97 @@ +/* + * Qt+WebKit powered headless test runner using Phantomjs + * + * Phantomjs installation: http://code.google.com/p/phantomjs/wiki/BuildInstructions + * + * Run with: + * phantomjs runner.js [url-of-your-qunit-testsuite] + * + * E.g. + * phantomjs runner.js http://localhost/qunit/test + */ + +var url = phantom.args[0]; + +var page = require('webpage').create(); + +// Route "console.log()" calls from within the Page context to the main Phantom context (i.e. current "this") +page.onConsoleMessage = function(msg) { + console.log(msg); +}; + +page.onInitialized = function() { + page.evaluate(addLogging); +}; +page.open(url, function(status){ + if (status !== "success") { + console.log("Unable to access network: " + status); + phantom.exit(1); + } else { + // page.evaluate(addLogging); + var interval = setInterval(function() { + if (finished()) { + clearInterval(interval); + onfinishedTests(); + } + }, 500); + } +}); + +function finished() { + return page.evaluate(function(){ + return !!window.qunitDone; + }); +} + +function onfinishedTests() { + var output = page.evaluate(function() { + return JSON.stringify(window.qunitDone); + }); + phantom.exit(JSON.parse(output).failed > 0 ? 1 : 0); +} + +function addLogging() { + window.document.addEventListener( "DOMContentLoaded", function() { + var current_test_assertions = []; + + QUnit.testDone(function(result) { + var name = result.module + ': ' + result.name; + var i; + + if (result.failed) { + console.log('Assertion Failed: ' + name); + + for (i = 0; i < current_test_assertions.length; i++) { + console.log(' ' + current_test_assertions[i]); + } + } + + current_test_assertions = []; + }); + + QUnit.log(function(details) { + var response; + + if (details.result) { + return; + } + + response = details.message || ''; + + if (typeof details.expected !== 'undefined') { + if (response) { + response += ', '; + } + + response += 'expected: ' + details.expected + ', but was: ' + details.actual; + } + + current_test_assertions.push('Failed assertion: ' + response); + }); + + QUnit.done(function(result){ + console.log('Took ' + result.runtime + 'ms to run ' + result.total + ' tests. ' + result.passed + ' passed, ' + result.failed + ' failed.'); + window.qunitDone = result; + }); + }, false ); +} |