]> git.proxmox.com Git - mirror_novnc.git/commitdiff
Stop transpiling karma tests
authorPierre Ossman <ossman@cendio.se>
Fri, 13 Jul 2018 13:06:34 +0000 (15:06 +0200)
committerPierre Ossman <ossman@cendio.se>
Mon, 16 Jul 2018 11:32:35 +0000 (13:32 +0200)
This runs our code in the same manner as it would be used if loaded
directly in the browser. Includes the same kind of fallback for older
browsers.

karma.conf.js
package.json
tests/karma-test-main.js

index a455a9c9c0bfe48312fe568410d62263bb811e7f..5cbd7a5de86abdf52fa5ddd73b641c71500fcb7d 100644 (file)
@@ -4,7 +4,6 @@ module.exports = (config) => {
   const customLaunchers = {};
   let browsers = [];
   let useSauce = false;
-  let transpileToES5 = ['internet explorer'].includes(process.env.TEST_BROWSER_NAME);
 
   // use Sauce when running on Travis
   if (process.env.TRAVIS_JOB_NUMBER) {
@@ -53,7 +52,7 @@ module.exports = (config) => {
 
     // frameworks to use
     // available frameworks: https://npmjs.org/browse/keyword/karma-adapter
-    frameworks: ['requirejs', 'mocha', 'sinon-chai'],
+    frameworks: ['mocha', 'sinon-chai'],
 
     // list of files / patterns to load in the browser (loaded in order)
     files: [
@@ -61,9 +60,11 @@ module.exports = (config) => {
       { pattern: 'app/webutil.js', included: false },
       { pattern: 'core/**/*.js', included: false },
       { pattern: 'vendor/pako/**/*.js', included: false },
+      { pattern: 'vendor/browser-es-module-loader/dist/*.js*', included: false },
       { pattern: 'tests/test.*.js', included: false },
       { pattern: 'tests/fake.*.js', included: false },
       { pattern: 'tests/assertions.js', included: false },
+      'vendor/promise.js',
       'tests/karma-test-main.js',
     ],
 
@@ -85,26 +86,6 @@ module.exports = (config) => {
     // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
     browsers: browsers,
 
-    // preprocess matching files before serving them to the browser
-    // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
-    preprocessors: {
-      'app/localization.js': ['babel'],
-      'app/webutil.js': ['babel'],
-      'core/**/*.js': ['babel'],
-      'tests/test.*.js': ['babel'],
-      'tests/fake.*.js': ['babel'],
-      'tests/assertions.js': ['babel'],
-      'vendor/pako/**/*.js': ['babel'],
-    },
-
-    babelPreprocessor: {
-      options: {
-        presets: transpileToES5 ? ['es2015'] : [],
-        plugins: ['transform-es2015-modules-amd', 'syntax-dynamic-import'],
-        sourceMap: 'inline',
-      },
-    },
-
     // test results reporter to use
     // possible values: 'dots', 'progress'
     // available reporters: https://npmjs.org/browse/keyword/karma-reporter
index 7394a20ba72de32eadd941551bd83d5911f63ec3..24cb763f45a982c03a310b57c708ee5bedf17107 100644 (file)
     "fs-extra": "^1.0.0",
     "jsdom": "*",
     "karma": "^1.3.0",
-    "karma-babel-preprocessor": "^6.0.1",
     "karma-mocha": "^1.3.0",
     "karma-mocha-reporter": "^2.2.0",
-    "karma-requirejs": "^1.1.0",
     "karma-sauce-launcher": "^1.0.0",
     "karma-sinon-chai": "^2.0.0",
     "mocha": "^3.1.2",
index 334b771c3b0047659133c82c8f760195d29ae476..c1b3ad4b2706e82c8d00dfbf9d0d749e86742574 100644 (file)
@@ -9,8 +9,39 @@ Object.keys(window.__karma__.files).forEach(function (file) {
     }
 });
 
-require.config({
-    baseUrl: '/base',
-    deps: allTestFiles.concat(extraFiles),
-    callback: window.__karma__.start,
+// Stub out mocha's start function so we can run it once we're done loading
+mocha.origRun = mocha.run;
+mocha.run = function () {};
+
+let script;
+
+// Script to import all our tests
+script = document.createElement("script");
+script.type = "module";
+script.text = "";
+let allModules = allTestFiles.concat(extraFiles);
+allModules.forEach(function (file) {
+    script.text += "import \"" + file + "\";\n";
 });
+script.text += "\nmocha.origRun();\n";
+document.body.appendChild(script);
+
+// Fallback code for browsers that don't support modules (IE)
+script = document.createElement("script");
+script.type = "module";
+script.text = "window._noVNC_has_module_support = true;\n";
+document.body.appendChild(script);
+
+function fallback() {
+    if (!window._noVNC_has_module_support) {
+        /* eslint-disable no-console */
+        if (console)
+            console.log("No module support detected. Loading fallback...");
+        /* eslint-enable no-console */
+        let loader = document.createElement("script");
+        loader.src = "base/vendor/browser-es-module-loader/dist/browser-es-module-loader.js";
+        document.body.appendChild(loader);
+    }
+}
+
+setTimeout(fallback, 500);