{
  "doc": {
    "id": "ui-coverage/configuration/viewfilters",
    "title": "viewFilters: exclude URLs from UI Coverage",
    "description": "The viewFilters configuration excludes URLs from UI Coverage reports and scores, so third-party pages, error pages, and the links that point to them stop counting against your coverage.",
    "section": "ui-coverage",
    "source_path": "/llm/markdown/ui-coverage/configuration/viewfilters.md",
    "version": "e6c8d867c21227247f14714fb5690c7c018983c5",
    "updated_at": "2026-08-08T12:39:37.868Z",
    "headings": [
      {
        "id": "ui-coverage/configuration/viewfilters#exclude-views-viewfilters",
        "text": "Exclude views - viewFilters",
        "level": 1
      },
      {
        "id": "ui-coverage/configuration/viewfilters#why-use-viewfilters",
        "text": "Why use viewFilters?",
        "level": 2
      },
      {
        "id": "ui-coverage/configuration/viewfilters#scope",
        "text": "Scope",
        "level": 2
      },
      {
        "id": "ui-coverage/configuration/viewfilters#syntax",
        "text": "Syntax",
        "level": 2
      },
      {
        "id": "ui-coverage/configuration/viewfilters#options",
        "text": "Options",
        "level": 3
      },
      {
        "id": "ui-coverage/configuration/viewfilters#how-are-viewfilters-rules-applied",
        "text": "How are viewFilters rules applied?",
        "level": 3
      },
      {
        "id": "ui-coverage/configuration/viewfilters#validation-rules",
        "text": "Validation rules",
        "level": 3
      },
      {
        "id": "ui-coverage/configuration/viewfilters#examples",
        "text": "Examples",
        "level": 2
      },
      {
        "id": "ui-coverage/configuration/viewfilters#exclude-a-third-party-page",
        "text": "Exclude a third-party page",
        "level": 3
      },
      {
        "id": "ui-coverage/configuration/viewfilters#config",
        "text": "Config",
        "level": 4
      },
      {
        "id": "ui-coverage/configuration/viewfilters#visited-urls",
        "text": "Visited URLs",
        "level": 4
      },
      {
        "id": "ui-coverage/configuration/viewfilters#views-shown-in-ui",
        "text": "Views shown in UI",
        "level": 4
      },
      {
        "id": "ui-coverage/configuration/viewfilters#include-only-your-applications-urls",
        "text": "Include only your application's URLs",
        "level": 3
      },
      {
        "id": "ui-coverage/configuration/viewfilters#config",
        "text": "Config",
        "level": 4
      },
      {
        "id": "ui-coverage/configuration/viewfilters#visited-urls",
        "text": "Visited URLs",
        "level": 4
      },
      {
        "id": "ui-coverage/configuration/viewfilters#views-shown-in-ui",
        "text": "Views shown in UI",
        "level": 4
      },
      {
        "id": "ui-coverage/configuration/viewfilters#exclude-error-pages-in-every-environment",
        "text": "Exclude error pages in every environment",
        "level": 3
      },
      {
        "id": "ui-coverage/configuration/viewfilters#config",
        "text": "Config",
        "level": 4
      },
      {
        "id": "ui-coverage/configuration/viewfilters#visited-urls",
        "text": "Visited URLs",
        "level": 4
      },
      {
        "id": "ui-coverage/configuration/viewfilters#views-shown-in-ui",
        "text": "Views shown in UI",
        "level": 4
      },
      {
        "id": "ui-coverage/configuration/viewfilters#exclude-urls-from-ui-coverage-only",
        "text": "Exclude URLs from UI Coverage only",
        "level": 3
      },
      {
        "id": "ui-coverage/configuration/viewfilters#config",
        "text": "Config",
        "level": 4
      },
      {
        "id": "ui-coverage/configuration/viewfilters#troubleshooting",
        "text": "Troubleshooting",
        "level": 2
      },
      {
        "id": "ui-coverage/configuration/viewfilters#a-url-you-excluded-still-appears-in-the-report",
        "text": "A URL you excluded still appears in the report",
        "level": 3
      },
      {
        "id": "ui-coverage/configuration/viewfilters#error-missing-include-boolean",
        "text": "Error: Missing include boolean",
        "level": 3
      },
      {
        "id": "ui-coverage/configuration/viewfilters#error-no-duplicate-patterns-allowed",
        "text": "Error: No duplicate patterns allowed",
        "level": 3
      },
      {
        "id": "ui-coverage/configuration/viewfilters#see-also",
        "text": "See also",
        "level": 2
      }
    ]
  },
  "chunks": [
    {
      "id": "ui-coverage/configuration/viewfilters#why-use-viewfilters",
      "doc_id": "ui-coverage/configuration/viewfilters",
      "heading": "Why use viewFilters?",
      "heading_level": 2,
      "content_markdown": "## Why use viewFilters?\n\n*   **Exclude third-party pages**: Your tests may pass through pages you don't control, such as an OAuth provider's login page or a payment processor's checkout. Excluding them keeps external UI out of your report and links to it out of your score.\n*   **Exclude pages you don't intend to test**: Remove sections that aren't part of your coverage goals, such as admin-only tools or informational pages, so their untested elements stop diluting your score.\n*   **Remove links to pages of your own that no test visits**: Your application may link to pages your tests never navigate to, such as a help center or marketing site. Those links count against your score as [untested links](/llm/markdown/ui-coverage/core-concepts/interactivity.md#Untested-Links) even though no view exists for them. Excluding the destination URLs is the way to remove them, since there is no view to exclude.\n*   **Remove links to external websites**: Links to entirely different sites, such as social media profiles or a partner's website, count against your score the same way. Exclude their URLs individually, or use an allowlist that includes only your application's URLs and excludes everything else at once.\n*   **Reduce noise**: URLs that tests visit incidentally, such as error pages or intermediate redirect URLs, don't represent meaningful user flows. Excluding them keeps reports clean.\n\nIf your goal is different, such as organizing URLs into views rather than removing them, or removing individual elements rather than whole pages, see [Which option do I need?](/llm/markdown/ui-coverage/configuration/overview.md#Which-option-do-I-need) in the configuration overview.\n",
      "section": "ui-coverage",
      "anchors": [
        "why-use-viewfilters"
      ],
      "path": "/llm/json/chunked/ui-coverage/configuration/viewfilters.json",
      "token_estimate": 331
    },
    {
      "id": "ui-coverage/configuration/viewfilters#scope",
      "doc_id": "ui-coverage/configuration/viewfilters",
      "heading": "Scope",
      "heading_level": 2,
      "content_markdown": "## Scope\n\nA root-level `viewFilters` property applies to both UI Coverage and Cypress Accessibility. To configure UI Coverage separately, nest `viewFilters` under a `uiCoverage` key. A nested `viewFilters` completely replaces the root-level one for UI Coverage; the two lists are not merged.\n",
      "section": "ui-coverage",
      "anchors": [
        "scope"
      ],
      "path": "/llm/json/chunked/ui-coverage/configuration/viewfilters.json",
      "token_estimate": 56
    },
    {
      "id": "ui-coverage/configuration/viewfilters#syntax",
      "doc_id": "ui-coverage/configuration/viewfilters",
      "heading": "Syntax",
      "heading_level": 2,
      "content_markdown": "## Syntax\n\nApp Quality Config\n\n```\n{  \"viewFilters\": [    {      \"pattern\": string,      \"include\": boolean,      \"comment\": string    }  ]}\n```\n\nTo add or edit `viewFilters`, open the **App Quality** tab in your project settings in Cypress Cloud. After saving, regenerate a recent run to see the effect of your filters without rerunning your tests. See [Setting configuration](/llm/markdown/ui-coverage/configuration/overview.md#Setting-configuration) for details.\n\n### Options\n\n| Option | Required | Description |\n| --- | --- | --- |\n| `pattern` | Required | A URL pattern in [URL Pattern API](https://developer.mozilla.org/en-US/docs/Web/API/URL_Pattern_API) syntax, matched against the full URL. |\n| `include` | Required | Whether matching URLs are included (`true`) or excluded (`false`). There is no default; every rule must state it explicitly. |\n| `comment` | Optional | A note about why this rule exists, for your team's benefit. Comments have no effect on filtering and appear only where the configuration itself is shown: the App Quality configuration editor and a run's **Properties** tab. |\n\n### How are viewFilters rules applied?\n\n*   Every URL visited during a run, and every link destination found, is compared against your rules in order. The **first** rule whose `pattern` matches decides whether that URL is included or excluded, so place specific rules before broad ones.\n*   URLs that match no rule are **included** by default. To include only specific URLs, list `include: true` rules for them followed by a catch-all `{ \"pattern\": \"*\", \"include\": false }` rule.\n\nPattern matching follows [URL Pattern API](https://developer.mozilla.org/en-US/docs/Web/API/URL_Pattern_API) semantics, with a few behaviors worth knowing:\n\n*   A pattern that omits the query string and hash matches URLs with any query string or hash. For example, `https://www.my-app.com/admin` matches `https://www.my-app.com/admin?tab=users`.\n*   Trailing slashes are optional by default: `https://www.my-app.com/admin` matches both `/admin` and `/admin/`. If your pattern ends with a `/`, only URLs with a trailing slash match it.\n*   A pattern without a protocol and hostname, such as `/admin/*`, matches that path on any protocol, hostname, and port. This is useful when tests run against multiple environments.\n*   A hostname must match exactly unless it contains a wildcard: `https://my-app.com/*` does not match `https://www.my-app.com/home`, but `https://*.my-app.com/*` does.\n*   The pattern `*` on its own matches every URL.\n\n### Validation rules\n\nCypress Cloud rejects a configuration when:\n\n*   A rule is missing `pattern` or `include`.\n*   A `pattern` isn't valid URL Pattern syntax.\n*   Two rules have the same `pattern`. Duplicates can never both apply, because the first matching rule wins.\n*   A rule contains a property other than the three listed above.\n",
      "section": "ui-coverage",
      "anchors": [
        "syntax"
      ],
      "path": "/llm/json/chunked/ui-coverage/configuration/viewfilters.json",
      "token_estimate": 553
    },
    {
      "id": "ui-coverage/configuration/viewfilters#options",
      "doc_id": "ui-coverage/configuration/viewfilters",
      "heading": "Options",
      "heading_level": 3,
      "content_markdown": "### Options\n\n| Option | Required | Description |\n| --- | --- | --- |\n| `pattern` | Required | A URL pattern in [URL Pattern API](https://developer.mozilla.org/en-US/docs/Web/API/URL_Pattern_API) syntax, matched against the full URL. |\n| `include` | Required | Whether matching URLs are included (`true`) or excluded (`false`). There is no default; every rule must state it explicitly. |\n| `comment` | Optional | A note about why this rule exists, for your team's benefit. Comments have no effect on filtering and appear only where the configuration itself is shown: the App Quality configuration editor and a run's **Properties** tab. |\n",
      "section": "ui-coverage",
      "anchors": [
        "options"
      ],
      "path": "/llm/json/chunked/ui-coverage/configuration/viewfilters.json",
      "token_estimate": 136
    },
    {
      "id": "ui-coverage/configuration/viewfilters#how-are-viewfilters-rules-applied",
      "doc_id": "ui-coverage/configuration/viewfilters",
      "heading": "How are viewFilters rules applied?",
      "heading_level": 3,
      "content_markdown": "### How are viewFilters rules applied?\n\n*   Every URL visited during a run, and every link destination found, is compared against your rules in order. The **first** rule whose `pattern` matches decides whether that URL is included or excluded, so place specific rules before broad ones.\n*   URLs that match no rule are **included** by default. To include only specific URLs, list `include: true` rules for them followed by a catch-all `{ \"pattern\": \"*\", \"include\": false }` rule.\n\nPattern matching follows [URL Pattern API](https://developer.mozilla.org/en-US/docs/Web/API/URL_Pattern_API) semantics, with a few behaviors worth knowing:\n\n*   A pattern that omits the query string and hash matches URLs with any query string or hash. For example, `https://www.my-app.com/admin` matches `https://www.my-app.com/admin?tab=users`.\n*   Trailing slashes are optional by default: `https://www.my-app.com/admin` matches both `/admin` and `/admin/`. If your pattern ends with a `/`, only URLs with a trailing slash match it.\n*   A pattern without a protocol and hostname, such as `/admin/*`, matches that path on any protocol, hostname, and port. This is useful when tests run against multiple environments.\n*   A hostname must match exactly unless it contains a wildcard: `https://my-app.com/*` does not match `https://www.my-app.com/home`, but `https://*.my-app.com/*` does.\n*   The pattern `*` on its own matches every URL.\n",
      "section": "ui-coverage",
      "anchors": [
        "how-are-viewfilters-rules-applied"
      ],
      "path": "/llm/json/chunked/ui-coverage/configuration/viewfilters.json",
      "token_estimate": 267
    },
    {
      "id": "ui-coverage/configuration/viewfilters#validation-rules",
      "doc_id": "ui-coverage/configuration/viewfilters",
      "heading": "Validation rules",
      "heading_level": 3,
      "content_markdown": "### Validation rules\n\nCypress Cloud rejects a configuration when:\n\n*   A rule is missing `pattern` or `include`.\n*   A `pattern` isn't valid URL Pattern syntax.\n*   Two rules have the same `pattern`. Duplicates can never both apply, because the first matching rule wins.\n*   A rule contains a property other than the three listed above.\n",
      "section": "ui-coverage",
      "anchors": [
        "validation-rules"
      ],
      "path": "/llm/json/chunked/ui-coverage/configuration/viewfilters.json",
      "token_estimate": 73
    },
    {
      "id": "ui-coverage/configuration/viewfilters#examples",
      "doc_id": "ui-coverage/configuration/viewfilters",
      "heading": "Examples",
      "heading_level": 2,
      "content_markdown": "## Examples\n\n### Exclude a third-party page\n\nTests that sign in through an external identity provider capture snapshots of its pages, and your application's links to it count as untested elements. One rule removes both, while every other URL stays included by default.\n\n#### Config\n\nApp Quality Config\n\n```\n{  \"viewFilters\": [    {      \"pattern\": \"https://app.okta.com/*\",      \"include\": false,      \"comment\": \"Exclude the Okta login flow\"    }  ]}\n```\n\n#### Visited URLs\n\n```\nhttps://app.okta.com/loginhttps://www.my-app.com/homehttps://www.my-app.com/about\n```\n\n#### Views shown in UI\n\n```\nhttps://www.my-app.com/homehttps://www.my-app.com/about\n```\n\n* * *\n\n### Include only your application's URLs\n\nAn allowlist inverts the default. The first rule includes your application, and the catch-all `*` rule excludes everything else. Rules are applied in order, so the catch-all must come last.\n\n#### Config\n\nApp Quality Config\n\n```\n{  \"viewFilters\": [    {      \"pattern\": \"https://www.my-app.com/*\",      \"include\": true    },    {      \"pattern\": \"*\",      \"include\": false,      \"comment\": \"Exclude everything that isn't the app itself\"    }  ]}\n```\n\n#### Visited URLs\n\n```\nhttps://www.my-app.com/dashboardshttps://www.my-app.com/dashboards/1https://www.my-app.com/dashboards/2https://auth.example.com/loginhttps://checkout.stripe.com/pay\n```\n\n#### Views shown in UI\n\n```\n/dashboards/dashboards/*\n```\n\nThe two numbered dashboard URLs group into a single `/dashboards/*` view through the automatic [view creation rules](/llm/markdown/ui-coverage/core-concepts/views.md#How-views-are-created), which apply to included URLs as usual.\n\n* * *\n\n### Exclude error pages in every environment\n\nPatterns without a protocol and hostname match on any environment your tests run against, whether that's `localhost`, a staging domain, or production.\n\n#### Config\n\nApp Quality Config\n\n```\n{  \"viewFilters\": [    {      \"pattern\": \"/404\",      \"include\": false    },    {      \"pattern\": \"/error/*\",      \"include\": false    }  ]}\n```\n\n#### Visited URLs\n\n```\nhttp://localhost:3000/homehttp://localhost:3000/404https://staging.my-app.com/error/500\n```\n\n#### Views shown in UI\n\n```\nhttp://localhost:3000/home\n```\n\n* * *\n\n### Exclude URLs from UI Coverage only\n\nNesting `viewFilters` under `uiCoverage` applies the rules to UI Coverage alone. Here, an embedded documentation site is excluded from coverage scores while Cypress Accessibility continues to scan it.\n\n#### Config\n\nApp Quality Config\n\n```\n{  \"uiCoverage\": {    \"viewFilters\": [      {        \"pattern\": \"https://docs.my-app.com/*\",        \"include\": false,        \"comment\": \"Don't count docs pages or links to them toward coverage\"      }    ]  }}\n```\n\nA nested `viewFilters` replaces any root-level `viewFilters` for UI Coverage, so include every rule the product needs in the nested list.\n",
      "section": "ui-coverage",
      "anchors": [
        "examples"
      ],
      "path": "/llm/json/chunked/ui-coverage/configuration/viewfilters.json",
      "token_estimate": 463
    },
    {
      "id": "ui-coverage/configuration/viewfilters#exclude-a-third-party-page",
      "doc_id": "ui-coverage/configuration/viewfilters",
      "heading": "Exclude a third-party page",
      "heading_level": 3,
      "content_markdown": "### Exclude a third-party page\n\nTests that sign in through an external identity provider capture snapshots of its pages, and your application's links to it count as untested elements. One rule removes both, while every other URL stays included by default.\n\n#### Config\n\nApp Quality Config\n\n```\n{  \"viewFilters\": [    {      \"pattern\": \"https://app.okta.com/*\",      \"include\": false,      \"comment\": \"Exclude the Okta login flow\"    }  ]}\n```\n\n#### Visited URLs\n\n```\nhttps://app.okta.com/loginhttps://www.my-app.com/homehttps://www.my-app.com/about\n```\n\n#### Views shown in UI\n\n```\nhttps://www.my-app.com/homehttps://www.my-app.com/about\n```\n\n* * *\n",
      "section": "ui-coverage",
      "anchors": [
        "exclude-a-third-party-page"
      ],
      "path": "/llm/json/chunked/ui-coverage/configuration/viewfilters.json",
      "token_estimate": 108
    },
    {
      "id": "ui-coverage/configuration/viewfilters#include-only-your-applications-urls",
      "doc_id": "ui-coverage/configuration/viewfilters",
      "heading": "Include only your application's URLs",
      "heading_level": 3,
      "content_markdown": "### Include only your application's URLs\n\nAn allowlist inverts the default. The first rule includes your application, and the catch-all `*` rule excludes everything else. Rules are applied in order, so the catch-all must come last.\n\n#### Config\n\nApp Quality Config\n\n```\n{  \"viewFilters\": [    {      \"pattern\": \"https://www.my-app.com/*\",      \"include\": true    },    {      \"pattern\": \"*\",      \"include\": false,      \"comment\": \"Exclude everything that isn't the app itself\"    }  ]}\n```\n\n#### Visited URLs\n\n```\nhttps://www.my-app.com/dashboardshttps://www.my-app.com/dashboards/1https://www.my-app.com/dashboards/2https://auth.example.com/loginhttps://checkout.stripe.com/pay\n```\n\n#### Views shown in UI\n\n```\n/dashboards/dashboards/*\n```\n\nThe two numbered dashboard URLs group into a single `/dashboards/*` view through the automatic [view creation rules](/llm/markdown/ui-coverage/core-concepts/views.md#How-views-are-created), which apply to included URLs as usual.\n\n* * *\n",
      "section": "ui-coverage",
      "anchors": [
        "include-only-your-applications-urls"
      ],
      "path": "/llm/json/chunked/ui-coverage/configuration/viewfilters.json",
      "token_estimate": 144
    },
    {
      "id": "ui-coverage/configuration/viewfilters#config",
      "doc_id": "ui-coverage/configuration/viewfilters",
      "heading": "Config",
      "heading_level": 4,
      "content_markdown": "#### Config\n\nApp Quality Config\n\n```\n{  \"viewFilters\": [    {      \"pattern\": \"https://www.my-app.com/*\",      \"include\": true    },    {      \"pattern\": \"*\",      \"include\": false,      \"comment\": \"Exclude everything that isn't the app itself\"    }  ]}\n```\n",
      "section": "ui-coverage",
      "anchors": [
        "config"
      ],
      "path": "/llm/json/chunked/ui-coverage/configuration/viewfilters.json",
      "token_estimate": 41
    },
    {
      "id": "ui-coverage/configuration/viewfilters#views-shown-in-ui",
      "doc_id": "ui-coverage/configuration/viewfilters",
      "heading": "Views shown in UI",
      "heading_level": 4,
      "content_markdown": "#### Views shown in UI\n\n```\n/dashboards/dashboards/*\n```\n\nThe two numbered dashboard URLs group into a single `/dashboards/*` view through the automatic [view creation rules](/llm/markdown/ui-coverage/core-concepts/views.md#How-views-are-created), which apply to included URLs as usual.\n\n* * *\n",
      "section": "ui-coverage",
      "anchors": [
        "views-shown-in-ui"
      ],
      "path": "/llm/json/chunked/ui-coverage/configuration/viewfilters.json",
      "token_estimate": 47
    },
    {
      "id": "ui-coverage/configuration/viewfilters#exclude-error-pages-in-every-environment",
      "doc_id": "ui-coverage/configuration/viewfilters",
      "heading": "Exclude error pages in every environment",
      "heading_level": 3,
      "content_markdown": "### Exclude error pages in every environment\n\nPatterns without a protocol and hostname match on any environment your tests run against, whether that's `localhost`, a staging domain, or production.\n\n#### Config\n\nApp Quality Config\n\n```\n{  \"viewFilters\": [    {      \"pattern\": \"/404\",      \"include\": false    },    {      \"pattern\": \"/error/*\",      \"include\": false    }  ]}\n```\n\n#### Visited URLs\n\n```\nhttp://localhost:3000/homehttp://localhost:3000/404https://staging.my-app.com/error/500\n```\n\n#### Views shown in UI\n\n```\nhttp://localhost:3000/home\n```\n\n* * *\n",
      "section": "ui-coverage",
      "anchors": [
        "exclude-error-pages-in-every-environment"
      ],
      "path": "/llm/json/chunked/ui-coverage/configuration/viewfilters.json",
      "token_estimate": 92
    },
    {
      "id": "ui-coverage/configuration/viewfilters#exclude-urls-from-ui-coverage-only",
      "doc_id": "ui-coverage/configuration/viewfilters",
      "heading": "Exclude URLs from UI Coverage only",
      "heading_level": 3,
      "content_markdown": "### Exclude URLs from UI Coverage only\n\nNesting `viewFilters` under `uiCoverage` applies the rules to UI Coverage alone. Here, an embedded documentation site is excluded from coverage scores while Cypress Accessibility continues to scan it.\n\n#### Config\n\nApp Quality Config\n\n```\n{  \"uiCoverage\": {    \"viewFilters\": [      {        \"pattern\": \"https://docs.my-app.com/*\",        \"include\": false,        \"comment\": \"Don't count docs pages or links to them toward coverage\"      }    ]  }}\n```\n\nA nested `viewFilters` replaces any root-level `viewFilters` for UI Coverage, so include every rule the product needs in the nested list.\n",
      "section": "ui-coverage",
      "anchors": [
        "exclude-urls-from-ui-coverage-only"
      ],
      "path": "/llm/json/chunked/ui-coverage/configuration/viewfilters.json",
      "token_estimate": 116
    },
    {
      "id": "ui-coverage/configuration/viewfilters#config",
      "doc_id": "ui-coverage/configuration/viewfilters",
      "heading": "Config",
      "heading_level": 4,
      "content_markdown": "#### Config\n\nApp Quality Config\n\n```\n{  \"uiCoverage\": {    \"viewFilters\": [      {        \"pattern\": \"https://docs.my-app.com/*\",        \"include\": false,        \"comment\": \"Don't count docs pages or links to them toward coverage\"      }    ]  }}\n```\n\nA nested `viewFilters` replaces any root-level `viewFilters` for UI Coverage, so include every rule the product needs in the nested list.\n",
      "section": "ui-coverage",
      "anchors": [
        "config"
      ],
      "path": "/llm/json/chunked/ui-coverage/configuration/viewfilters.json",
      "token_estimate": 69
    },
    {
      "id": "ui-coverage/configuration/viewfilters#troubleshooting",
      "doc_id": "ui-coverage/configuration/viewfilters",
      "heading": "Troubleshooting",
      "heading_level": 2,
      "content_markdown": "## Troubleshooting\n\n### A URL you excluded still appears in the report\n\n*   Rules apply in order, and the first match wins. Check whether an earlier rule with `include: true` matches the URL.\n*   A pattern that starts with a hostname, like `my-app.com/admin`, is interpreted as a path rather than a hostname and never matches the URLs you intend. Include the protocol, as in `https://my-app.com/admin/*`, or use the path-only form `/admin/*`.\n*   Hostnames must match exactly. `https://my-app.com/*` doesn't match URLs on `www.my-app.com`; add a wildcard such as `https://*.my-app.com/*` to span subdomains.\n*   Reports use the configuration saved at the time they were processed. Regenerate the run to apply your current configuration. See [Setting configuration](/llm/markdown/ui-coverage/configuration/overview.md#Setting-configuration).\n\n### Error: `Missing include boolean`\n\nEvery rule must set `include` explicitly; there is no default value. Add `\"include\": false` to exclude matching URLs, or `\"include\": true` to include them.\n\n### Error: `No duplicate patterns allowed`\n\nEach `pattern` in `viewFilters` must be unique. Because the first matching rule wins, a second rule with the same pattern can never apply; remove it or merge the two rules.\n",
      "section": "ui-coverage",
      "anchors": [
        "troubleshooting"
      ],
      "path": "/llm/json/chunked/ui-coverage/configuration/viewfilters.json",
      "token_estimate": 239
    },
    {
      "id": "ui-coverage/configuration/viewfilters#a-url-you-excluded-still-appears-in-the-report",
      "doc_id": "ui-coverage/configuration/viewfilters",
      "heading": "A URL you excluded still appears in the report",
      "heading_level": 3,
      "content_markdown": "### A URL you excluded still appears in the report\n\n*   Rules apply in order, and the first match wins. Check whether an earlier rule with `include: true` matches the URL.\n*   A pattern that starts with a hostname, like `my-app.com/admin`, is interpreted as a path rather than a hostname and never matches the URLs you intend. Include the protocol, as in `https://my-app.com/admin/*`, or use the path-only form `/admin/*`.\n*   Hostnames must match exactly. `https://my-app.com/*` doesn't match URLs on `www.my-app.com`; add a wildcard such as `https://*.my-app.com/*` to span subdomains.\n*   Reports use the configuration saved at the time they were processed. Regenerate the run to apply your current configuration. See [Setting configuration](/llm/markdown/ui-coverage/configuration/overview.md#Setting-configuration).\n",
      "section": "ui-coverage",
      "anchors": [
        "a-url-you-excluded-still-appears-in-the-report"
      ],
      "path": "/llm/json/chunked/ui-coverage/configuration/viewfilters.json",
      "token_estimate": 149
    },
    {
      "id": "ui-coverage/configuration/viewfilters#error-no-duplicate-patterns-allowed",
      "doc_id": "ui-coverage/configuration/viewfilters",
      "heading": "Error: No duplicate patterns allowed",
      "heading_level": 3,
      "content_markdown": "### Error: `No duplicate patterns allowed`\n\nEach `pattern` in `viewFilters` must be unique. Because the first matching rule wins, a second rule with the same pattern can never apply; remove it or merge the two rules.\n",
      "section": "ui-coverage",
      "anchors": [
        "error-no-duplicate-patterns-allowed"
      ],
      "path": "/llm/json/chunked/ui-coverage/configuration/viewfilters.json",
      "token_estimate": 48
    },
    {
      "id": "ui-coverage/configuration/viewfilters#see-also",
      "doc_id": "ui-coverage/configuration/viewfilters",
      "heading": "See also",
      "heading_level": 2,
      "content_markdown": "## See also\n\n*   [Guide: Ignore views and links](/llm/markdown/ui-coverage/guides/ignore-views-and-links.md) walks through finding and excluding irrelevant URLs in an existing report.\n*   [`views`](/llm/markdown/ui-coverage/configuration/views.md) groups and names URLs instead of removing them.\n*   [`elementFilters`](/llm/markdown/ui-coverage/configuration/elementfilters.md) removes individual elements from reports rather than whole pages.\n*   [Views core concept](/llm/markdown/ui-coverage/core-concepts/views.md) explains how included URLs become the views your report is organized around.\n*   [Configuration overview](/llm/markdown/ui-coverage/configuration/overview.md) covers where configuration lives and how to regenerate reports after changing it.\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/configuration/viewfilters.json",
      "token_estimate": 113
    }
  ]
}