{
  "doc": {
    "id": "ui-coverage/guides/monitor-changes",
    "title": "Monitor UI Coverage changes over time",
    "description": "Set up a repeatable workflow to catch UI Coverage regressions before they merge and track coverage trends across your projects.",
    "section": "ui-coverage",
    "source_path": "/llm/markdown/ui-coverage/guides/monitor-changes.md",
    "version": "e6c8d867c21227247f14714fb5690c7c018983c5",
    "updated_at": "2026-08-08T12:39:37.868Z",
    "headings": [
      {
        "id": "ui-coverage/guides/monitor-changes#monitor-changes",
        "text": "Monitor changes",
        "level": 1
      },
      {
        "id": "ui-coverage/guides/monitor-changes#step-1-record-runs-on-a-regular-cadence",
        "text": "Step 1: Record runs on a regular cadence",
        "level": 2
      },
      {
        "id": "ui-coverage/guides/monitor-changes#step-2-catch-regressions-on-each-pull-request",
        "text": "Step 2: Catch regressions on each pull request",
        "level": 2
      },
      {
        "id": "ui-coverage/guides/monitor-changes#step-3-investigate-a-specific-change",
        "text": "Step 3: Investigate a specific change",
        "level": 2
      },
      {
        "id": "ui-coverage/guides/monitor-changes#step-4-track-trends-across-projects",
        "text": "Step 4: Track trends across projects",
        "level": 2
      },
      {
        "id": "ui-coverage/guides/monitor-changes#see-also",
        "text": "See also",
        "level": 2
      }
    ]
  },
  "chunks": [
    {
      "id": "ui-coverage/guides/monitor-changes#step-1-record-runs-on-a-regular-cadence",
      "doc_id": "ui-coverage/guides/monitor-changes",
      "heading": "Step 1: Record runs on a regular cadence",
      "heading_level": 2,
      "content_markdown": "## Step 1: Record runs on a regular cadence\n\nMonitoring only works when there is something to compare. Two recording patterns give you that:\n\n*   **On every pull request**: record a run for each PR so you can compare it against your base branch. This is what surfaces coverage regressions while they can still be fixed cheaply.\n*   **On a schedule**: add a recurring job to your CI (for example, a nightly cron workflow) that records a run against a stable environment. Scheduled runs give you a consistent point of comparison that isn't affected by which files a particular PR happened to touch.\n\nWhen a run is split across parallel machines or multiple `cypress run` calls, combine those specs into a single [Cypress run](/llm/markdown/cloud/features/recorded-runs.md) with the [`--group` flag](/llm/markdown/cloud/features/smart-orchestration/parallelization.md#Grouping-test-runs) so each report reflects your entire suite rather than a slice of it.\n\nOnce runs are recording, connect [Slack](/llm/markdown/cloud/integrations/slack.md) or [Microsoft Teams](/llm/markdown/cloud/integrations/microsoft-teams.md) so your team is alerted whenever a run finishes, with Slack surfacing UI Coverage results directly. For scheduled runs especially, this is what turns a nightly regression into an alert rather than a report no one opens.\n",
      "section": "ui-coverage",
      "anchors": [
        "step-1-record-runs-on-a-regular-cadence"
      ],
      "path": "/llm/json/chunked/ui-coverage/guides/monitor-changes.json",
      "token_estimate": 249
    },
    {
      "id": "ui-coverage/guides/monitor-changes#step-2-catch-regressions-on-each-pull-request",
      "doc_id": "ui-coverage/guides/monitor-changes",
      "heading": "Step 2: Catch regressions on each pull request",
      "heading_level": 2,
      "content_markdown": "## Step 2: Catch regressions on each pull request\n\nWith a run recorded for every PR, compare it against the base branch to see the exact coverage impact of the change.\n\n*   For a **manual review**, open [Branch Review](/llm/markdown/ui-coverage/guides/compare-reports.md) and compare the PR run against your base branch. The report highlights new untested elements and links introduced by the change, so you can decide whether to add a test or ignore the element with configuration.\n*   To **enforce a policy automatically**, add a Results API check to CI that fails the build when new gaps appear. See [Block pull requests and set policies](/llm/markdown/ui-coverage/guides/block-pull-requests.md) for a status-check workflow and a baseline-comparison script that fails only on _new_ untested elements.\n*   To **surface the change in code review**, connect a version control integration ([GitHub](/llm/markdown/cloud/integrations/github.md#Pull-request-comments), [GitLab](/llm/markdown/cloud/integrations/gitlab.md#Merge-Request-comments), or [Bitbucket](/llm/markdown/cloud/integrations/bitbucket.md#Pull-Request-comments)). Cypress Cloud comments on the pull request with the run summary and a link straight to Branch Review, putting the coverage comparison one click from the reviewer.\n",
      "section": "ui-coverage",
      "anchors": [
        "step-2-catch-regressions-on-each-pull-request"
      ],
      "path": "/llm/json/chunked/ui-coverage/guides/monitor-changes.json",
      "token_estimate": 216
    },
    {
      "id": "ui-coverage/guides/monitor-changes#step-3-investigate-a-specific-change",
      "doc_id": "ui-coverage/guides/monitor-changes",
      "heading": "Step 3: Investigate a specific change",
      "heading_level": 2,
      "content_markdown": "## Step 3: Investigate a specific change\n\nWhen a monitoring run or a PR shows an unexpected shift, use [Branch Review](/llm/markdown/ui-coverage/guides/compare-reports.md) to pin down the cause. Its dropdowns let you compare any two runs, so you can:\n\n*   Compare a nightly run against the previous night's to catch drift in the application.\n*   Step back through runs to find the exact commit that introduced a new untested element or link.\n*   Confirm that a fix had the intended effect before sharing it with your team.\n\nWhen you find a real gap, follow [Address coverage gaps](/llm/markdown/ui-coverage/guides/address-coverage-gaps.md) to close it.\n",
      "section": "ui-coverage",
      "anchors": [
        "step-3-investigate-a-specific-change"
      ],
      "path": "/llm/json/chunked/ui-coverage/guides/monitor-changes.json",
      "token_estimate": 131
    },
    {
      "id": "ui-coverage/guides/monitor-changes#step-4-track-trends-across-projects",
      "doc_id": "ui-coverage/guides/monitor-changes",
      "heading": "Step 4: Track trends across projects",
      "heading_level": 2,
      "content_markdown": "## Step 4: Track trends across projects\n\nIndividual comparisons answer \"what changed between these two runs?\" To answer \"how is coverage trending over weeks and months?\", use the [Enterprise Reporting](/llm/markdown/cloud/features/analytics/enterprise-reporting.md#UI-Coverage) area of Cypress Cloud, available on the Enterprise plan. It rolls trends up across every project in your organization, not just one, so you can view high-level UI Coverage trends across all projects and runs, download reports, or pull the data through the [data extract API](/llm/markdown/cloud/integrations/data-extract-api.md) for your own dashboards.\n",
      "section": "ui-coverage",
      "anchors": [
        "step-4-track-trends-across-projects"
      ],
      "path": "/llm/json/chunked/ui-coverage/guides/monitor-changes.json",
      "token_estimate": 107
    },
    {
      "id": "ui-coverage/guides/monitor-changes#see-also",
      "doc_id": "ui-coverage/guides/monitor-changes",
      "heading": "See also",
      "heading_level": 2,
      "content_markdown": "## See also\n\n*   [Compare reports](/llm/markdown/ui-coverage/guides/compare-reports.md): the full Branch Review workflow for diffing two runs.\n*   [Block pull requests and set policies](/llm/markdown/ui-coverage/guides/block-pull-requests.md): automate the regression gate in CI.\n*   [Address coverage gaps](/llm/markdown/ui-coverage/guides/address-coverage-gaps.md): close the gaps your monitoring surfaces.\n",
      "section": "ui-coverage",
      "anchors": [
        "see-also"
      ],
      "path": "/llm/json/chunked/ui-coverage/guides/monitor-changes.json",
      "token_estimate": 51
    }
  ]
}