npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

cypress-aiotests-reporter

v1.4.0

Published

Plugin to report cypress results to AIO Tests Jira

Downloads

31,883

Readme

CI

AIO Tests for Jira Cypress Reporter

AIO Tests for Jira is a Jira-native test management app covering the entire QA lifecycle with Test Cases, Cycles, Reports, Automation, Dashboards, providing a one stop shop for all your testing needs.

With it's Cypress reporter, AIO Tests simplifies reporting of results from the automated Cypress tests to AIO Tests for Jira.

How does the AIO Tests Reporter work

By hooking into Cypress events, the AIO Tests Reporter reports results in the after:spec event, after every spec run finishes. The reporter can create a new cycle for the executions or reuse existing cycles, based on the configuration done in cyress.json. It can also upload attachments for failed executions. Retries can either be reported as new runs or used to update the existing run.

[!NOTE] Please note that with Cypress 13, Cypress has made breaking changes to its module API which used to expose data on results of executions. Due to this change, AIO Tests reporter can no longer send body information and retry durations to AIO Tests. If you would like to have this feature, please bump up the request @ Cypress 13 Module API bug

How to get started?

npm install cypress-aiotests-reporter

Use

Mapping automated Cypress tests to AIO Tests

The AIO Tests Case key can be added to the describe and it function descriptions. If there are multiple case keys in a single description, then the result of one test will be updated to multiple cases.

Please note that the case key can appear anywhere in the description

  1. Mapping single case
  beforeEach(() => {    ..  })

  it('displays two todo items by default (NVTES-TC-72)', () => {
    cy.get('.todo-list li').should('have.length', 2)
    cy.get('.todo-list li').first().should('have.text', 'Pay electric bill')
    cy.get('.todo-list li').last().should('have.text', 'Walk the dog')
  })
  1. Mapping to multiple cases
  beforeEach(() => {    ..  })

  it('NVTES-TC-72, NVTES-TC-73 : displays two todo items by default', () => {
    cy.get('.todo-list li').should('have.length', 2)
    cy.get('.todo-list li').first().should('have.text', 'Pay electric bill')
    cy.get('.todo-list li').last().should('have.text', 'Walk the dog')
  })

Setup

  1. Versions before Cypress 10 Register the plugin to the Cypress plugins file as below:
// cypress/plugins/index.js
const { registerAIOTestsPlugin } = require('cypress-aiotests-reporter/src')

module.exports = (on, config) => {
  registerAIOTestsPlugin(on,config);
}
  1. Cypress 10 and beyond In Cypress 10, the pluginsFile option was removed. This option was replaced with the new setupNodeEvents(). So, the plugin registration has to happen as below in the cypress.config.js
// cypress.config.js
const { defineConfig } = require("cypress");
const { registerAIOTestsPlugin } = require('cypress-aiotests-reporter/src')

module.exports = defineConfig({
  e2e: {
    setupNodeEvents(on, config) {
      registerAIOTestsPlugin(on,config);
      // implement node event listeners here
    },
  },
 }

Please note that due to a change in v13, screenshots can no longer be uploaded using the plugin.

Configure

The AIO Tests Reporter config needs to be set in the env property of cypress.json. Or it can be programmatically modified in your plugins/index.js

For Cypress 10, cypress.json configuration file is no longer supported. Replace this configuration file with a cypress.config.js, cypress.config.ts, cypress.config.cjs or cypress.config.mjs file.

Depending on the Jira hosting, the authentication information needs to be provided as below.

Cloud

For Jira Cloud (eg. https://yourco.atlassian.net/..), the "cloud" property needs to be set in the env.aioTests config for authentication.

  1. Local runs : The API Key generated from AIO Tests, needs to be set as "apiKey" value.
  2. CI/CD: For CI runs, you can set the AIO_API_KEY environment variable to pass it externally as a SECRET.
// cypress.json (for Cypress versions < 10) or cypress.config.js (Cypress 10 and above)
{
  "env": {
    "aioTests": {
      "enableReporting": true,
      "cloud": {
        "apiKey": "<your API KEY>"
      },
      "jiraProjectId": "SCRUM",
      "cycleDetails": {
        "createNewCycle": true,
        "cycleName": "Cypress first run from plugin",
        "cycleKey": "NVTES-CY-2",
        "folder": ["Cloud","Smoke Test Nightly"],
        "tasks": ["SCRUM-1","SCRUM-2]
      },
      "addNewRun": true,
      "addAttachmentToFailedCases": true,
      "createNewRunForRetries": true,
      "addTestBodyToComments": true
    }
  }
}

Server

For Jira Hosted or DataCenter versions, the "hosted" property needs to be set in the env.aioTests for authentication.
The "jiraUrl" needs to be specified with the base url of the hosted Jira instance.

Authentication is supported either by providing Jira username and password or by using the Jira PAT. More information can be found on Server Authentication here

  1. Local runs : For local runs, either "jiraUsername" + "jiraPassword" can be set or one can simply set the "jiraPAT" value.
  2. CI/CD: For CI runs, you can set the JIRA_USERNAME and JIRA_PASSWORD or JIRA_PATenvironment variable to pass it externally as a SECRET.
// cypress.json (for Cypress versions < 10) or cypress.config.js (Cypress 10 and above)
{
  "env": {
    "aioTests": {
      "enableReporting": true,
      "hosted" : {
        "jiraUrl": "https://jira.yourco.com",
        "jiraPAT": "PAT from Jira Tokens | JIRA_PAT as environment variable",
        "jiraUsername": "Jira Username. If PAT is specified, then username is not required",
        "jiraPassword": "Jira password, required if authentication is through username/password"
      },
      "jiraProjectId": "SERV",
      "cycleDetails": {
        "createNewCycle": true,
        "cycleName": "Cypress Nightly Run ",
        "cycleKey": "SERV-CY-2",
        "folder": ["Server","Smoke Test Nightly"],
        "tasks": ["SERV-1","SERV-2]
      },
      "addNewRun": true,
      "addAttachmentToFailedCases": false,
      "createNewRunForRetries": false,
      "addTestBodyToComments": true
    }
  }
}

Configurable values

| Value | Description | |-----------------------------|------------------------------------------------------------------------------------------------------| | enableReporting | Set to true to make the current run update results to AIO Tests. Default false. | | jiraProjectId | Jira Project key to update results to | | cycleDetails.createNewCycle | Set to true to create a new cycle for run being reported | | cycleDetails.cycleName | Works if createNewCycle is true, sets the cycle name of cycle getting created | | cycleDetails.cycleKey | AIO Tests cycle key that should be updated. Used if createNewCycle is false | | cycleDetails.folder | Folder hierarchy, where first item in array is parent folder and so on eg.["Parent","Child"] | | cycleDetails.tasks | List of Jira Issue Keys to attach as Tasks to created cycle, impacts only when creating new cycle | | addNewRun | Create a new run or update an existing run in the cycle | | addAttachmentToFailedCases | Set to true to attach screenshots, if available, for failed cases | | createNewRunForRetries | Set to true if each retry should create a new run | | addTestBodyToComments | Set to true test script body should be added as a comment in a failed case. Doesn't work above v12.x |

Logging

AIO Tests Reporter logs can be seen in the run logs as below for successful updates

image

Errors received while updating will appear in a similar way

image

Queries/Suggestions?

For any queries, suggestions or issues, please feel free to reach out @ [email protected]

AIO Tests Overview

AIO Tests Automation