I can't figure out how to make karma to not watch for changes in folder jspm_packages/. If I try to add 'jspm_packages' into exclude section then I get following errors:
DEBUG [web-server]: serving (cached): /Users/jm/dev/monka/node_modules/gulp-helpers/node_modules/karma-jspm/src/adapter.js PhantomJS 1.9.8 (Mac OS X 0.0.0) ERROR ReferenceError: Can't find variable: System at /Users/jm/dev/monka/system.config.js:1 ERROR [PhantomJS 1.9.8 (Mac OS X 0.0.0)]: ReferenceError: Can't find variable: System at http://localhost:9876/base/system.config.js?31f6cba38ed6c99ea3e9b4bc926e8ecfd6de8bd7:1
Here is my karma.conf.js
module.exports = function(config) {
config.set({
plugins: [
'karma-jspm',
'karma-jasmine',
'karma-beep-reporter',
'karma-verbose-reporter',
'karma-babel-preprocessor',
'karma-phantomjs-launcher'
],
basePath : '', // base path that will be used to resolve all patterns (eg. files, exclude)
frameworks : ['jspm', 'jasmine'], // frameworks to use available frameworks: https://npmjs.org/browse/keyword/karma-adapter
browsers : ['PhantomJS'], // start these browsers available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
reporters : ['progress', 'beep', 'verbose'/*, 'coverage'*/], // test results reporter to use possible values: 'dots', 'progress' available reporters: https://npmjs.org/browse/keyword/karma-reporter
singleRun : false, // Continuous Integration mode if true, Karma captures browsers, runs the tests and exits
autoWatch : true, // Enable / disable watching file and executing tests whenever any file changes
colors : true, // enable / disable colors in the output (reporters and logs)
files : [], // list of files / patterns to load in the browser
jspm: {
config : 'system.config.js',
loadFiles : ['test-unit/**/*.js'],
serveFiles : ['dist/**/**']
},
proxies: {
'/base/app' : '/base/dist/app',
'/base/common' : '/base/dist/common',
'/jspm_packages' : '/base/jspm_packages'
},
exclude: [
'coverage/**',
'typings/**',
'dist/**/*.js.map'
],
// level of logging
// possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
logLevel: config.LOG_DEBUG,
// preprocess matching files before serving them to the browser
// available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
preprocessors: {
'src/**/*.js' : ['babel', 'coverage']
},
babelPreprocessor: {
options: { sourceMap:'inline', modules:'system' }
},
coverageReporter: { type:'html', dir:'coverage/' }
});
};
I'm think with Karma is not possible to exclude files from being watched that should also be served. By excluding the jspm_packages Karma stops serving system.js which is located in the jspm_packages folder and therefore System is not defined.
If you want to get rid of serving the jspm_packages during the test run you could try to run the tests after creating a self-executing bundle and just serve that bundle.
See https://github.com/jspm/jspm-cli/blob/master/docs/production-workflows.md#creating-a-self-executing-bundle