diff --git a/package.json b/package.json index 55814c90..cfde062a 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 9c111025..706ffa3c 100644 --- a/test/karma.conf.js +++ b/test/karma.conf.js @@ -102,7 +102,28 @@ module.exports = function(config) { 'passport', 'passport-local', 'superagent', - 'supertest' + 'supertest', + ], + transform: [ + ['babelify', { + 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 + global: true, + // Prevent SyntaxError in strong-task-emitter: + // strong-task-emitter/lib/task.js (83:4): + // arguments is a reserved word in strict mode + ignore: /node_modules\/(strong-task-emitter)\//, + }], ], // transform: ['coffeeify'], debug: true, @@ -111,6 +132,6 @@ module.exports = function(config) { }, // Add browserify to preprocessors - preprocessors: {'test/*': ['browserify']} + preprocessors: {'test/**/*.js': ['browserify']}, }); };