openmct/test.html

177 lines
6.8 KiB
HTML
Raw Normal View History

<!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 = [],
configuration = { baseUrl: "" },
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) {
require.config(configuration);
runSpecs(components);
}
}
loadJSON(bundle + "/test/suite.json", addSpecs);
}
// Some AMD modules are configured in bundle.json files,
// so those need to be read and a require definition built
function readConfig(bundle, definition) {
var lib = bundle.libraries || "lib",
bundleConfig = definition.configuration || {};
// Merge in paths
Object.keys(bundleConfig.paths || {}).forEach(function (path) {
configuration.paths = configuration.paths || {};
configuration.paths[path] =
bundle + "/" + lib + "/" + bundleConfig.paths[path];
});
// Merge in shims
Object.keys(bundleConfig.shim || {}).forEach(function (shim) {
configuration.shim = configuration.shim || {};
configuration.shim[shim] = bundleConfig.shim[shim];
});
}
function addBundle(bundle) {
function readConfigAndContinue(definition) {
readConfig(bundle, definition);
addSuite(bundle);
}
loadJSON(bundle + "/bundle.json", readConfigAndContinue);
}
bundles.forEach(addBundle);
}
// Set the ball rolling; load and run all test suites
loadJSON("bundles.json", runSuites);
}
);
</script>
</body>
</html>