npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

grunt-jasmine-node-coverage

v2.0.1

Published

Grunt task for running jasmine using istanbul for code coverage reports. Based off of grunt-jasmine-node by Omar Gonzalez (s9tpepper).

Downloads

11,283

Readme

grunt-jasmine-node-coverage

Runs jasmine with Istanbul code coverage

Dependency Status devDependency Status Build Status Built with Grunt Analytics

A Grunt task to run your Jasmine feature suite using jasmine-npm and Istanbul for code coverage reports.

The minimum supported Node.js version is 4.2.0 (LTS), and while works also in 0.10.x, no quarantees are given.

Getting Started

Install this grunt plugin next to your project's Gruntfile.js with:

npm install grunt-jasmine-node-coverage --save-dev

Then add these lines to your project's Gruntfile.js configuration file:

grunt.initConfig({
  jasmine_node: {
    task_name: {
      options: {
        forceExit: true,
        coverage: {
          includeAllSources: true
        },
        jasmine: {
          spec_dir: 'tests',
          spec_files: [
            '**/*spec.js'
          ]
        }
      },
      src: ['src/**/*.js']
    }
  }
});

grunt.loadNpmTasks('grunt-jasmine-node-coverage');

grunt.registerTask('default', 'jasmine_node');

Configuring tasks

Grunt tasks should be configured by following the multi task configuration form, thus wrapping each configuration in an object inside the jasmine_node root object.

Task configuration options

options.jasmine

Type: object

Default: see below

Jasmine specific configuration. Use empty object, {} to use the defaults that are shown below.

{
  spec_dir: 'spec',
  spec_files: ['**/*[sS]pec/.js'],
  helpers: [],
  reporters: {
    spec: {}
  }
}

See the jasmine docs for more information on the supported configuration.

The reporters property allows the following properties:

If teamcity reporter is set spec reporter will be disabled and teamcity reporter will be added to the coverage reporters as well.

Example of using teamcity reporter:

{
  spec_dir: 'spec',
  spec_files: ['**/*[sS]pec/.js'],
  helpers: [],
  reporters: {
    teamcity: true
  }
}

Example of using junitXml reporter:

{
  spec_dir: 'spec',
  spec_files: ['**/*[sS]pec/.js'],
  helpers: [],
  reporters: {
    junitXml: {
      savePath: "reports",
      consolidateAll: true
    }
  }
}

options.coverage

Type: object

Default: see below

Istanbul specific configuration. Use empty object, {} to use the defaults that are shown below.

{
  reportFile: 'coverage.json',
  relativize: true,
  thresholds: {
    statements: 0,
    branches: 0,
    lines: 0,
    functions: 0
  },
  watermarks: {
    statements: [50, 80],
    lines: [50, 80],
    functions: [50, 80],
    branches: [50, 80],
  },
  includeAllSources: false,
  reportDir: 'coverage',
  report: [
    'lcov',
    'text-summary'
  ],
  collect: [ // false to disable, paths are relative to 'reportDir'
    '*coverage.json'
  ],
  excludes: []
}

Notes:

  • The excludes list will automatically include '**/node_modules/**' internally.
  • Setting the thresholds values greater than 0 will cause the task to fail if the specified threshold is not met.
  • The watermarks config changes the thresholds at which the reports are displayed in red, yellow and green. It does not affect the outcome of the task.
  • Setting the report list will allow different types of istanbul report to be set.

options.projectRoot

Type: string

Default: process.cwd()

See http://nodejs.org/api/process.html#process_process_cwd

options.forceExit

Type: boolean

Default: false

Exit on failure by skipping any asynchronous tasks pending.

options.captureExceptions

Type: boolean

Default: false

If set to true, will log all uncaught exceptions.

options.isVerbose

Type: boolean

Default: false

When true, istanbul will print more information when running.

Bugs

Help us to squash them by submitting an issue that describes how you encountered it; please be as specific as possible including operating system, node, grunt, and grunt-jasmine-node-coverage versions.

npm --versions

Migration notes

v1.x -> v2.x

The spec reporter configuration has changed for v2 of this plugin. The following is an example of the change in configuration that is needed. This is not an exhaustive list: refer to the jasmine-spec-reporter for a full reference of the configuration options.

// v1
reporters: {
  spec: {
    colors: true,
    displayStacktrace: 'summary',
    displaySuccessfulSpec: true
  }
}

