karma-sonarqube-reporter
A Karma reporter plugin for generating SonarQube generic test execution data.
Installation
Just save the karma-sonarqube-reporter
as a development dependency
npm install karma-sonarqube-reporter --save-dev
Configuration
Adjust your karma.conf.js
file:
- Create new plugin entry
plugins: [
require('karma-sonarqube-reporter')
]
- Add a configuration object
sonarqubeReporter: {
basePath: 'src/app',
filePattern: '**/*spec.ts',
outputFolder: 'reports',
encoding: 'utf-8'
}
- Enable it
reporters: ['sonarqube']
See below a karma.conf.js
full example:
module.exports = function (config) {
config.set({
basePath: '',
frameworks: ['jasmine', '@angular/cli'],
plugins: [
require('karma-jasmine'),
require('karma-chrome-launcher'),
require('karma-firefox-launcher'),
require('karma-jasmine-html-reporter'),
require('karma-coverage-istanbul-reporter'),
require('karma-sonarqube-reporter'),
require('@angular/cli/plugins/karma')
],
client:{
clearContext: false
},
coverageIstanbulReporter: {
reports: [ 'html', 'lcovonly' ],
fixWebpackSourcePaths: true
},
sonarqubeReporter: {
basePath: 'src/app',
outputFolder: 'reports',
filePattern: '**/*spec.ts',
encoding: 'utf-8'
},
angularCli: {
environment: 'dev'
},
reporters: ['progress', 'kjhtml', 'sonarqube'],
port: 9876,
colors: true,
logLevel: config.LOG_INFO,
autoWatch: true,
browsers: ['Chrome', 'Firefox'],
singleRun: false
});
};
Running
If your project uses Angular CLI run ng test
and check the output folder.
$ ls reports
chrome.65.0.3325.linux.0.0.0.xml
firefox.54.0.0.linux.0.0.0.xml
The report files' schema is defined on the SonarQube Generic Test Data page.
Now add the following property to your sonar-project.properties
:
sonar.testExecutionReportPaths= \
reports/chrome.65.0.3325.linux.0.0.0.xml, \
reports/firefox.54.0.0.linux.0.0.0.xml
Finally, start SonarQube Scanner on your project folder.
That's all!