{
  "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": "fbc9225067c51c52ee13224e3b702cf8a025ec12",
    "updated_at": "2026-08-14T12:36:26.878Z",
    "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
      }
    ]
  },
  "content": {
    "type": "root",
    "children": [
      {
        "type": "heading",
        "depth": 1,
        "children": [
          {
            "type": "text",
            "value": "Ignore views and links"
          }
        ]
      },
      {
        "type": "paragraph",
        "children": [
          {
            "type": "text",
            "value": "UI Coverage measures every URL your tests visit and every link they could follow. That's usually what you want, but it means pages you don't own get counted as untested and quietly drag your score down. A third-party login screen captured mid-sign-in, an error page a test hit by accident, a marketing site linked from your footer: none of these are yours to test. When that noise is mixed in, a low score no longer tells you where the real gaps are."
          }
        ]
      },
      {
        "type": "paragraph",
        "children": [
          {
            "type": "text",
            "value": "This guide walks you through removing that noise with "
          },
          {
            "type": "link",
            "title": null,
            "url": "/llm/markdown/ui-coverage/configuration/viewfilters.md",
            "children": [
              {
                "type": "text",
                "value": "`viewFilters`"
              }
            ]
          },
          {
            "type": "text",
            "value": ". Excluding a URL keeps its pages out of your report and stops the "
          },
          {
            "type": "link",
            "title": null,
            "url": "/llm/markdown/ui-coverage/core-concepts/interactivity.md#Untested-Links",
            "children": [
              {
                "type": "text",
                "value": "untested links"
              }
            ]
          },
          {
            "type": "text",
            "value": " that point to it from counting against your score, so what's left is coverage of the application you actually intend to test:"
          }
        ]
      },
      {
        "type": "list",
        "ordered": true,
        "start": 1,
        "spread": false,
        "children": [
          {
            "type": "listItem",
            "spread": false,
            "checked": null,
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "link",
                    "title": null,
                    "url": "#Step-1-Find-the-views-and-links-worth-ignoring",
                    "children": [
                      {
                        "type": "text",
                        "value": "Find the views and links worth ignoring"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " in your report."
                  }
                ]
              }
            ]
          },
          {
            "type": "listItem",
            "spread": false,
            "checked": null,
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "link",
                    "title": null,
                    "url": "#Step-2-Add-a-viewFilters-rule",
                    "children": [
                      {
                        "type": "text",
                        "value": "Add a viewFilters rule"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " in your App Quality configuration."
                  }
                ]
              }
            ]
          },
          {
            "type": "listItem",
            "spread": false,
            "checked": null,
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "link",
                    "title": null,
                    "url": "#Step-3-Regenerate-a-run-and-confirm",
                    "children": [
                      {
                        "type": "text",
                        "value": "Regenerate a run and confirm"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " the noise is gone."
                  }
                ]
              }
            ]
          },
          {
            "type": "listItem",
            "spread": false,
            "checked": null,
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "link",
                    "title": null,
                    "url": "#Step-4-Keep-your-filters-current",
                    "children": [
                      {
                        "type": "text",
                        "value": "Keep your filters current"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " as your app grows."
                  }
                ]
              }
            ]
          }
        ]
      },
      {
        "type": "heading",
        "depth": 2,
        "children": [
          {
            "type": "text",
            "value": "When to ignore views and links"
          }
        ]
      },
      {
        "type": "paragraph",
        "children": [
          {
            "type": "text",
            "value": "Reach for `viewFilters` when a URL is counted against you but isn't something your team is responsible for testing:"
          }
        ]
      },
      {
        "type": "list",
        "ordered": false,
        "start": null,
        "spread": false,
        "children": [
          {
            "type": "listItem",
            "spread": false,
            "checked": null,
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "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."
                  }
                ]
              }
            ]
          },
          {
            "type": "listItem",
            "spread": false,
            "checked": null,
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "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 "
                  },
                  {
                    "type": "link",
                    "title": null,
                    "url": "/llm/markdown/ui-coverage/core-concepts/views.md",
                    "children": [
                      {
                        "type": "text",
                        "value": "view"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " exists. The link is the only thing UI Coverage sees, and it counts as an "
                  },
                  {
                    "type": "link",
                    "title": null,
                    "url": "/llm/markdown/ui-coverage/core-concepts/interactivity.md#Untested-Links",
                    "children": [
                      {
                        "type": "text",
                        "value": "untested link"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": ". Excluding the destination URL is the way to remove it."
                  }
                ]
              }
            ]
          },
          {
            "type": "listItem",
            "spread": false,
            "checked": null,
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "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."
                  }
                ]
              }
            ]
          },
          {
            "type": "listItem",
            "spread": false,
            "checked": null,
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Sections outside your goals: Admin-only tools or informational pages that aren't part of what you set out to test."
                  }
                ]
              }
            ]
          }
        ]
      },
      {
        "type": "paragraph",
        "children": [
          {
            "type": "text",
            "value": "If your goal is instead to organize URLs into named views rather than remove them, use "
          },
          {
            "type": "link",
            "title": null,
            "url": "/llm/markdown/ui-coverage/configuration/views.md",
            "children": [
              {
                "type": "text",
                "value": "`views`"
              }
            ]
          },
          {
            "type": "text",
            "value": "; to remove individual elements rather than whole pages, use "
          },
          {
            "type": "link",
            "title": null,
            "url": "/llm/markdown/ui-coverage/configuration/elementfilters.md",
            "children": [
              {
                "type": "text",
                "value": "`elementFilters`"
              }
            ]
          },
          {
            "type": "text",
            "value": ". See "
          },
          {
            "type": "link",
            "title": null,
            "url": "/llm/markdown/ui-coverage/configuration/overview.md#Which-option-do-I-need",
            "children": [
              {
                "type": "text",
                "value": "Which option do I need?"
              }
            ]
          },
          {
            "type": "text",
            "value": " for the full comparison."
          }
        ]
      },
      {
        "type": "heading",
        "depth": 2,
        "children": [
          {
            "type": "text",
            "value": "Step 1: Find the views and links worth ignoring"
          }
        ]
      },
      {
        "type": "paragraph",
        "children": [
          {
            "type": "text",
            "value": "Start 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."
          }
        ]
      },
      {
        "type": "heading",
        "depth": 3,
        "children": [
          {
            "type": "text",
            "value": "In the Cloud UI"
          }
        ]
      },
      {
        "type": "paragraph",
        "children": [
          {
            "type": "text",
            "value": "Open the UI Coverage tab of a recorded run and work through two sections:"
          }
        ]
      },
      {
        "type": "list",
        "ordered": false,
        "start": null,
        "spread": false,
        "children": [
          {
            "type": "listItem",
            "spread": false,
            "checked": null,
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "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."
                  }
                ]
              }
            ]
          },
          {
            "type": "listItem",
            "spread": false,
            "checked": null,
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "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."
                  }
                ]
              }
            ]
          }
        ]
      },
      {
        "type": "paragraph",
        "children": [
          {
            "type": "text",
            "value": "Expanding 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."
          }
        ]
      },
      {
        "type": "heading",
        "depth": 3,
        "children": [
          {
            "type": "text",
            "value": "With an AI agent"
          }
        ]
      },
      {
        "type": "paragraph",
        "children": [
          {
            "type": "text",
            "value": "If you use an AI coding assistant, "
          },
          {
            "type": "link",
            "title": null,
            "url": "/llm/markdown/cloud/integrations/cloud-mcp.md",
            "children": [
              {
                "type": "text",
                "value": "Cypress Cloud MCP"
              }
            ]
          },
          {
            "type": "text",
            "value": " 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."
          }
        ]
      },
      {
        "type": "paragraph",
        "children": [
          {
            "type": "text",
            "value": "Find views and links to exclude with your AI assistant"
          }
        ]
      },
      {
        "type": "paragraph",
        "children": [
          {
            "type": "text",
            "value": "Pull the UI Coverage report from Cypress Cloud and list the untested links and third-party views you might exclude with viewFilters."
          }
        ]
      },
      {
        "type": "paragraph",
        "children": [
          {
            "type": "text",
            "value": "Using 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."
          }
        ]
      },
      {
        "type": "paragraph",
        "children": [
          {
            "type": "text",
            "value": "Review what it returns the same way you would in the Cloud UI: confirm each destination is genuinely out of scope before excluding it. See "
          },
          {
            "type": "link",
            "title": null,
            "url": "/llm/markdown/ui-coverage/work-with-ai-agents.md",
            "children": [
              {
                "type": "text",
                "value": "Work with AI agents"
              }
            ]
          },
          {
            "type": "text",
            "value": " for more prompts."
          }
        ]
      },
      {
        "type": "heading",
        "depth": 2,
        "children": [
          {
            "type": "text",
            "value": "Step 2: Add a `viewFilters` rule"
          }
        ]
      },
      {
        "type": "paragraph",
        "children": [
          {
            "type": "text",
            "value": "Open the App Quality tab in your project settings in Cypress Cloud and add a "
          },
          {
            "type": "link",
            "title": null,
            "url": "/llm/markdown/ui-coverage/configuration/viewfilters.md",
            "children": [
              {
                "type": "text",
                "value": "`viewFilters`"
              }
            ]
          },
          {
            "type": "text",
            "value": " 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:"
          }
        ]
      },
      {
        "type": "paragraph",
        "children": [
          {
            "type": "text",
            "value": "App Quality Config"
          }
        ]
      },
      {
        "type": "code",
        "lang": null,
        "meta": null,
        "value": "{  \"viewFilters\": [    {      \"pattern\": \"https://acme.okta.com/*\",      \"include\": false,      \"comment\": \"External Okta sign-in flow, not our UI to test\"    }  ]}"
      },
      {
        "type": "paragraph",
        "children": [
          {
            "type": "text",
            "value": "One 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:"
          }
        ]
      },
      {
        "type": "list",
        "ordered": false,
        "start": null,
        "spread": false,
        "children": [
          {
            "type": "listItem",
            "spread": false,
            "checked": null,
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "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."
                  }
                ]
              }
            ]
          },
          {
            "type": "listItem",
            "spread": false,
            "checked": null,
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "URLs that match no rule are included by default."
                  }
                ]
              }
            ]
          },
          {
            "type": "listItem",
            "spread": false,
            "checked": null,
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "text",
                    "value": "Patterns use "
                  },
                  {
                    "type": "link",
                    "title": null,
                    "url": "https://developer.mozilla.org/en-US/docs/Web/API/URL_Pattern_API",
                    "children": [
                      {
                        "type": "text",
                        "value": "URL Pattern API"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " 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/*`)."
                  }
                ]
              }
            ]
          }
        ]
      },
      {
        "type": "paragraph",
        "children": [
          {
            "type": "text",
            "value": "For the complete pattern-matching and validation rules, see the "
          },
          {
            "type": "link",
            "title": null,
            "url": "/llm/markdown/ui-coverage/configuration/viewfilters.md",
            "children": [
              {
                "type": "text",
                "value": "`viewFilters` reference"
              }
            ]
          },
          {
            "type": "text",
            "value": "."
          }
        ]
      },
      {
        "type": "heading",
        "depth": 3,
        "children": [
          {
            "type": "text",
            "value": "Include only your application's URLs"
          }
        ]
      },
      {
        "type": "paragraph",
        "children": [
          {
            "type": "text",
            "value": "When 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:"
          }
        ]
      },
      {
        "type": "paragraph",
        "children": [
          {
            "type": "text",
            "value": "App Quality Config"
          }
        ]
      },
      {
        "type": "code",
        "lang": null,
        "meta": null,
        "value": "{  \"viewFilters\": [    {      \"pattern\": \"https://app.acme.com/*\",      \"include\": true    },    {      \"pattern\": \"*\",      \"include\": false,      \"comment\": \"Exclude anything that isn't the app itself\"    }  ]}"
      },
      {
        "type": "heading",
        "depth": 3,
        "children": [
          {
            "type": "text",
            "value": "Exclude error pages in every environment"
          }
        ]
      },
      {
        "type": "paragraph",
        "children": [
          {
            "type": "text",
            "value": "A 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:"
          }
        ]
      },
      {
        "type": "paragraph",
        "children": [
          {
            "type": "text",
            "value": "App Quality Config"
          }
        ]
      },
      {
        "type": "code",
        "lang": null,
        "meta": null,
        "value": "{  \"viewFilters\": [    {      \"pattern\": \"/404\",      \"include\": false    },    {      \"pattern\": \"/error/*\",      \"include\": false    }  ]}"
      },
      {
        "type": "heading",
        "depth": 3,
        "children": [
          {
            "type": "text",
            "value": "Exclude from UI Coverage without affecting Accessibility"
          }
        ]
      },
      {
        "type": "paragraph",
        "children": [
          {
            "type": "text",
            "value": "A `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:"
          }
        ]
      },
      {
        "type": "paragraph",
        "children": [
          {
            "type": "text",
            "value": "App Quality Config"
          }
        ]
      },
      {
        "type": "code",
        "lang": null,
        "meta": null,
        "value": "{  \"uiCoverage\": {    \"viewFilters\": [      {        \"pattern\": \"https://docs.acme.com/*\",        \"include\": false,        \"comment\": \"Embedded docs: keep out of coverage but keep scanning for a11y\"      }    ]  }}"
      },
      {
        "type": "heading",
        "depth": 2,
        "children": [
          {
            "type": "text",
            "value": "Step 3: Regenerate a run and confirm"
          }
        ]
      },
      {
        "type": "paragraph",
        "children": [
          {
            "type": "text",
            "value": "After 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 "
          },
          {
            "type": "link",
            "title": null,
            "url": "/llm/markdown/ui-coverage/configuration/overview.md#Setting-configuration",
            "children": [
              {
                "type": "text",
                "value": "Setting configuration"
              }
            ]
          },
          {
            "type": "text",
            "value": " for the steps."
          }
        ]
      },
      {
        "type": "paragraph",
        "children": [
          {
            "type": "text",
            "value": "In 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 "
          },
          {
            "type": "link",
            "title": null,
            "url": "/llm/markdown/ui-coverage/configuration/viewfilters.md#A-URL-you-excluded-still-appears-in-the-report",
            "children": [
              {
                "type": "text",
                "value": "troubleshooting view filters"
              }
            ]
          },
          {
            "type": "text",
            "value": "."
          }
        ]
      },
      {
        "type": "heading",
        "depth": 2,
        "children": [
          {
            "type": "text",
            "value": "Step 4: Keep your filters current"
          }
        ]
      },
      {
        "type": "paragraph",
        "children": [
          {
            "type": "text",
            "value": "`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 "
          },
          {
            "type": "link",
            "title": null,
            "url": "/llm/markdown/ui-coverage/configuration/profiles.md",
            "children": [
              {
                "type": "text",
                "value": "`profiles`"
              }
            ]
          },
          {
            "type": "text",
            "value": " instead of maintaining one list for everything."
          }
        ]
      },
      {
        "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/configuration/viewfilters.md",
                    "children": [
                      {
                        "type": "text",
                        "value": "`viewFilters` configuration"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " is the full reference for options, pattern matching, and validation."
                  }
                ]
              }
            ]
          },
          {
            "type": "listItem",
            "spread": false,
            "checked": null,
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "link",
                    "title": null,
                    "url": "/llm/markdown/ui-coverage/guides/identify-coverage-gaps.md",
                    "children": [
                      {
                        "type": "text",
                        "value": "Identify coverage gaps"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " is the workflow for finding untested elements, links, and pages once the noise is gone."
                  }
                ]
              }
            ]
          },
          {
            "type": "listItem",
            "spread": false,
            "checked": null,
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "link",
                    "title": null,
                    "url": "/llm/markdown/ui-coverage/guides/reduce-noise.md",
                    "children": [
                      {
                        "type": "text",
                        "value": "Reduce noise"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " covers the other adjustments, such as grouping repeated elements and stabilizing dynamic attributes, that sharpen a report."
                  }
                ]
              }
            ]
          },
          {
            "type": "listItem",
            "spread": false,
            "checked": null,
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "link",
                    "title": null,
                    "url": "/llm/markdown/ui-coverage/guides/ignore-elements.md",
                    "children": [
                      {
                        "type": "text",
                        "value": "Ignore elements"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " removes individual elements from reports rather than whole pages."
                  }
                ]
              }
            ]
          },
          {
            "type": "listItem",
            "spread": false,
            "checked": null,
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "link",
                    "title": null,
                    "url": "/llm/markdown/ui-coverage/configuration/views.md",
                    "children": [
                      {
                        "type": "text",
                        "value": "`views` configuration"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " groups and names URLs instead of removing them."
                  }
                ]
              }
            ]
          },
          {
            "type": "listItem",
            "spread": false,
            "checked": null,
            "children": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "type": "link",
                    "title": null,
                    "url": "/llm/markdown/ui-coverage/core-concepts/interactivity.md#Untested-Links",
                    "children": [
                      {
                        "type": "text",
                        "value": "Untested links"
                      }
                    ]
                  },
                  {
                    "type": "text",
                    "value": " explains how a link's destination determines whether it counts against your score."
                  }
                ]
              }
            ]
          },
          {
            "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 excluding URLs and coverage scores."
                  }
                ]
              }
            ]
          }
        ]
      }
    ]
  },
  "token_estimate": 1888
}