diff --git a/web/karma.conf.js b/web/karma.conf.js index f41512575..a1f215621 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 @@ -52,6 +53,17 @@ module.exports = function (config) { 'pgadmin/static/bundle/slickgrid.js': ['webpack', 'sourcemap'], }, + // optionally, configure the reporter + coverageReporter: { + reporters: [ + // reporters not supporting the `file` property + { type: 'html', subdir: 'report-html' }, + { type: 'lcovonly', subdir: 'report-lcov' }, + ], + dir : 'coverage/', + includeAllSources: true, + }, + webpack: webpackConfig, webpackMiddleware: { stats: 'errors-only', diff --git a/web/package.json b/web/package.json index 71147404a..23d3b1399 100644 --- a/web/package.json +++ b/web/package.json @@ -19,7 +19,7 @@ "enzyme": "^3.11.0", "enzyme-adapter-react-16": "^1.15.2", "eslint": "5.15.1", - "eslint-plugin-react": "^7.20.3", + "eslint-plugin-react": "^7.20.5", "file-loader": "^3.0.1", "iconfont-webpack-plugin": "^4.2.1", "image-webpack-loader": "^4.6.0", @@ -84,10 +84,12 @@ "immutability-helper": "^3.0.0", "imports-loader": "^0.8.0", "ip-address": "^5.8.9", + "istanbul-instrumenter-loader": "^3.0.1", "jquery": "^3.5.1", "jquery-contextmenu": "^2.8.0", "jquery-ui": "^1.12.1", "json-bignumber": "^1.0.1", + "karma-coverage": "^2.0.3", "leaflet": "^1.5.1", "moment": "^2.24.0", "moment-timezone": "^0.5.23", diff --git a/web/webpack.test.config.js b/web/webpack.test.config.js index 95b280ea1..5196bd439 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|regression|[Tt]est.js|[Ss]pecs.js|[Ss]pec.js|\.spec\.js$/, + }, + ], }, resolve: {