From 1575becb92367c2424bbea3b45d1771780024887 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miroslav=20Bajto=C5=A1?= Date: Wed, 1 Feb 2017 14:00:43 +0100 Subject: [PATCH] Babelify juggler for Karma tests Fix configuration of Karma: - Disable ES6 modules. The ES6 module transpiler is adding "use strict" to all source files, this breaks e.g. chai or juggler - Relax "ignore" setting to exclude only strong-task-emitter, thus bring back Babel transpilation for chai and juggler. --- package.json | 4 +++- test/karma.conf.js | 20 ++++++++++---------- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/package.json b/package.json index 55814c90b..cfde062a0 100644 --- a/package.json +++ b/package.json @@ -67,11 +67,13 @@ "loopback-datasource-juggler": "^2.56.0" }, "devDependencies": { + "babel-preset-es2015": "^6.24.1", + "babelify": "^7.3.0", "bluebird": "^3.4.1", "browserify": "^13.1.0", "chai": "^3.5.0", - "es5-shim": "^4.1.0", "coveralls": "^2.11.15", + "es5-shim": "^4.1.0", "express-session": "^1.14.0", "grunt": "^1.0.1", "grunt-browserify": "^5.0.0", diff --git a/test/karma.conf.js b/test/karma.conf.js index 00d95b7d4..706ffa3cb 100644 --- a/test/karma.conf.js +++ b/test/karma.conf.js @@ -106,7 +106,15 @@ module.exports = function(config) { ], transform: [ ['babelify', { - presets: 'es2015', + presets: [ + ['es2015', { + // Disable transform-es2015-modules-commonjs which adds + // "use strict" to all files, even those that don't work + // in strict mode + // (e.g. chai, loopback-datasource-juggler, etc.) + modules: false, + }], + ], // By default, browserify does not transform node_modules // As a result, our dependencies like strong-remoting and juggler // are kept in original ES6 form that does not work in PhantomJS @@ -114,15 +122,7 @@ module.exports = function(config) { // Prevent SyntaxError in strong-task-emitter: // strong-task-emitter/lib/task.js (83:4): // arguments is a reserved word in strict mode - // Prevent TypeError in chai: - // 'caller', 'callee', and 'arguments' properties may not be - // accessed on strict mode functions or the arguments objects - // for calls to them - // Prevent TypeError in loopback-datasource-juggler: - // 'caller', 'callee', and 'arguments' properties may not be - // accessed on strict mode functions or the arguments objects - // for calls to them - ignore: /node_modules\/(strong-task-emitter|chai|loopback-datasource-juggler)\//, + ignore: /node_modules\/(strong-task-emitter)\//, }], ], // transform: ['coffeeify'],