<!DOCTYPE html> <html> <head> <link rel="stylesheet" type="text/css" href="platform/framework/test/lib/css/jasmine.css"> <script type="text/javascript" src="platform/framework/lib/es6-promise-2.0.0.min.js"> </script> <script type="text/javascript" src="platform/framework/lib/require.js"> </script> </head> <body> <script> window.Promise = window.Promise || ES6Promise.Promise; require( { paths: { 'jasmine': 'platform/framework/test/lib/jasmine', 'jasmine-html': 'platform/framework/test/lib/jasmine-html', 'blanket-jasmine': 'platform/framework/test/lib/blanket_jasmine', 'console-runner': 'platform/framework/test/lib/console-runner' }, shim: { 'jasmine': { 'exports': 'jasmine' }, 'jasmine-html': { 'exports': 'jasmine', 'deps': ['jasmine'] }, 'console-runner': { 'exports': 'jasmine', 'deps': ['jasmine'] }, 'blanket-jasmine': { 'exports': 'blanket', 'deps': ['jasmine'] } } }, [ 'blanket-jasmine', 'jasmine-html', 'console-runner' ], function () { "use strict"; // Utility function; load a JSON definition function loadJSON(file, callback) { var xhr = new XMLHttpRequest(); xhr.open("GET", file); xhr.onreadystatechange = function () { if (xhr.readyState === 4) { // DONE try { callback(JSON.parse(xhr.response)); } catch (e) { // No suite defined, so no tests callback([]); } } } xhr.send(); } // Run Jasmine upon full declared suite. // Called after all tests loaded. function runJasmine() { var jasmineEnv = jasmine.getEnv(), htmlReporter, titleReporter; jasmineEnv.updateInterval = 250; htmlReporter = new jasmine.HtmlReporter(); //https://github.com/jcarver989/phantom-jasmine/issues/2 window.console_reporter = new jasmine.ConsoleReporter(); titleReporter = new jasmine.Reporter(); titleReporter.reportRunnerResults = function (runner) { document.title = runner.results().passed() ? "PASSING" : "FAILING"; }; jasmineEnv.addReporter(htmlReporter); jasmineEnv.addReporter(new jasmine.BlanketReporter()); jasmineEnv.addReporter(window.console_reporter); jasmineEnv.addReporter(titleReporter); jasmineEnv.specFilter = function (spec) { return htmlReporter.specFilter(spec); }; jasmineEnv.currentRunner().execute(); } function lookupSource(component) { return component.src; } function lookupSpec(component) { return component.spec; } // Run a full list of specs. // Should be done after loading and path-correcting all specs function runSpecs(components) { blanket.options({'filter': components.map(lookupSource)}); require(components.map(lookupSpec), runJasmine); } // Run all test suites contained in all bundles function runSuites(bundles) { var components = [], count = 0; function addSuite(bundle) { function fixPath(name) { return { spec: bundle + "/test/" + name + "Spec", src: bundle + "/src/" + name }; } function addSpecs(suiteSpecs) { components = components.concat(suiteSpecs.map(fixPath)); count += 1; if (count === bundles.length) { runSpecs(components); } } loadJSON(bundle + "/test/suite.json", addSpecs); } bundles.forEach(addSuite); } // Set the ball rolling; load and run all test suites loadJSON("bundles.json", runSuites); } ); </script> </body> </html>