// v2
reporters: {
  spec: {
    colors: {
      enabled: true
    },
    summary: {
      displayStacktrace: true
    },
    spec: {
      displaySuccessful: true
    }
  }
}

v0.x -> v1.x

If you are updating to v1.x, you'll need to update your Gruntfile.

The following example outlines the changes needed. It assumes the following folder structure:

app/
├── src/
│   ├── abacus.js
│   └── calculator.js
└── test/
    ├── helpers.js
    └── specs/
        ├── abacus.spec.js
        └── calculator.spec.js
// v0.5.0 config
{
  jasmine_node: {
    task_name: {
      options: {
        match: '.',
        matchAll: true,
        specFolders: ['test'],
        extensions: 'js',
        specNameMatcher: 'spec',
        useHelpers: true
      }
    }
  }
}

// v1.0.0 config
{
  jasmine_node: {
    task_name: {
      options: {
        jasmine: {
          spec_dir: 'test',
          spec_files: [
            'specs/*.spec.js'
          ],
          helpers: [
            'helpers.js'
          ]
        }
      }
    }
  }
}

Please note that the junit reporter is no longer available. If you are using this reporter and wish to update to v1, please open a new issue and we'll see if we can get it added back in. Even better, submit a PR :smile:

Release History

  • v2.0.1 (2017-09-20)
    • Looks like the compatibility between different dependencies requires to use jasmine of version 2.5.2, which is not the latest (2.5.3)
  • v2.0.0 (2017-09-20)
    • Breaking changes alert! Ensure you read the migration guide before updating from previous versions
    • Updated to jasmine-spec-reporter v3.3.0. Older style configuration needs to be updated, see migration guide for more details.
    • Removed support for Node.js v0.10
  • v1.2.0 (2017-04-30)
    • Was compatible with Grunt 0.4 all the time, hence lowering the dependency requirement #60
  • v1.1.1 (2016-08-29)
    • Istanbul v0.4.5 and using data.src instead of fileSrc for compatibility #59
  • v1.1.0 (2016-08-23)
    • Add Node.js v0.10.0 support back by using var instead of const and let, #55
    • Teamcity reporter for Jasmine, #56
  • v1.0.0 (2016-07-23)
    • Breaking changes alert! Ensure you read the migration guide before updating from previous versions
    • Minimum supported Node.js version is 4.2.0 (LTS), removed testing against 0.10
    • Migrated from jasmine-node to jasmine-npm #35 #48
    • Support includeAllSources istanbul coverage option #45 #50
    • Support thresholds for passing/failing build #25
    • Removed junit reporter
  • v0.5.0 (2016-05-03)
    • Grunt.js version 1.0 support
    • ESLint configuration migration to 2.0
    • Remove bin path #29
    • Update license property for todays requirements
    • Do not always make lcov output
  • v0.4.1 (2015-02-27)
    • Reports should be collected from where they were written #42
  • v0.4.0 (2015-02-19)
    • Other Grunt tasks were not ran when this failed, #40
  • v0.3.2 (2015-02-04)
    • Fixes for failure cases and documentation, #33, #36, #37 and #38
  • v0.3.1 (2014-11-21)
    • Installation failed
    • Should fix #30
  • v0.3.0 (2014-11-09)
    • Grunt usage as multi task
    • Fixes #12 and #18
  • v0.2.0 (2014-11-03)
    • Better Grunt API usage
    • Fixes #10, #13, #14, #16, #19 and #20
  • v0.1.11 (2014-05-15)
    • Task name fix for grunt.renametask use case
  • v0.1.10 (2014-04-07)
    • JSHint configuration and task exit fixes
  • v0.1.9 (2014-04-02)
    • Configuration for jasmine_node.options.isVerbose was not working
  • v0.1.8 (2014-03-03)
    • Add captureExceptions support and quit on exception
  • v0.1.7 (2013-12-13)
    • Istanbul update, threshold configuration and JUNit output
  • v0.1.6 (2013-07-26)
    • Change isVerbose option to verbose
  • v0.1.5 (2013-07-15)
    • Initial coverage with Istanbul release, originally forked from grunt-jasmine-node

License

Copyright (c) 2013 "jribble" Jarrod Ribble & contributors. Based on grunt-jasmine-node.

Copyright (c) 2012 "s9tpepper" Omar Gonzalez & contributors. Licensed under the MIT license.