A eslint reporter that creates compatible junit xml files
yarn add --dev eslint-junit
Simply run:
eslint -f ./node_modules/eslint-junit/index.js
eslint-junit
offers four configurations based on environment variables or a eslint-junit
key defined in package.json
. All configuration values should be strings.
Variable Name | Description | Default |
---|---|---|
ESLINT_SUITE_NAME |
name attribute of <testsuites> |
"eslint tests" |
ESLINT_JUNIT_OUTPUT |
File path to save the output. | "./junit.xml" |
ESLINT_JUNIT_CLASSNAME |
Template string for the classname attribute of <testcase> . |
"{ruleId}" |
ESLINT_JUNIT_TITLE |
Template string for the name attribute of <testcase> . |
"{line} : {source}" |
Example:
ESLINT_SUITE_NAME="Eslint Style Tests" ESLINT_JUNIT_OUTPUT="./artifacts/eslint-junit.xml" eslint
You can also define a eslint-junit
key in your package.json
. All are string values.
{
...
"eslint-junit": {
"suiteName": "eslint tests",
"output": "./eslint-junit.xml",
"classNameTemplate": "{ruleId}",
"titleTemplate": "{line} : {source}"
}
}
For the following case:
function test (a) {
a = '1';
}
The default output:
<testsuites name="eslint tests">
<testsuite errors="1" failures="0" name="/test.js" skipped="0" tests="1" time="1" timestamp="2017-09-06T20:04:53">
<testcase classname="no-param-reassign" name="2 : a = '1';" time="1">
<failure>Assignment to function parameter 'a'.</failure>
</testcase>
</testsuite>
</testsuites>
Changing the classNameTemplate
and titleTemplate
:
ESLINT_JUNIT_CLASSNAME="{ruleId}" ESLINT_JUNIT_TITLE="{source}" eslint
<testsuites name="eslint tests">
<testsuite errors="1" failures="0" name="/utils/getOptions.js" skipped="0" tests="1" time="1" timestamp="2017-09-06T20:04:53">
<testcase classname="no-param-reassign" name=" pathToResolve = path.dirname(pathToResolve);" time="1">
<failure>Assignment to function parameter 'pathToResolve'.</failure>
</testcase>
</testsuite>
</testsuites>