ts-es5-istanbul-coverage

1.0.6 • Public • Published

ts-es5-istanbul-coverage

Make sure you don't miss branch coverage when outputing TypeScript as ES5

Goal

When your project uses TypeScript exported as ES5, Webpack for build and Instanbul for the code coverage, you may encounter some impossible to cover branches. This is because of how TypeScript emits files. You can read more on the subject :

This little webpack loader will add /* istanbul ignore next */ where needed.

Install

yarn add ts-es5-istanbul-coverage --dev or npm install ts-es5-istanbul-coverage --save-dev

Usage

Simply configure the loader as any other loader. Note: It must run After the actual typescript transpilation (so it should appear first in the webpack configuration rule)

Example of confuguration using ts-loader and ts-es5-istanbul-coverage

module.exports = {
    module: {
        rules: [
            // all files with a `.ts` or `.tsx` extension will be handle
            {
                test: /\.tsx?$/,
                use: [
                    {
                        loader: 'ts-es5-istanbul-coverage',
                    },
                    {
                        loader: 'ts-loader',
                    },
                ],
            }
        ]
    }
}

Current fixes

Currently the loader fix the branch coverage for the following: Emitted code like:

function MyClass() {
    return _super !== null && _super.apply(this, arguments) || this;
}

will be replaced by

function MyClass() {
    /* istanbul ignore next */return _super !== null && _super.apply(this, arguments) || this;
}

Which solves the coverage for the branch || this

Emitted code like:

function MyClass() {
    return _this;
    var _a, _b;
}

will be replaced by

function MyClass() {
    var _a, _b;
    return _this;
}

Which solves the coverage for the var statement

Emitted code like:

for (var _i = 0; _i < arguments.length; _i++) {
    dependencies[_i] = arguments[_i];
}

will be replaced by

for (var _i = 0; _i < arguments.length; _i++) {/* istanbul ignore next */
    dependencies[_i] = arguments[_i];
}

Which solves the coverage for the loop body

Readme

Keywords

none

Package Sidebar

Install

npm i ts-es5-istanbul-coverage

Weekly Downloads

3

Version

1.0.6

License

MIT

Unpacked Size

4.07 kB

Total Files

4

Last publish

Collaborators

  • ben8p