junit-xray-cy-report

2.0.1 • Public • Published

junit-xray-cypress-reporter

This reporter offers the ability to specify a Jira-Issue for each it{} inside your cypress test and creates a custom report that is easy to load into XRAY. The reporter helps you to integrate your Cypress/Mocha test with XRay easily by producing enriched JUnit-style XML test report files which can be uploaded into XRay with API or other tools.

This reporter is built on the top of mocha-junit-reporter v2.2.1 so all the configurations in the official doc, are inherited from this npm package.

JUnit Xray Reporter is a custom reporter for use with:

INSTALLATION

As a dev module:

$ npm install junit-xray-cypress-reporter --save-dev

or as a global module:

$ npm install -g junit-xray-cypress-reporter

CONFIGURATION

Test level

describe('My First Test', () => {
  it('Does not do much!', {jiraKey:"CALC-1234"}, () => {
    or
  it('Does not do much!', {jiraID:"CALC-1234"}, () => {
    expect(true).to.equal(true);
  })
})

Cypress configuration file (cypress.config.js)

Every others {reporterOptions} explained here: mocha-junit-reporter v2.2.1 are availabile.

const { defineConfig } = require("cypress");
module.exports = defineConfig({
  reporter: "junit-xray-cypress-reporter",
  reporterOptions: {
    mochaFile: "cypress/results/my-test-output-[hash].xml"
  },
  e2e: {
    setupNodeEvents(on, config) {
      // implement node event listeners here
    },
  },
});

AN EXAMPLE

  1. Install 'junit-xray-cypress-reporter' to the cypress project
$ npm install junit-xray-cypress-reporter --save-dev
  1. Configure 'junit-xray-cypress-reporter' as the reporter and do other configurations as necessary. Configurations can be done in the cypress.config.js or in the command line.
    Add this to cypress.config.js
const { defineConfig } = require("cypress");
module.exports = defineConfig({
  reporter: "junit-xray-cypress-reporter",
  reporterOptions: {
    mochaFile: "cypress/results/my-test-output-[hash].xml"
  },
  e2e: {
    setupNodeEvents(on, config) {
      // implement node event listeners here
    },
  },
});

'mochaFile' is the path to the report file. When there are several test files run it will generate a report file for each test file, so in order to generate unique file names and not overwrite the existing ones, the [hash] is added to the name of the report file.

  1. Add cypress test with XRay-related elements
describe('My First Test', () => {
  it('Does not do much!', {jiraKey:"CALC-1234"}, () => {
    expect(true).to.equal(true);
  })
})
  1. Run tests and generate report
npx cypress run --spec "path/to/file"
  1. View report file

Report file generated at '<Cypress_project_root>/cypress/results'.

"my-test-output-828a1c4885dc687b1a19e11e24b9437e.xml"

<?xml version="1.0" encoding="UTF-8"?>
<testsuites name="Mocha Tests" time="0.1070" tests="1" failures="0">
  <testsuite name="Root Suite" timestamp="2023-01-27T13:51:23" tests="0" file="cypress\e2e\test.cy.js" time="0.0000" failures="0">
  </testsuite>
  <testsuite name="My First Test" timestamp="2023-01-27T13:51:23" tests="1" time="0.0700" failures="0">
    <testcase name="My First Test Does not do much!" time="0.0820" classname="Does not do much!">
      <properties>
        <property name="test_key" value="CALC-1234"/>
      </properties>
    </testcase>
  </testsuite>
</testsuites>

As you can see the property has beenn added and now could be readed correctly by XRay.

<properties>
  <property name="test_key" value="CALC-1234"/>
</properties>
  1. Now just upload the report to XRay and the card in Jira will be updated automatically

MIGRATION TO NEWEST VERSION:

Reporter outdated configuration!

You just update this repo to the newest version and u get this error? Dont worry, the solution is easy.

The old and deprecated configuration was:

describe('My First Test', () => {
  it('Does not do much!', {xray:{jiraID:"CALC-1234"}}, () => {
    expect(true).to.equal(true);
  })
})

Now I made it more easyer and clean:

describe('My First Test', () => {
  it('Does not do much!', {jiraID:"CALC-1234"}, () => {
    expect(true).to.equal(true);
  })
})

or

describe('My First Test', () => {
  it('Does not do much!', {jiraKey:"CALC-1234"}, () => {
    expect(true).to.equal(true);
  })
})

How to make an easy update of all the outdated configuration? With regex!

In VS code you can search for this string (ATTENTION: spaces and type of quotation marks can change can be single ' or double "):

xray:\{jiraID:"(.*?)"\}

and replace it with

jiraKey:"$1"

THE JOB IS DONE!

Happy testing to everyone!

ALEC-JS

Package Sidebar

Install

npm i junit-xray-cy-report

Weekly Downloads

3

Version

2.0.1

License

ISC

Unpacked Size

8.94 kB

Total Files

4

Last publish

Collaborators

  • zied99