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

runtime-coverage

v0.0.14

Published

Easy runtime coverage for node.js

Downloads

14

Readme

Build Status npm version dependencies Status devDependencies Status Known Vulnerabilities Coverage Status

Runtime coverage

Enable coverage any time after service startup, gather coverage and disable it!

Useful for integration tests and checking for dead code branches.

Usage

Install


npm install runtime-coverage

Start coverage


const runtimeCoverage = require('runtime-coverage');
await runtimeCoverage.startCoverage();

Gather and output coverage


const options = {
  reporters: ['text'],
  return: true,
  all: true,
  exclude: ['**/node_modules/**'],
  };
const res = await runtimeCoverage.getCoverage(options);
console.log(res.text);

You can also get coverage in any format of istanbul reporters, for example cobertura.

Options

Options for getCoverage:

  • {Object} options options for getting coverage
  • {Array} [options.exclude] exclude those files in coverage, micromatch array, default **/node_modules/**
  • {string} [options.rootDir] starting directory for files that need coverage info, default process.env.PWD
  • {boolean} [options.all] include files which were not used in coverage data, default false
  • {boolean} [options.deleteCoverage] delete coverage directory after output, default true
  • {string} [options.coverageDirectory] Directory for storing coverage, defaults to temporary directory
  • {boolean} [options.return] return coverage data, default true.
  • {boolean} [options.stream] return coverage data as a stream, useful for huge coverage data, default false
  • {boolean} [options.streamTimeout] destroy stream if not used after this timeout, default 60*1000 millis
  • {Array} [options.reporters] Array of reporters to use, default "text", see all possible here.

if return option is true, result will be an object with coverage data, keys are reporters's names. For example, for text reporter result will be in res.text, for cobertura it will be res.cobertura and so on.

if stream option is true, object will have same structure, but instead of data there will be a stream, which will be destroyed after streamTimeout if not used.

Sample

Short express sample here.

Beware

After first module call, in subsequent calls V8 only reports partial coverage for called functions, and it leads to 100% module coverage. To avoid it, either:

  • Call all your code after startCoverage() call
  • Use option forceLineMode - it can only help with line coverage and is approximate because can't know about comments, empty lines and statements - but it's safe
  • Use option forceReload (used by default) - it will try to safely reload and run your file. But thinks may break, kitten may die, and devil may be summoned - I warned you!

V8 coverage is still experimental, so of cause some thing are pretty clumsy. I'm still hoping to make a perfect runtime coverage - may be with help of istanbul metadata. Wanna help?

Debug

If you wanna debug library work, launch your project with env variable DEBUG=runtime-coverage:*