Cypress test reporting
A local mochawesome or JUnit report is fine for one run — but it’s per-run and local, with no history across CI. Qualflare ingests your Cypress results and turns them into hosted, historical reporting: AI clusters failures by root cause, scores flaky tests from Cypress’s own retry data, and rates each launch’s risk — across every run.
Why local Cypress reports aren’t enough
Cypress is built on Mocha, so you report through Mocha reporters — the bundled
junit reporter for XML, or
mochawesome for a local HTML/JSON report. Both are
per-run artifacts: there’s no place that collects results across CI runs, merges the output from
parallel machines, or tells you whether a spec has been getting flakier over the last two weeks.
For that you need somewhere that stores Cypress results over time and analyzes them.
Send Cypress results to Qualflare
Two steps, no new tooling. First, run Cypress with the bundled JUnit reporter (the
[hash] gives each spec a unique file):
# Cypress bundles the JUnit reporter — no extra install
cypress run \
--reporter junit \
--reporter-options "mochaFile=results/cypress-[hash].xml" Then upload the results — globs are supported, so one command covers every spec. The CLI auto-attaches your Git branch and commit:
# Upload every spec's results (globs are supported)
qf my-project collect "results/cypress-*.xml" --format junit
Already on mochawesome? Merge its JSON and upload
that instead:
# Prefer JSON? Generate it with mochawesome, then:
qf my-project collect cypress-results.json --format cypress In CI it’s one extra step after your Cypress run (GitHub Actions shown — GitLab CI, Bitbucket, and Jenkins work the same). Authenticate the CLI once with your Qualflare access token, stored as a CI secret — see the CLI docs.
# .github/workflows/e2e.yml
- name: Run Cypress
run: cypress run --reporter junit --reporter-options "mochaFile=results/cypress-[hash].xml"
- name: Upload results to Qualflare
if: always()
run: qf my-project collect "results/cypress-*.xml" --format junit What you get on top of Cypress
- AI failure clustering. When a flaky
cy.interceptor a broken selector takes down a dozen specs, Qualflare groups them by root cause so you fix the cause, not each symptom. - Flaky scoring from Cypress’s retries. Cypress has built-in test retries; the CLI captures those retry counts and flaky status automatically, and Qualflare scores flakiness across runs.
- Parallel-run aggregation. Upload each CI machine’s XML and Qualflare merges them into a single launch — one picture across your whole parallelized suite.
- Per-launch risk. Each run becomes a launch with a risk rating, the failing areas, and recommended next steps — a ship / don’t-ship signal that arrives with the results.
- History, trends & defects. Pass rate, slowest specs, and flakiness over time across branches — plus a defect you can open straight from a failing run.
How it compares to Cypress Cloud
Cypress Cloud is Cypress’s own hosted dashboard, and it’s genuinely great at what it’s built for — Cypress-native Test Replay, video, screenshots, smart orchestration, and its own flaky detection. If your stack is Cypress-only and that deep native recording is the priority, it’s the natural choice. Qualflare is a cross-framework alternative: it ingests Cypress alongside Playwright, pytest, Jest, JUnit and 20+ more, adds AI root-cause clustering across all of them, and offers a free tier. If you run more than just Cypress and want one AI-driven home for every framework’s results, that’s the gap Qualflare fills.
Get AI analysis on your Cypress runs
Start free — add the JUnit reporter, run qf collect, and get your first AI analysis in minutes.
Qualflare works the same with Playwright, pytest, Jest, JUnit and 20+ more frameworks. Weighing tools? See how it compares to other test management platforms, or browse all framework reporting guides.
Per-spec reports, retries, and the Cypress Cloud question
Cypress has a reporting quirk the other frameworks don’t: it runs each spec file in isolation and writes one report per spec. With the popular Mochawesome reporter, a 40-spec suite produces 40 JSON files — you merge them into a single results file before any tool can see the run as one run:
# Cypress writes one Mochawesome JSON per spec — merge before uploading
npx mochawesome-merge cypress/results/*.json > cypress-results.json
qf my-project collect cypress-results.json Test retries are first-class in Cypress and configured per
mode — typically retry in CI (runMode) but not
during local development (openMode). Each attempt
is recorded, and attempts-that-eventually-passed are precisely the flaky-test signal Qualflare
scores across runs:
// cypress.config.js — retries are the raw signal for flake detection
module.exports = defineConfig({
retries: { runMode: 2, openMode: 0 },
}); And the obvious question — why not Cypress Cloud? If you only run Cypress, Cypress Cloud’s replay and parallelization are excellent and deeply integrated. The trade-off is scope and pricing: it’s Cypress-only and priced per recorded test result. Teams whose pipeline also produces Playwright, pytest, or JUnit results use Qualflare to see every suite in one place — and keep the choice of runner reversible.
Frequently asked questions
How do I send Cypress results to Qualflare?
Cypress is Mocha-based, so the simplest path is its bundled JUnit reporter — no extra install: cypress run --reporter junit --reporter-options "mochaFile=results/cypress-[hash].xml". Then upload with the Qualflare CLI: qf <project> collect "results/cypress-*.xml" --format junit. The CLI attaches your Git branch and commit and creates a tracked launch with AI analysis.
JUnit XML or JSON — which should I use?
Either works. JUnit XML is the zero-install option (the reporter ships with Cypress). If you already use mochawesome, merge its JSON and upload it with --format cypress instead. Both preserve Cypress’s retry and flaky information.
Does Qualflare detect flaky Cypress tests?
Yes. Cypress has built-in test retries (retries: { runMode: 2 }), and the CLI captures those retry counts and flaky status automatically — no extra configuration. Qualflare then scores each test’s flakiness across runs, so you can see which Cypress tests are intermittently failing and whether it’s trending up.
Does it work with Cypress parallelization and CI?
Yes. Run Cypress across as many CI machines or parallel jobs as you like and upload each one’s JUnit XML (globs are supported). Qualflare aggregates them into one launch. Add the upload step after your Cypress run in GitHub Actions, GitLab CI, Bitbucket Pipelines, or Jenkins.
How is this different from Cypress Cloud?
Cypress Cloud is Cypress’s own hosted dashboard — purpose-built for Cypress with Test Replay, video, and its own flaky detection. If deep Cypress-native recording is what you need, it’s excellent. Qualflare is a cross-framework alternative: it ingests Cypress plus 23+ other frameworks (Playwright, pytest, Jest, JUnit…), adds AI root-cause failure clustering across all of them, and has a free tier. Teams running more than just Cypress often prefer one AI home for everything.
Setup reflects the Qualflare CLI (docs.qualflare.com) and Cypress’s bundled reporters as of June 2026. Written by İbrahim Süren, Qualflare.