summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPierre Ossman <ossman@cendio.se>2018-07-13 15:06:34 +0200
committerPierre Ossman <ossman@cendio.se>2018-07-16 13:32:35 +0200
commit7bcdbbc65b163f953ee4b113144bf68670fe8245 (patch)
treec34d793f6db79c5228144dc4c6840df188bfe768
parent800abf12772cba42a5515356a9156802fe1f2af2 (diff)
downloadnovnc-7bcdbbc65b163f953ee4b113144bf68670fe8245.tar.gz
Stop transpiling karma tests
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.
-rw-r--r--karma.conf.js25
-rw-r--r--package.json2
-rw-r--r--tests/karma-test-main.js39
3 files changed, 38 insertions, 28 deletions
diff --git a/karma.conf.js b/karma.conf.js
index a455a9c..5cbd7a5 100644
--- a/karma.conf.js
+++ b/karma.conf.js
@@ -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
diff --git a/package.json b/package.json
index 7394a20..24cb763 100644
--- a/package.json
+++ b/package.json
@@ -46,10 +46,8 @@
"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",
diff --git a/tests/karma-test-main.js b/tests/karma-test-main.js
index 334b771..c1b3ad4 100644
--- a/tests/karma-test-main.js
+++ b/tests/karma-test-main.js
@@ -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);