<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <script> // allow sauce to query for the jasmine report // because we have to load the page before starting the test, so the thing // sauce queries for might not be setup yet var JASMINE; if(Object.defineProperty) { Object.defineProperty(window, 'jasmine', { get: function() { return JASMINE; }, set: function(jsm) { JASMINE = jsm || {}; if(!JASMINE.getJSReport || typeof JASMINE.getJSReport !== 'function') { JASMINE.getJSReport = function() { }; } } }); } else { window.jasmine = { getJSReport: function() { } }; } </script> <title>Jasmine Spec Runner</title> <!-- generate script tags for tests --> <% var generateScriptTags = function(allScripts) { allScripts.forEach(function(script){ %> <script src="<%= script %>"></script> <% }); }; %> <!-- generate script tags for tests --> <% var toArray = function(scripts) { %>[<% scripts.forEach(function(scriptUrl, index){ %>"<%= scriptUrl %>"<% if (index !== scripts.length -1) { %>,<% } }); %>]<% }; %> <!-- for each test, generate CSS/LESS link tags --> <% scripts.src.forEach(function(fullLessName) { var pathParts = fullLessName.split('/'); var fullCssName = fullLessName.replace(/less/g, 'css'); var lessName = pathParts[pathParts.length - 1]; var name = lessName.split('.')[0]; %> <!-- the tags to be generated --> <link id="original-less:test-less-<%= name %>" title="test-less-<%= name %>" rel="stylesheet/less" type="text/css" href="<%= fullLessName %>"> <link id="expected-less:test-less-<%= name %>" rel="stylesheet" type="text/css" href="<%= fullCssName %>"> <% }); %> <!-- generate grunt-contrib-jasmine link tags --> <% css.forEach(function(style){ %> <link rel="stylesheet" type="text/css" href="<%= style %>"> <% }) %> <script> function loadScript(url,callback){ var script = document.createElement('script'); if(document.documentMode === 8){ script.onreadystatechange = function(){ if (script.readyState === 'loaded'){ if (callback){callback()}; }; }; } else { script.onload = function(){ if (callback){callback()}; }; }; script.src = url; document.body.appendChild(script); }; var jasmine = <% toArray([].concat(scripts.polyfills, scripts.jasmine, scripts.boot)) %>, helpers = <% toArray(scripts.helpers) %>, vendor = <% toArray(scripts.vendor) %>, specs = <% toArray(scripts.specs) %>, reporters = <% toArray([].concat(scripts.reporters)) %>, setupScripts = jasmine.concat(helpers).concat(vendor), runScripts = specs.concat(reporters); </script> <% generateScriptTags(scripts.polyfills); %> <% generateScriptTags(scripts.jasmine); %> <% generateScriptTags(scripts.boot); %> <% generateScriptTags(scripts.helpers); %> <% generateScriptTags(scripts.vendor); %> <script> setTimeout(function() { function addNextScript() { // for sauce, see above. Additional step needed between loading jasmine and loading // the js reporter if (runScripts.length) { var scriptSrc = runScripts.shift(); loadScript(scriptSrc, addNextScript); } else { window.onload(); } } addNextScript(); },1000); </script> </head> <body> <!-- content --> </body> </html>