@qlens/cypress-reporter
v0.1.0
Published
Cypress plugin that posts run summaries and per-spec results to QualityPilot (qlens.dev) CI ingest.
Maintainers
Readme
@qlens/cypress-reporter
Install in 30 seconds
npm install --save-dev @qlens/cypress-reporter
# wire it into setupNodeEvents in cypress.config.ts (snippet below)
QLENS_API_KEY=qlens_... npx cypress run # get key at qlens.dev/dashboard/keys// cypress.config.ts
import { defineConfig } from "cypress";
import { registerQlensReporter } from "@qlens/cypress-reporter";
export default defineConfig({
e2e: {
setupNodeEvents(on, config) {
registerQlensReporter(on, { sendCases: true });
return config;
},
},
});What you get
- Real-time test health dashboard — see flaky tests, retry counts, failure trends per spec: qlens.dev/dashboard/runs
- Failed tests get an AI-proposed fix as a GitHub PR (within an hour): qlens.dev/dashboard/auto-fixes
- Slack notifications on each ready-for-review PR: qlens.dev/dashboard/settings
Need a key?
Sign in at https://www.qlens.dev with GitHub. Free tier includes 10 auto-fixes/month.
Posts Cypress run summaries + optional per-spec results to QualityPilot CI ingest. Zero code changes inside specs, one snippet in cypress.config.ts.
Why a plugin (not a Mocha reporter)?
Cypress runs each spec file in its own browser process and exposes the
mocha reporter slot only to per-spec, in-browser reporters. To get a
single aggregated upload across the whole run we hook into the plugin
event channel (after:spec, after:run) which fires in the parent Node
process. Same payload as @qlens/jest-reporter and @qlens/playwright-reporter.
Configure
Create an API key at qlens.dev/dashboard/keys (Pro+ plans), then:
// cypress.config.ts
import { defineConfig } from "cypress";
import { registerQlensReporter } from "@qlens/cypress-reporter";
export default defineConfig({
e2e: {
setupNodeEvents(on, config) {
registerQlensReporter(on, {
// apiKey: process.env.QLENS_API_KEY, // default
// repo: process.env.GITHUB_REPOSITORY, // default
sendCases: true, // include per-case data (default: false)
maxCases: 5000, // hard cap
});
return config;
},
},
});Set QLENS_API_KEY in your CI secrets.
Environment variables (auto-detected)
| Var | Purpose |
|-----|---------|
| QLENS_API_KEY | Required. Generate at https://www.qlens.dev/dashboard/keys |
| QLENS_ENDPOINT | Override ingest URL (self-hosted) |
| GITHUB_REPOSITORY | Repo in owner/name — set by GitHub Actions |
| GITHUB_SHA | Commit SHA — set by GitHub Actions |
| GITHUB_REF_NAME | Branch name — set by GitHub Actions |
Flakiness
Cypress retries are respected. If a test ends passed but its
attempts[] array has more than one entry, it's counted as flaky, not
passed. This shows up in the QualityPilot dashboard as a flakiness trend.
Enable retries in your config so flakiness has a chance to surface:
export default defineConfig({
retries: { runMode: 2, openMode: 0 },
// ...
});Fail-safe
The reporter never fails the test run. Network errors, 4xx/5xx from the
ingest, missing API key — all logged ([qlens]) and ignored. Your CI
green stays green.
GitHub Actions example
- name: Run Cypress
env:
QLENS_API_KEY: ${{ secrets.QLENS_API_KEY }}
run: npx cypress runDocs
Full API schema: qlens.dev/docs/ci-ingest.
License
MIT — built by IK Lab.
