JUnit Reporter for Mocha
Installation
```shell $ npm install mocha-junit-reporter --save-dev ``` or as a global module ```shell $ npm install -g mocha-junit-reporter ```Usage
Run mocha withmocha-junit-reporter
:
```shell
$ mocha test --reporter mocha-junit-reporter
```
This will output a results file at ./test-results.xml
.
You may optionally declare an alternate location for results XML file by setting
the environment variable MOCHA_FILE
or specifying mochaFile
in reporterOptions
:
```shell
$ MOCHAFILE=./pathtoyour/file.xml mocha test --reporter mocha-junit-reporter
```
or
```shell
$ mocha test --reporter mocha-junit-reporter --reporter-options mochaFile=./pathtoyour/file.xml
```
or
```javascript
var mocha = new Mocha({
reporter: 'mocha-junit-reporter',
reporterOptions: {
mochaFile: './path_to_your/file.xml'
}
});
```
Append properties to testsuite
You can also add properties to the report undertestsuite
. This is useful if you want your CI environment to add extra build props to the report for analytics purposes
```
<properties>
<property name="BUILD_ID" value="4291"/>
</properties>
<testcase/>
<testcase/>
<testcase/>
```
To do so pass them in via env variable:
```shell
PROPERTIES=BUILDID:4291 mocha test --reporter mocha-junit-reporter
```
or
```javascript
var mocha = new Mocha({
reporter: 'mocha-junit-reporter',
reporterOptions: {
properties: {
BUILD_ID: 4291
}
}
})
```
Results Report
Results XML filename can contain[hash]
, e.g. ./path_to_your/test-results.[hash].xml
. [hash]
is replaced by MD5 hash of test results XML. This enables support of parallel execution of multiple mocha-junit-reporter
's writing test results in separate files.
In order to display full suite title (including parents) just specify testsuitesTitle
option
```javascript
var mocha = new Mocha({
reporter: 'mocha-junit-reporter',
reporterOptions: {
testsuitesTitle: true,
suiteTitleSeparatedBy: '.' // suites separator, default is space (' ')
}
});
```
If you want to switch classname and name of the generated testCase XML entries, you can use the testCaseSwitchClassnameAndName
reporter option.
```javascript
var mocha = new Mocha({
reporter: 'mocha-junit-reporter',
reporterOptions: {
testCaseSwitchClassnameAndName: true
}
});
```
Here is an example of the XML output when using the testCaseSwitchClassnameAndName
option:
| value | XML output |
|----------------------------------|--------|
| true
| <testcase name="should behave like so" classname="Super Suite should behave like so">
|
| false
(default) | <testcase name="Super Suite should behave like so" classname="should behave like so">
|
You can also configure the testsuites.name
attribute by setting reporterOptions.testsuitesTitle
and the root suite's name
attribute by setting reporterOptions.rootSuiteTitle
.
Full configuration options
| Parameter | Effect | | --------- | ------ | | mochaFile | configures the file to write reports to | | includePending | if set to a truthy value pending tests will be included in the report | | properties | a hash of additional properties to add to each test suite | | toConsole | if set to a truthy value the produced XML will be logged to the console | | useFullSuiteTitle | if set to a truthy value nested suites' titles will show the suite lineage | | suiteTitleSeparedBy | the character to use to separate nested suite titles. (defaults to ' ') | | testCaseSwitchClassnameAndName | set to a truthy value to switch name and classname values | | rootSuiteTitle | the name for the root suite. (defaults to 'Root Suite') | | testsuitesTitle | the name for thetestsuites
tag (defaults to 'Mocha Tests') |
| addTags | If set to true, will look in test.title for any tags using format @tagName=tagValue and will add them as attributes to the test result |