@casualbot/jest-sonar-reporter
is a custom results processor for Jest derived from Christian W. original work here.
It has been updated to be usable as a reporter in the jest.config
, as well as, provide the ability to output relative paths for the generated XML file.
Using npm:
npm install --save-dev @casualbot/jest-sonar-reporter
Using yarn:
yarn add --dev @casualbot/jest-sonar-reporter
In your jest config add the following entry:
{
"reporters": [ "default", "@casualbot/jest-sonar-reporter" ]
}
Then simply run:
jest
For your Continuous Integration you can simply do:
jest --ci --reporters=default --reporters=@casualbot/jest-sonar-reporter
The support for testResultsProcessor
is only kept for [legacy reasons][test-results-processor] and might be removed in the future.
You should therefore prefer to configure @casualbot/jest-sonar-reporter
as a reporter.
Should you still want to, add the following entry to your jest config:
{
"testResultsProcessor": "@casualbot/jest-sonar-reporter"
}
Then simply run:
jest
For your Continuous Integration you can simply do:
jest --ci --testResultsProcessor="@casualbot/jest-sonar-reporter"
@casualbot/jest-sonar-reporter
offers several configurations based on environment variables or a @casualbot/jest-sonar-reporter
key defined in package.json
or a reporter option.
Environment variable and package.json configuration should be strings.
Reporter options should also be strings exception for suiteNameTemplate, classNameTemplate, titleNameTemplate that can also accept a function returning a string.
Environment Variable Name | Reporter Config Name | Description | Default | Possible Injection Values |
---|---|---|---|---|
JEST_SUITE_NAME |
suiteName |
name attribute of <testsuites> |
"jest tests" |
N/A |
JEST_SONAR_OUTPUT_DIR |
outputDirectory |
Directory to save the output. | process.cwd() |
N/A |
JEST_SONAR_OUTPUT_NAME |
outputName |
File name for the output. | "jest-report.xml" |
N/A |
JEST_SONAR_OUTPUT_FILE |
outputFile |
Fullpath for the output. If defined, outputDirectory and outputName will be overridden |
undefined |
N/A |
JEST_SONAR_56_FORMAT |
formatForSonar56 |
Will generate the xml report for Sonar 5.6 | false |
N/A |
JEST_SONAR_RELATIVE_PATHS |
relativePaths |
Will use relative paths when generating the xml report | false |
N/A |
JEST_SONAR_UNIQUE_OUTPUT_NAME |
uniqueOutputName |
Create unique file name for the output jest-sonar-report-${uuid}.xml , overrides outputName |
false |
N/A |
JEST_SONAR_SUITE_NAME |
suiteNameTemplate |
Template string for name attribute of the <testsuite> . |
"{title}" |
{title} , {filepath} , {filename} , {displayName} |
JEST_SONAR_CLASSNAME |
classNameTemplate |
Template string for the classname attribute of <testcase> . |
"{classname} {title}" |
{classname} , {title} , {suitename} , {filepath} , {filename} , {displayName} |
JEST_SONAR_TITLE |
titleTemplate |
Template string for the name attribute of <testcase> . |
"{classname} {title}" |
{classname} , {title} , {filepath} , {filename} , {displayName} |
JEST_SONAR_ANCESTOR_SEPARATOR |
ancestorSeparator |
Character(s) used to join the describe blocks. |
" " |
N/A |
JEST_SONAR_ADD_FILE_ATTRIBUTE |
addFileAttribute |
Add file attribute to the output. This config is primarily for Circle CI. This setting provides richer details but may break on other CI platforms. Must be a string. | "false" |
N/A |
JEST_SONAR_INCLUDE_CONSOLE_OUTPUT |
includeConsoleOutput |
Adds console output to any testSuite that generates stdout during a test run. | false |
N/A |
JEST_SONAR_INCLUDE_SHORT_CONSOLE_OUTPUT |
includeShortConsoleOutput |
Adds short console output (only message value) to any testSuite that generates stdout during a test run. | false |
N/A |
JEST_SONAR_REPORT_TEST_SUITE_ERRORS |
reportTestSuiteErrors |
Reports test suites that failed to execute altogether as error . Note: since the suite name cannot be determined from files that fail to load, it will default to file path. |
false |
N/A |
JEST_SONAR_NO_STACK_TRACE |
noStackTrace |
Omit stack traces from test failure reports, similar to jest --noStackTrace |
false |
N/A |
JEST_USE_PATH_FOR_SUITE_NAME |
usePathForSuiteName |
DEPRECATED. Use suiteNameTemplate instead. Use file path as the name attribute of <testsuite> |
"false" |
N/A |
You can configure these options via the command line as seen below:
JEST_SUITE_NAME="Jest JUnit Unit Tests" JEST_SONAR_OUTPUT_DIR="./artifacts" jest
Or you can also define a @casualbot/jest-sonar-reporter
key in your package.json
. All are string values.
{
...,
"jest": {
"rootDir": ".",
"testResultsProcessor": "@casualbot/jest-sonar-reporter"
},
"@casualbot/jest-sonar-reporter": {
"suiteName": "jest tests",
"outputDirectory": "coverage",
"outputName": "jest-report.xml",
"uniqueOutputName": "false",
"classNameTemplate": "{classname}-{title}",
"titleTemplate": "{classname}-{title}",
"ancestorSeparator": " › ",
"usePathForSuiteName": "true",
"relativePaths": "true"
}
}
Or you can define your options in your reporter configuration.
// jest.config.js
{
reporters: [
'default',
[
'@casualbot/jest-sonar-reporter',
{
relativePaths: true,
outputName: 'sonar-report.xml',
outputDirectory: 'coverage'
}
]
],
}