{
  "doc": {
    "id": "ui-coverage/get-started/setup",
    "title": "Get started with Cypress UI Coverage",
    "description": "Record a run with Test Replay, read your UI Coverage report, and tune it with App Quality configuration — no code changes or instrumentation required.",
    "section": "ui-coverage",
    "source_path": "/llm/markdown/ui-coverage/get-started/setup.md",
    "version": "fbc9225067c51c52ee13224e3b702cf8a025ec12",
    "updated_at": "2026-08-14T12:36:26.878Z",
    "headings": [
      {
        "id": "ui-coverage/get-started/setup#get-started-with-ui-coverage",
        "text": "Get started with UI Coverage",
        "level": 1
      },
      {
        "id": "ui-coverage/get-started/setup#what-youll-need",
        "text": "What you'll need",
        "level": 2
      },
      {
        "id": "ui-coverage/get-started/setup#step-1-start-your-ui-coverage-trial",
        "text": "Step 1: Start your UI Coverage trial",
        "level": 2
      },
      {
        "id": "ui-coverage/get-started/setup#step-2-record-a-run-with-test-replay",
        "text": "Step 2: Record a run with Test Replay",
        "level": 2
      },
      {
        "id": "ui-coverage/get-started/setup#step-3-explore-your-ui-coverage-report",
        "text": "Step 3: Explore your UI Coverage report",
        "level": 2
      },
      {
        "id": "ui-coverage/get-started/setup#step-4-tune-your-reports-with-app-quality-configuration",
        "text": "Step 4: Tune your reports with App Quality configuration",
        "level": 2
      },
      {
        "id": "ui-coverage/get-started/setup#step-5-enforce-coverage-in-ci-optional",
        "text": "Step 5: Enforce coverage in CI (optional)",
        "level": 2
      },
      {
        "id": "ui-coverage/get-started/setup#next-steps",
        "text": "Next steps",
        "level": 2
      },
      {
        "id": "ui-coverage/get-started/setup#identify-coverage-gaps",
        "text": "Identify coverage gaps",
        "level": 3
      },
      {
        "id": "ui-coverage/get-started/setup#address-coverage-gaps",
        "text": "Address coverage gaps",
        "level": 3
      },
      {
        "id": "ui-coverage/get-started/setup#reduce-noise",
        "text": "Reduce noise",
        "level": 3
      },
      {
        "id": "ui-coverage/get-started/setup#compare-reports",
        "text": "Compare reports",
        "level": 3
      },
      {
        "id": "ui-coverage/get-started/setup#monitor-changes",
        "text": "Monitor changes",
        "level": 3
      },
      {
        "id": "ui-coverage/get-started/setup#work-with-ai-agents",
        "text": "Work with AI agents",
        "level": 3
      },
      {
        "id": "ui-coverage/get-started/setup#see-also",
        "text": "See also",
        "level": 2
      }
    ]
  },
  "content": {
    "type": "root",
    "children": [
      {
        "type": "heading",
        "depth": 1,
        "children": [
          {
            "type": "text",
            "value": "Get started with UI Coverage"
          }
        ]
      },
      {
        "type": "paragraph",
        "children": [
          {
            "type": "text",
            "value": "UI Coverage turns every run you already record to Cypress Cloud into a visual map of which interactive elements your tests exercise and which they miss, plus a coverage score you can track over time. There's nothing to install and no code to instrument: reports are generated in Cypress Cloud from the "
          },
          {
            "type": "link",
            "title": null,
            "url": "/llm/markdown/cloud/features/test-replay.md",
            "children": [
              {
                "type": "text",
                "value": "Test Replay"
              }
            ]
          },
          {
            "type": "text",
            "value": " data your runs already capture. If you record to Cypress Cloud with Test Replay, you can be reading your first report in minutes."
          }
        ]
      },
      {
        "type": "paragraph",
        "children": [
          {
            "type": "text",
            "value": "UI Coverage turns your runs into a visual map of the interactive elements your tests exercise and the ones they miss, with no code changes or instrumentation. "
          },
          {
            "type": "link",
            "title": null,
            "url": "https://www.cypress.io/ui-coverage?utm_medium=premium-solution-tip&utm_source=docs.cypress.io&utm_content=Schedule%20a%20demo",
            "children": [
              {
                "type": "text",
                "value": "Schedule a demo"
              }
            ]
          },
          {
            "type": "text",
            "value": "."
          }
        ]
      },
      {
        "type": "heading",
        "depth": 2,
        "children": [
          {
            "type": "text",
            "value": "What you'll need"
          }
        ]
      },
      {
        "type": "paragraph",
        "children": [
          {
            "type": "text",
            "value": "Before you start, make sure you have:"
          }
        ]
      },
      {
        "type": "list",
        "ordered": false,
        "start": null,
        "spread": false,
        "children": [
          {
            "type": "listItem",
            "spread": false,
            "checked": null,
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "A Cypress project recording to "
                  },
                  {
                    "type": "link",
                    "title": null,
                    "url": "/llm/markdown/cloud/get-started/introduction.md",
                    "children": [
                      {
                        "type": "text",
                        "value": "Cypress Cloud"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " with a run or two already recorded."
                  }
                ]
              }
            ]
          },
          {
            "type": "listItem",
            "spread": false,
            "checked": null,
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "link",
                    "title": null,
                    "url": "/llm/markdown/cloud/features/test-replay.md",
                    "children": [
                      {
                        "type": "text",
                        "value": "Test Replay"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " enabled on the project. UI Coverage reports are built entirely from Test Replay data, so a run recorded with Test Replay off produces no report."
                  }
                ]
              }
            ]
          },
          {
            "type": "listItem",
            "spread": false,
            "checked": null,
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Cypress v13 or later, the minimum version that captures Test Replay data."
                  }
                ]
              }
            ]
          },
          {
            "type": "listItem",
            "spread": false,
            "checked": null,
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "UI Coverage enabled for your organization. UI Coverage isn't included in standard Cloud plans. "
                  },
                  {
                    "type": "link",
                    "title": null,
                    "url": "#Step-1-Start-your-UI-Coverage-trial",
                    "children": [
                      {
                        "type": "text",
                        "value": "Start a trial"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " to enable it for your projects."
                  }
                ]
              }
            ]
          }
        ]
      },
      {
        "type": "paragraph",
        "children": [
          {
            "type": "text",
            "value": "You don't need to change your tests, add a plugin, or write any configuration to get a report. Configuration is opt-in and comes later, once you want to "
          },
          {
            "type": "link",
            "title": null,
            "url": "#Step-4-Tune-your-reports-with-App-Quality-configuration",
            "children": [
              {
                "type": "text",
                "value": "sharpen the results"
              }
            ]
          },
          {
            "type": "text",
            "value": "."
          }
        ]
      },
      {
        "type": "heading",
        "depth": 2,
        "children": [
          {
            "type": "text",
            "value": "Step 1: Start your UI Coverage trial"
          }
        ]
      },
      {
        "type": "paragraph",
        "children": [
          {
            "type": "text",
            "value": "UI Coverage is enabled through a free trial. You'll get a personalized walkthrough that uses your existing recorded runs, so you can see exactly where your testing gaps are across your real projects before writing a single new test."
          }
        ]
      },
      {
        "type": "paragraph",
        "children": [
          {
            "type": "link",
            "title": null,
            "url": "https://www.cypress.io/ui-coverage?utm_medium=get-started-page&utm_source=docs.cypress.io&utm_content=Request%20trial",
            "children": [
              {
                "type": "text",
                "value": "Request trial ➜"
              }
            ]
          }
        ]
      },
      {
        "type": "heading",
        "depth": 2,
        "children": [
          {
            "type": "text",
            "value": "Step 2: Record a run with Test Replay"
          }
        ]
      },
      {
        "type": "paragraph",
        "children": [
          {
            "type": "text",
            "value": "UI Coverage needs a run recorded to Cypress Cloud with Test Replay enabled. If you're already recording runs with Test Replay on, you can skip ahead to "
          },
          {
            "type": "link",
            "title": null,
            "url": "#Step-3-Explore-your-UI-Coverage-report",
            "children": [
              {
                "type": "text",
                "value": "Step 3"
              }
            ]
          },
          {
            "type": "text",
            "value": " and open an existing run."
          }
        ]
      },
      {
        "type": "paragraph",
        "children": [
          {
            "type": "text",
            "value": "To record a new run, pass `--record` and your project's record key to `cypress run`:"
          }
        ]
      },
      {
        "type": "list",
        "ordered": false,
        "start": null,
        "spread": false,
        "children": [
          {
            "type": "listItem",
            "spread": false,
            "checked": null,
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "npm"
                  }
                ]
              }
            ]
          },
          {
            "type": "listItem",
            "spread": false,
            "checked": null,
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Yarn"
                  }
                ]
              }
            ]
          },
          {
            "type": "listItem",
            "spread": false,
            "checked": null,
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "pnpm"
                  }
                ]
              }
            ]
          },
          {
            "type": "listItem",
            "spread": false,
            "checked": null,
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Bun"
                  }
                ]
              }
            ]
          }
        ]
      },
      {
        "type": "code",
        "lang": null,
        "meta": null,
        "value": "npx cypress run --record --key <your-record-key>"
      },
      {
        "type": "code",
        "lang": null,
        "meta": null,
        "value": "yarn cypress run --record --key <your-record-key>"
      },
      {
        "type": "code",
        "lang": null,
        "meta": null,
        "value": "pnpm cypress run --record --key <your-record-key>"
      },
      {
        "type": "code",
        "lang": null,
        "meta": null,
        "value": "bunx cypress run --record --key <your-record-key>"
      },
      {
        "type": "paragraph",
        "children": [
          {
            "type": "text",
            "value": "New to recording? Follow "
          },
          {
            "type": "link",
            "title": null,
            "url": "/llm/markdown/cloud/get-started/setup.md",
            "children": [
              {
                "type": "text",
                "value": "Record a run to Cypress Cloud"
              }
            ]
          },
          {
            "type": "text",
            "value": " for the full setup, and confirm "
          },
          {
            "type": "link",
            "title": null,
            "url": "/llm/markdown/cloud/features/test-replay.md",
            "children": [
              {
                "type": "text",
                "value": "Test Replay"
              }
            ]
          },
          {
            "type": "text",
            "value": " is enabled in your project settings."
          }
        ]
      },
      {
        "type": "heading",
        "depth": 2,
        "children": [
          {
            "type": "text",
            "value": "Step 3: Explore your UI Coverage report"
          }
        ]
      },
      {
        "type": "paragraph",
        "children": [
          {
            "type": "text",
            "value": "After a run finishes recording, open it in Cypress Cloud and select the UI Coverage tab. A report is generated automatically for every recorded run, covering every unique state your tests reached, in both end-to-end and component testing."
          }
        ]
      },
      {
        "type": "paragraph",
        "children": [
          {
            "type": "text",
            "value": "Your report answers four questions:"
          }
        ]
      },
      {
        "type": "list",
        "ordered": false,
        "start": null,
        "spread": false,
        "children": [
          {
            "type": "listItem",
            "spread": false,
            "checked": null,
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "What's my overall coverage? The "
                  },
                  {
                    "type": "link",
                    "title": null,
                    "url": "/llm/markdown/ui-coverage/faq.md#How-is-the-UI-Coverage-score-calculated",
                    "children": [
                      {
                        "type": "text",
                        "value": "coverage score"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " is the share of interactive elements your tests exercised."
                  }
                ]
              }
            ]
          },
          {
            "type": "listItem",
            "spread": false,
            "checked": null,
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Which pages need the most attention? Each "
                  },
                  {
                    "type": "link",
                    "title": null,
                    "url": "/llm/markdown/ui-coverage/core-concepts/views.md",
                    "children": [
                      {
                        "type": "text",
                        "value": "view"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " (a page or state of your app) gets its own score, so you can rank pages and weigh each one against how critical it is to your users."
                  }
                ]
              }
            ]
          },
          {
            "type": "listItem",
            "spread": false,
            "checked": null,
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "What did my tests miss on a page? Drilling into a view lists its untested "
                  },
                  {
                    "type": "link",
                    "title": null,
                    "url": "/llm/markdown/ui-coverage/core-concepts/interactivity.md#Interactive-Elements",
                    "children": [
                      {
                        "type": "text",
                        "value": "interactive elements"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": ", each with a full-page, inspectable DOM snapshot showing exactly where it is."
                  }
                ]
              }
            ]
          },
          {
            "type": "listItem",
            "spread": false,
            "checked": null,
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Which pages do my tests never reach? "
                  },
                  {
                    "type": "link",
                    "title": null,
                    "url": "/llm/markdown/ui-coverage/core-concepts/interactivity.md#Untested-Links",
                    "children": [
                      {
                        "type": "text",
                        "value": "Untested links"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " surface pages your tests link to but never visit, so you can see the flows your suite is missing entirely."
                  }
                ]
              }
            ]
          }
        ]
      },
      {
        "type": "paragraph",
        "children": [
          {
            "type": "text",
            "value": "The UI Coverage tab: an overall coverage score, a per-view breakdown, and navigation to untested links, tested elements, and untested elements."
          }
        ]
      },
      {
        "type": "paragraph",
        "children": [
          {
            "type": "text",
            "value": "Start with your lowest-scoring critical views. The "
          },
          {
            "type": "link",
            "title": null,
            "url": "/llm/markdown/ui-coverage/guides/identify-coverage-gaps.md",
            "children": [
              {
                "type": "text",
                "value": "Identify coverage gaps"
              }
            ]
          },
          {
            "type": "text",
            "value": " guide walks through this workflow step by step, and "
          },
          {
            "type": "link",
            "title": null,
            "url": "/llm/markdown/ui-coverage/guides/address-coverage-gaps.md",
            "children": [
              {
                "type": "text",
                "value": "Address coverage gaps"
              }
            ]
          },
          {
            "type": "text",
            "value": " shows how to close each gap, including generating a test for an untested element with "
          },
          {
            "type": "link",
            "title": null,
            "url": "/llm/markdown/ui-coverage/faq.md#What-is-Test-Generation-in-Cypress-UI-Coverage",
            "children": [
              {
                "type": "text",
                "value": "Test Generation"
              }
            ]
          },
          {
            "type": "text",
            "value": "."
          }
        ]
      },
      {
        "type": "heading",
        "depth": 2,
        "children": [
          {
            "type": "text",
            "value": "Step 4: Tune your reports with App Quality configuration"
          }
        ]
      },
      {
        "type": "paragraph",
        "children": [
          {
            "type": "text",
            "value": "Your first report is often noisier than the real gaps in your suite. Third-party widgets (chat launchers, cookie banners) count as untested elements, and links to pages you'll never test (identity providers, marketing sites) count against your score. A few lines of configuration remove that noise so every gap the report shows is a real one."
          }
        ]
      },
      {
        "type": "paragraph",
        "children": [
          {
            "type": "text",
            "value": "Configuration lives in Cypress Cloud, not in your repository. Open your project's Project Settings, select the App Quality tab, and edit the configuration as JSON. This example excludes a support chat widget and a third-party login page:"
          }
        ]
      },
      {
        "type": "paragraph",
        "children": [
          {
            "type": "text",
            "value": "App Quality Config"
          }
        ]
      },
      {
        "type": "code",
        "lang": null,
        "meta": null,
        "value": "{  \"elementFilters\": [    {      \"selector\": \"#intercom-container, #intercom-container *\",      \"include\": false,      \"comment\": \"Support chat widget rendered on every page\"    }  ],  \"viewFilters\": [    {      \"pattern\": \"https://auth.mycompany.com/*\",      \"include\": false,      \"comment\": \"Third-party identity provider — not our app to test\"    }  ]}"
      },
      {
        "type": "paragraph",
        "children": [
          {
            "type": "text",
            "value": "After saving, you don't need to re-run your tests: reprocess any historical run from its Properties tab to see the effect of your change immediately. UI Coverage offers a full set of configuration options you can add incrementally:"
          }
        ]
      },
      {
        "type": "table",
        "align": [
          null,
          null
        ],
        "children": [
          {
            "type": "tableRow",
            "children": [
              {
                "type": "tableCell",
                "children": [
                  {
                    "type": "text",
                    "value": "Your goal"
                  }
                ]
              },
              {
                "type": "tableCell",
                "children": [
                  {
                    "type": "text",
                    "value": "Use"
                  }
                ]
              }
            ]
          },
          {
            "type": "tableRow",
            "children": [
              {
                "type": "tableCell",
                "children": [
                  {
                    "type": "text",
                    "value": "Remove third-party widgets and other elements from the report"
                  }
                ]
              },
              {
                "type": "tableCell",
                "children": [
                  {
                    "type": "link",
                    "title": null,
                    "url": "/llm/markdown/ui-coverage/configuration/elementfilters.md",
                    "children": [
                      {
                        "type": "text",
                        "value": "`elementFilters`"
                      }
                    ]
                  }
                ]
              }
            ]
          },
          {
            "type": "tableRow",
            "children": [
              {
                "type": "tableCell",
                "children": [
                  {
                    "type": "text",
                    "value": "Remove entire pages, and links to them, from the report"
                  }
                ]
              },
              {
                "type": "tableCell",
                "children": [
                  {
                    "type": "link",
                    "title": null,
                    "url": "/llm/markdown/ui-coverage/configuration/viewfilters.md",
                    "children": [
                      {
                        "type": "text",
                        "value": "`viewFilters`"
                      }
                    ]
                  }
                ]
              }
            ]
          },
          {
            "type": "tableRow",
            "children": [
              {
                "type": "tableCell",
                "children": [
                  {
                    "type": "text",
                    "value": "Group related URLs into a single view"
                  }
                ]
              },
              {
                "type": "tableCell",
                "children": [
                  {
                    "type": "link",
                    "title": null,
                    "url": "/llm/markdown/ui-coverage/configuration/views.md",
                    "children": [
                      {
                        "type": "text",
                        "value": "`views`"
                      }
                    ]
                  }
                ]
              }
            ]
          },
          {
            "type": "tableRow",
            "children": [
              {
                "type": "tableCell",
                "children": [
                  {
                    "type": "text",
                    "value": "Combine repeated or related elements so they count as one"
                  }
                ]
              },
              {
                "type": "tableCell",
                "children": [
                  {
                    "type": "link",
                    "title": null,
                    "url": "/llm/markdown/ui-coverage/configuration/elementgroups.md",
                    "children": [
                      {
                        "type": "text",
                        "value": "`elementGroups`"
                      }
                    ]
                  }
                ]
              }
            ]
          },
          {
            "type": "tableRow",
            "children": [
              {
                "type": "tableCell",
                "children": [
                  {
                    "type": "text",
                    "value": "Rename or stabilize the identity of a single element"
                  }
                ]
              },
              {
                "type": "tableCell",
                "children": [
                  {
                    "type": "link",
                    "title": null,
                    "url": "/llm/markdown/ui-coverage/configuration/elements.md",
                    "children": [
                      {
                        "type": "text",
                        "value": "`elements`"
                      }
                    ]
                  }
                ]
              }
            ]
          },
          {
            "type": "tableRow",
            "children": [
              {
                "type": "tableCell",
                "children": [
                  {
                    "type": "text",
                    "value": "Prioritize your own attributes for identifying elements"
                  }
                ]
              },
              {
                "type": "tableCell",
                "children": [
                  {
                    "type": "link",
                    "title": null,
                    "url": "/llm/markdown/ui-coverage/configuration/significantattributes.md",
                    "children": [
                      {
                        "type": "text",
                        "value": "`significantAttributes`"
                      }
                    ]
                  }
                ]
              }
            ]
          },
          {
            "type": "tableRow",
            "children": [
              {
                "type": "tableCell",
                "children": [
                  {
                    "type": "text",
                    "value": "Stop dynamic or generated attributes from splitting an element"
                  }
                ]
              },
              {
                "type": "tableCell",
                "children": [
                  {
                    "type": "link",
                    "title": null,
                    "url": "/llm/markdown/ui-coverage/configuration/attributefilters.md",
                    "children": [
                      {
                        "type": "text",
                        "value": "`attributeFilters`"
                      }
                    ]
                  }
                ]
              }
            ]
          },
          {
            "type": "tableRow",
            "children": [
              {
                "type": "tableCell",
                "children": [
                  {
                    "type": "text",
                    "value": "Count a custom or plugin command as an interaction"
                  }
                ]
              },
              {
                "type": "tableCell",
                "children": [
                  {
                    "type": "link",
                    "title": null,
                    "url": "/llm/markdown/ui-coverage/configuration/additionalinteractioncommands.md",
                    "children": [
                      {
                        "type": "text",
                        "value": "`additionalInteractionCommands`"
                      }
                    ]
                  }
                ]
              }
            ]
          },
          {
            "type": "tableRow",
            "children": [
              {
                "type": "tableCell",
                "children": [
                  {
                    "type": "text",
                    "value": "Limit which commands count as coverage for specific elements"
                  }
                ]
              },
              {
                "type": "tableCell",
                "children": [
                  {
                    "type": "link",
                    "title": null,
                    "url": "/llm/markdown/ui-coverage/configuration/allowedinteractioncommands.md",
                    "children": [
                      {
                        "type": "text",
                        "value": "`allowedInteractionCommands`"
                      }
                    ]
                  }
                ]
              }
            ]
          },
          {
            "type": "tableRow",
            "children": [
              {
                "type": "tableCell",
                "children": [
                  {
                    "type": "text",
                    "value": "Apply different configuration to runs based on run tags"
                  }
                ]
              },
              {
                "type": "tableCell",
                "children": [
                  {
                    "type": "link",
                    "title": null,
                    "url": "/llm/markdown/ui-coverage/configuration/profiles.md",
                    "children": [
                      {
                        "type": "text",
                        "value": "`profiles`"
                      }
                    ]
                  }
                ]
              }
            ]
          }
        ]
      },
      {
        "type": "paragraph",
        "children": [
          {
            "type": "text",
            "value": "See the "
          },
          {
            "type": "link",
            "title": null,
            "url": "/llm/markdown/ui-coverage/configuration/overview.md",
            "children": [
              {
                "type": "text",
                "value": "Configuration overview"
              }
            ]
          },
          {
            "type": "text",
            "value": " for how every option fits together, including which properties are "
          },
          {
            "type": "link",
            "title": null,
            "url": "/llm/markdown/ui-coverage/configuration/overview.md#Configuration-scope",
            "children": [
              {
                "type": "text",
                "value": "shared"
              }
            ]
          },
          {
            "type": "text",
            "value": " with Cypress Accessibility."
          }
        ]
      },
      {
        "type": "heading",
        "depth": 2,
        "children": [
          {
            "type": "text",
            "value": "Step 5: Enforce coverage in CI (optional)"
          }
        ]
      },
      {
        "type": "paragraph",
        "children": [
          {
            "type": "text",
            "value": "Once you trust your reports, you can hold the line on coverage automatically. The "
          },
          {
            "type": "link",
            "title": null,
            "url": "/llm/markdown/ui-coverage/results-api.md",
            "children": [
              {
                "type": "text",
                "value": "Results API"
              }
            ]
          },
          {
            "type": "text",
            "value": " fetches a run's UI Coverage results in your CI job so your script can fail the build or "
          },
          {
            "type": "link",
            "title": null,
            "url": "/llm/markdown/ui-coverage/guides/block-pull-requests.md",
            "children": [
              {
                "type": "text",
                "value": "block a pull request"
              }
            ]
          },
          {
            "type": "text",
            "value": " when coverage drops below a threshold you set. Enforcement is entirely opt-in and lives in your CI workflow."
          }
        ]
      },
      {
        "type": "heading",
        "depth": 2,
        "children": [
          {
            "type": "text",
            "value": "Next steps"
          }
        ]
      },
      {
        "type": "list",
        "ordered": false,
        "start": null,
        "spread": false,
        "children": [
          {
            "type": "listItem",
            "spread": true,
            "checked": null,
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "["
                  }
                ]
              },
              {
                "type": "heading",
                "depth": 3,
                "children": [
                  {
                    "type": "text",
                    "value": "Identify coverage gaps"
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Go from a recorded run to a prioritized list of the untested buttons, forms, links, and pages in your application."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "](/llm/markdown/ui-coverage/guides/identify-coverage-gaps.md)"
                  }
                ]
              }
            ]
          },
          {
            "type": "listItem",
            "spread": true,
            "checked": null,
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "["
                  }
                ]
              },
              {
                "type": "heading",
                "depth": 3,
                "children": [
                  {
                    "type": "text",
                    "value": "Address coverage gaps"
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Close the gaps that matter by writing targeted tests or generating them directly from untested elements in the report."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "](/llm/markdown/ui-coverage/guides/address-coverage-gaps.md)"
                  }
                ]
              }
            ]
          },
          {
            "type": "listItem",
            "spread": true,
            "checked": null,
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "["
                  }
                ]
              },
              {
                "type": "heading",
                "depth": 3,
                "children": [
                  {
                    "type": "text",
                    "value": "Reduce noise"
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Group views and elements and tune attribute handling so your report reflects your app, not the framework."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "](/llm/markdown/ui-coverage/guides/reduce-noise.md)"
                  }
                ]
              }
            ]
          },
          {
            "type": "listItem",
            "spread": true,
            "checked": null,
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "["
                  }
                ]
              },
              {
                "type": "heading",
                "depth": 3,
                "children": [
                  {
                    "type": "text",
                    "value": "Compare reports"
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "See exactly what a change did to your coverage by comparing any two runs in Branch Review."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "](/llm/markdown/ui-coverage/guides/compare-reports.md)"
                  }
                ]
              }
            ]
          },
          {
            "type": "listItem",
            "spread": true,
            "checked": null,
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "["
                  }
                ]
              },
              {
                "type": "heading",
                "depth": 3,
                "children": [
                  {
                    "type": "text",
                    "value": "Monitor changes"
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Track coverage over time and catch regressions as part of your CI/CD workflow with the Results API."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "](/llm/markdown/ui-coverage/guides/monitor-changes.md)"
                  }
                ]
              }
            ]
          },
          {
            "type": "listItem",
            "spread": true,
            "checked": null,
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "["
                  }
                ]
              },
              {
                "type": "heading",
                "depth": 3,
                "children": [
                  {
                    "type": "text",
                    "value": "Work with AI agents"
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Use Cypress Cloud MCP to pull scores, views, and untested elements from recorded runs and generate tests from your AI coding assistant."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "](/llm/markdown/ui-coverage/work-with-ai-agents.md)"
                  }
                ]
              }
            ]
          }
        ]
      },
      {
        "type": "heading",
        "depth": 2,
        "children": [
          {
            "type": "text",
            "value": "See also"
          }
        ]
      },
      {
        "type": "list",
        "ordered": false,
        "start": null,
        "spread": false,
        "children": [
          {
            "type": "listItem",
            "spread": false,
            "checked": null,
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "link",
                    "title": null,
                    "url": "/llm/markdown/ui-coverage/get-started/introduction.md",
                    "children": [
                      {
                        "type": "text",
                        "value": "What is UI Coverage?"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " explains the product and how it works at a glance."
                  }
                ]
              }
            ]
          },
          {
            "type": "listItem",
            "spread": false,
            "checked": null,
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "link",
                    "title": null,
                    "url": "/llm/markdown/ui-coverage/core-concepts/interactivity.md",
                    "children": [
                      {
                        "type": "text",
                        "value": "Interactivity"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " covers which elements are counted and which commands mark them tested."
                  }
                ]
              }
            ]
          },
          {
            "type": "listItem",
            "spread": false,
            "checked": null,
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "link",
                    "title": null,
                    "url": "/llm/markdown/ui-coverage/core-concepts/views.md",
                    "children": [
                      {
                        "type": "text",
                        "value": "Views"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " explains how the URLs your tests visit become views."
                  }
                ]
              }
            ]
          },
          {
            "type": "listItem",
            "spread": false,
            "checked": null,
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "link",
                    "title": null,
                    "url": "/llm/markdown/ui-coverage/configuration/overview.md",
                    "children": [
                      {
                        "type": "text",
                        "value": "Configuration overview"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " lists every App Quality configuration option and what each one does."
                  }
                ]
              }
            ]
          },
          {
            "type": "listItem",
            "spread": false,
            "checked": null,
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "link",
                    "title": null,
                    "url": "/llm/markdown/ui-coverage/results-api.md",
                    "children": [
                      {
                        "type": "text",
                        "value": "Results API"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " fetches a run's results in CI so you can enforce coverage standards."
                  }
                ]
              }
            ]
          },
          {
            "type": "listItem",
            "spread": false,
            "checked": null,
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "link",
                    "title": null,
                    "url": "/llm/markdown/ui-coverage/faq.md",
                    "children": [
                      {
                        "type": "text",
                        "value": "UI Coverage FAQ"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " answers common questions about scores, gaps, configuration, and troubleshooting."
                  }
                ]
              }
            ]
          },
          {
            "type": "listItem",
            "spread": false,
            "checked": null,
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "link",
                    "title": null,
                    "url": "/llm/markdown/ui-coverage/troubleshooting.md",
                    "children": [
                      {
                        "type": "text",
                        "value": "Troubleshooting"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " maps common report problems to their causes and fixes."
                  }
                ]
              }
            ]
          }
        ]
      }
    ]
  },
  "token_estimate": 1717
}