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 🙏

© 2026 – Pkg Stats / Ryan Hefner

qa-forge-cypress

v1.1.2

Published

QAnalyzer Cypress reporter + plugin — ingest or file modes via qa-forge-commons

Readme

qa-forge-cypress

Cypress reporter + plugin for QAnalyzer (Jira Forge quality hub).

Install

npm install -D [email protected] [email protected] cypress-multi-reporters

The pinned versions above track the latest release; npm run release:bump keeps them in sync.

Peer: cypress ≥12, mocha ≥10 (Cypress ships Mocha).

Configure

// cypress.config.js
const { defineConfig } = require('cypress');

module.exports = defineConfig({
  reporter: 'cypress-multi-reporters',
  reporterOptions: {
    reporterEnabled: 'qa-forge-cypress',
    qaCypressReporterOptions: {
      // Defaults to mode=off (no credentials required)
      // mode: 'ingest' | 'file' | 'off',
      // projectKey: 'DEMO',
      // resultsPath: './.qa-cypress-results.json',
    },
  },
  e2e: {
    setupNodeEvents(on, config) {
      require('qa-forge-cypress/plugin')(on, config);
      require('qa-forge-cypress/metadata')(on);
      return config;
    },
  },
});

Direct reporter (no multi-reporters):

reporter: 'qa-forge-cypress',

Required: register qa-forge-cypress/plugin so after:run publishes one launch for the whole cypress run (results are buffered across specs).

Modes

| Mode | Behavior | | ---- | -------- | | off (default) | No network / file write | | file | Writes the ingest payload (default ./qanalyzer-results.json) | | ingest | POSTs the payload with format: jest-json |

Env (same as CLI): QANALYZER_MODE, QANALYZER_PROJECT_KEY, QANALYZER_INGEST_URL, QANALYZER_INGEST_TOKEN, QANALYZER_LAUNCH_NAME.

Results bridge path: resultsPath reporter option or QANALYZER_CYPRESS_RESULTS_PATH env var (default: <projectRoot>/.qa-cypress-results.json).

Helpers

const { qa } = require('qa-forge-cypress/mocha');

it('AUTH-101 login', () => {
  qa.suite('Auth');
  qa.step('open form', () => {
    // synchronous callback only — no async/await
    cy.visit('/login');
  });
});

All helpers: qa.title(value), qa.comment(value), qa.suite(value), qa.parameters({ key: value }), qa.ignore(), qa.step(name, syncFn). qa.step() throws if the callback returns a Promise — keep it synchronous and let Cypress commands queue as usual.

Prefer Jira issue keys in test titles. Requires qa-forge-cypress/metadata so cy.task bridges metadata to the Node reporter. Step hierarchy lands on assertionResults[].meta.qa.steps.

Failure screenshots

With qa-forge-cypress/plugin registered, the after:screenshot hook records Cypress failure screenshots automatically. On publish (mode=ingest or file), each failed assertion gets a matching still image (png/jpeg/webp — videos are skipped) uploaded to Forge and attached as meta.qa.attachments. Screenshots are matched to assertions by test title, falling back to spec order; each screenshot is used at most once. Upload errors never fail the Cypress run.

Dual path

Path A — file + CLI:

QANALYZER_MODE=file \
QANALYZER_PROJECT_KEY=DEMO \
npx cypress run
npx qa-forge-api-client --project DEMO --report qanalyzer-results.json

(mode=file already writes a ready-to-ingest payload; CLI re-upload is optional if you prefer the upload workflow.)

Path B — reporter ingest:

QANALYZER_MODE=ingest \
QANALYZER_PROJECT_KEY=DEMO \
QANALYZER_INGEST_URL=... \
QANALYZER_INGEST_TOKEN=... \
npx cypress run