0

I have an project which we are internally using as an npm package across few other UI applications, currently the code coverage report is not getting generated. Since its an npm pacjage we have not created a angular.json. The coverage folder is getting generated but it doen't have any info on files/test cases and it shows coverage as 100% (0/0) This is my package.json

{
  "name": "app",
  "version": "2.0.4-alpha.3",
  "scripts": {
    "build": "ng-packagr -p package.json",
    "lint": "tslint --type-check --project tsconfig.json src/**/*.ts",
    "test": "npx karma start",
    "tsc": "npx tsc"
  },
  "ngPackage": {
    "lib": {
      "entryFile": "index.ts"
    }
  },
  "files": [
    "*"
  ],

  "main": "./dist/index.ts",
  "peerDependencies": {
    "@angular/core": "^5.2.11",
    "@angular/router": "^5.2.11",
    "ng-packagr": "^5.2.0",
    "rxjs-compat": "^6.2.2",
    "karma-coverage-istanbul-reporter": "^3.0.3"
  },
  "devDependencies": {
    "@angular/common": "^5.2.11",
    "@angular/compiler": "^5.2.11",
    "@angular/compiler-cli": "^6.1.0",
    "@angular/platform-browser": "^5.2.11",
    "@angular/platform-browser-dynamic": "^5.2.11",
    "@angular/platform-server": "^5.2.11",
    "@types/es6-shim": "^0.31.32",
    "@types/jasmine": "^2.5.40",
    "@types/selenium-webdriver": "^2.53.39",
    "awesome-typescript-loader": "^3.1.2",
    "codelyzer": "^3.0.0-beta.0",
    "copy-webpack-plugin": "^4.0.1",
    "extract-text-webpack-plugin": "^2.1.0",
    "jasmine-core": "^2.5.2",
    "karma": "^1.2.0",
    "karma-chrome-launcher": "^2.0.0",
    "karma-coverage": "^1.1.1",
    "karma-jasmine": "^1.0.2",
    "karma-mocha-reporter": "^2.0.0",
    "karma-phantomjs-launcher": "^1.0.2",
    "karma-remap-coverage": "^0.1.1",
    "karma-sourcemap-loader": "^0.3.7",
    "karma-webpack": "^2.0.2",
    "rxjs": "6.2.2",
    "source-map-loader": "^0.2.0",
    "ts-helpers": "^1.1.2",
    "tslint": "^4.5.1",
    "tslint-loader": "^3.4.3",
    "typescript": "^2.9.2",
    "webpack": "2.1.0-beta.22",
    "webpack-dev-middleware": "^1.10.1",
    "webpack-dev-server": "^2.4.1",
    "webpack-md5-hash": "0.0.5",
    "webpack-merge": "^4.0.0",
    "zone.js": ">=0.7.2",
    "@angular/core": "^5.2.11",
    "@angular/router": "^5.2.11",
    "ng-packagr": "^5.2.0",
    "rxjs-compat": "^6.2.2"
  },
  "engines": {
    "node": ">=0.8.0"
  }
}

This is my karma.config.js

module.exports = function (config) {
  var testWebpackConfig = require('./webpack.test.js')({
    env: 'test'
  });
  var configuration = {
    basePath: '',
    frameworks: ['jasmine'],
    exclude: [],
    files: [{
      pattern: './spec-bundle.js',
      watched: false
    }],
    preprocessors: {
      './spec-bundle.js': ['coverage', 'webpack', 'sourcemap']
    },
    webpack: testWebpackConfig,
    coverageReporter: {
      type: 'in-memory'
    },
    remapCoverageReporter: {
      'text-summary': null,
      lcovonly: './coverage/lcov.info',
      json: './coverage/coverage.json',
      html: './coverage/html'
    },
    webpackMiddleware: {
      stats: 'errors-only'
    },
    reporters: ['mocha', 'coverage', 'remap-coverage'],
    port: 9876,
    colors: true,
    logLevel: config.LOG_INFO,
    autoWatch: false,
    browsers: [
      'ChromeCustom'
    ],
    customLaunchers: {
      ChromeCustom: {
        base: 'ChromeHeadless',
        flags: ['--no-sandbox']
      }
    },
    singleRun: true
  }
  config.set(configuration);
};

