diff --git a/web/karma.conf.js b/web/karma.conf.js index 1a2b6c925d..9310bbb9da 100644 --- a/web/karma.conf.js +++ b/web/karma.conf.js @@ -15,7 +15,7 @@ const webpack = require('webpack'); module.exports = function (config) { config.set({ frameworks: ['jasmine', 'source-map-support'], - reporters: ['progress', 'kjhtml'], + reporters: ['progress', 'kjhtml', 'coverage'], plugins: [ 'karma-webpack', 'karma-chrome-launcher', @@ -23,6 +23,7 @@ module.exports = function (config) { 'karma-jasmine-html-reporter', 'karma-source-map-support', 'karma-sourcemap-loader', + 'karma-coverage', new webpack.SourceMapDevToolPlugin({ /* * filename: null, // if no value is provided the sourcemap is inlined @@ -37,6 +38,7 @@ module.exports = function (config) { {pattern: 'pgadmin/static/**/*.png', included: false, watched: true, served: true, nocache: false}, {pattern: 'pgadmin/browser/static/js/**/*.js', included: false, watched: true}, {pattern: 'pgadmin/pem/**/*.spec.js', watched: true}, + {pattern: 'pgadmin/pem/**/static/**/*.js', included: false, watched: true}, {pattern: 'regression/javascript/**/*.js', watched: true}, ], @@ -50,11 +52,18 @@ module.exports = function (config) { // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor preprocessors: { 'pgadmin/**/js/**/*.js?': ['sourcemap'], - 'pgadmin/pem/**/*.spec.js': ['webpack','sourcemap'], + 'pgadmin/pem/**/*.spec.js': ['webpack'], 'regression/javascript/**/*.js': ['webpack', 'sourcemap'], 'pgadmin/static/bundle/slickgrid.js': ['webpack', 'sourcemap'], }, + // optionally, configure the reporter + coverageReporter: { + type : 'html', + dir : 'coverage/', + includeAllSources: true, + }, + webpack: webpackConfig, webpackMiddleware: { stats: 'errors-only', diff --git a/web/package.json b/web/package.json index 71bdc89ea8..a0d935e166 100644 --- a/web/package.json +++ b/web/package.json @@ -28,6 +28,7 @@ "image-webpack-loader": "^6.0.0", "imports-loader": "^0.8.0", "is-docker": "^2.0.0", + "istanbul-instrumenter-loader": "^3.0.1", "jasmine-core": "~3.5.0", "karma": "^5.0.2", "karma-babel-preprocessor": "^8.0.1", @@ -89,6 +90,7 @@ "jquery-ui": "^1.12.1", "jquery.cookie": "^1.4.1", "json-bignumber": "^1.0.2", + "karma-coverage": "^2.0.3", "leaflet": "^1.6.0", "moment": "^2.24.0", "moment-timezone": "^0.5.28", diff --git a/web/webpack.test.config.js b/web/webpack.test.config.js index 386599431f..8dca474d0a 100644 --- a/web/webpack.test.config.js +++ b/web/webpack.test.config.js @@ -15,6 +15,8 @@ const sourcesDir = path.resolve(__dirname, 'pgadmin/static'); const nodeModulesDir = path.resolve(__dirname, 'node_modules'); const regressionDir = path.resolve(__dirname, 'regression'); +//const sourcesDirPem = path.resolve(__dirname, 'pgadmin/pem'); + module.exports = { mode: 'development', devtool: 'inline-source-map', @@ -65,7 +67,17 @@ module.exports = { ',jquery.event.drag' + '!exports-loader?' + 'Slick', - }], + }, + { + test: /\.js$|\.jsx$/, + use: { + loader: 'istanbul-instrumenter-loader', + options: { esModules: true }, + }, + enforce: 'post', + exclude: /node_modules|slickgrid|plugins|bundle|generated|\.spec\.js$/, + }, + ], }, resolve: {