test-runner-template.tmpl 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8">
  5. <title>Jasmine Spec Runner</title>
  6. <!-- for each test, generate CSS/LESS link tags -->
  7. <% scripts.src.forEach(function(fullLessName) {
  8. var pathParts = fullLessName.split('/');
  9. var fullCssName = fullLessName.replace(/less/g, 'css');
  10. var lessName = pathParts[pathParts.length - 1];
  11. var name = lessName.split('.')[0]; %>
  12. <!-- the tags to be generated -->
  13. <link id="original-less:test-less-<%= name %>" title="test-less-<%= name %>" rel="stylesheet/less" type="text/css" href="<%= fullLessName %>">
  14. <link id="expected-less:test-less-<%= name %>" rel="stylesheet" type="text/css" href="<%= fullCssName %>">
  15. <% }); %>
  16. <!-- generate grunt-contrib-jasmine link tags -->
  17. <% css.forEach(function(style){ %>
  18. <link rel="stylesheet" type="text/css" href="<%= style %>">
  19. <% }) %>
  20. <!-- generate script tags for tests -->
  21. <%
  22. var generateScriptTags = function(allScripts) {
  23. allScripts.forEach(function(script){
  24. if (script.indexOf('boot.js') > -1) {
  25. script = '../../test/browser/vendor/boot.js'
  26. }
  27. %><script src="<%= script %>"></script> <%
  28. });
  29. };
  30. generateScriptTags(scripts.polyfills);
  31. generateScriptTags(scripts.jasmine);
  32. generateScriptTags(scripts.boot);
  33. generateScriptTags(scripts.helpers);
  34. generateScriptTags(scripts.vendor);
  35. %>
  36. <!-- generate script tags for tests -->
  37. <% var toArray = function(scripts) {
  38. %>[<%
  39. scripts.forEach(function(scriptUrl, index){
  40. %>"<%= scriptUrl %>"<%
  41. if (index !== scripts.length -1) {
  42. %>,<%
  43. }
  44. });
  45. %>]<%
  46. }; %>
  47. <script>
  48. function loadScript(url,callback){
  49. var script = document.createElement('script');
  50. if(document.documentMode === 8){
  51. script.onreadystatechange = function(){
  52. if (script.readyState === 'loaded'){
  53. if (callback){callback()};
  54. };
  55. };
  56. } else {
  57. script.onload = function(){
  58. if (callback){callback()};
  59. };
  60. };
  61. script.src = url;
  62. document.body.appendChild(script);
  63. };
  64. var specs = <% toArray(scripts.specs) %>,
  65. reporters = <% toArray([].concat(scripts.reporters)) %>,
  66. runScripts = specs.concat(reporters);
  67. </script>
  68. <script>
  69. window.addEventListener('load', function() {
  70. function addNextScript() {
  71. // for sauce, see above. Additional step needed between loading jasmine and loading
  72. // the js reporter
  73. if (runScripts.length) {
  74. var scriptSrc = runScripts.shift();
  75. loadScript(scriptSrc, addNextScript);
  76. }
  77. else {
  78. // deferred boot function
  79. window.DEFER();
  80. }
  81. }
  82. addNextScript();
  83. });
  84. </script>
  85. </head>
  86. <body>
  87. <!-- content -->
  88. </body>
  89. </html>