Mocha

How to output test results to upload to Trunk

Mocha can be configured to produce JUnit XML output that Trunk can ingest by adding the mocha-junit-reporter package to your codebase.

npm install --save-dev mocha-junit-reporter

Now run Mocha from the command line or inside your CI system as:

mocha test --reporter mocha-junit-reporter

Test Suite Naming

The mocha-junit-reporter will automatically fill in values for the <testcase/> and <testsuite/> name and class attributes. The test:

describe('addition', () => {
  describe('positive numbers', () => {
    it('should add up', () => {
      expect(1 + 2).toBe(3);
    });
  });
});

will produce output that looks like this:

<testsuites name="Mocha Tests">
  <testsuite name="addition">
    <testcase classname="addition positive numbers should add up" 
              name="addition positive numbers should add up"
              file="/somepath/tests/mocha/mocha.test.js"
              >
    </testcase>
  </testsuite>
</testsuites>

The default attributes can be configured with the reporterOptions argument in the .mocharc.js or similar config file.

var mocha = new Mocha({
    reporter: 'mocha-junit-reporter',
    reporterOptions: {
        testsuitesTitle: true,
        // suites separator, default is space (' ')
        suiteTitleSeparatedBy: '.' 
    }
});

By default Mocha will include the file attribute.

Next Step

Once you've configured your test runner to output JUnit XML, you're ready to modify your CI test jobs to actually upload test results to Trunk. See CI Providers for instructions to do this for the CI system you use.

Last updated