{
  "doc": {
    "id": "ui-coverage/guides/ignore-views-and-links",
    "title": "Ignore views and links in UI Coverage",
    "description": "Exclude third-party pages, error redirects, and links you never plan to test from UI Coverage with viewFilters, so your coverage score reflects only the parts of your app you own and intend to test.",
    "section": "ui-coverage",
    "source_path": "/llm/markdown/ui-coverage/guides/ignore-views-and-links.md",
    "version": "29f95bf8bb06f320986f3749f5bf09a35a409eab",
    "updated_at": "2026-09-04T10:49:54.630Z",
    "headings": [
      {
        "id": "ui-coverage/guides/ignore-views-and-links#ignore-views-and-links",
        "text": "Ignore views and links",
        "level": 1
      },
      {
        "id": "ui-coverage/guides/ignore-views-and-links#when-to-ignore-views-and-links",
        "text": "When to ignore views and links",
        "level": 2
      },
      {
        "id": "ui-coverage/guides/ignore-views-and-links#step-1-find-the-views-and-links-worth-ignoring",
        "text": "Step 1: Find the views and links worth ignoring",
        "level": 2
      },
      {
        "id": "ui-coverage/guides/ignore-views-and-links#in-the-cloud-ui",
        "text": "In the Cloud UI",
        "level": 3
      },
      {
        "id": "ui-coverage/guides/ignore-views-and-links#with-an-ai-agent",
        "text": "With an AI agent",
        "level": 3
      },
      {
        "id": "ui-coverage/guides/ignore-views-and-links#step-2-add-a-viewfilters-rule",
        "text": "Step 2: Add a viewFilters rule",
        "level": 2
      },
      {
        "id": "ui-coverage/guides/ignore-views-and-links#include-only-your-applications-urls",
        "text": "Include only your application's URLs",
        "level": 3
      },
      {
        "id": "ui-coverage/guides/ignore-views-and-links#exclude-error-pages-in-every-environment",
        "text": "Exclude error pages in every environment",
        "level": 3
      },
      {
        "id": "ui-coverage/guides/ignore-views-and-links#exclude-from-ui-coverage-without-affecting-accessibility",
        "text": "Exclude from UI Coverage without affecting Accessibility",
        "level": 3
      },
      {
        "id": "ui-coverage/guides/ignore-views-and-links#step-3-regenerate-a-run-and-confirm",
        "text": "Step 3: Regenerate a run and confirm",
        "level": 2
      },
      {
        "id": "ui-coverage/guides/ignore-views-and-links#step-4-keep-your-filters-current",
        "text": "Step 4: Keep your filters current",
        "level": 2
      },
      {
        "id": "ui-coverage/guides/ignore-views-and-links#see-also",
        "text": "See also",
        "level": 2
      }
    ]
  },
  "chunks": [
    {
      "id": "ui-coverage/guides/ignore-views-and-links#when-to-ignore-views-and-links",
      "doc_id": "ui-coverage/guides/ignore-views-and-links",
      "heading": "When to ignore views and links",
      "heading_level": 2,
      "content_markdown": "## When to ignore views and links\n\nReach for `viewFilters` when a URL is counted against you but isn't something your team is responsible for testing:\n\n*   **Third-party pages**: Sign-in flows on an external identity provider (Okta, Auth0), a payment processor's hosted checkout, or embedded content you don't control. Your tests pass through them, but their UI isn't yours to cover.\n*   **Links to destinations you'll never test**: Your marketing site, a help center, a status page, or a social profile linked from your app. No test visits them, so no [view](/llm/markdown/ui-coverage/core-concepts/views.md) exists. The link is the only thing UI Coverage sees, and it counts as an [untested link](/llm/markdown/ui-coverage/core-concepts/interactivity.md#Untested-Links). Excluding the destination URL is the way to remove it.\n*   **Redirects and intermediate URLs**: A `/redirect` step or an OAuth callback that tests pass through on the way to somewhere else, rather than a page users land on and interact with.\n*   **Sections outside your goals**: Admin-only tools or informational pages that aren't part of what you set out to test.\n\nIf your goal is instead to _organize_ URLs into named views rather than remove them, use [`views`](/llm/markdown/ui-coverage/configuration/views.md); to remove individual elements rather than whole pages, use [`elementFilters`](/llm/markdown/ui-coverage/configuration/elementfilters.md). See [Which option do I need?](/llm/markdown/ui-coverage/configuration/overview.md#Which-option-do-I-need) for the full comparison.\n",
      "section": "ui-coverage",
      "anchors": [
        "when-to-ignore-views-and-links"
      ],
      "path": "/llm/json/chunked/ui-coverage/guides/ignore-views-and-links.json",
      "token_estimate": 277
    },
    {
      "id": "ui-coverage/guides/ignore-views-and-links#step-1-find-the-views-and-links-worth-ignoring",
      "doc_id": "ui-coverage/guides/ignore-views-and-links",
      "heading": "Step 1: Find the views and links worth ignoring",
      "heading_level": 2,
      "content_markdown": "## Step 1: Find the views and links worth ignoring\n\nStart by finding the URLs that are counted against you but sit outside your testing goals. You can do this in the Cloud UI or from your editor with an AI agent.\n\n### In the Cloud UI\n\nOpen the **UI Coverage** tab of a recorded run and work through two sections:\n\n*   **Views**: Scan for pages that appear in your report but you don't own or intend to test, such as a third-party auth screen, an embedded checkout, or an error page tests hit by accident. Note their URLs.\n*   **Untested links**: Review the destinations your tests never visited. Each one is a page with no view, so it can only ever surface here. Links to your own marketing site, a help center, a status page, or an external partner are the usual candidates to exclude.\n\nExpanding an untested link shows a **Referrers** tab (the views that link to the destination) and a **URLs** tab (the concrete destinations, grouped for dynamic routes). Use these to confirm a destination is genuinely out of scope before you exclude it, and to capture the exact URL or path you'll match on.\n\n### With an AI agent\n\nIf you use an AI coding assistant, [Cypress Cloud MCP](/llm/markdown/cloud/integrations/cloud-mcp.md) can pull the same report into your editor, so you can find exclusion candidates without opening a browser. The agent queries UI Coverage for a run and returns the views and untested links as structured data you can scan and act on.\n\nFind views and links to exclude with your AI assistant\n\nPull the UI Coverage report from Cypress Cloud and list the untested links and third-party views you might exclude with viewFilters.\n\nUsing Cypress Cloud, pull the UI Coverage report for the latest run on this branch. List the untested links, and any views that look like third-party or external pages, so I can decide which to exclude with viewFilters.\n\nReview what it returns the same way you would in the Cloud UI: confirm each destination is genuinely out of scope before excluding it. See [Work with AI agents](/llm/markdown/ui-coverage/work-with-ai-agents.md) for more prompts.\n",
      "section": "ui-coverage",
      "anchors": [
        "step-1-find-the-views-and-links-worth-ignoring"
      ],
      "path": "/llm/json/chunked/ui-coverage/guides/ignore-views-and-links.json",
      "token_estimate": 475
    },
    {
      "id": "ui-coverage/guides/ignore-views-and-links#in-the-cloud-ui",
      "doc_id": "ui-coverage/guides/ignore-views-and-links",
      "heading": "In the Cloud UI",
      "heading_level": 3,
      "content_markdown": "### In the Cloud UI\n\nOpen the **UI Coverage** tab of a recorded run and work through two sections:\n\n*   **Views**: Scan for pages that appear in your report but you don't own or intend to test, such as a third-party auth screen, an embedded checkout, or an error page tests hit by accident. Note their URLs.\n*   **Untested links**: Review the destinations your tests never visited. Each one is a page with no view, so it can only ever surface here. Links to your own marketing site, a help center, a status page, or an external partner are the usual candidates to exclude.\n\nExpanding an untested link shows a **Referrers** tab (the views that link to the destination) and a **URLs** tab (the concrete destinations, grouped for dynamic routes). Use these to confirm a destination is genuinely out of scope before you exclude it, and to capture the exact URL or path you'll match on.\n",
      "section": "ui-coverage",
      "anchors": [
        "in-the-cloud-ui"
      ],
      "path": "/llm/json/chunked/ui-coverage/guides/ignore-views-and-links.json",
      "token_estimate": 208
    },
    {
      "id": "ui-coverage/guides/ignore-views-and-links#with-an-ai-agent",
      "doc_id": "ui-coverage/guides/ignore-views-and-links",
      "heading": "With an AI agent",
      "heading_level": 3,
      "content_markdown": "### With an AI agent\n\nIf you use an AI coding assistant, [Cypress Cloud MCP](/llm/markdown/cloud/integrations/cloud-mcp.md) can pull the same report into your editor, so you can find exclusion candidates without opening a browser. The agent queries UI Coverage for a run and returns the views and untested links as structured data you can scan and act on.\n\nFind views and links to exclude with your AI assistant\n\nPull the UI Coverage report from Cypress Cloud and list the untested links and third-party views you might exclude with viewFilters.\n\nUsing Cypress Cloud, pull the UI Coverage report for the latest run on this branch. List the untested links, and any views that look like third-party or external pages, so I can decide which to exclude with viewFilters.\n\nReview what it returns the same way you would in the Cloud UI: confirm each destination is genuinely out of scope before excluding it. See [Work with AI agents](/llm/markdown/ui-coverage/work-with-ai-agents.md) for more prompts.\n",
      "section": "ui-coverage",
      "anchors": [
        "with-an-ai-agent"
      ],
      "path": "/llm/json/chunked/ui-coverage/guides/ignore-views-and-links.json",
      "token_estimate": 211
    },
    {
      "id": "ui-coverage/guides/ignore-views-and-links#step-2-add-a-viewfilters-rule",
      "doc_id": "ui-coverage/guides/ignore-views-and-links",
      "heading": "Step 2: Add a viewFilters rule",
      "heading_level": 2,
      "content_markdown": "## Step 2: Add a `viewFilters` rule\n\nOpen the **App Quality** tab in your project settings in Cypress Cloud and add a [`viewFilters`](/llm/markdown/ui-coverage/configuration/viewfilters.md) array. Each rule pairs a URL `pattern` with `include: false` to exclude the URLs it matches, plus an optional `comment` explaining why the rule exists:\n\nApp Quality Config\n\n```\n{\n  \"viewFilters\": [\n    {\n      \"pattern\": \"https://acme.okta.com/*\",\n      \"include\": false,\n      \"comment\": \"External Okta sign-in flow, not our UI to test\"\n    }\n  ]\n}\n```\n\nOne rule removes both the excluded pages and any links pointing to them. Every other URL stays included, because a few rules govern how filters are applied:\n\n*   Each URL is matched against your rules **in order**, and the **first** rule whose `pattern` matches decides whether the URL is included or excluded. Place specific rules before broad ones.\n*   URLs that match **no** rule are **included by default**.\n*   Patterns use [URL Pattern API](https://developer.mozilla.org/en-US/docs/Web/API/URL_Pattern_API) syntax matched against the full URL. A path-only pattern like `/admin/*` matches that path on **any** environment, while a hostname must match exactly unless it contains a wildcard (`https://*.acme.com/*`).\n\nFor the complete pattern-matching and validation rules, see the [`viewFilters` reference](/llm/markdown/ui-coverage/configuration/viewfilters.md).\n\n### Include only your application's URLs\n\nWhen your tests pass through many external pages, an allowlist is simpler than excluding each one. Include your application, then add a catch-all `*` rule that excludes everything else. Because the first match wins, the catch-all must come last:\n\nApp Quality Config\n\n```\n{\n  \"viewFilters\": [\n    {\n      \"pattern\": \"https://app.acme.com/*\",\n      \"include\": true\n    },\n    {\n      \"pattern\": \"*\",\n      \"include\": false,\n      \"comment\": \"Exclude anything that isn't the app itself\"\n    }\n  ]\n}\n```\n\n### Exclude error pages in every environment\n\nA pattern without a protocol and hostname matches any environment your tests run against, whether that's `localhost`, staging, or production, so one rule covers them all:\n\nApp Quality Config\n\n```\n{\n  \"viewFilters\": [\n    {\n      \"pattern\": \"/404\",\n      \"include\": false\n    },\n    {\n      \"pattern\": \"/error/*\",\n      \"include\": false\n    }\n  ]\n}\n```\n\n### Exclude from UI Coverage without affecting Accessibility\n\nA `viewFilters` array at the **root** of your configuration applies to both UI Coverage and Cypress Accessibility. To exclude a URL from UI Coverage alone, nest `viewFilters` under a `uiCoverage` key. A nested list completely **replaces** the root-level one for UI Coverage (the two are not merged), so include every rule UI Coverage needs in the nested list:\n\nApp Quality Config\n\n```\n{\n  \"uiCoverage\": {\n    \"viewFilters\": [\n      {\n        \"pattern\": \"https://docs.acme.com/*\",\n        \"include\": false,\n        \"comment\": \"Embedded docs: keep out of coverage but keep scanning for a11y\"\n      }\n    ]\n  }\n}\n```\n",
      "section": "ui-coverage",
      "anchors": [
        "step-2-add-a-viewfilters-rule"
      ],
      "path": "/llm/json/chunked/ui-coverage/guides/ignore-views-and-links.json",
      "token_estimate": 553
    },
    {
      "id": "ui-coverage/guides/ignore-views-and-links#include-only-your-applications-urls",
      "doc_id": "ui-coverage/guides/ignore-views-and-links",
      "heading": "Include only your application's URLs",
      "heading_level": 3,
      "content_markdown": "### Include only your application's URLs\n\nWhen your tests pass through many external pages, an allowlist is simpler than excluding each one. Include your application, then add a catch-all `*` rule that excludes everything else. Because the first match wins, the catch-all must come last:\n\nApp Quality Config\n\n```\n{\n  \"viewFilters\": [\n    {\n      \"pattern\": \"https://app.acme.com/*\",\n      \"include\": true\n    },\n    {\n      \"pattern\": \"*\",\n      \"include\": false,\n      \"comment\": \"Exclude anything that isn't the app itself\"\n    }\n  ]\n}\n```\n",
      "section": "ui-coverage",
      "anchors": [
        "include-only-your-applications-urls"
      ],
      "path": "/llm/json/chunked/ui-coverage/guides/ignore-views-and-links.json",
      "token_estimate": 100
    },
    {
      "id": "ui-coverage/guides/ignore-views-and-links#exclude-error-pages-in-every-environment",
      "doc_id": "ui-coverage/guides/ignore-views-and-links",
      "heading": "Exclude error pages in every environment",
      "heading_level": 3,
      "content_markdown": "### Exclude error pages in every environment\n\nA pattern without a protocol and hostname matches any environment your tests run against, whether that's `localhost`, staging, or production, so one rule covers them all:\n\nApp Quality Config\n\n```\n{\n  \"viewFilters\": [\n    {\n      \"pattern\": \"/404\",\n      \"include\": false\n    },\n    {\n      \"pattern\": \"/error/*\",\n      \"include\": false\n    }\n  ]\n}\n```\n",
      "section": "ui-coverage",
      "anchors": [
        "exclude-error-pages-in-every-environment"
      ],
      "path": "/llm/json/chunked/ui-coverage/guides/ignore-views-and-links.json",
      "token_estimate": 73
    },
    {
      "id": "ui-coverage/guides/ignore-views-and-links#exclude-from-ui-coverage-without-affecting-accessibility",
      "doc_id": "ui-coverage/guides/ignore-views-and-links",
      "heading": "Exclude from UI Coverage without affecting Accessibility",
      "heading_level": 3,
      "content_markdown": "### Exclude from UI Coverage without affecting Accessibility\n\nA `viewFilters` array at the **root** of your configuration applies to both UI Coverage and Cypress Accessibility. To exclude a URL from UI Coverage alone, nest `viewFilters` under a `uiCoverage` key. A nested list completely **replaces** the root-level one for UI Coverage (the two are not merged), so include every rule UI Coverage needs in the nested list:\n\nApp Quality Config\n\n```\n{\n  \"uiCoverage\": {\n    \"viewFilters\": [\n      {\n        \"pattern\": \"https://docs.acme.com/*\",\n        \"include\": false,\n        \"comment\": \"Embedded docs: keep out of coverage but keep scanning for a11y\"\n      }\n    ]\n  }\n}\n```\n",
      "section": "ui-coverage",
      "anchors": [
        "exclude-from-ui-coverage-without-affecting-accessibility"
      ],
      "path": "/llm/json/chunked/ui-coverage/guides/ignore-views-and-links.json",
      "token_estimate": 129
    },
    {
      "id": "ui-coverage/guides/ignore-views-and-links#step-3-regenerate-a-run-and-confirm",
      "doc_id": "ui-coverage/guides/ignore-views-and-links",
      "heading": "Step 3: Regenerate a run and confirm",
      "heading_level": 2,
      "content_markdown": "## Step 3: Regenerate a run and confirm\n\nAfter saving, regenerate a recent run from its **Properties** tab to reprocess it with your new filters. There's no need to rerun your tests. See [Setting configuration](/llm/markdown/ui-coverage/configuration/overview.md#Setting-configuration) for the steps.\n\nIn the regenerated report, confirm the excluded pages no longer appear as views and that links to the excluded URLs no longer count as untested. If a URL you excluded still shows up, an earlier rule is usually matching it first, or the pattern isn't matching the full URL. See [troubleshooting view filters](/llm/markdown/ui-coverage/configuration/viewfilters.md#A-URL-you-excluded-still-appears-in-the-report).\n",
      "section": "ui-coverage",
      "anchors": [
        "step-3-regenerate-a-run-and-confirm"
      ],
      "path": "/llm/json/chunked/ui-coverage/guides/ignore-views-and-links.json",
      "token_estimate": 121
    },
    {
      "id": "ui-coverage/guides/ignore-views-and-links#step-4-keep-your-filters-current",
      "doc_id": "ui-coverage/guides/ignore-views-and-links",
      "heading": "Step 4: Keep your filters current",
      "heading_level": 2,
      "content_markdown": "## Step 4: Keep your filters current\n\n`viewFilters` is a living part of your configuration. As you add integrations, new external links, or new environments, revisit your rules so reports stay clean and every remaining gap is one worth a decision. If different runs need different exclusions, such as a smoke run versus a full regression run, apply them per run with [`profiles`](/llm/markdown/ui-coverage/configuration/profiles.md) instead of maintaining one list for everything.\n",
      "section": "ui-coverage",
      "anchors": [
        "step-4-keep-your-filters-current"
      ],
      "path": "/llm/json/chunked/ui-coverage/guides/ignore-views-and-links.json",
      "token_estimate": 93
    },
    {
      "id": "ui-coverage/guides/ignore-views-and-links#see-also",
      "doc_id": "ui-coverage/guides/ignore-views-and-links",
      "heading": "See also",
      "heading_level": 2,
      "content_markdown": "## See also\n\n*   [`viewFilters` configuration](/llm/markdown/ui-coverage/configuration/viewfilters.md) is the full reference for options, pattern matching, and validation.\n*   [Identify coverage gaps](/llm/markdown/ui-coverage/guides/identify-coverage-gaps.md) is the workflow for finding untested elements, links, and pages once the noise is gone.\n*   [Reduce noise](/llm/markdown/ui-coverage/guides/reduce-noise.md) covers the other adjustments, such as grouping repeated elements and stabilizing dynamic attributes, that sharpen a report.\n*   [Ignore elements](/llm/markdown/ui-coverage/guides/ignore-elements.md) removes individual elements from reports rather than whole pages.\n*   [`views` configuration](/llm/markdown/ui-coverage/configuration/views.md) groups and names URLs instead of removing them.\n*   [Untested links](/llm/markdown/ui-coverage/core-concepts/interactivity.md#Untested-Links) explains how a link's destination determines whether it counts against your score.\n*   [UI Coverage FAQ](/llm/markdown/ui-coverage/faq.md) answers common questions about excluding URLs and coverage scores.\n",
      "section": "ui-coverage",
      "anchors": [
        "see-also"
      ],
      "path": "/llm/json/chunked/ui-coverage/guides/ignore-views-and-links.json",
      "token_estimate": 141
    }
  ]
}