How to Share Cypress Test Results with Your Team

Cypress generates test results, but sharing them with your team means either paying for Cypress Cloud or pasting terminal output into Slack. If you want hosted results with shareable links, analytics, and notifications without Cypress Cloud pricing, there’s a simpler path.

The Cypress Reporting Problem

Cypress runs tests and prints results to the console. The built-in dashboard experience requires Cypress Cloud (formerly Cypress Dashboard), which is a paid service for teams that need parallelization and analytics.

What Teams Do Instead

1. Cypress Cloud

  • Good feature set: parallelization, analytics, flaky test management
  • Pricing scales with recorded test runs — can get expensive for active teams
  • Tightly coupled to Cypress — doesn’t help if you also run Jest, Playwright, or pytest

2. CI artifacts

  • Cypress screenshots and videos upload as artifacts
  • Recipients need CI access to download zips
  • Artifacts expire (90 days max on GitHub Actions)
  • No analytics, no historical trends

3. Mochawesome reports

  • Generates HTML reports locally, but hosting them is your problem
  • No built-in sharing, analytics, or notification support
  • Another reporter to configure and maintain

4. Terminal output in Slack

  • Loses all context for screenshots and videos
  • Truncated for large suites
  • No way to filter or drill into failures

Better: CTRF + Hosted Reports

Cypress doesn’t produce a report format that Gaffer parses natively (like Playwright HTML or JUnit XML). Instead, the integration uses CTRF (Common Test Report Format) — a standardized JSON format with reporters for 20+ test frameworks including Cypress.

The setup:

  1. Add the cypress-ctrf-json-reporter to your project
  2. Cypress generates a CTRF JSON file after tests run
  3. Upload the CTRF file to Gaffer in CI
  4. Get a shareable URL, Slack notification, and analytics

What This Looks Like

After CI runs:

  • Your team gets a Slack notification with pass/fail summary
  • Anyone can click through to the full hosted report
  • Test analytics accumulate over time: pass rates, flaky tests, slow tests
  • No Cypress Cloud subscription required

Setting Up Cypress Reporting with Gaffer

Step 1: Install the CTRF Reporter

npm install cypress-ctrf-json-reporter --save-dev

Step 2: Configure Cypress

Add the reporter to your cypress.config.ts via the setupNodeEvents hook:

import { defineConfig } from 'cypress';
import { GenerateCtrfReport } from 'cypress-ctrf-json-reporter';

export default defineConfig({
  e2e: {
    setupNodeEvents(on) {
      new GenerateCtrfReport({ on });
    },
  },
});

This generates a ctrf/ctrf-report.json file after each test run. You can customize the output:

new GenerateCtrfReport({
  on,
  outputFile: 'ctrf-report.json',
  outputDir: '.',
});

Step 3: Add the Upload Step to CI

GitHub Actions:

- name: Run Cypress tests
  run: npx cypress run

- name: Upload to Gaffer
  if: always()
  uses: gaffer-sh/gaffer-uploader@v2
  with:
    api-key: ${{ secrets.GAFFER_UPLOAD_TOKEN }}
    report-path: ./ctrf/ctrf-report.json

GitLab CI:

test:
  script:
    - npx cypress run
  after_script:
    - |
      curl -X POST https://app.gaffer.sh/api/upload \
        -H "X-API-Key: $GAFFER_UPLOAD_TOKEN" \
        -F "files=@ctrf/ctrf-report.json" \
        -F 'tags={"commitSha":"'"$CI_COMMIT_SHA"'","branch":"'"$CI_COMMIT_REF_NAME"'"}'

After upload, share the report URL in Slack, GitHub PRs, or Jira. Recipients see structured test results in their browser — no CI access needed.

Slack Notifications

Once you’re uploading results, connect Slack in project settings for automatic notifications:

  • Pass/fail summary with test counts
  • Direct link to the full report
  • Filter by branch — only notify on main, skip feature branches
  • Choose triggers: all runs, failures only, or consecutive failures

Comparing Cypress Reporting Options

FeatureCypress CloudMochawesomeCI ArtifactsGaffer (via CTRF)
Hosted reportsYesSelf-hostDownload zipsYes
Shareable linksYesManualWith CI accessYes
Analytics/trendsYesNoNoYes
Flaky test detectionYesNoNoYes
Slack notificationsYesNoNoYes
Works with other frameworksNoNoN/AYes
ParallelizationYesNoNoNo
Video recordingYesNoVia artifactsNo
PricingPaid (usage-based)FreeFreeFree tier available

When Cypress Cloud Makes Sense

Cypress Cloud is worth it if you need test parallelization (splitting tests across machines), video recording with cloud storage, or you’re all-in on Cypress with no other frameworks.

When Gaffer Makes Sense

Gaffer is a better fit if you want a unified view across multiple frameworks (Cypress + Jest + Playwright), want test analytics without per-seat pricing, or need Slack/webhook notifications with more flexible triggers.

Beyond Cypress: Multi-Framework Support

Since Gaffer works with CTRF, you can upload results from any framework that has a CTRF reporter. One dashboard for:

  • Cypress (via cypress-ctrf-json-reporter)
  • Playwright (native HTML reports)
  • Jest (via jest-ctrf-json-reporter)
  • Vitest (native HTML reports)
  • pytest (via JUnit XML or CTRF)

All results appear in the same project dashboard with unified analytics.

Get Started

Gaffer’s free tier includes 500 MB of storage with 7-day retention. Enough to evaluate the CTRF workflow with your Cypress suite.

Start Free