jspm + KarmaJS - exclude files from watch but not from serve

914 views Asked by At

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/' }

  });
};
1

There are 1 answers

0
brass monkey On

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