A JUnit XML reporter for Cypress that includes screenshots, videos, and logs on test failures.
This reporter works with Testspace to publish CI test results that include:
- Captured screenshot of a test failure
- Captured video for a suite with one or more failing tests
- Logs generated using the cypress terminal reporter
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.
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);
}
}
});
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.