Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Code coverage with karma-jspm #22

Open
tauren opened this issue Nov 10, 2014 · 14 comments
Open

Code coverage with karma-jspm #22

tauren opened this issue Nov 10, 2014 · 14 comments

Comments

@tauren
Copy link

tauren commented Nov 10, 2014

I'm using karma-coverage along with karma-jspm. Coverage reports are being generated, but only for source files that are referenced in test files. However, any source files that are not required from a test file doesn't show up in the coverage report.

Is this is because karma-jspm highjacks the karam files config, only including files that are referenced? Any ideas on how to get the coverage reports to list all source files so the reporting is more accurate?

Here's relevant portions of my karma config:

  config.set({
    frameworks: ['jspm','mocha','sinon-chai'],
    jspm: {
      loadFiles: ['app/**/test/**/*.test.js'],
      serveFiles: ['app/**/lib/**/*.js']
    },
    proxies: {
      '/jspm_packages/': '/base/jspm_packages/'
    },
    preprocessors: {
      'app/**/lib/**/*.js': ['coverage']
    }
};

I've attempted to include both tests and source files in jspm.loadFiles, but it blows up with errors. These are errors I may be able to resolve, but wanted to first find out if there is a better approach I should be taking.

@katrotz
Copy link

katrotz commented Jan 3, 2015

+1

2 similar comments
@tinkertrain
Copy link

+1

@djindjic
Copy link

+1

@andreasgrimm
Copy link

+1

@andreasgrimm
Copy link

@tauren I can't get coverage reports working at all when trying to use on-the-fly transpilation (which is what karma-jspm is doing here I guess). I see a lot of other examples where coverage runs against already transpiled sources though (where transpiling happens during karma-preprocessing).

I thought it might be helpful to see your complete karma config in case I'm missing something here (like maybe you are using Chrome instead of PhantomJS or something like that).

@robcleghorn
Copy link

+1

@Bretto
Copy link

Bretto commented Mar 17, 2015

+1 I can't get coverage reports working

@vincentbriglia
Copy link

+1 getting some feedback on whether this project is still active would be great

@maxwellpeterson-wf
Copy link
Contributor

Code coverage using karma-coverage should work as expected. Be sure to include the preprocessor configuration in karma.conf.js:

preprocessors = {
    'build/src/**/*.js': ['coverage']
};
reporters = ['progress', 'coverage'];

Where build/src/ is the location from where your source files are being required/loaded.

The original issue that @tauren is indeed a valid issue, though. If the test runner does not end up loading some of your source, it will not be included in the coverage report. If this is a problem for you I would suggest trying to put all source and test files in jspm.loadFiles... and if that doesn't work for you I'd create a dummy test file that simply requires all the source files that you want to test.

@djindjic
Copy link

djindjic commented Apr 3, 2015

It seems like coverage doesn't include transpiler over karma-jspm into my tests execution if I have coverage configuration. I am getting:

ERROR [preprocessor.coverage]: Line 1: Unexpected reserved word

Line 1 is starting with 'import'. Here is my karma.config.
Could you guys please take a look @maxwellpeterson-wf @tauren?

@twalker
Copy link

twalker commented Apr 4, 2015

@djindjic ,

In case it's useful, I was getting the same error. I believe it was due to my serveFiles files not being transpiled.
As a workaround, I added the karma-babel-preprocessor to transpile before coverage:

/* related karma.conf.js fragment */

frameworks: ['jspm', 'jasmine'],

jspm: {
  loadFiles: ['app/**/*spec.js'],
  serveFiles: ['app/**/*.js', 'app/**/*.html']
},

files: [/* defers to async loading by jspm framework */],

preprocessors: {
  'app/**/!(*spec).js': ['babel', 'coverage'],
},

// transpile with babel since the coverage reporter throws error on ES6 syntax
babelPreprocessor: {
  options: {
    modules: 'system'
  }
},
reporters: ['progress', 'coverage'],

@martinmicunda
Copy link

has anybody got running the coverage? @djindjic I tried run the preprocessor for coverage as you have suggested but all my test are failing

@jgodi
Copy link

jgodi commented Aug 21, 2015

I just did what @twalker suggested and mine works perfectly. Thanks!

@tannerlyons
Copy link

In case anyone ends up here wondering how to include all source files (@tauren's original question), karma-coverage added this parameter recently (last few months) :

    coverageReporter: {
      type : 'html',
      dir : 'coverage/',
      includeAllSources : true // <-- This aptly named param brings in all sources.
    },

Changeset: karma-runner/karma-coverage#131

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests