QAM Hub
Home / Blog / Test Management for Cypress: History, Reporting, and Traceability

Test Management for Cypress: History, Reporting, and Traceability

By Mike Krasnovskyi, Head of Automation at QA Madness · Published 2026-06-16
Cypress test results accumulating into run history and trends in a test management system

Test management for Cypress means connecting your Cypress runs to a test management system (TMS) so results gain history, traceability to manual cases, and a single coverage view — none of which Cypress provides on its own without paying for its cloud service. Cypress is an excellent test runner, but it is not a system of record.

This guide explains where Cypress's built-in reporting falls short, why run history pushes you toward a paid cloud, and how a TMS fills those gaps using the Mochawesome report your Cypress suite can already produce.

Where Cypress's built-in reporting falls short

Cypress is great at running tests. Reporting on them over time is a different story, and teams hit the same three limitations:

A test management system sits on top of Cypress and addresses all three: persistent history, traceability to manual cases and requirements, and one combined coverage view — without metering your run history. We cover the broader idea in what a test management system is.

What a TMS adds to a Cypress workflow

When Cypress results flow into QAM Hub, each run becomes durable, searchable data instead of a CI log that disappears on the next build:

QAM Hub per-test detail for a Cypress run showing status, stack trace, retries, and failure screenshot

What the Cypress integration handles specifically

QAM Hub reads the Cypress Mochawesome JSON report (from cypress-mochawesome-reporter or standard Mochawesome). On top of the general capabilities, the Cypress integration takes care of the things that usually make Cypress reporting misleading:

How to connect Cypress to QAM Hub

Because Cypress has no native after-run reporter, QAM Hub's integration builds on Mochawesome. Setup is three steps: enable Mochawesome, then submit the report either automatically from an after:run hook or via a CLI command in CI.

Step 1 — install and enable Mochawesome

npm i -D @qamadness/qam-cypress-reporter cypress-mochawesome-reporter mochawesome

Register the reporter in cypress/support/e2e.js:

import 'cypress-mochawesome-reporter/register';

And configure it in cypress.config.js so it writes a JSON report:

const { defineConfig } = require('cypress');

module.exports = defineConfig({
  reporter: 'cypress-mochawesome-reporter',
  reporterOptions: {
    reportDir: 'cypress/reports',
    overwrite: false,
    html: false,
    json: true,
    saveJson: true,
    embeddedScreenshots: true,
    inlineAssets: true,
  },
  e2e: {
    setupNodeEvents(on, config) {
      require('cypress-mochawesome-reporter/plugin')(on);
      return config;
    },
  },
});

Step 2 (Option A) — submit automatically from an after:run hook

This is the fully automatic route — results submit when cypress run finishes, with no extra script:

const { submitToQAM } = require('@qamadness/qam-cypress-reporter');

module.exports = defineConfig({
  // ...reporter options above...
  e2e: {
    setupNodeEvents(on, config) {
      require('cypress-mochawesome-reporter/plugin')(on);

      on('after:run', async () => {
        await submitToQAM({
          apiUrl: process.env.QAM_API_URL,
          projectId: process.env.QAM_PROJECT_ID,
          runName: `CI Run ${process.env.CI_BUILD_NUMBER ?? new Date().toISOString()}`,
          // apiToken is read from QAM_API_TOKEN by default
        });
      });

      return config;
    },
  },
});

Then just run npx cypress run and results submit automatically.

Step 2 (Option B) — submit from CI with the CLI

If you prefer to keep submission as an explicit pipeline step, use the bundled CLI after the run:

{
  "scripts": {
    "cy:run": "cypress run",
    "cy:submit": "qam-submit-cypress",
    "cy:test": "npm run cy:run && npm run cy:submit"
  }
}

The CLI reads QAM_API_URL, QAM_PROJECT_ID, and QAM_API_TOKEN from the environment (store the token as a CI secret). Generate the token in QAM Hub under Profile → API Tokens. This is also where your pipeline can attach optional CI metadata — branch, commit, environment, and build URL — to the run.

Alternative — upload the report manually

You can also drag-and-drop the Mochawesome JSON file into QAM Hub's automation section. The framework is detected automatically, so there is no separate Cypress-versus-Playwright setup on upload. This is a useful fallback while you wire up CI — though a manual upload won't include the CI metadata a pipeline would attach.

Linking Cypress tests to manual cases

To connect an automated result to its manual test case, prefix the Cypress test title with TC-<number> matching the case in QAM Hub:

it('TC-17: adds item to cart', () => {
  // ...
});

QAM Hub then builds a live bridge between the automated execution and the manual case — and a single Cypress test can cover several manual cases at once. From a manual case, you can trace straight to its automated execution history, which is what makes your coverage picture honest during the move from manual testing to automation. We cover that journey in manual to automation: what to automate first.

 QAM Hub manual test case linked to its Cypress automated execution history via a TC number

Seeing whether your automation is trustworthy

Once runs flow in, QAM Hub's Test Explorer answers the questions a raw Cypress report cannot: is the suite green, is it stable, and is it actually covering the cases you care about. You can drill into any test for a run-by-run timeline and duration trend, quarantine flaky tests so they stop polluting your health metrics, and slice by suite, framework, branch, or environment. Tied to requirements traceability, this connects your Cypress suite back to what the release needs to deliver — see the requirements traceability matrix.

QAM Hub Test Explorer showing Cypress pass rate, flakiness, stability score, and trend charts over time

Frequently asked questions

Does Cypress need a separate test management tool?

Cypress runs tests but does not store history, link results to manual cases, or show coverage on its own — and its historical dashboards live in the paid Cypress Cloud. A TMS adds persistent history, traceability, and combined manual-plus-automated coverage without metering your run history.

How do Cypress results get into the TMS?

Through the Mochawesome JSON report. You can submit it automatically from an after:run hook, run a CLI command in CI, or drag-and-drop the JSON file in the UI. The framework is detected automatically.

Do I still need Cypress Cloud?

Not for test history and reporting. A TMS keeps your run history, flakiness trends, and per-test detail independently of Cypress Cloud, so history is not a metered, paid feature.

How are flaky tests and skips handled?

A test that only passes after a retry is marked flaky rather than a clean pass, and all skip types — .skip(), runtime skips, and tests aborted by a failing hook — are counted correctly, so your totals stay accurate.

Where does the branch and commit info come from?

From your pipeline. CI metadata — branch, commit SHA and message, environment, build URL, and who triggered the run — is optional: QAM Hub stores and displays it when your CI passes it along with the report. On a manual JSON upload through the UI, these fields are usually empty.

Can one Cypress test cover several manual cases?

Yes. Using the TC-<number> convention in the test title, a single Cypress test can link to multiple manual test cases at once.

Summary

Cypress is a strong test runner, but its built-in reporting is thin and real run history is a paid cloud feature. Connecting Cypress to a test management system gives those runs persistent history, honest flakiness and skip handling, traceability to manual cases, and one combined coverage view — built on the Mochawesome report your suite can already produce.

QAM Hub is a test management system built by QA Madness, a software testing and QA automation company. It ingests Cypress and Playwright results, links them to manual cases, and reports coverage and trends in one workspace — built by QA engineers who automate testing every day.