Skip to content

testspace-com/cypress-xml-reporter

Repository files navigation

Cypress XML Reporter

A JUnit XML reporter for Cypress that includes screenshots, videos, and logs on test failures.

CI npm

This reporter works with Testspace to publish CI test results that include:

  1. Captured screenshot of a test failure
  2. Captured video for a suite with one or more failing tests
  3. Logs generated using the cypress terminal reporter

Installation

npm install cypress-xml-reporter --save-dev

Register the plugin in cypress.config.js:

module.exports = defineConfig({
  video: true, // Cypress v13.x defaults to false
  e2e: {
    setupNodeEvents(on, config) {
      require('cypress-xml-reporter/src/plugin') (on);
    }
  }
});

Note that Cypress v13.x defaults the video option to false. This option requires to be true to capture videos for test failures.

Usage

Run Cypress with cypress-xml-reporter:

$ cypress run --reporter cypress_xml_reporter

The generated xml files are by default located at ./results. You may optionally configure a different location by setting the environment variable RESULTS_FOLDER or specifying resultsFolder in the reporterOptions:

$ RESULTS_FOLDER=./path/location cypress run --reporter cypress_xml_reporter

Or

$ cypress run --reporter cypress_xml_reporter --reporter-options "resultsFolder=./path/location"

Or using cypress.config.js:

module.exports = defineConfig({
  video: true, // Cypress v13.x defaults to false
  reporter: 'cypress-xml-reporter',
  reporterOptions: {
    resultsFolder: './path/location'
  },
  e2e: {
    setupNodeEvents(on, config) {
      require('cypress-xml-reporter/src/plugin') (on);
    }
  }
});

Terminal Logging

To capture terminal output as log files the Cypress terminal report package is supported:

npm install cypress-terminal-report --save-dev

The package is required to be configured for log specs in separate files, setting the type format as txt. And pass in the defined options (i.e. logsOptions) to the reporter plugin:

setupNodeEvents(on, config) {
  const logsOptions = {
    outputRoot: config.projectRoot + '/cypress/',
    outputTarget: {
      'logs|txt': 'txt',
    }
  };
  require('cypress-terminal-report/src/installLogsPrinter')(on, logsOptions);
  require('cypress-xml-reporter/src/plugin') (on, logsOptions);
}

Note that the terminal report requires an extra installation step to register the log collector.