
Security News
Crates.io Users Targeted by Phishing Emails
The Rust Security Response WG is warning of phishing emails from rustfoundation.dev targeting crates.io users.
karma-junit-reporter
Advanced tools
The karma-junit-reporter is a reporter for the Karma test runner that generates test results in JUnit XML format. This is particularly useful for integrating with continuous integration (CI) systems that can process JUnit XML reports, such as Jenkins, Bamboo, and others.
JUnit XML Report Generation
This feature allows you to configure the Karma test runner to generate test results in JUnit XML format. The configuration specifies the output directory and file name for the generated reports.
module.exports = function(config) {
config.set({
reporters: ['progress', 'junit'],
junitReporter: {
outputDir: 'test-results', // results will be saved as $outputDir/$browserName.xml
outputFile: 'junit-results.xml', // if included, results will be saved as $outputDir/$browserName/$outputFile
useBrowserName: false // add browser name to report and classes names
}
});
};
Customizing Report Output
This feature allows you to customize various aspects of the JUnit XML report, such as the suite name, whether to include the browser name in the report, and additional properties to include in the report.
module.exports = function(config) {
config.set({
reporters: ['progress', 'junit'],
junitReporter: {
outputDir: 'test-results',
outputFile: 'junit-results.xml',
suite: 'mySuite', // suite will become the package name attribute in xml testsuite element
useBrowserName: true, // add browser name to report and classes names
properties: { // key value pair of properties to add to the <properties> section of the report
myProperty: 'value'
},
xmlVersion: null // use '1' if reporting to be per SonarQube 6.2 XML format
}
});
};
The karma-mocha-reporter is another reporter for the Karma test runner that provides a more readable and visually appealing output compared to the default Karma reporter. Unlike karma-junit-reporter, it does not generate JUnit XML reports but focuses on providing a better console output for developers.
The karma-html-reporter generates test results in an HTML format, which can be viewed in a web browser. This is different from karma-junit-reporter, which generates JUnit XML reports for CI systems. The HTML reporter is more suitable for developers who want to visually inspect test results.
The karma-coverage package generates code coverage reports for your tests. While it does not generate JUnit XML reports like karma-junit-reporter, it provides valuable insights into how much of your code is covered by tests. This is useful for ensuring that your tests are comprehensive.
Reporter for the JUnit XML format.
The easiest way is to keep karma-junit-reporter
as a devDependency in your package.json
. Just run
npm install karma-junit-reporter --save-dev
to let npm automatically add it there.
// karma.conf.js
module.exports = function(config) {
config.set({
reporters: ['progress', 'junit'],
// the default configuration
junitReporter: {
outputDir: '', // results will be saved as $outputDir/$browserName.xml
outputFile: undefined, // if included, results will be saved as $outputDir/$browserName/$outputFile
suite: '', // suite will become the package name attribute in xml testsuite element
useBrowserName: true, // add browser name to report and classes names
nameFormatter: undefined, // function (browser, result) to customize the name attribute in xml testcase element
classNameFormatter: undefined, // function (browser, result) to customize the classname attribute in xml testcase element
properties: {}, // key value pair of properties to add to the <properties> section of the report
xmlVersion: null // use '1' if reporting to be per SonarQube 6.2 XML format
}
});
};
You can pass list of reporters as a CLI argument too:
karma start --reporters junit,dots
To make this possible, it's required to make the classnames of each tests to match its file name.
For Example:
describe('analytics.AnalyticsModule_test', function(){
var analytics;
beforeEach(module('ECApp'));
beforeEach(module('angularytics'));
beforeEach(module('AnalyticsModule'));
...
should have a file name AnalyticsModule_test.js
This will produce test result with schema acceptable in sonar.
Grunt file reporters property example:
reporters: ['junit', 'coverage', 'progress'],
junitReporter: {
outputDir: $junitResults,
suite: 'models'
},
coverageReporter: {
type: 'lcov',
dir: $coverageOutputDir,
subdir: '.'
},
preprocessors: {
'src/main/webapp/public/js/ec3.3/**/*.js': 'coverage',
'src/main/webapp/public/js/ec3/**/*.js': 'coverage'
},
plugins: [
'karma-jasmine',
'karma-phantomjs-launcher',
'ec-karma-junit-reporter23',
'karma-coverage'
]
Sonar property example:
sonar.projectName=js
sonar.sources=site-main-php/src/main/webapp/public/js
sonar.projectBaseDir=.
sonar.exclusions=site-main-php/src/main/webapp/public/js/lib/*.js,site-main-php/src/main/webapp/public/js/tests/**/*.php,site-main-php/src/main/webapp/public/js/tests/**/*.js,site-main-php/src/main/webapp/public/js/ec3.3/vendor/**
sonar.javascript.lcov.reportPath=site-main-php/target/coverage/lcov.info
sonar.javascript.jstestdriver.reportsPath=site-main-php/target/surefire-reports/
sonar.tests=site-main-php/src/main/webapp/public/js/tests
Example junit xml report:
<?xml version="1.0"?>
<testsuite name="PhantomJS 1.9.8 (Linux)" package="models" timestamp="2015-03-10T13:59:23" id="0" hostname="admin" tests="629" errors="0" failures="0" time="11.452">
<properties>
<property name="browser.fullName" value="Mozilla/5.0 (Unknown; Linux x86_64) AppleWebKit/534.34 (KHTML, like Gecko) PhantomJS/1.9.8 Safari/534.34"/>
</properties>
<testcase name="(C.2) Checks if an empty object is returned when error 404 is encountered" time="0.01" classname="PhantomJS_1_9_8_(Linux).models.AnalyticsModule_test"/>
<testcase name="(C.3) Checks if an empty array is returned when error 405 is encountered" time="0.013" classname="PhantomJS_1_9_8_(Linux).models.AnalyticsModule_test"/>
</testsuite>
...
For more information on Karma see the homepage.
2.0.1 (2019-10-07)
<a name="2.0.0"></a>
Drop Support for Node 6, to make it possible to use async/await in karma codebase.
travis: no support for node < 6
node 10 not supported by libxmljs-mt
<a name="1.2.0"></a>
FAQs
A Karma plugin. Report results in junit xml format.
The npm package karma-junit-reporter receives a total of 583,839 weekly downloads. As such, karma-junit-reporter popularity was classified as popular.
We found that karma-junit-reporter demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 3 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
The Rust Security Response WG is warning of phishing emails from rustfoundation.dev targeting crates.io users.
Product
Socket now lets you customize pull request alert headers, helping security teams share clear guidance right in PRs to speed reviews and reduce back-and-forth.
Product
Socket's Rust support is moving to Beta: all users can scan Cargo projects and generate SBOMs, including Cargo.toml-only crates, with Rust-aware supply chain checks.