This is my webpack.test.js

const helpers = require('./helpers');
const DefinePlugin = require('webpack/lib/DefinePlugin');
const ENV = process.env.ENV = process.env.NODE_ENV = process.env.npm_package_config_environment = 'test';

module.exports = function(options) {
  return {
    devtool: 'inline-source-map',
    resolve: {
      extensions: ['', '.ts', '.js'],
      root: helpers.root('src'),
    },
    module: {
      preLoaders: [
        {
          test: /\.ts$/,
          loader: 'tslint-loader',
          exclude: [helpers.root('./node_modules/typesafe-actions')]
        },
        {
          test: /\.js$/,
          loader: 'source-map-loader',
          exclude: [
            helpers.root('node_modules/rxjs'),
            helpers.root('node_modules/@angular')
          ]
        }
      ],
      loaders: [
        {
          test: /\.ts$/,
          loader: 'awesome-typescript-loader',
          query: {
            sourceMap: false,
            inlineSourceMap: true,
            compilerOptions: {
              removeComments: true
            }
          },
          exclude: [/\.e2e\.ts$/]
        },
        {
          test: /\.json$/,
          loader: 'json-loader',
          exclude: [helpers.root('src/index.html')]
        },
        {
          test: /\.css$/,
          loaders: ['to-string-loader', 'css-loader'],
          exclude: [helpers.root('src/index.html')]
        },
        {
          test: /\.html$/,
          loader: 'raw-loader',
          exclude: [helpers.root('src/index.html')]
        }
      ],
      postLoaders: [
        {
          test: /\.(js|ts)$/,
          loader: 'istanbul-instrumenter-loader',
          include: helpers.root('src'),
          exclude: [
            /\.(e2e|spec)\.ts$/,
            /node_modules/
          ]
        }
      ]
    },
    plugins: [
      new DefinePlugin({
        'ENV': JSON.stringify(ENV),
        'HMR': false,
        'process.env': {
          'ENV': JSON.stringify(ENV),
          'NODE_ENV': JSON.stringify(ENV),
          'HMR': false,
        }
      }),
    ],
    tslint: {
      emitErrors: false,
      failOnHint: false,
      resourcePath: 'src'
    },
    node: {
      global: 'window',
      process: false,
      crypto: 'empty',
      module: false,
      clearImmediate: false,
      setImmediate: false
    }
  };
}

This is my spec-bundle.js


Error.stackTraceLimit = Infinity;
require('core-js/es6');
require('core-js/es7/reflect');

require('ts-helpers');

require('zone.js/dist/zone');
require('zone.js/dist/long-stack-trace-zone');
require('zone.js/dist/proxy'); // since zone.js 0.6.15
require('zone.js/dist/sync-test');
require('zone.js/dist/jasmine-patch'); // put here since zone.js 0.6.14
require('zone.js/dist/async-test');
require('zone.js/dist/fake-async-test');

// RxJS
require('rxjs/Rx');

var testing = require('@angular/core/testing');
var browser = require('@angular/platform-browser-dynamic/testing');

testing.TestBed.initTestEnvironment(
  browser.BrowserDynamicTestingModule,
  browser.platformBrowserDynamicTesting()
);

var testContext = require.context('./src', true, /\.spec\.ts/);
console.log('passing textcontxet',testContext);

function requireAll(requireContext) {
  return requireContext.keys().map(requireContext);
}

// requires and returns all modules that match
var modules = requireAll(testContext);

My test cases are being recognised, but coverage comes as

SUMMARY: ✔ 1 test completed 19 07 2023 17:56:44.205:DEBUG [karma]: Run complete, exiting. 19 07 2023 17:56:44.207:DEBUG [launcher]: Disconnecting all browsers

=============================== Coverage summary =============================== Statements : 100% ( 0/0 ) Branches : 100% ( 0/0 ) Functions : 100% ( 0/0 ) Lines : 100% ( 0/0 )

I have tried to change karma configs, but changing reporters and coverage configs but doesn't works.

0