From 04ccaa4648191660ce5211d84f5e9f646c97c31e Mon Sep 17 00:00:00 2001 From: marktnoonan Date: Thu, 4 Dec 2025 18:00:51 -0500 Subject: [PATCH 01/14] initial pass at docs for config profiles --- docs/accessibility/configuration/overview.mdx | 52 +++- docs/accessibility/configuration/profiles.mdx | 12 + docs/partials/_attributefilters.mdx | 4 +- docs/partials/_elementfilters.mdx | 7 +- docs/partials/_profiles.mdx | 249 ++++++++++++++++++ docs/partials/_viewfilters.mdx | 4 +- docs/partials/_views.mdx | 4 +- .../allowedinteractioncommands.mdx | 4 +- .../configuration/elementgroups.mdx | 4 +- docs/ui-coverage/configuration/elements.mdx | 4 +- docs/ui-coverage/configuration/overview.mdx | 46 +++- docs/ui-coverage/configuration/profiles.mdx | 12 + src/theme/MDXComponents.js | 2 + 13 files changed, 382 insertions(+), 22 deletions(-) create mode 100644 docs/accessibility/configuration/profiles.mdx create mode 100644 docs/partials/_profiles.mdx create mode 100644 docs/ui-coverage/configuration/profiles.mdx diff --git a/docs/accessibility/configuration/overview.mdx b/docs/accessibility/configuration/overview.mdx index eac51fe0bf..213cead99b 100644 --- a/docs/accessibility/configuration/overview.mdx +++ b/docs/accessibility/configuration/overview.mdx @@ -22,45 +22,79 @@ To add or modify the configuration for your project, navigate to the "App Qualit alt="The Cypress Cloud UI showing the configuration editor" /> -You can use the provided editor to write configuration in JSON format. A complete configuration with all available options looks as follows: +You can use the provided editor to write configuration in JSON format. -```typescript +### Comments + +All configuration objects support an optional `comment` property that you can use to provide context and explanations for why certain values are set. This helps make your configuration easier to understand and maintain, especially when working in teams or revisiting configuration after some time. + +```json +{ + "elementFilters": [ + { + "selector": "[data-testid*='temp']", + "include": false, + "comment": "Exclude temporary test elements from accessibility reports" + } + ] +} +``` + +### Profiles + +The `profiles` property allows you to use different configuration settings for different runs based on [run tags](/app/references/command-line#cypress-run-tag-lt-tag-gt). See the [Profiles](/accessibility/configuration/profiles) guide for more details. + +### Complete configuration example + +A complete configuration with all available options looks as follows: + +```json { "views": [ { "pattern": string, "groupBy": [ string - ] + ], + "comment": string } ], "viewFilters": [ { "pattern": string, - "include": boolean + "include": boolean, + "comment": string } ], "elementFilters": [ { "selector": string, - "include": boolean + "include": boolean, + "comment": string } ], "significantAttributes": [ string - ] + ], "attributeFilters": [ { "attribute": string, "value": string, - "include": boolean + "include": boolean, + "comment": string + } + ], + "profiles": [ + { + "name": string, + "config": { + // Any App Quality configuration options + } } ] } ``` -Note that these root-level App Quality configuration properties (`elementFilters`, `views`, and `viewFilters`) impact both UI Coverage and Accessibility. - ### Viewing Configuration for a Run You can view configuration information for each run in the Properties tab, as shown below. This is the configuration set for the project at the start of the run. diff --git a/docs/accessibility/configuration/profiles.mdx b/docs/accessibility/configuration/profiles.mdx new file mode 100644 index 0000000000..43cf2bf252 --- /dev/null +++ b/docs/accessibility/configuration/profiles.mdx @@ -0,0 +1,12 @@ +--- +sidebar_label: profiles +title: 'Profiles | Cypress Accessibility' +description: 'The `profiles` configuration property allows you to create configuration overrides that are applied based on run tags.' +sidebar_position: 100 +--- + + + +# profiles + + diff --git a/docs/partials/_attributefilters.mdx b/docs/partials/_attributefilters.mdx index 91474d0613..acff3db8cf 100644 --- a/docs/partials/_attributefilters.mdx +++ b/docs/partials/_attributefilters.mdx @@ -24,7 +24,8 @@ supported, if you need to split them up. { "attribute": string, "value": string, - "include": boolean + "include": boolean, + "comment": string } ] } @@ -39,6 +40,7 @@ For every attribute that an element has, the first `attributeFilters` rule for w | `attribute` | Required | | A regex string to match attribute names | | `value` | Optional | `.*` | A regex string to match attribute values | | `include` | Optional | `true` | A boolean to specify whether the matched attribute should be included. | +| `comment` | Optional | | A comment describing the purpose of this filter rule. | ## Examples diff --git a/docs/partials/_elementfilters.mdx b/docs/partials/_elementfilters.mdx index a71b966a0a..ab15d81d35 100644 --- a/docs/partials/_elementfilters.mdx +++ b/docs/partials/_elementfilters.mdx @@ -18,7 +18,8 @@ supported, if you need to split them up. "elementFilters": [ { "selector": string, - "include": boolean + "include": boolean, + "comment": string } ] } @@ -32,6 +33,7 @@ The first `elementFilters` rule for which the selector property matches the elem | ---------- | -------- | ------- | -------------------------------------------------------------------------------------------------------------------------------- | | `selector` | Required | | A CSS selector to identify elements. Supports standard CSS selector syntax, including IDs, classes, attributes, and combinators. | | `include` | Optional | `true` | A boolean indicating whether the matched elements should be included in the report. | +| `comment` | Optional | | A comment describing the purpose of this filter rule. | ## Examples @@ -44,7 +46,8 @@ The first `elementFilters` rule for which the selector property matches the elem "elementFilters": [ { "selector": "#button-2", - "include": false + "include": false, + "comment": "Exclude test-only button from reports" } ] } diff --git a/docs/partials/_profiles.mdx b/docs/partials/_profiles.mdx new file mode 100644 index 0000000000..50e379dab6 --- /dev/null +++ b/docs/partials/_profiles.mdx @@ -0,0 +1,249 @@ +The `profiles` property allows you to create configuration overrides that are applied based on run tags. This enables you to use different configuration settings for different types of runs, such as regression tests compared to smoke tests environments, or providing scoped results relevant to specific teams. + +## Why use profiles? + +- **Team specific reporting**: If multiple teams use the same Cypress Cloud project, they may have completely different areas of concern for which pages or DOM elements are included in reports about accessibility or UI Coverage. Profiles allow each team to see and track against only the results that matter to them, and remove all other findings. +- **Run-type customization**: Use different filters or settings for regression runs versus pull requests. It can be useful to have a narrow config for blocking a merge, optimized for the most critical areas of your app -- while still running a wide config on a full regression suite to manage on a difference cadence. +- **Skip runs when needed**: If you know that certain kinds of runs are not going to be valuable for App Quality reporting, you can ignore all view on these runs so that no report is created. In some situations this can improve clarity about when to look at a report and which reports are considered significant. + +## How profiles work + +Profiles are selected by matching run tags to profile names. When you run Cypress with the [`--tag`](/app/references/command-line#cypress-run-tag-lt-tag-gt) flag, Cypress Cloud looks for a profile whose `name` matches one of the tags. If a match is found, properties defined in profile's `config` properties override the root configuration. Properties defined in the root that are not referenced in the profile will be inherited, meaning you do not need to repeat config values that you want to keep the same. + +If more than one tag provided to a run matches a profile in your App Quality profiles array, the first matching profile in the array will be used. The order in which the tags are passed to the run doesn't matter. + +## Best practices + +Use a naming convention like `aq-config-x` (e.g., `aq-config-regression`, `aq-config-staging`) to make it clear that a tag is used for configuration lookup purposes. + +While relying on existing tags works just fine, but being explicit will help avoid accidental removal or changes of important tags. + +## Syntax + +```json +{ + "profiles": [ + { + "name": string, + "config": { + // Any App Quality configuration options + }, + "comment": string + } + ] +} +``` + +### Options + +| Option | Required | Description | +| --------- | -------- | --------------------------------------------------------------------------------------------------------- | +| `name` | Required | The profile name that must match a run tag to activate this profile. | +| `config` | Required | An object containing any App Quality configuration options. These values override the root configuration. | +| `comment` | Optional | A comment describing the purpose of this profile. | + +## Examples + +### Basic profile structure + +#### Config + +```json +{ + "elementFilters": [ + { + "selector": "[data-testid*='temp']", + "include": false, + "comment": "Exclude temporary test elements" + } + ], + "profiles": [ + { + "name": "aq-config-regression", + "config": { + "elementFilters": [ + { + "selector": "[data-testid*='temp']", + "include": false, + "comment": "Exclude temporary test elements in regression runs" + }, + { + "selector": "[data-role='debug']", + "include": false, + "comment": "Exclude debug elements in regression runs" + } + ] + } + } + ] +} +``` + +#### Usage + +To use this profile, run Cypress with a matching tag: + +```shell +cypress run --record --tag "aq-config-regression" +``` + +When this tag is used, the profile's `elementFilters` configuration will override the base `elementFilters`, excluding both temporary test elements and debug elements. + +--- + +### Multiple profiles + +You can define multiple profiles for different scenarios: + +#### Config + +```json +{ + "elementFilters": [ + { + "selector": "[data-testid*='temp']", + "include": false + } + ], + "profiles": [ + { + "name": "aq-config-regression", + "config": { + "elementFilters": [ + { + "selector": "[data-testid*='temp']", + "include": false + }, + { + "selector": "[data-role='debug']", + "include": false, + "comment": "Exclude debug elements in regression runs" + } + ] + } + }, + { + "name": "aq-config-staging", + "config": { + "viewFilters": [ + { + "pattern": "https://staging.example.com/admin/*", + "include": false, + "comment": "Exclude admin pages in staging runs" + } + ] + } + } + ] +} +``` + +#### Usage + +Use different tags to activate different profiles: + +```shell +# For regression runs +cypress run --record --tag "aq-config-regression" + +# For staging runs +cypress run --record --tag "aq-config-staging" +``` + +--- + +### Profile with nested configuration + +Profiles can override configuration at any level, including nested configuration specific to Cypress Accessibility or UI Coverage, if your project has both projects enabled. For example: + +#### Config + +```json +{ + "elementFilters": [ + { + "selector": "[data-testid*='temp']", + "include": false + } + ], + "uiCoverage": { + "attributeFilters": [ + { + "attribute": "id", + "value": ":r.*:", + "include": false, + "comment": "Filter out React auto-generated IDs" + } + ] + }, + "profiles": [ + { + "name": "aq-config-feature-branch", + "config": { + "uiCoverage": { + "elementGroups": [ + { + "selector": "[data-feature='new-checkout']", + "name": "New Checkout Flow", + "comment": "Group new checkout elements for feature branch testing" + } + ] + } + } + } + ] +} +``` + +#### Usage + +```shell +cypress run --record --tag "aq-config-feature-branch" +``` + +This profile adds element grouping for the new checkout flow while keeping the base configuration for element filters and attribute filters. + +--- + +### Profile selection with multiple matching tags + +If you pass multiple tags and more than one matches a profile name, the first matching profile in the `profiles` array is used: + +#### Config + +```json +{ + "profiles": [ + { + "name": "aq-config-regression", + "config": { + "elementFilters": [ + { + "selector": "[data-role='debug']", + "include": false + } + ] + } + }, + { + "name": "aq-config-staging", + "config": { + "viewFilters": [ + { + "pattern": "https://staging.example.com/admin/*", + "include": false + } + ] + } + } + ] +} +``` + +#### Usage + +```shell +cypress run --record --tag "aq-config-regression,aq-config-staging" +``` + +In this case, the `aq-config-regression` profile will be used because it appears first in the `profiles` array, even though both tags match profile names. diff --git a/docs/partials/_viewfilters.mdx b/docs/partials/_viewfilters.mdx index d677361e85..a6c22304d9 100644 --- a/docs/partials/_viewfilters.mdx +++ b/docs/partials/_viewfilters.mdx @@ -27,7 +27,8 @@ supported, if you need to split them up. "viewFilters": [ { "pattern": string, - "include": boolean + "include": boolean, + "comment": string } ] } @@ -41,6 +42,7 @@ For every URL visited and link element found, the first `viewFilters` rule for w | --------- | -------- | ------- | ---------------------------------------------------------------------------------------------------------------------------- | | `pattern` | Required | | A string that matches URLs using [URL Pattern API](https://developer.mozilla.org/en-US/docs/Web/API/URL_Pattern_API) syntax. | | `include` | Optional | `true` | A boolean that determines whether matching URLs should be included in the report. | +| `comment` | Optional | | A comment describing the purpose of this filter rule. | ## Examples diff --git a/docs/partials/_views.mdx b/docs/partials/_views.mdx index b458411835..bc453d4d6b 100644 --- a/docs/partials/_views.mdx +++ b/docs/partials/_views.mdx @@ -34,7 +34,8 @@ URLs with the same values for the specified parameters will be grouped together, "pattern": string, "groupBy": [ string - ] + ], + "comment": string } ] } @@ -48,6 +49,7 @@ The first pattern that a given URL matches is used as its view. If a URL doesn't | --------- | -------- | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | | `pattern` | Required | | A URL pattern to group matching URLs into a single view. Uses [URL Pattern API](https://developer.mozilla.org/en-US/docs/Web/API/URL_Pattern_API) syntax. | | `groupBy` | Optional | | An array of named parameters from your pattern that should create separate views. | +| `comment` | Optional | | A comment describing the purpose of this view configuration. | ## Examples diff --git a/docs/ui-coverage/configuration/allowedinteractioncommands.mdx b/docs/ui-coverage/configuration/allowedinteractioncommands.mdx index 98264e2f36..68933d8b1b 100644 --- a/docs/ui-coverage/configuration/allowedinteractioncommands.mdx +++ b/docs/ui-coverage/configuration/allowedinteractioncommands.mdx @@ -26,7 +26,8 @@ This is particularly useful for filtering out irrelevant interactions or focusin "allowedInteractionCommands": [ { "selector": string, - "commands": [string] + "commands": [string], + "comment": string } ] } @@ -41,6 +42,7 @@ The `allowedInteractionCommands` property accepts an array of objects, where eac | ---------- | -------- | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `selector` | Required | | A CSS selector to identify elements. Supports standard CSS selector syntax, including IDs, classes, attributes, and combinators. | | `commands` | Required | | An array of command names (strings) that should be tracked as interactions for elements matching the selector. All other interaction commands will be ignored for these elements. | +| `comment` | Optional | | A comment describing the purpose of this allowed interaction commands configuration. | ## Examples diff --git a/docs/ui-coverage/configuration/elementgroups.mdx b/docs/ui-coverage/configuration/elementgroups.mdx index 812fde8ed6..980c6f7a62 100644 --- a/docs/ui-coverage/configuration/elementgroups.mdx +++ b/docs/ui-coverage/configuration/elementgroups.mdx @@ -26,7 +26,8 @@ UI Coverage provides logic to automatically [group](/ui-coverage/core-concepts/e "elementGroups": [ { "selector": string, - "name": string + "name": string, + "comment": string } ] } @@ -41,6 +42,7 @@ For every element considered by UI Coverage, the first `elementGroup` rule for w | ---------- | -------- | ---------- | -------------------------------------------------------------------------------------------------------------------------------- | | `selector` | Required | | A CSS selector to identify elements. Supports standard CSS selector syntax, including IDs, classes, attributes, and combinators. | | `name` | Optional | `selector` | A human-readable name for the group, displayed in UI Coverage reports. | +| `comment` | Optional | | A comment describing the purpose of this element group configuration. | ## Examples diff --git a/docs/ui-coverage/configuration/elements.mdx b/docs/ui-coverage/configuration/elements.mdx index d768403c03..c6baa57543 100644 --- a/docs/ui-coverage/configuration/elements.mdx +++ b/docs/ui-coverage/configuration/elements.mdx @@ -27,7 +27,8 @@ The `elements` configuration is used as the element's identity if **only one ele "elements": [ { "selector": string, - "name": string + "name": string, + "comment": string } ] } @@ -44,6 +45,7 @@ If multiple elements within the same snapshot satisfy the same rule, the rule ca | ---------- | -------- | ---------- | -------------------------------------------------------------------------------------------------------------------------------- | | `selector` | Required | | A CSS selector to identify elements. Supports standard CSS selector syntax, including IDs, classes, attributes, and combinators. | | `name` | Optional | `selector` | A human-readable name for the element, displayed in UI Coverage reports. | +| `comment` | Optional | | A comment describing the purpose of this element configuration. | ## Examples diff --git a/docs/ui-coverage/configuration/overview.mdx b/docs/ui-coverage/configuration/overview.mdx index c4fe1903f9..964d113268 100644 --- a/docs/ui-coverage/configuration/overview.mdx +++ b/docs/ui-coverage/configuration/overview.mdx @@ -44,6 +44,28 @@ For a quick overview of the practical application of the most common UI Coverage ::: +### Comments + +All configuration objects support an optional `comment` property that you can use to provide context and explanations for why certain values are set. This helps make your configuration easier to understand and maintain, especially when working in teams or revisiting configuration after some time. + +```json +{ + "elementFilters": [ + { + "selector": "[data-testid*='temp']", + "include": false, + "comment": "Exclude temporary test elements from coverage" + } + ] +} +``` + +### Profiles + +The `profiles` property allows you to use different configuration settings for different runs based on [run tags](/app/references/command-line#cypress-run-tag-lt-tag-gt). See the [Profiles](/ui-coverage/configuration/profiles) guide for more details. + +### Complete configuration example + A complete configuration with all available options looks as follows: ```json @@ -51,7 +73,8 @@ A complete configuration with all available options looks as follows: "elementFilters": [ { "selector": string, - "include": boolean + "include": boolean, + "comment": string } ], "views": [ @@ -59,13 +82,23 @@ A complete configuration with all available options looks as follows: "pattern": string, "groupBy": [ string - ] + ], + "comment": string } ], "viewFilters": [ { "pattern": string, - "include": boolean + "include": boolean, + "comment": string + } + ], + "profiles": [ + { + "name": string, + "config": { + // Any App Quality configuration options + } } ], "uiCoverage": { @@ -73,13 +106,15 @@ A complete configuration with all available options looks as follows: { "attribute": string, "value": string, - "include": boolean + "include": boolean, + "comment": string } ], "elementGroups": [ { "selector": string, - "name": string + "name": string, + "comment": string } ], "significantAttributes": [ @@ -112,6 +147,7 @@ Check out the following configuration guides. - [Element Filters](/ui-coverage/configuration/elementfilters) - [Element Groups](/ui-coverage/configuration/elementgroups) - [Elements](/ui-coverage/configuration/elements) +- [Profiles](/ui-coverage/configuration/profiles) - [Significant Attributes](/ui-coverage/configuration/significantattributes) - [View Filters](/ui-coverage/configuration/viewfilters) - [Views](/ui-coverage/configuration/views) diff --git a/docs/ui-coverage/configuration/profiles.mdx b/docs/ui-coverage/configuration/profiles.mdx new file mode 100644 index 0000000000..a2da5d87cc --- /dev/null +++ b/docs/ui-coverage/configuration/profiles.mdx @@ -0,0 +1,12 @@ +--- +title: 'Profiles | Cypress UI Coverage' +description: 'The `profiles` configuration property allows you to create configuration overrides that are applied based on run tags.' +sidebar_label: profiles +sidebar_position: 100 +--- + + + +# profiles + + diff --git a/src/theme/MDXComponents.js b/src/theme/MDXComponents.js index 9620dad1a4..9d0e073a9a 100644 --- a/src/theme/MDXComponents.js +++ b/src/theme/MDXComponents.js @@ -28,6 +28,7 @@ import Icon from "@site/src/components/icon"; import ImportMountFunctions from "@site/docs/partials/_import-mount-functions.mdx"; import IntellisenseCodeCompletion from "@site/docs/partials/_intellisense-code-completion.mdx"; import ProductHeading from "@site/src/components/product-heading"; +import Profiles from "@site/docs/partials/_profiles.mdx"; import SignificantAttributes from "@site/docs/partials/_significantattributes.mdx"; import SourceMaps from "@site/docs/partials/_source-maps.mdx"; import SupportFileConfiguration from "@site/docs/partials/_support-file-configuration.mdx"; @@ -192,6 +193,7 @@ export default { ImportMountFunctions, IntellisenseCodeCompletion, ProductHeading, + Profiles, SignificantAttributes, SourceMaps, SupportFileConfiguration, From 7b28b7a4696c1745226be69a2d1c3eef10742ab7 Mon Sep 17 00:00:00 2001 From: Mark Noonan Date: Tue, 9 Dec 2025 09:27:27 -0500 Subject: [PATCH 02/14] Update docs/partials/_profiles.mdx Co-authored-by: Tyler Biethman --- docs/partials/_profiles.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/partials/_profiles.mdx b/docs/partials/_profiles.mdx index 50e379dab6..9f7e84dbff 100644 --- a/docs/partials/_profiles.mdx +++ b/docs/partials/_profiles.mdx @@ -16,7 +16,7 @@ If more than one tag provided to a run matches a profile in your App Quality pro Use a naming convention like `aq-config-x` (e.g., `aq-config-regression`, `aq-config-staging`) to make it clear that a tag is used for configuration lookup purposes. -While relying on existing tags works just fine, but being explicit will help avoid accidental removal or changes of important tags. +While relying on existing tags works just fine, being explicit will help avoid accidental removal of or changes to important tags. ## Syntax From b9f24514f94a2b5c046a2cd6d659aae08166a525 Mon Sep 17 00:00:00 2001 From: marktnoonan Date: Tue, 9 Dec 2025 10:56:10 -0500 Subject: [PATCH 03/14] wip baseline docs --- .../guides/block-pull-requests.mdx | 254 +++++++++++++++++ docs/accessibility/results-api.mdx | 4 + .../guides/block-pull-requests.mdx | 262 ++++++++++++++++++ docs/ui-coverage/results-api.mdx | 25 ++ 4 files changed, 545 insertions(+) create mode 100644 docs/ui-coverage/guides/block-pull-requests.mdx diff --git a/docs/accessibility/guides/block-pull-requests.mdx b/docs/accessibility/guides/block-pull-requests.mdx index 54e23ea762..2a7ccf24ce 100644 --- a/docs/accessibility/guides/block-pull-requests.mdx +++ b/docs/accessibility/guides/block-pull-requests.mdx @@ -63,3 +63,257 @@ getAccessibilityResults().then((results) => { ``` By examining the results and customizing your response, you gain maximum control over how to handle accessibility violations. Leverage CI environment context, such as tags, to fine-tune responses to specific accessibility outcomes. + +## Comparing against a baseline + +Comparing current results against a stored baseline allows you to detect only new violations that have been introduced, while ignoring existing known issues. This approach is more sophisticated than simply maintaining a list of known failing rules, as it tracks violations at the view level and can detect both regressions (new violations) and improvements (resolved violations). + +This is particularly useful in CI/CD pipelines where you want to fail builds only when new accessibility violations are introduced, allowing you to address existing issues incrementally without blocking deployments. + +### Baseline structure + +You can use any format you like as baseline for comparing reports. In the example code below we generate a baseline in a simplified format, which captures the state of accessibility violations from a specific run. The Results API handler code logs this for every run so that it can be easily copied as a new reference point. + +It includes: + +- **runNumber**: The run number used as the baseline reference +- **severityLevels**: The severity levels to track (e.g., `['critical', 'serious', 'moderate', 'minor']`) +- **views**: An object mapping view display names to arrays of failed rule names for that view + +```javascript +{ + "runNumber": "111", + "severityLevels": [ + "critical", + "serious", + "moderate", + "minor" + ], + "views": { + "/": [ + "aria-dialog-name", + "heading-order", + "scrollable-region-focusable" + ], + "/authorizations": [ + "heading-order", + "listitem", + "region" + ] + } +} +``` + +### Complete example + +The following example demonstrates how to compare current results against a baseline, detect new violations, identify resolved violations, and generate a new baseline when changes are detected. + +```javascript title="scripts/compareAccessibilityBaseline.js" +require('dotenv').config(); + +const { getAccessibilityResults } = require('@cypress/extract-cloud-results'); +const fs = require('fs'); + +const TARGET_SEVERITY_LEVELS = ['critical', 'serious', 'moderate', 'minor']; + +// Parse the run number from an accessibility report URL +const parseRunNumber = (url) => { + return url.split('runs/')[1].split('/accessibility')[0]; +}; + +// Define your baseline - this should be stored and updated as your application improves +const baseline = { + "runNumber": "111", + "severityLevels": [ + "critical", + "serious", + "moderate", + "minor" + ], + "views": { + "/": [ + "aria-dialog-name", + "heading-order", + "scrollable-region-focusable", + "empty-table-header", + "listitem", + "region", + "aria-required-children", + "presentation-role-conflict", + "scope-attr-valid", + "aria-prohibited-attr", + "aria-allowed-attr" + ], + "/authorizations": [ + "heading-order", + "listitem", + "region", + "presentation-role-conflict", + "svg-img-alt", + "aria-allowed-attr" + ] + } +}; + +getAccessibilityResults().then((results) => { + // Create objects to store the results + const viewRules = {}; + const viewsWithNewFailedRules = {}; + const viewsWithMissingRules = {}; + + // Iterate through each view in current results + results.views.forEach(view => { + const displayName = view.displayName; + const ruleNames = view.rules.map(rule => rule.name); + + // Add to our results object + viewRules[displayName] = ruleNames; + + // Check for new failing rules + if (view.rules.length) { + view.rules.forEach(rule => { + if (!TARGET_SEVERITY_LEVELS.includes(rule.severity)) { + return; + } + + // If the view exists in baseline and the rule is not in baseline's failed rules + if (!baseline.views?.[displayName]?.includes(rule.name)) { + if (viewsWithNewFailedRules[displayName]) { + viewsWithNewFailedRules[displayName].newFailedRules.push({ + name: rule.name, + url: rule.accessibilityReportUrl, + }); + } else { + viewsWithNewFailedRules[displayName] = { + newFailedRules: [{ + name: rule.name, + url: rule.accessibilityReportUrl, + }] + }; + } + } + }); + } + }); + + // Check for rules in baseline that are not in current results (resolved rules) + Object.entries(baseline.views).forEach(([displayName, baselineRules]) => { + const currentRules = viewRules[displayName] || []; + const resolvedRules = baselineRules.filter(rule => !currentRules.includes(rule)); + + if (resolvedRules.length > 0) { + viewsWithMissingRules[displayName] = { resolvedRules }; + } + }); + + // Report any missing rules + const countOfViewsWithMissingRules = Object.keys(viewsWithMissingRules).length; + const countOfViewsWithNewFailedRules = Object.keys(viewsWithNewFailedRules).length; + + if (countOfViewsWithMissingRules || countOfViewsWithNewFailedRules) { + // Generate and log the new baseline values if there has been a change + const newBaseline = generateBaseline(results); + console.log('\nTo use this run as the new baseline, copy these values:'); + console.log(JSON.stringify(newBaseline, null, 2)); + fs.writeFileSync('new-baseline.json', JSON.stringify(newBaseline, null, 2)); + } + + if (countOfViewsWithMissingRules) { + console.log('\nThe following Views had rules in the baseline that are no longer failing. This may be due to improvements in these rules, or because you did not run as many tests in this run as the baseline run:'); + console.dir(viewsWithMissingRules, { depth: 3 }); + } else if (!countOfViewsWithNewFailedRules) { + console.log('\nNo new or resolved rules were detected. All violations match the baseline.\n'); + } + + if (countOfViewsWithNewFailedRules) { + // Report any new failing rules + console.error('\nThe following Views had rules violated that were previously passing:'); + console.dir(viewsWithNewFailedRules, { depth: 3 }); + throw new Error( + `${countOfViewsWithNewFailedRules} Views contained new failing accessibility rules.` + ); + } + + return viewRules; +}); + +function generateBaseline(results) { + try { + // Create an object to store the results + const viewRules = {}; + + // Iterate through each view + results.views.forEach(view => { + // Get the displayName and extract the rule names + const displayName = view.displayName; + const ruleNames = view.rules + .filter(rule => TARGET_SEVERITY_LEVELS.includes(rule.severity)) + .map(rule => rule.name); + + // Add to our results object + viewRules[displayName] = ruleNames; + }); + + const runNumber = parseRunNumber(results.views[0].accessibilityReportUrl); + + return { + runNumber, + severityLevels: TARGET_SEVERITY_LEVELS, + views: viewRules + }; + } catch (error) { + console.error('Error parsing accessibility results:', error); + return null; + } +} +``` + +### Key concepts + +#### New failing rules + +A **new failing rule** is a rule that has violations in the current run but was not present in the baseline for that view. These represent regressions that need to be addressed. The script will fail the build if any new failing rules are detected. + +#### Resolved rules + +A **resolved rule** is a rule that was present in the baseline but no longer has violations in the current run. These represent improvements in accessibility. The script reports these but does not fail the build, allowing you to track progress. + +#### Severity filtering + +The baseline comparison only tracks rules at the severity levels you specify in `TARGET_SEVERITY_LEVELS`. This allows you to focus on the severity levels that matter most to your team. Rules at other severity levels are ignored during comparison. + +#### View-level comparison + +Violations are tracked per view (URL pattern or component), allowing you to see exactly which pages or components have regressed or improved. This granular tracking makes it easier to identify the source of changes and assign fixes to the appropriate teams. + +### Best practices + +#### When to update the baseline + +Update your baseline when: +- You've fixed accessibility violations and want to prevent regressions +- You've accepted certain violations as known issues that won't block deployments +- You want to track improvements over time + +Store the baseline in version control so it's versioned alongside your code and accessible in CI environments. + +#### Handling partial reports + +If a run is cancelled or incomplete, the Results API may return a partial report. Consider checking `summary.isPartialReport` before comparing against the baseline, as partial reports may not include all views and could produce false positives. + +#### Managing baseline across branches + +You may want different baselines for different branches (e.g., `main` vs feature branches). Consider storing baselines in branch-specific files or using environment variables to specify which baseline to use. + +#### Storing the baseline + +Common approaches for storing baselines: +- **Version control**: Commit the baseline JSON file to your repository +- **CI artifacts**: Store baselines as build artifacts that can be retrieved in subsequent runs +- **External storage**: Use cloud storage or a database for baselines if you need more sophisticated versioning + +:::info + +This baseline comparison approach is more sophisticated than the simple rule list approach shown earlier in this guide, as it tracks violations at the view level and can detect both regressions and improvements. For simpler use cases, the rule list approach may be sufficient. + +::: diff --git a/docs/accessibility/results-api.mdx b/docs/accessibility/results-api.mdx index c230ac672c..c160ebe7d9 100644 --- a/docs/accessibility/results-api.mdx +++ b/docs/accessibility/results-api.mdx @@ -257,6 +257,10 @@ The Accessibility results for the run are returned as an object containing the f } ``` +## Comparing against a baseline + +For comprehensive examples of comparing results against a baseline, including complete code examples, baseline structure, and best practices, see the [Block pull requests and set policies](/accessibility/guides/block-pull-requests#comparing-against-a-baseline) guide. + ### **2. Add to CI Workflow** In your CI workflow that runs your Cypress tests, diff --git a/docs/ui-coverage/guides/block-pull-requests.mdx b/docs/ui-coverage/guides/block-pull-requests.mdx new file mode 100644 index 0000000000..f13bc2a48a --- /dev/null +++ b/docs/ui-coverage/guides/block-pull-requests.mdx @@ -0,0 +1,262 @@ +--- +sidebar_label: Block pull requests and set policies +title: 'Block pull requests and set policies | Cypress UI Coverage Documentation' +description: "Set policies and block pull requests automatically with Cypress UI Coverage's Results API, enabling custom CI workflows to enforce test coverage standards and prevent regressions." +sidebar_position: 40 +--- + + + +# Block pull requests and set policies + +Cypress UI Coverage reports are generated server-side in Cypress Cloud, based on test artifacts uploaded during execution. This ensures there is no performance impact on your Cypress test runs. + +## Using the Results API + +The [Cypress UI Coverage Results API](/ui-coverage/results-api) allows you to access UI Coverage results post-test run, enabling workflows like blocking pull requests or triggering alerts based on specific coverage criteria. This involves adding a dedicated UI Coverage verification step to your CI pipeline. With a Cypress helper function, you can automatically fetch the report for the relevant test run within the CI build context. + +## Implementing a status check + +The Results API offers full flexibility to analyze results and take tailored actions. It can also integrate with status checks on pull requests, allowing you to block merges when coverage thresholds are not met. + +## Defining policies in the verification step + +The [Results API Documentation](/ui-coverage/results-api) provides detailed guidance on the API's capabilities. Here's a simplified example demonstrating how to enforce a minimum coverage threshold: + +```js +const { getUICoverageResults } = require('@cypress/extract-cloud-results') + +// Fetch UI Coverage results +getUICoverageResults().then((results) => { + const { summary, views } = results + + // Verify overall coverage + if (summary.coverage < 80) { + throw new Error( + `Project coverage is ${summary.coverage}%, below the minimum threshold of 80%.` + ) + } + + // Verify critical view coverage + const criticalViews = [/login/, /checkout/] + views.forEach((view) => { + if ( + criticalViews.some((pattern) => pattern.test(view.displayName)) && + view.coverage < 95 + ) { + throw new Error( + `Critical view "${view.displayName}" coverage is ${view.coverage}%, below the required 95%.` + ) + } + }) +}) +``` + +By examining the results and customizing your response, you gain maximum control over how to handle coverage gaps. Leverage CI environment context, such as tags, to fine-tune responses to specific coverage outcomes. + +## Comparing against a baseline + +Comparing current results against a stored baseline allows you to detect only new untested elements that have been introduced, while ignoring existing coverage gaps. This approach helps you focus on regressions in test coverage and track improvements over time. + +This is particularly useful in CI/CD pipelines where you want to fail builds only when new untested elements are introduced, allowing you to address existing coverage gaps incrementally without blocking deployments. + +### Baseline structure + +A baseline is a JSON object that captures the state of untested elements from a specific run. It includes: + +- **runNumber**: The run number used as the baseline reference +- **views**: An object mapping view display names to arrays of view identifiers that had untested elements + +Since the UI Coverage Results API provides `untestedElementsCount` per view rather than individual element identifiers, the baseline tracks which views have untested elements (where `untestedElementsCount > 0`). + +```javascript +{ + "runNumber": "111", + "views": { + "/": [], + "/authorizations": [], + "/checkout": ["/checkout"], + "/profile": ["/profile"] + } +} +``` + +In this example, `/checkout` and `/profile` had untested elements in the baseline run, while `/` and `/authorizations` had full coverage. + +### Complete example + +The following example demonstrates how to compare current results against a baseline, detect new views with untested elements, identify views where coverage has improved, and generate a new baseline when changes are detected. + +```javascript title="scripts/compareUICoverageBaseline.js" +require('dotenv').config(); + +const { getUICoverageResults } = require('@cypress/extract-cloud-results'); +const fs = require('fs'); + +// Parse the run number from a UI Coverage report URL +const parseRunNumber = (url) => { + return url.split('runs/')[1].split('/ui-coverage')[0]; +}; + +// Define your baseline - this should be stored and updated as your test coverage improves +const baseline = { + "runNumber": "111", + "views": { + "/": [], + "/authorizations": [], + "/checkout": ["/checkout"], + "/profile": ["/profile"] + } +}; + +getUICoverageResults().then((results) => { + // Create objects to store the results + const viewUntestedElements = {}; + const viewsWithNewUntestedElements = {}; + const viewsWithResolvedUntestedElements = {}; + + // Iterate through each view in current results + results.views.forEach(view => { + const displayName = view.displayName; + const hasUntestedElements = view.untestedElementsCount > 0; + + // Track which views have untested elements + if (hasUntestedElements) { + viewUntestedElements[displayName] = [displayName]; + } else { + viewUntestedElements[displayName] = []; + } + + // Check for new views with untested elements + // A view has new untested elements if: + // 1. It has untested elements in current run, AND + // 2. It either didn't exist in baseline OR had no untested elements in baseline + if (hasUntestedElements) { + const baselineHadUntested = baseline.views?.[displayName]?.length > 0; + + if (!baselineHadUntested) { + viewsWithNewUntestedElements[displayName] = { + untestedElementsCount: view.untestedElementsCount, + url: view.uiCoverageReportUrl + }; + } + } + }); + + // Check for views in baseline that no longer have untested elements (resolved) + Object.entries(baseline.views).forEach(([displayName, baselineUntested]) => { + const currentHasUntested = viewUntestedElements[displayName]?.length > 0; + const baselineHadUntested = baselineUntested.length > 0; + + // If baseline had untested elements but current run doesn't, it's resolved + if (baselineHadUntested && !currentHasUntested) { + viewsWithResolvedUntestedElements[displayName] = { + resolved: true + }; + } + }); + + // Report any changes + const countOfViewsWithResolved = Object.keys(viewsWithResolvedUntestedElements).length; + const countOfViewsWithNewUntested = Object.keys(viewsWithNewUntestedElements).length; + + if (countOfViewsWithResolved || countOfViewsWithNewUntested) { + // Generate and log the new baseline values if there has been a change + const newBaseline = generateBaseline(results); + console.log('\nTo use this run as the new baseline, copy these values:'); + console.log(JSON.stringify(newBaseline, null, 2)); + fs.writeFileSync('new-baseline.json', JSON.stringify(newBaseline, null, 2)); + } + + if (countOfViewsWithResolved) { + console.log('\nThe following Views had untested elements in the baseline that are now fully tested. This indicates improved test coverage:'); + console.dir(viewsWithResolvedUntestedElements, { depth: 3 }); + } else if (!countOfViewsWithNewUntested) { + console.log('\nNo new or resolved untested elements were detected. All coverage matches the baseline.\n'); + } + + if (countOfViewsWithNewUntested) { + // Report any new untested elements + console.error('\nThe following Views have new untested elements that were not present in the baseline:'); + console.dir(viewsWithNewUntestedElements, { depth: 3 }); + throw new Error( + `${countOfViewsWithNewUntested} Views contained new untested elements.` + ); + } + + return viewUntestedElements; +}); + +function generateBaseline(results) { + try { + // Create an object to store the results + const viewUntestedElements = {}; + + // Iterate through each view + results.views.forEach(view => { + const displayName = view.displayName; + const hasUntestedElements = view.untestedElementsCount > 0; + + // Track views that have untested elements + // Store the view name in an array if it has untested elements, empty array otherwise + viewUntestedElements[displayName] = hasUntestedElements ? [displayName] : []; + }); + + const runNumber = parseRunNumber(results.views[0].uiCoverageReportUrl); + + return { + runNumber, + views: viewUntestedElements + }; + } catch (error) { + console.error('Error parsing UI Coverage results:', error); + return null; + } +} +``` + +### Key concepts + +#### New untested elements + +A **new untested element** situation occurs when a view has untested elements in the current run but did not have untested elements in the baseline. This represents a regression in test coverage that needs to be addressed. The script will fail the build if any views with new untested elements are detected. + +#### Resolved untested elements + +A **resolved untested element** situation occurs when a view had untested elements in the baseline but no longer has untested elements in the current run. This represents an improvement in test coverage. The script reports these but does not fail the build, allowing you to track progress. + +#### View-level comparison + +Untested elements are tracked per view (URL pattern or component), allowing you to see exactly which pages or components have coverage regressions or improvements. This granular tracking makes it easier to identify where new tests are needed or where coverage has improved. + +### Best practices + +#### When to update the baseline + +Update your baseline when: +- You've added tests to cover previously untested elements and want to prevent regressions +- You've accepted certain coverage gaps as known issues that won't block deployments +- You want to track coverage improvements over time + +Store the baseline in version control so it's versioned alongside your code and accessible in CI environments. + +#### Handling partial reports + +If a run is cancelled or incomplete, the Results API may return a partial report. Consider checking `summary.isPartialReport` before comparing against the baseline, as partial reports may not include all views and could produce false positives. + +#### Managing baseline across branches + +You may want different baselines for different branches (e.g., `main` vs feature branches). Consider storing baselines in branch-specific files or using environment variables to specify which baseline to use. + +#### Storing the baseline + +Common approaches for storing baselines: +- **Version control**: Commit the baseline JSON file to your repository +- **CI artifacts**: Store baselines as build artifacts that can be retrieved in subsequent runs +- **External storage**: Use cloud storage or a database for baselines if you need more sophisticated versioning + +:::info + +This baseline comparison approach complements the [Branch Review](/ui-coverage/guides/compare-reports) UI feature, which provides visual comparisons between runs. The programmatic approach is ideal for CI/CD automation, while Branch Review is better suited for manual investigation and code review workflows. + +::: diff --git a/docs/ui-coverage/results-api.mdx b/docs/ui-coverage/results-api.mdx index a789bc177c..b97872dac2 100644 --- a/docs/ui-coverage/results-api.mdx +++ b/docs/ui-coverage/results-api.mdx @@ -47,6 +47,27 @@ If you check this in as a dependency, your installation will fail when we update Write a script to fetch UI Coverage results and assert test coverage criteria. This script will be executed in CI. +#### Basic example + +This snippet uses the `getUICoverageResults()` helper to log out the results. It assumes your Project ID and Record Key variable are set. The following should work in any of the supported CI Providers out of the box: + +```javascript title="scripts/verifyUICoverageResults.js" +// Assuming these environment variables are set: +// CYPRESS_PROJECT_ID=your-id +// CYPRESS_RECORD_KEY=your-record-key + +const { getUICoverageResults } = require('@cypress/extract-cloud-results') + +getUICoverageResults().then((results) => { + // use `console.dir` instead of `console.log` because the data is nested + console.dir(results, { depth: Infinity }) +}) +``` + +#### How to assert test coverage meets your requirements + +The following example demonstrates how to verify that test coverage meets minimum thresholds: + ```javascript title="scripts/verifyUICoverageResults.js" const { getUICoverageResults } = require('@cypress/extract-cloud-results') @@ -152,6 +173,10 @@ The `getUICoverageResults` utility returns the following data: } ``` +## Comparing against a baseline + +For comprehensive examples of comparing results against a baseline, including complete code examples, baseline structure, and best practices, see the [Block pull requests and set policies](/ui-coverage/guides/block-pull-requests#comparing-against-a-baseline) guide. + ### **2. Add to CI Workflow** In your CI workflow that runs your Cypress tests, From 869a724684a80b0b674778eb14e79398b90945a2 Mon Sep 17 00:00:00 2001 From: marktnoonan Date: Tue, 9 Dec 2025 17:55:07 -0500 Subject: [PATCH 04/14] fix links --- .../guides/block-pull-requests.mdx | 177 +++++++++--------- .../guides/block-pull-requests.mdx | 128 +++++++------ 2 files changed, 164 insertions(+), 141 deletions(-) diff --git a/docs/accessibility/guides/block-pull-requests.mdx b/docs/accessibility/guides/block-pull-requests.mdx index 2a7ccf24ce..2fb9a1bdab 100644 --- a/docs/accessibility/guides/block-pull-requests.mdx +++ b/docs/accessibility/guides/block-pull-requests.mdx @@ -64,7 +64,7 @@ getAccessibilityResults().then((results) => { By examining the results and customizing your response, you gain maximum control over how to handle accessibility violations. Leverage CI environment context, such as tags, to fine-tune responses to specific accessibility outcomes. -## Comparing against a baseline +## Comparing against a baseline {#comparing-against-a-baseline} Comparing current results against a stored baseline allows you to detect only new violations that have been introduced, while ignoring existing known issues. This approach is more sophisticated than simply maintaining a list of known failing rules, as it tracks violations at the view level and can detect both regressions (new violations) and improvements (resolved violations). @@ -109,71 +109,66 @@ It includes: The following example demonstrates how to compare current results against a baseline, detect new violations, identify resolved violations, and generate a new baseline when changes are detected. ```javascript title="scripts/compareAccessibilityBaseline.js" -require('dotenv').config(); +require('dotenv').config() -const { getAccessibilityResults } = require('@cypress/extract-cloud-results'); -const fs = require('fs'); +const { getAccessibilityResults } = require('@cypress/extract-cloud-results') +const fs = require('fs') -const TARGET_SEVERITY_LEVELS = ['critical', 'serious', 'moderate', 'minor']; +const TARGET_SEVERITY_LEVELS = ['critical', 'serious', 'moderate', 'minor'] // Parse the run number from an accessibility report URL const parseRunNumber = (url) => { - return url.split('runs/')[1].split('/accessibility')[0]; -}; + return url.split('runs/')[1].split('/accessibility')[0] +} // Define your baseline - this should be stored and updated as your application improves const baseline = { - "runNumber": "111", - "severityLevels": [ - "critical", - "serious", - "moderate", - "minor" - ], - "views": { - "/": [ - "aria-dialog-name", - "heading-order", - "scrollable-region-focusable", - "empty-table-header", - "listitem", - "region", - "aria-required-children", - "presentation-role-conflict", - "scope-attr-valid", - "aria-prohibited-attr", - "aria-allowed-attr" + runNumber: '111', + severityLevels: ['critical', 'serious', 'moderate', 'minor'], + views: { + '/': [ + 'aria-dialog-name', + 'heading-order', + 'scrollable-region-focusable', + 'empty-table-header', + 'listitem', + 'region', + 'aria-required-children', + 'presentation-role-conflict', + 'scope-attr-valid', + 'aria-prohibited-attr', + 'aria-allowed-attr', ], - "/authorizations": [ - "heading-order", - "listitem", - "region", - "presentation-role-conflict", - "svg-img-alt", - "aria-allowed-attr" - ] - } -}; + '/authorizations': [ + 'heading-order', + 'listitem', + 'region', + 'presentation-role-conflict', + 'svg-img-alt', + 'aria-allowed-attr', + ], + }, +} getAccessibilityResults().then((results) => { // Create objects to store the results - const viewRules = {}; - const viewsWithNewFailedRules = {}; - const viewsWithMissingRules = {}; + const viewRules = {} + const viewsWithNewFailedRules = {} + const viewsWithMissingRules = {} // Iterate through each view in current results - results.views.forEach(view => { - const displayName = view.displayName; - const ruleNames = view.rules.map(rule => rule.name); + results.views.forEach((view) => { + const displayName = view.displayName + const ruleNames = view.rules.map((rule) => rule.name) // Add to our results object - viewRules[displayName] = ruleNames; + viewRules[displayName] = ruleNames // Check for new failing rules if (view.rules.length) { - view.rules.forEach(rule => { + view.rules.forEach((rule) => { if (!TARGET_SEVERITY_LEVELS.includes(rule.severity)) { - return; + return } // If the view exists in baseline and the rule is not in baseline's failed rules @@ -182,88 +177,100 @@ getAccessibilityResults().then((results) => { viewsWithNewFailedRules[displayName].newFailedRules.push({ name: rule.name, url: rule.accessibilityReportUrl, - }); + }) } else { viewsWithNewFailedRules[displayName] = { - newFailedRules: [{ - name: rule.name, - url: rule.accessibilityReportUrl, - }] - }; + newFailedRules: [ + { + name: rule.name, + url: rule.accessibilityReportUrl, + }, + ], + } } } - }); + }) } - }); + }) // Check for rules in baseline that are not in current results (resolved rules) Object.entries(baseline.views).forEach(([displayName, baselineRules]) => { - const currentRules = viewRules[displayName] || []; - const resolvedRules = baselineRules.filter(rule => !currentRules.includes(rule)); + const currentRules = viewRules[displayName] || [] + const resolvedRules = baselineRules.filter( + (rule) => !currentRules.includes(rule) + ) if (resolvedRules.length > 0) { - viewsWithMissingRules[displayName] = { resolvedRules }; + viewsWithMissingRules[displayName] = { resolvedRules } } - }); + }) // Report any missing rules - const countOfViewsWithMissingRules = Object.keys(viewsWithMissingRules).length; - const countOfViewsWithNewFailedRules = Object.keys(viewsWithNewFailedRules).length; + const countOfViewsWithMissingRules = Object.keys(viewsWithMissingRules).length + const countOfViewsWithNewFailedRules = Object.keys( + viewsWithNewFailedRules + ).length if (countOfViewsWithMissingRules || countOfViewsWithNewFailedRules) { // Generate and log the new baseline values if there has been a change - const newBaseline = generateBaseline(results); - console.log('\nTo use this run as the new baseline, copy these values:'); - console.log(JSON.stringify(newBaseline, null, 2)); - fs.writeFileSync('new-baseline.json', JSON.stringify(newBaseline, null, 2)); + const newBaseline = generateBaseline(results) + console.log('\nTo use this run as the new baseline, copy these values:') + console.log(JSON.stringify(newBaseline, null, 2)) + fs.writeFileSync('new-baseline.json', JSON.stringify(newBaseline, null, 2)) } if (countOfViewsWithMissingRules) { - console.log('\nThe following Views had rules in the baseline that are no longer failing. This may be due to improvements in these rules, or because you did not run as many tests in this run as the baseline run:'); - console.dir(viewsWithMissingRules, { depth: 3 }); + console.log( + '\nThe following Views had rules in the baseline that are no longer failing. This may be due to improvements in these rules, or because you did not run as many tests in this run as the baseline run:' + ) + console.dir(viewsWithMissingRules, { depth: 3 }) } else if (!countOfViewsWithNewFailedRules) { - console.log('\nNo new or resolved rules were detected. All violations match the baseline.\n'); + console.log( + '\nNo new or resolved rules were detected. All violations match the baseline.\n' + ) } if (countOfViewsWithNewFailedRules) { // Report any new failing rules - console.error('\nThe following Views had rules violated that were previously passing:'); - console.dir(viewsWithNewFailedRules, { depth: 3 }); + console.error( + '\nThe following Views had rules violated that were previously passing:' + ) + console.dir(viewsWithNewFailedRules, { depth: 3 }) throw new Error( `${countOfViewsWithNewFailedRules} Views contained new failing accessibility rules.` - ); + ) } - return viewRules; -}); + return viewRules +}) function generateBaseline(results) { try { // Create an object to store the results - const viewRules = {}; + const viewRules = {} // Iterate through each view - results.views.forEach(view => { + results.views.forEach((view) => { // Get the displayName and extract the rule names - const displayName = view.displayName; + const displayName = view.displayName const ruleNames = view.rules - .filter(rule => TARGET_SEVERITY_LEVELS.includes(rule.severity)) - .map(rule => rule.name); + .filter((rule) => TARGET_SEVERITY_LEVELS.includes(rule.severity)) + .map((rule) => rule.name) // Add to our results object - viewRules[displayName] = ruleNames; - }); + viewRules[displayName] = ruleNames + }) - const runNumber = parseRunNumber(results.views[0].accessibilityReportUrl); + const runNumber = parseRunNumber(results.views[0].accessibilityReportUrl) return { runNumber, severityLevels: TARGET_SEVERITY_LEVELS, - views: viewRules - }; + views: viewRules, + } } catch (error) { - console.error('Error parsing accessibility results:', error); - return null; + console.error('Error parsing accessibility results:', error) + return null } } ``` @@ -291,6 +298,7 @@ Violations are tracked per view (URL pattern or component), allowing you to see #### When to update the baseline Update your baseline when: + - You've fixed accessibility violations and want to prevent regressions - You've accepted certain violations as known issues that won't block deployments - You want to track improvements over time @@ -308,6 +316,7 @@ You may want different baselines for different branches (e.g., `main` vs feature #### Storing the baseline Common approaches for storing baselines: + - **Version control**: Commit the baseline JSON file to your repository - **CI artifacts**: Store baselines as build artifacts that can be retrieved in subsequent runs - **External storage**: Use cloud storage or a database for baselines if you need more sophisticated versioning diff --git a/docs/ui-coverage/guides/block-pull-requests.mdx b/docs/ui-coverage/guides/block-pull-requests.mdx index f13bc2a48a..905d7b4d7f 100644 --- a/docs/ui-coverage/guides/block-pull-requests.mdx +++ b/docs/ui-coverage/guides/block-pull-requests.mdx @@ -54,7 +54,7 @@ getUICoverageResults().then((results) => { By examining the results and customizing your response, you gain maximum control over how to handle coverage gaps. Leverage CI environment context, such as tags, to fine-tune responses to specific coverage outcomes. -## Comparing against a baseline +## Comparing against a baseline {#comparing-against-a-baseline} Comparing current results against a stored baseline allows you to detect only new untested elements that have been introduced, while ignoring existing coverage gaps. This approach helps you focus on regressions in test coverage and track improvements over time. @@ -88,43 +88,43 @@ In this example, `/checkout` and `/profile` had untested elements in the baselin The following example demonstrates how to compare current results against a baseline, detect new views with untested elements, identify views where coverage has improved, and generate a new baseline when changes are detected. ```javascript title="scripts/compareUICoverageBaseline.js" -require('dotenv').config(); +require('dotenv').config() -const { getUICoverageResults } = require('@cypress/extract-cloud-results'); -const fs = require('fs'); +const { getUICoverageResults } = require('@cypress/extract-cloud-results') +const fs = require('fs') // Parse the run number from a UI Coverage report URL const parseRunNumber = (url) => { - return url.split('runs/')[1].split('/ui-coverage')[0]; -}; + return url.split('runs/')[1].split('/ui-coverage')[0] +} // Define your baseline - this should be stored and updated as your test coverage improves const baseline = { - "runNumber": "111", - "views": { - "/": [], - "/authorizations": [], - "/checkout": ["/checkout"], - "/profile": ["/profile"] - } -}; + runNumber: '111', + views: { + '/': [], + '/authorizations': [], + '/checkout': ['/checkout'], + '/profile': ['/profile'], + }, +} getUICoverageResults().then((results) => { // Create objects to store the results - const viewUntestedElements = {}; - const viewsWithNewUntestedElements = {}; - const viewsWithResolvedUntestedElements = {}; + const viewUntestedElements = {} + const viewsWithNewUntestedElements = {} + const viewsWithResolvedUntestedElements = {} // Iterate through each view in current results - results.views.forEach(view => { - const displayName = view.displayName; - const hasUntestedElements = view.untestedElementsCount > 0; + results.views.forEach((view) => { + const displayName = view.displayName + const hasUntestedElements = view.untestedElementsCount > 0 // Track which views have untested elements if (hasUntestedElements) { - viewUntestedElements[displayName] = [displayName]; + viewUntestedElements[displayName] = [displayName] } else { - viewUntestedElements[displayName] = []; + viewUntestedElements[displayName] = [] } // Check for new views with untested elements @@ -132,85 +132,97 @@ getUICoverageResults().then((results) => { // 1. It has untested elements in current run, AND // 2. It either didn't exist in baseline OR had no untested elements in baseline if (hasUntestedElements) { - const baselineHadUntested = baseline.views?.[displayName]?.length > 0; - + const baselineHadUntested = baseline.views?.[displayName]?.length > 0 + if (!baselineHadUntested) { viewsWithNewUntestedElements[displayName] = { untestedElementsCount: view.untestedElementsCount, - url: view.uiCoverageReportUrl - }; + url: view.uiCoverageReportUrl, + } } } - }); + }) // Check for views in baseline that no longer have untested elements (resolved) Object.entries(baseline.views).forEach(([displayName, baselineUntested]) => { - const currentHasUntested = viewUntestedElements[displayName]?.length > 0; - const baselineHadUntested = baselineUntested.length > 0; + const currentHasUntested = viewUntestedElements[displayName]?.length > 0 + const baselineHadUntested = baselineUntested.length > 0 // If baseline had untested elements but current run doesn't, it's resolved if (baselineHadUntested && !currentHasUntested) { viewsWithResolvedUntestedElements[displayName] = { - resolved: true - }; + resolved: true, + } } - }); + }) // Report any changes - const countOfViewsWithResolved = Object.keys(viewsWithResolvedUntestedElements).length; - const countOfViewsWithNewUntested = Object.keys(viewsWithNewUntestedElements).length; + const countOfViewsWithResolved = Object.keys( + viewsWithResolvedUntestedElements + ).length + const countOfViewsWithNewUntested = Object.keys( + viewsWithNewUntestedElements + ).length if (countOfViewsWithResolved || countOfViewsWithNewUntested) { // Generate and log the new baseline values if there has been a change - const newBaseline = generateBaseline(results); - console.log('\nTo use this run as the new baseline, copy these values:'); - console.log(JSON.stringify(newBaseline, null, 2)); - fs.writeFileSync('new-baseline.json', JSON.stringify(newBaseline, null, 2)); + const newBaseline = generateBaseline(results) + console.log('\nTo use this run as the new baseline, copy these values:') + console.log(JSON.stringify(newBaseline, null, 2)) + fs.writeFileSync('new-baseline.json', JSON.stringify(newBaseline, null, 2)) } if (countOfViewsWithResolved) { - console.log('\nThe following Views had untested elements in the baseline that are now fully tested. This indicates improved test coverage:'); - console.dir(viewsWithResolvedUntestedElements, { depth: 3 }); + console.log( + '\nThe following Views had untested elements in the baseline that are now fully tested. This indicates improved test coverage:' + ) + console.dir(viewsWithResolvedUntestedElements, { depth: 3 }) } else if (!countOfViewsWithNewUntested) { - console.log('\nNo new or resolved untested elements were detected. All coverage matches the baseline.\n'); + console.log( + '\nNo new or resolved untested elements were detected. All coverage matches the baseline.\n' + ) } if (countOfViewsWithNewUntested) { // Report any new untested elements - console.error('\nThe following Views have new untested elements that were not present in the baseline:'); - console.dir(viewsWithNewUntestedElements, { depth: 3 }); + console.error( + '\nThe following Views have new untested elements that were not present in the baseline:' + ) + console.dir(viewsWithNewUntestedElements, { depth: 3 }) throw new Error( `${countOfViewsWithNewUntested} Views contained new untested elements.` - ); + ) } - return viewUntestedElements; -}); + return viewUntestedElements +}) function generateBaseline(results) { try { // Create an object to store the results - const viewUntestedElements = {}; + const viewUntestedElements = {} // Iterate through each view - results.views.forEach(view => { - const displayName = view.displayName; - const hasUntestedElements = view.untestedElementsCount > 0; + results.views.forEach((view) => { + const displayName = view.displayName + const hasUntestedElements = view.untestedElementsCount > 0 // Track views that have untested elements // Store the view name in an array if it has untested elements, empty array otherwise - viewUntestedElements[displayName] = hasUntestedElements ? [displayName] : []; - }); + viewUntestedElements[displayName] = hasUntestedElements + ? [displayName] + : [] + }) - const runNumber = parseRunNumber(results.views[0].uiCoverageReportUrl); + const runNumber = parseRunNumber(results.views[0].uiCoverageReportUrl) return { runNumber, - views: viewUntestedElements - }; + views: viewUntestedElements, + } } catch (error) { - console.error('Error parsing UI Coverage results:', error); - return null; + console.error('Error parsing UI Coverage results:', error) + return null } } ``` @@ -234,6 +246,7 @@ Untested elements are tracked per view (URL pattern or component), allowing you #### When to update the baseline Update your baseline when: + - You've added tests to cover previously untested elements and want to prevent regressions - You've accepted certain coverage gaps as known issues that won't block deployments - You want to track coverage improvements over time @@ -251,6 +264,7 @@ You may want different baselines for different branches (e.g., `main` vs feature #### Storing the baseline Common approaches for storing baselines: + - **Version control**: Commit the baseline JSON file to your repository - **CI artifacts**: Store baselines as build artifacts that can be retrieved in subsequent runs - **External storage**: Use cloud storage or a database for baselines if you need more sophisticated versioning From e0647e056a4ce1bb2ebafbba72b97810dd38f980 Mon Sep 17 00:00:00 2001 From: marktnoonan Date: Fri, 12 Dec 2025 11:14:07 -0500 Subject: [PATCH 05/14] jira and changelog wip --- docs/accessibility/changelog.mdx | 5 ++ .../inspecting-violation-details.mdx | 55 ++++++++++++++++++ .../core-concepts/run-level-reports.mdx | 2 +- docs/ui-coverage/changelog.mdx | 6 ++ static/img/accessibility/a11y-jira-create.png | Bin 0 -> 196046 bytes static/img/accessibility/a11y-jira-modal.png | Bin 0 -> 221542 bytes 6 files changed, 67 insertions(+), 1 deletion(-) create mode 100644 static/img/accessibility/a11y-jira-create.png create mode 100644 static/img/accessibility/a11y-jira-modal.png diff --git a/docs/accessibility/changelog.mdx b/docs/accessibility/changelog.mdx index 1ee1019fed..af7809c970 100644 --- a/docs/accessibility/changelog.mdx +++ b/docs/accessibility/changelog.mdx @@ -9,6 +9,11 @@ sidebar_position: 200 # Changelog +## Week of 12/12/2025 + +- You can now create Jira issues directly from accessibility violations in the detail view. This allows you to quickly track and prioritize accessibility issues within your existing Jira workflow. The created Jira issue will include a link back to the accessibility violation in Cypress Cloud. [Learn more about creating Jira issues](/accessibility/core-concepts/inspecting-violation-details#create-jira-issue). +- The `profiles` configuration property allows you to use different configuration settings for different runs based on [run tags](/app/references/command-line#cypress-run-tag-lt-tag-gt). This enables you to customize accessibility testing behavior for different environments, branches, or test scenarios. See the [Profiles](/accessibility/configuration/profiles) guide for more details. + ## Week of 10/13/2025 - Individual rules, or set of rules, can now be ignored for specific elements using [a `data-a11y-ignore` attribute](/accessibility/configuration/ignoring-rules-per-element). diff --git a/docs/accessibility/core-concepts/inspecting-violation-details.mdx b/docs/accessibility/core-concepts/inspecting-violation-details.mdx index ce75d4cbea..1594ccf740 100644 --- a/docs/accessibility/core-concepts/inspecting-violation-details.mdx +++ b/docs/accessibility/core-concepts/inspecting-violation-details.mdx @@ -44,6 +44,61 @@ Clicking on an element in the expanded Rule section provides: alt="Details displayed after clicking on an element in the Rules section of the Cypress Accessibility issue detail view. Options to copy the selector, print to console, share the issue, and solutions are available." /> +## Actions + +When you click on an element in the expanded Rule section, you have access to several actions that help you share and track accessibility violations. + +### Share issue + +The **Share issue** button allows you to copy a markdown or plain text snippet containing key details and related links for a particular accessibility violation. This makes it easy to share the issue with your team members or add it to tickets in your issue tracking system. + + + +The shared snippet includes: + +- The rule name and description +- The element selector +- Links back to the violation in Cypress Cloud +- Context about the violation + +### Create Jira issue + +You can create Jira issues directly from accessibility violations in the detail view. This allows you to quickly track and prioritize accessibility issues within your existing Jira workflow. + + + +To create a Jira issue: + +1. Click on an element in the expanded Rule section to open the element details. +2. Click the **Create Jira issue** button to open the Jira issue creation form. + + + +3. Complete the form by selecting the Jira project, issue type, assignee, and any additional fields required by your Jira configuration. +4. Submit the form to create the issue in Jira. + +The created Jira issue will include a link back to the accessibility violation in Cypress Cloud, making it easy to navigate between your issue tracker and the detailed violation information. + +:::info + +**Jira Integration Required** + +To use the Create Jira issue feature, you must have the [Jira integration](/cloud/integrations/jira) installed and configured for your Cypress Cloud organization. + +::: + ## Snapshots Snapshots are fully hydrated HTML and CSS representations of your application's state during the test. Unlike screenshots or video, these snapshots allow you to: diff --git a/docs/accessibility/core-concepts/run-level-reports.mdx b/docs/accessibility/core-concepts/run-level-reports.mdx index 8be03ada3f..3eac664f0f 100644 --- a/docs/accessibility/core-concepts/run-level-reports.mdx +++ b/docs/accessibility/core-concepts/run-level-reports.mdx @@ -85,7 +85,7 @@ Attributes for each rule include: - **Inapplicable**: No applicable elements detected for this rule. - **Ignored by config**: The rule was excluded at the project level. - **Description**: A summary of the rule. -- **Severity**: The Axe CoreĀ® severity level for the rule. +- **Severity**: The Axe CoreĀ® impact level for the rule. - **Counts**: The counts of failed, inconclusive, and ignored elements for the rule. ## Filtering diff --git a/docs/ui-coverage/changelog.mdx b/docs/ui-coverage/changelog.mdx index 6df262263d..ed61e8e376 100644 --- a/docs/ui-coverage/changelog.mdx +++ b/docs/ui-coverage/changelog.mdx @@ -9,6 +9,12 @@ sidebar_position: 200 # Changelog +## Week of 12/12/2025 + +- The `profiles` configuration property allows you to use different configuration settings for different runs based on [run tags](/app/references/command-line#cypress-run-tag-lt-tag-gt). This enables you to customize UI Coverage behavior for different environments, branches, or test scenarios. See the [Profiles](/ui-coverage/configuration/profiles) guide for more details. +- All configuration objects now support an optional `comment` property that you can use to provide context and explanations for why certain values are set. This helps make your configuration easier to understand and maintain, especially when working in teams or revisiting configuration after some time. +- A new guide on [blocking pull requests and setting policies](/ui-coverage/guides/block-pull-requests) is now available. This guide demonstrates how to use the Results API to enforce test coverage standards, compare results against baselines, and automatically block pull requests when coverage thresholds are not met. + ## Week of 6/23/25 UI Coverage now supports defining custom commands that will count towards coverage scores, restricting which kinds of interactions are allowed for certain elements, and including assertions in the UI Coverage calculations. See the following new properties for more details: diff --git a/static/img/accessibility/a11y-jira-create.png b/static/img/accessibility/a11y-jira-create.png new file mode 100644 index 0000000000000000000000000000000000000000..ffd71a1055b81ab8c35233ddc5032dacaf84e751 GIT binary patch literal 196046 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

)II!k8le)agGIg#NDY&eIac}i+tEj|1~c`ogbeK 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 {>%KQk#`(02nAj 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

WE>Cz`Dj7~v^g_+jH_sm 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 GxBm~}VYjCM literal 0 HcmV?d00001 diff --git a/static/img/accessibility/a11y-jira-modal.png b/static/img/accessibility/a11y-jira-modal.png new file mode 100644 index 0000000000000000000000000000000000000000..2533c449a631c70b18a8497ba58d046c858d8439 GIT binary patch literal 221542 zcmZ@f1zc0z+cZjupblw71c}iMB}G6%QV?XcG;Dx$mz0QzW24GIDSB*sQc zcXtfF`Hwfg@BQxYckewr_nhasPe13mXOUVOPpK&wDF_G%s8y5|wFwAFF!&RGg$&l3ZWs2Oz`nL);_VEY+)xS2@Ik60aK& ztSBL9KM-Vv-oC=?VfnnZDvA`kT=>?Uyd&m50Pro`UtUQGOi$^tpiZ$|U+TBzH$8DS z9oToi)LZA;L-5(--Ceqc&#MIU6qFrhcL?{LfAF|z3qB&C=xSklKl^%5sdst#3W3A& zxu>t^4Ic&MBKydx&1IlCHLF}EB>^3^GoxT8jB@7=!8R{k*@%GPc{fZGcwI#p`bd@P zMyOZTO`9&~q?>s^c4SjE{rD+o0R)LJ9xywT5fr{;*A$$$endSI@HRbEI`}$)xMW9D zU7fe|Tb(=A!Ll50b57q^vbl*|-k(+a~ zatkq=E4&Q}dl*kkAqzCV-Wz@!e%&qYa}Wzn8EXgS$%(u(MJ8&tL0^f#Qr5WFocDN- zxr`q!h9*|=AkxXYluYQ?Tec`vO5IVpuESn^|0d^?$Hf$776BecwQV+P&$;+qx}Ne! zCM`MtLgKW+eq9AHN3ef+F9!vuJ?E+eC>FjCiwr zKZsHr9-9|M@nvqodsYej31RCkdn|IDP@nz!Krl(QSR8qI(C5a|EEK`j%!lqLZ}C=j8MCUDF8g$xp)U9v@1pyXCDn-nz;^=n5XC z!``2HU8%TzTjWik;!?}^u#?3Wu8qs1^Xq5nuO4$fZdDHF7#sIf|#KSqN30GUzY1~!KD=eWAp-iCyZ5uz{nD1zUV@Qp)MTd9MHH!0?XoaJs~smuA5rUnZK0tYX~sRC-5DCEj-Fx*@FfcpWGi+xe0 z`XOqi0D7}fh!U<4$q8(4A_*OYCwaYJ?85~^vw3=PKD`5VL3u9f78+%Q> zV>Z2awBKXl7o;PPqqX?lZgxLPwSB-CtDz`5z++2m@J2v>^vlSyV+q&&JD? zZUn?1MRG$@&9B`iws`eipCUOXvJ9)wpckxb;jVw9p??%1P)u|7_J%W~MkmWJifi9) zycUop&5RcOJ~}70dV@%R{qZ$GR#hg{ zQ<39&gsu91P`|l|aMXj4+K;utwJBcjF!Fwi%Xr<}eYXn5Xr+_@F^Ol3_Oslu)D zQbi`4=2`bMu4jGETA%Sedz@pQLy=?rj5`s|E2Dd=rpImgp|R_^C9AijH;*?{U8G;? zgu;c|&(Hcge)o40`MagN4W6+q@Gr0~M3<4r`d9npoYEd>91v2ceYcIiA8i!~LGisb|nCGi|)HroTCQzoyBz4N9 zk;x}>f8|vE6nolpz_h=`^oz`cOqfiE8pQZXe3>aryv>)yQxW@?`0nQIFX0~HW#OV! zHH_5^*KRW~h24&Pk7h_0UKK?PA4>Fzm{|F>)sBW*&q6qaz*a7U^AC+-ec4L`ql1Ra zxZLpEtX#SwVD3h4CaM@k*ZU52m^LYq_ffQW2=y{m0(NBhQU86_N4w_`=gtq%ABf&c zBMYqk$yE0k?+^Q6-H;Jchzz9KJ>I?KK!&L>IumshW)EAdRx}KEsNNtO=kv%SKWGr28w-2$AvVpti?77nysv>%rQ=X)}gdf8FMx)_16Sj^P zlYm-rq`&*oYkK5p-I0&JSGLa!Z#R+3+dtobd%u@K(ofL;Fr!mi&Zo}zmKV$RY0r48 z)VOcTQH3zt;@F}(+I!w&v3&BU2a2KS2fRYjXYn{L}&+h~N`dqmXrr()4co#D~O4-ZYUt+Iv6?@%a~ebsw1 z8CxBbLFX?Pe)|TC4#OU&hueBD2K~TbV!qbcd25z_%lH2Wk-I+wH?01>|{lYBw|>Fh>dh zpZj@AtxC|TJN2d~NV zbB}<*^IW>GAL{PK23$SKseV!Q!f33n#kVy#?D%nO+o6&`6dHJ{_ni-^zxl%C`Gu9R z=gv3Nrxewul)T5siI~duNIb!Pt*F;CB^QrPD46XF5@>g+WQ{hESI0>|a$k>afl_Bfa zMMJ~K)x$3hbzeg7IRYn6Ee&U@(bKn^N1zfIlP28SwV4=rdYP1=y|lf(2g9a;K@|F# zy|1Sx#@|ZwSH^eAhavc?HtmxvDE^3SO;F+{*ND_ONbh@q%lCHK zn-rbvGjfWwvy)>AI6SZWU|V-%7oxZOcl;;|Dw#M?a)gwOE+p_r=?T4|A#+$~SNMhtT>vx%kv$to<-{#IcO?{qaXl1^T7WX#T z>pj7iP5qkU>+h7?^1kDOjntC(6xtVMn~ZE^Z*TAiEVth#lBe)uJf z;E~v^ATQ0J`dX@*tj08`DUUeE1UWS3A}tw4b`kyK=#$($ZjV7(*SNKRDUc9L;}`nw zeA*7bqIhSeuVSsPPQZ(AUm+kNWF#QPw+Qj4EFse$?I(oy35fsIPeecvVMjpnpD`Nv z`|l$TfBv5H?>q5_Z~}7tFFO3`^_l3uqe(EIiT`NB@y`h4bre)o@OK>x7b`1AS6e4H zCZir}e8<(-%3xOl0>HiBC!vZq=QbWb#_ol_o4&f5q=l1%z$;59b1MNahu6R15J-DT z;+qauZm-zA9H5S_l3p?#{~95QZ~yKVxH~5fpy-@S&iPh@glF5I+Lw>h0+E z$_wb|diUQz{tHLZ%GJWf?zNkplOy|YxUbBe+}&h2IDRAgoDLpf_(awQja}MUVPzY+hU6>}#HU7iJ#yF8Ds+?PqPkU=;#-k-5~HUMK3g zHQ9(cf9Jg*c4gr8^syzVU z8yuHLVp57K7@W!nD_Js)%j;CT&Ff|=>YnLQS-cJf7g&&k8*23d{QAG1ft;q)46322 z2wfaXZ&eBPk+$5f2y~*`KO{H%>7i>*W#upmkgp0um*8}(7zKHF;=Ns$NXOk)E477K zGV))r*{~X7;Qod`dQg<~S95JpX}|@0$B@+2bZU?2z6Tzf8%#>&vxX=UCKVLwzsjo`|Q$`N`TqR-=ilM&V?(k;#|-vcUe5xQ*ue{(e84 z5&hcIINMl_Q(nK`#F%M@J@dsmcBw^{rXc*C3vNmH9Q>JRY6Q5}c)n}l3mTWL#!1JB=|H4owZ#S^{Nn}-(r()sS)o5Bfex*kM4tcQzL z!@0Q6oCcI^938d_G55$fJcSOzVT!t5=){l@wPRS)(#;tQWaMa35Gs%Ww5{t_Pme-vXk` zr?k&RGScV#%QP7gx>w_8ePNETjQHO>6B-87Be0RZ)R(cyfZ)pQd(2Ocxgn-EHzsg` zM}Q7-OLeUQgAHvF{3x--^q#^nh0IJ+?TowvTemY#_f6jU0UT<<;O^W!lMXuiJ@H()8&U%!J4x4C>hFD(Mh$;6)pW+0x;;< zV0*0Uc)E^xOEsnr!|43VyWH1qtu0t@cBf4??9?~M z{k|K*p*=+As40ikwpuU{5j3`$MD4)};OC@Fp=*D@XF47PWH!ef9!`i4EpcGuyiD8W zlTDkNsM-i&8&bM0&^5X(hglo5DQW7b$zC&W!(svN@9kCkgKwMYt@`VsWY58cr9mZX zA??_#f!arxz5`D#XYb+RIQ(c!4;L!k+;dn08@B*1C|URnjq@KmO-VOOOa&IT1y?!H z2Y@!3!icL+PaAD6Wy&ry#^VxF?w;6P7{_#|S;F>h?5$eORz9tODEX&*hg2a~D>x7{AZTd1;LVW<{)lTCAS445H zz|kOkIGSh=l6VWmH$ZUrB1fz&8S{+CzJU{MDYEvuc80D0`%KzhprQR|th9+#xBVpe z*Do49)tvP3kQrZd0HEtwoUIsI%k` zv1)CSCg3`D=~b`^@-o$RfzBQg)_#{#UaE3POSM#3TAvyYc3mXtx8GX~^O2hq_oVB; zr>h))J5B$Wedqpf|89Gou{6oLH6-lG%=Fbok(VKN<*1Ho)GH5D@)(hj^8U;zDW>&z zhBZ~wkvq*Ki2miaFJW-5V!oSauc|!8!|f5+*;A2^UjtLk2wlB|G|#BWW}llF+T5A&6OG>B7tS}V)e4jl*bR{23NO0Y z!8v2@yxej)3!O$*9Gn)17s_#(z$R(V{Mnj7e2`JA=J7U#WBuv|c)u}5dPMeoEY99nGQ(`uUCjr{YMvnYb8Hr@Up}(hIYvGwxz*J2Bh5hDN(h{*#~LWX3n)sF<*t8 zBH^S`)B1JF;t?@kuy)~ERc_3!pEC8AJ4cZ86_Ih!gkq&Se>SDY;Iun5Se*8N9^7Ir z4rps{3!}6UkD662sY~{!tt99pk`MIdi$4zIYD$u@TC%BPoE=>TmaeEK_}@ueNJ}|= z+T&uX*KT@oBR1)QljBSfsx4zX<)C91v_<-6hbu8WBacwWq*(8>KkdPrJ6jFqV%yNt z){kL|7iOk0C7@8b;%srMHq&z4f*!HZL~lvSCbw=0X(=}K=w7WAr2|Krmc;<&cL#1kFU_a=vhZc~ghYit9)= z1hyQD8gI6lAE_au%Z;K_JC+8fO$*CLb`3tyX!;GTjikM-t9vLwRhcGt>(;_%RAm_B z#jh~g9Y%xSsyhWCqNfp&@>supHEovAeFEFWzGUxk^XzTPxc@+ZB~X-my5)^<^N&&% z?j43oo2m12oAwO(qSQGjC-M8h&s2e+^*w9(^z;NdOojbfS}W9OS6-#a7fb=Sa8yZOc)>1jw@_v`_IqWaz0`_JQjZxV zQlRel2m0UOJaan&BvvtO6Q)|6!^8V;mS2mGFPmN)>D-dpY9`ks#vo}fT%9t{ia+u5 z2o}9=W?C2YI?t+V`p#}t@zb>L_J1NTKKuq-0ps`yT&uV^xIbjS_@ET8PG{Zr?JglK zsbag`UIBbN&INHfjTU@`em|V%TX*NsxT|TP7jabhEgW=Ov!_QXkeCz7Z4ADIyf81h z64(qd!q9s;ZL4-#E8IN_o0vMvS<;&nGKFOr*j{H{SIzL3*AU0J*O>`CIMZ*@i?R;w zv$j5GfeM(Z=GVooA4ioW$3uA2PRAUiDEY_i)XC2t16Yl2{Okw<8nJ^m@GfoY?g9}A zSN;i#NORxes@w5IoLFtBZK!%4Mud}5 z-UGb2R719bO%h5lz67|9A(sBpHQ+VUTan{ff4j-tB(i{=T#Uf})yYz~t)va4VkyKi zKi91D8Vd)WA3W7*Pfr{282J$hSA>Duh0W9mCzW_urLSF80{`tuzqo|;;pXohHUsa* z_N>(D+Fz-EFs@YssOjsBSY}#Mk}fT8-Ir5Vt)`(=29jKrpw+0mA?A6^{rc`0rG-mqDP|7b+(x|Wt*^WM53Q`?rlS_2u(bL$u7hzNCx$`T`P_YkZ~ zH4051ncYj%H`F)5NnzeiRLqAd;5kY6{TpN&i@nEY0H#*)e{`M(J>)OVzT-MOaD8#4 zk;W~i=;tj8%>F|S=D|AI@$X@&r$}LD>#0GFRx;tUtJu?>`n85 zn5&oS_2XGY;zI;q!Y+UT9`Ghl;LMrk1G5TU^!YbQX65^f9#(Qj+~j3-*@TABbX-ZZ zfAAjUZ3h4;$g1c2&E7f`mU6n55M2`9(V$h4Z&bqYN?u((Bvn7*E)q~Qqchoamay5= z_S8QjQBMDOd6Z~3C5O=vNO-1Qm95`gyAsf*kPKpRfCq=-VEjh>D$B}dIU0xeh671v zeO;hpc?a%$eNq8IctYdb`$jsC``O ztLpG^_z%~0L89VF+uDSXW#N>*mJyO+0}YTq>bWoc+&AI)Va2q=A(A(pG4)Uiy{S4Y zyZ+!1Tw%~uaA?urcx0l1j9_fj-8&l&s~XE5o^~pK-G#>P8E2<&ac0C$wkO*=_P>)E zM|WV!&X^7JuKb8NmCy`eh6p&88oVWij=dNo4OXG>Z5{$9M$5Jzo|HiG zv1<2oMyY>b9h+7f3V%M?kj2wQ2E;(_Fx== zEftG`w-{ew&V1LS92_D#%s6yE$3dGt{LUV;1!U@%yHHp6!cDg##Fwg$%obJ;1Z!Li zz9|_X<~Lyh;EKJfu{S+Sl;9jnliq$Z%5cV6>2+1R0y6D~WsnkCw?fkS!J8vCong?^ zm74yT5y^tJU#6KOl5SNatJ|u5k41cwH)O0IGSc~?(r~8gb{XLHJ+m|Wd|w9H8=ifq zXPwI~72?H3?d~tJras_Ut#ei^fO8Ko zt*aio*t+Jau6i;tR<^cKSG1w@;-&1ql#C(F#HUIQa`G_W@zT*)1~*kPedp8<8%Vq% zSWO2(k9aZO{9}1`{gD|D>4%F<7nbG}rNbn9u5#&vABJVhE!L)HgN%hY-vh4zY1GjT zs<=$|z_*$ws;eUK06{bfIxwqok{n`?ay)og&z$7&JJ^H+wtZ+1rhG@*NTCJO|^au-tR4uAJlMrWHi0^pIstKv$=(i$^E~pD>Ccf<~E&UWTBi{FPhKEx*=T{|vK) zB=$fp1%Ph*#o$E!voc=FH*+MA)ti;1hQ4R29}j3gjMPkf6eRF8zeu9Pzd*cc{c7!Z zGhjN4k|u}b%Y(R?drC@5@QCJZ5#LBRe5J#D%YRV33j50IsoGt9vf86%b~sT7|9Vv_ z+uiJ!WU_vE=aSan39lmJAI9hf7&1p7qSvW{vwJPM8bxvo;xV|8p?}LEbw~`~}HQbQTcqP5^(&A#RU@q8s zERnS_fC+U3k%e}9zJ6+tb>Na`x zwbcgzf;VJ65Mq@#ocs^OF&wG7P%cRdwtKS1I*4S;=6I!x3=Yb>q5)SW;Mu3(ju3`_ z7Y_al^*5V8mr=Yhy~FF?Wi`rV%9Oba2w$`iYW-k9>d>k;6QZ&j1pHw0&HBsN`6HF~ zs;*pl9%Dvue6|rn_Ty_qZXSm9q^tiICP8rST`lpTs4$bP^&YVX?7(9QhP2pt@2Dby zBc%{=UGDRc>?;_K6FvOf?#9xx~wapq3zQt%h@*r4J_T$uijaFA0;QnU9EB6WrWHb+=9K0 znU&hk`+znWihhIBZ`FbV_>Z_AL(XNsck+ZFz2XaXS_uo`=2!o_qW*Jj9rTFoD#?y+ z^wP~lHQG?@wb@|9VmHg1>vxh1!xks25AW9Z9@;4&#GD^56_G*ZLBDY|$b<)?Z^Of8 zMQci*txPo*L7Q;|D>Zg(U`Pq;V3xw!Hf!pi-uEx=;(XijfB@KbDbsp}Qg0j9aGpo>3`%jc}uOq;lzSS@jHhI#*k=m|*}jeZptIeoaJ zFf}}9D*~YG{MV~*Bn`UkoNQkuQ=L?NU`F|&5~KJ)kaDXvcj($^gFlOFFRja1LFc{y z4`^~~%jA(XXRPdLqGyA?*J7AeSrO1;`(qiuQ^HMUy53f<(WKr!>`CLYn zQ`L*0{c2V*TTKSP6Ve$Oq3Ay_ zwk&@`B?>K_XI z83fEI({02k4-I%xq+s}mGxH7&bRQ@Gr2_N^J(l4?rctOquJkyRu8Zp6N-!{%6uM&x zEE$6^R(mV(Yq(Z`HU#M(qTQjd{fe3I{-gXvp0-Fzd(Hpk4!J=Q0TocA9ExA? zBp^!V6mmsFu>lc{6Fj6}Itk|Qyi=P#T+znbNoEo1QB~b+? z$Q zsiVk1?02ZM-&+zWV>W448sKVfV-PBED~$~f-Ucm32+p0EQ~aZ@Qr*CqeFYj5|9l-S zcIgi_$zLRgddyB$GWojhm#nFEdj7A*#;4~fVCfiSm>EgVqJB-9iMR z$cn0x>j5ynUnQE)@epD`wC=vUfh6LC=9F#02G=W<6vS1373(*IGl^sTG`|0n7*lzE zkwZ-!bML@RVJM9nKo!RR3dYDj*VpZ5YP9)~Nz3A>UWFS9w*x>LKrI4KyD3EfAmgv_ z;^K+coNB|08m+l)ywi$07s(+Pm=R-FzRAR-T`nWWrIL~+G8jGL+pIXAaCTH=tsQL8 z3a+1DtU-r(c<-%iy0ZDj1!WTxlWYKtzPc_`{;i(2wt$s^aLJeQ$EDv4 zQ_>Ue)}1MA$C zR7L{L{r*oV<5G!?>z(pv4B$5bH}$QPD*>={Z)fL%M7t=>m*c>TyCzdx^Plr=%ZeJ4 zi)IWetWN~^qrO>Z*$GMyWlGv+FOu7X=!Z>QMMXynMEl^ zMWxuH#7nAj*Y>K4N4zS|d+p1yyMu$}Uewhml<)S<`6jOc>ng@<1r%NH7G*Aevp2b+ zWw-#WFhcQ}2g6VpeM@F>jP&gQj(Vhm^#&eMM4YqKb-L zK?ZVEGdRgr{u7dME8SsX;g(5@bt~pgSd^P?ju;<*+{6SktTMkB>1Dj7>3b&)P8nwB zXk6?{Ea$}};gMJal>4VN>w4FtV1Y?7v!SEXI=mASL}P=k9V9JPoblv$tSGMYGvZIfx9sq^;AfPg- z&T@fsNi*F47*H7Qn-Lnq8$(L8U~lV()dIiU=j+<$lz)p#sjYCFDjsO`1u`PAysBev zc3aVBNU;*z_g@clKFYu31Pq*k%wsN0=S@{plj7wH($fl z&Gqc>v1jOa!hf}i|3)8nyu&fBFDYesX_B2lEN4~$NQ(k^6T(bGPy!rRW+!fav#$UP zeyI+=yauA|+^ys$DMhD6HyGGkSuLcE*&%hJ=ZdkmCIK-pj~UpA+0f#b$3+sQie|xQtNd%LW6I^JF4GzpE(2*AaM>W4U5VE!Hyz z1>w+#53%sOB=jx#jm-|vELfOdEc;FXz*q7DFFs16H)7fT>OlWcU&}9#l7dhgBEvsh z=^RjY{G|xl0w1C^wj|Lf!@PRJ=w}V$VOLP%9!tAhtB&e^A0lTofI|)wY6P0-lnCs)f|~ z5Gr<&9=l+@+?1Ix`|37H0w8~vs;JozBQ)wA0GVcoMvF-q`Z63qO6>gdI^UuUOF*Td zai_WF9z}`1tAAzGAI#(at>xjChmvAZsB-r)mr{ISzX!C%Cp&9{Zjw@boqRUp(;Qo7 zL)rY`8$T(ie*y$5J&UlEllv^tG1oWh<7SN!WP~uobbO@J`s_M- zU_O(YV+n?X(hhjjtde@%5MvMl14?`x9A4D(S}QhECxkU3P~l+)AtjGZC#+}E!l21H zb@ldTtcni7DZgkD4~70wdo3$}2UAfkysHh|Eiq4RNK>)1?Z(J;S?HeTdRI$J~lfOioqGtYXYA z3P7*wo%-@?Nz2qXd_ofL4qr5=^9VJ&W8`gBw|8nG()iYTHl+RGoj+{lPtV{*G!vvg z9_CYph3fK~Rs8t!#hj^*xtBK`D>Z%|gerpSX(NMBG}z*Td|l`sqz3CUnmAl^m|I}l zr1m+1IHI5C|H{P7`>Otp&IW0R-P-pN3+@wRCe|ZCKs_lS0D+albXS(AR;^ZIdPX2a z?hj96Kt*-Am$g}X;uwDIq5)4hKFrvTW-q`O)9_h}Zv|XsZ?^$dO+A{!xCLDr|l16C5JpAW-&ke?Bg3}{B#30Cp-HHJ| zqUhBX>nl{hbCG-Q>W*>qPk#9owKdOP%S_++Z8aB6x3v4Plp(*UBKOQ$)uC7%TO9Em z!nGQpe}Xw|e$T|R{^1|X5mwx0Gh=6LF)k0)i;{u!LGr{oxqLO?yPk1-CKEr7Qo!GC!5KP1a98az8o=Y3vKlg)`H&Sj}}U(<8> z^_kFIaMdY4D?9r|c*8}iTBb1HgU}J8v#nO7@|j1;8>>{Y=i@=B5&I#^D~}&|3QN*c zV~h^OjBiDa4B}m;3y90CCwnQ>)s8*5An+VmR5GUG%LqQ)z%VU;uv{$0jxD@yx)?O} z7zt-uHNXh|&EE_RljdIRls23kUg4=ZTJ8+@a2U5$uO=KU1_w9iPkle^s~VkRzH_Mt zqg@|r%TM=M=3d)hW#sRvjN~OWeCz;%l-a#XGYyFj0!B;O(zL&45Y4gbNe-p5^Ai8Y zAu1Loci9G6KyGzDJ3Dlk?-h+nXgr!I_^D$AI_6?H?0Y>rxqT6G7)RMBSMbyH2K^tL z`j-uexd*ExTqf5{ooK_vzAIE;V;TEFc;?7QIwo)BPrb0PuzPBFcfMaPj~rR4WseMo zb&;*P(V;~#U|u^XO=G+!;P9j?HuNT|B1l3w3;o zsD>^j;otSxKM4?f9&GwuGxWO6NGE9;-r+!*T za`nDUU#e6OcxBPR+{f_u@Wvk5@-dUU`)PY~bTQZ>TBE$5bzE6PL&MTrQdDndwUMSd zdFMv%lXpksmNHnEy@R_wBHp?3#GvLSt!NN#^V*x-Omsx>Xne4QqnbFT>Ew|6;o7Gj ztJXJ4x|KZS;BgbMIQr1OnCG19X-M=;;UTxO+uw?4h zE*>qr+#-`>Sko7MkycCaclRBf-{L8E!Ic?(EKrUx9M!ezpR9J-nvW^Yf3?^?Gu?&B zb5N=?isI`d=b^}71?YF9D($eYR^87@{l zcjrD%bEx{3PV10eTV?{IZ(Aqxnhn{a&Yp(UP`TGbUFF-oUC-w%=ktYUlm;OsedRqdu+iJSN}%q~slAjKBcGgTRd;CM z_gJQMVWUx#z}SZUU0CahJ`F=@!~W|M9}*xBPm;{hL+xD6%v_$FSj<~ilpJ_L=fVDAAaC&-qKk!l%)%a+;cPKWY@o+-;{+j0T)(PY3 zA^C16TVT(0pr$LlsJOhmxGcOnddlCI0kM&67ZFlDtrP|5;m!=W*Nl?|2b`&2j_j;s zU32`;ss{@!e6i1nJ6Sx}1t*d2JDPWIkDnO1P8zqKpRxII>@Crg?!ladudnGb~Vl{)W}q#Cgu*1MPIGRD?@pMWg;(t6;W1dkbH2J`C{*78CP!L>W- zo(P=u=1XrYqVWah%P_GjSy@jkLlo<(>q5bn7029K~&rIWA;`UryeYwkOa>rx|gCL>*Zbp1}F&%wZy zIVdqh26=D1vb!8xvGil~Yg2;rTwsD}z=<)}vMfx(NdQuUHAZia7^4k}BB0}eQHhgJ z@%t`6jBk29z?3$A+MA^;k_+TJUtQbkzD+%ido^lI_N-Z5V%H`iM)Uxy?o-bH_iCd3 z_2c7&pSwet>AN|gvDfMh1I?P2sVF}wpErINBQ)^~GRRUceihk zlfT(zk*tiTnf4X_SQ8m6#mw%yByc6UQFi`$s;ouwCuj76uB7?{9p7o`)wjeU<)EE* z8o8cde2(!ybiNu-JfT>5@BaPuw*{M?MVPMt@{JyY+b&oui65C+8FDvzFb)3f*G~Io zUB260CbYG^`TUkt!T&60+I2N%Z2vGBCO}zz#NFN9J-=wk=BDnBW97rS&p3N{RIit` z&MDESbCI5$%;-`}rfakuPMx(coKu$4^tHErBj1YZAAi>|7K7Z7)PmQ~O4t4R0$KPP z`*mxtB15v7dB+DK2h%UNjGS;@y8N*x*aRqWXW+RBTN$$wuUj9iNLlp{LPsrMlVW3D zmz9us+Qh&>LmP5S^0`riVmn&Oa@mkAjQ(Y6-;W>3I-0WDF_OEV?Jofq^P|&0l<-@- zUTrn-o?Q`K&Iz7Hjhb>8BjL0r>$x_zkB~zG5hOjpM{EZphOK^uSEV))p5f$0g3^~a zA0B^h3_00W%#}mVxLPs(Er#Vsx16y>e{gPAi-DG_WV&0e0VS>^;~p$}GF;eIa_Ei< z6xot~F1h!#xm{v0I0%SB+RP08yp)pCKK&Wtl%#(8oh`Ae+uphuFdk~k{p4A3&89(o znq?&6_>I`fJKUKr@%q55jyu9;6$Y9qkXq|b6&nQm{4Awr3XUx2TJvVpk+Apr4!zMv zf!m>-6&Vy6HW9FPOPjd1+@gmPiswKUPG2`4-`6h~dPILcCEJY!Fg+xS!aCbTQa zp-T5<{8KjHrf%##GN@j~cEet2GCqwf)&`9b6}29=_)92H%T@*EI%KYpK@+$y?<}p> z;SSFdU*u_9o#+`la*VF|UK_7;yal#tJ^C6e!+kV)nJ5dp74KePohBie*qV}l54kQa zq@A5bT>X7}{mG+`@_*DXf7dka@0d;ZPx%LCs~vB|cIm;6#vg&UYT)P6j^%#GI}-4! zFQ#S(BQHPrA1;?}Rrc@Di;oEt8m853?r@tVN^Sax-JdMfb!E7i>48UDBM_|Ibi~z7 zjPuc~EKZpd_3o4_V>uQ4MhLCL(cHLzy*9Q$M((G$tzzZt*5cjh5dxnq+YW%`yg`*g`VGMyoe@yW7;gIsvvZW6yy?fs8iUt9ZDi@w3!;LTH#E?uot z)d5*L{k1QiyuZEBU++9#UD9D6-EG86*b6Jhtb}2MIlZ7lt75#5%HPg7qrs_8@ z`)rV4m1aoau%2cz<#9VNpJ$@H?@{T{k!B!Usu-7<>YgJ;>Su<}V$$czMvIjh@~@`r zAxQ^9@wX8tNa@3m3YM{x)d`NLF`^J86RQ!zDdQ|@) zV`1bq+tVD|9P(aDpPv#PEw`c!bQaQ}QY1m0Fhb?ZKz$%)@E>lw&q?#jfzU{^sNFrkv!gh?ny$&iK9c;>k7=Ew70F?y$Z- z^7am+VmYkSEB=`5LIbGXXx^&U-Hk|O5_@xt1pk#FJ4&!oev0+bS<5HIn5-*$)R?(< z^hnVhUsG&TqW_ee)xyd{bI=|4%H^QSlVlCp;H3>q_Sl*d*9T-E2G+N~YQ#3wtdco| z+X&hnMc`BKmlvKBbr;1=x0|CUe7D>O;p%HkEZ?mazNTaDX5+kc2 zhZ{7D_ZM(%c6g0Pk5_P?|Eu6R*AegNN*hm7J^CJe?KT;!f$))2F@D~H_Lr8!g$3F1 zO1;SvxJw$p=;prhiyhUjyE1R~D+oC0+fg_!yTd$GP?n@W{=+A+0f+Wl)|%YWE*aN> zG=xb#_F9dUn)Dr@>lwvch97yx!5e!PIepF80xYI9s2}I5860Hvc_{~yp6~}^R1d~Sbh}HAAdp<-7T)(T4pqS5w-)|x!)YX38W*bJ_$5PU-e8(IAqT5+X~&zqj-L>gwID*+NVm@- z_D<^}5+aISgVzat)D(A~A|36*r?h}#*^S|^^B=#?$taQWtvY|nBB};C7}OtK+yhaY zjOnoLoZNpX{-UBNwkcw(>=N0CMyhk0G0C1&KHU4n7vgWYM5PBAl~SZyD- z*ybBjWoj0mxbc#Qr@J2}?e1{z%va^+I@oQ3tjaoqHn4eHw7x(53tJ_D2s1wEhSTo$ z4>^H_OuW3^;>(hEv^jMX`joQ<-j8q^d`<`Q8|lwW0v~8kZva?V@0v+1RH|}p^^Z9X zY`S#3It!yoa2xaa=;yi|(OO>*3Z(Lg`>v=!3I(uYk;BOz_xbpS&U85`_XBR>liXKh z`zJs0Os{#2#}SS*Zy3GGOQ*RuRkX-fc@)0Z)h9*sS{~ZZYMjti(J#ovI_)wZvb!(3 z^J@eRCTEv|PMcOwJMv+@z8)ONI04&X*`FN$%^DtO{l6E~vU#?*_OZKTOqoAEeE5)P zI6rUsKkU6{RFhlRHo8GT1pyU-O-B@v5>R>v0YQ3`UX>0BC{;R$*pS|&OP5{~O6W=r zMQRcPLAsQHv>^T5?&p2Z_b9yIpEJ%l<2&R12V*67)|zY0vaUI=c_WzNF6>hcWhqta z)~5Gc6Bn7_2NRMD2{&CY=9PB#r`L8l&l2&hII;ne&tmkrwN25@N;~Z$w`E?fu`5IE zA2I_E9(2AR3+j5GR5{1d4InMIG

wCd`B$^F3-`Cc=l-%#__` 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

4Jy5%Qg|1@xK=!0Y&f|u~Ni=R3y-9)fwpPCj-d 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�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 literal 0 HcmV?d00001 From 226db13df663e6a23b7386253ff67291d730443c Mon Sep 17 00:00:00 2001 From: marktnoonan Date: Wed, 17 Dec 2025 18:57:31 -0500 Subject: [PATCH 06/14] wip review updates --- docs/accessibility/changelog.mdx | 4 + docs/accessibility/configuration/overview.mdx | 24 +-- .../core-concepts/compare-reports.mdx | 15 ++ .../inspecting-violation-details.mdx | 14 +- .../get-started/introduction.mdx | 12 +- docs/accessibility/get-started/setup.mdx | 3 + .../guides/block-pull-requests.mdx | 64 ++++---- .../guides/maintain-accessibility.mdx | 6 +- docs/accessibility/results-api.mdx | 2 +- docs/app/references/command-line.mdx | 5 + docs/partials/_attributefilters.mdx | 146 +++++++++--------- docs/partials/_profiles.mdx | 8 +- .../allowedinteractioncommands.mdx | 2 +- docs/ui-coverage/configuration/overview.mdx | 23 ++- docs/ui-coverage/get-started/introduction.mdx | 3 +- docs/ui-coverage/get-started/setup.mdx | 13 +- .../guides/block-pull-requests.mdx | 18 ++- docs/ui-coverage/results-api.mdx | 2 +- 18 files changed, 209 insertions(+), 155 deletions(-) diff --git a/docs/accessibility/changelog.mdx b/docs/accessibility/changelog.mdx index af7809c970..82b4abd1a6 100644 --- a/docs/accessibility/changelog.mdx +++ b/docs/accessibility/changelog.mdx @@ -12,7 +12,11 @@ sidebar_position: 200 ## Week of 12/12/2025 - You can now create Jira issues directly from accessibility violations in the detail view. This allows you to quickly track and prioritize accessibility issues within your existing Jira workflow. The created Jira issue will include a link back to the accessibility violation in Cypress Cloud. [Learn more about creating Jira issues](/accessibility/core-concepts/inspecting-violation-details#create-jira-issue). + +## Week of 12/1/2025 + - The `profiles` configuration property allows you to use different configuration settings for different runs based on [run tags](/app/references/command-line#cypress-run-tag-lt-tag-gt). This enables you to customize accessibility testing behavior for different environments, branches, or test scenarios. See the [Profiles](/accessibility/configuration/profiles) guide for more details. +- All configuration objects now support an optional `comment` property that you can use to provide context and explanations for why certain values are set. This helps make your configuration easier to understand and maintain, especially when working in teams or revisiting configuration after some time. ## Week of 10/13/2025 diff --git a/docs/accessibility/configuration/overview.mdx b/docs/accessibility/configuration/overview.mdx index 213cead99b..44d9eed1ac 100644 --- a/docs/accessibility/configuration/overview.mdx +++ b/docs/accessibility/configuration/overview.mdx @@ -24,6 +24,20 @@ To add or modify the configuration for your project, navigate to the "App Qualit You can use the provided editor to write configuration in JSON format. +After new configuration changes have been saved, you can reprocess any historical run using the "regenerate" button on the properties tab where the configuration values that were used for that run are displayed. + +This allows you to iterate on the config quickly without having to execute test runs and wait for the results. You can try out different configurations and see what effects your changes have to make sure everything works the way you intend. + +### Viewing Configuration for a Run + +You can view configuration information for each run in the Properties tab, as shown below. This configuration is determined when your run begins. + + + + ### Comments All configuration objects support an optional `comment` property that you can use to provide context and explanations for why certain values are set. This helps make your configuration easier to understand and maintain, especially when working in teams or revisiting configuration after some time. @@ -44,6 +58,7 @@ All configuration objects support an optional `comment` property that you can us The `profiles` property allows you to use different configuration settings for different runs based on [run tags](/app/references/command-line#cypress-run-tag-lt-tag-gt). See the [Profiles](/accessibility/configuration/profiles) guide for more details. + ### Complete configuration example A complete configuration with all available options looks as follows: @@ -94,12 +109,3 @@ A complete configuration with all available options looks as follows: ] } ``` - -### Viewing Configuration for a Run - -You can view configuration information for each run in the Properties tab, as shown below. This is the configuration set for the project at the start of the run. - - diff --git a/docs/accessibility/core-concepts/compare-reports.mdx b/docs/accessibility/core-concepts/compare-reports.mdx index bbffe3f60a..faf984e228 100644 --- a/docs/accessibility/core-concepts/compare-reports.mdx +++ b/docs/accessibility/core-concepts/compare-reports.mdx @@ -164,3 +164,18 @@ It's likely that your tests have never been used for always-on accessibility tes For example, sometimes the test may spend enough time on a page to see a confirmation message after a form is submitted, unless the server response is slow, then the test may finish without rendering the state. There are different solutions depending on the nature of the issue. If you want to ensure the state is always picked up in Cypress Accessibility, you can add some assertion about that state to your tests. On the other hand, if you do not want to account for this state at all, it can be ignored with [`elementFilters`](/accessibility/configuration/elementfilters) configuration. Either approach will lead to a more stable branch comparison. + + +## Optimizing for Pull Request reviews + +If you plan to use branch comparison for investigating Pull Requests that have been blocked through the Results API for not meeting your standard, it's useful to implement this in a gradual way, prioritizing the developer experience at first. + +Choose a scope of rules, page, and elements that reduces ambiguity. A good starting point is something like "We will fail a build if it introduces new critical issues on the login or checkout page." + +If your application is unstable between runs in terms of content, pages, or different states reached, fine tune your configuration to ignore the unstable parts of the DOM that have issues already. These can be documented and dealt with on their own. + +When everything is dialled in correctly, the Branch Review diff will be 100% clean, unless something has actually changed in an area you didn't already know about. This gives you the highest confidence that if an issue is blocking a merge, it is genuinely a new problem introduced by the incoming Pull Request. + +If the team is not already familiar with accessibility, it's useful to consider which rules to start with. See the [starting from scratch guide](/accessibility/guides/improve-accessibility) for suggestions about this. + +If multiple teams are working on the same project and need accessibility results to be isolated from each other, consider splitting runs into dedicated Cypress projects or using [configuration profiles](/accessibility/configuration/profiles) so that each team can have a customized report for the areas they are responsible for. \ No newline at end of file diff --git a/docs/accessibility/core-concepts/inspecting-violation-details.mdx b/docs/accessibility/core-concepts/inspecting-violation-details.mdx index 1594ccf740..70e8ab530b 100644 --- a/docs/accessibility/core-concepts/inspecting-violation-details.mdx +++ b/docs/accessibility/core-concepts/inspecting-violation-details.mdx @@ -36,7 +36,7 @@ Clicking on an element in the expanded Rule section provides: - **Pinned Element**: Highlights the element in the UI for easier identification. - **Copy Selector**: A button to copy the CSS selector uniquely identifying the element. - **Print to Console**: Logs the element reference to the browser's console for debugging. In Chrome-based browsers, you can right-click the logged element and select "Reveal in elements panel" to navigate directly to the live DOM. -- **Share issue**: A button to copy markdown or plain text snippet to share the issue with your team or collaborators. +- **Actions**: Share details of the accessibility problem or create a Jira issue (if the Jira integration is installed). - **Solutions**: A list of potential solutions to address the issue. { By examining the results and customizing your response, you gain maximum control over how to handle accessibility violations. Leverage CI environment context, such as tags, to fine-tune responses to specific accessibility outcomes. +## Using Profiles for PR-specific configuration + +You can use [Profiles](/accessibility/configuration/profiles) to apply different configuration settings for pull request runs versus regression runs. This allows you to: + +- Use a narrow, focused configuration for PR runs that blocks merges based on critical accessibility issues +- Maintain a broader configuration for regression runs that tracks all issues for long-term monitoring +- Apply team-specific configurations when multiple teams share the same Cypress Cloud project + +For example, you might configure a profile named `aq-config-pr` that excludes non-critical pages and focuses only on the most important accessibility rules, while your base configuration includes all pages and rules for comprehensive regression tracking. + +```shell +cypress run --record --tag "aq-config-pr" +``` + +This approach ensures that PR checks are fast and focused, while still maintaining comprehensive reporting for your full test suite. + ## Comparing against a baseline {#comparing-against-a-baseline} Comparing current results against a stored baseline allows you to detect only new violations that have been introduced, while ignoring existing known issues. This approach is more sophisticated than simply maintaining a list of known failing rules, as it tracks violations at the view level and can detect both regressions (new violations) and improvements (resolved violations). @@ -121,33 +137,14 @@ const parseRunNumber = (url) => { return url.split('runs/')[1].split('/accessibility')[0] } -// Define your baseline - this should be stored and updated as your application improves +// Define your baseline - beginning with no details +// will list all current violations as "new", and log a +// baseline that you can copy and save as your starting point + const baseline = { - runNumber: '111', + runNumber: '', severityLevels: ['critical', 'serious', 'moderate', 'minor'], - views: { - '/': [ - 'aria-dialog-name', - 'heading-order', - 'scrollable-region-focusable', - 'empty-table-header', - 'listitem', - 'region', - 'aria-required-children', - 'presentation-role-conflict', - 'scope-attr-valid', - 'aria-prohibited-attr', - 'aria-allowed-attr', - ], - '/authorizations': [ - 'heading-order', - 'listitem', - 'region', - 'presentation-role-conflict', - 'svg-img-alt', - 'aria-allowed-attr', - ], - }, + views: { }, } getAccessibilityResults().then((results) => { @@ -275,15 +272,15 @@ function generateBaseline(results) { } ``` -### Key concepts +### Key concepts in the example script #### New failing rules -A **new failing rule** is a rule that has violations in the current run but was not present in the baseline for that view. These represent regressions that need to be addressed. The script will fail the build if any new failing rules are detected. +A **new failing rule** is a rule that has violations on a View in the current run that were not present in the baseline. These represent regressions that need to be addressed. The script will fail the build if any new failing rules are detected. #### Resolved rules -A **resolved rule** is a rule that was present in the baseline but no longer has violations in the current run. These represent improvements in accessibility. The script reports these but does not fail the build, allowing you to track progress. +A **resolved rule** is a rule that was present in the baseline but no longer has violations in the current run. These represent improvements in accessibility. The script reports these but does not fail the build, allowing you to track progress, and printing out an updated baseline to copy over when things are fixed. #### Severity filtering @@ -301,9 +298,8 @@ Update your baseline when: - You've fixed accessibility violations and want to prevent regressions - You've accepted certain violations as known issues that won't block deployments -- You want to track improvements over time -Store the baseline in version control so it's versioned alongside your code and accessible in CI environments. +We recommend storing the baseline in version control so it's versioned alongside your code and accessible in CI environments, but some users prefer updating the baseline automatically based on the newest results from a full passing test run on the main branch of the project. This means any PRs will be compared against the reference run that makes sense at the time the results are analyzed, and avoids needing to manually own the standard. #### Handling partial reports @@ -319,10 +315,4 @@ Common approaches for storing baselines: - **Version control**: Commit the baseline JSON file to your repository - **CI artifacts**: Store baselines as build artifacts that can be retrieved in subsequent runs -- **External storage**: Use cloud storage or a database for baselines if you need more sophisticated versioning - -:::info - -This baseline comparison approach is more sophisticated than the simple rule list approach shown earlier in this guide, as it tracks violations at the view level and can detect both regressions and improvements. For simpler use cases, the rule list approach may be sufficient. -::: diff --git a/docs/accessibility/guides/maintain-accessibility.mdx b/docs/accessibility/guides/maintain-accessibility.mdx index d91ff5baab..995a27ce9b 100644 --- a/docs/accessibility/guides/maintain-accessibility.mdx +++ b/docs/accessibility/guides/maintain-accessibility.mdx @@ -9,7 +9,7 @@ sidebar_position: 30 # Maintain accessibility -Accessibility isn't a one-time project—it's a continuous process. This guide explains how to transition from addressing known issues to maintaining long-term accessibility in your projects. +Accessibility is never a one-time project that can be completed in a certain timeframe and considered done. For an actively developed application, accessibility is a continuous process like all other aspects of quality. This guide explains how to transition from addressing known issues to maintaining long-term accessibility in your projects. ## Switching from "improving" to "maintaining" @@ -18,7 +18,9 @@ When a specific accessibility rule reaches zero violations for a page, component - **Pre-Merge Insights**: Any new violations detected on a feature branch are clear indicators that changes on that branch introduced the issue. This could stem from updates in application code that impact accessibility or expanded test coverage revealing new issues. - **Post-Merge Monitoring**: If violations resurface on the main branch, tracing their introduction to specific pull requests helps pinpoint code or test changes causing the problem and facilitate follow-ups and training for developers. -Your ultimate goal is to achieve a fully passing state across all rules. Cypress provides you a lot of flexibility to manage large amounts of accessibility violations and make incremental progress towards well-defined targets. Through a combination of fixing accessibility problems, and configuring Cypress to focus on a tight scope of rules, standards, and application areas that matter most to you, you might be closer than you think to a "clean" main branch, from which you can expand your standards over time. +Your ultimate goal is to achieve a fully passing state across all rules. Cypress provides you a lot of flexibility to manage large amounts of accessibility violations and make incremental progress towards well-defined targets. Through a combination of fixing accessibility problems, and configuring Cypress to focus on a tight scope of rules, standards, and application areas that matter most to you, you might be closer than you think to a "clean" main branch, from which you can expand your standards over time. + +You can also use [Configuration Profiles](/accessibility/configuration/profiles) to manage different standards for different run types, such as stricter requirements for pull requests versus comprehensive monitoring for regression runs. ## Maintaining accessibility standards diff --git a/docs/accessibility/results-api.mdx b/docs/accessibility/results-api.mdx index c160ebe7d9..d65d123685 100644 --- a/docs/accessibility/results-api.mdx +++ b/docs/accessibility/results-api.mdx @@ -273,7 +273,7 @@ In your CI workflow that runs your Cypress tests, If you record multiple runs in a single CI build, you must record these runs using the `--tag` parameter and then call `getAccessibilityResults` with the `runTags` argument for each run. -This is necessary to identify each unique run and return a corresponding set of results. The tags are how each run is uniquely identified. +This is necessary to identify each unique run and return a corresponding set of results. The tags are how each run is uniquely identified. Tags can also be used to activate [Profiles](/accessibility/configuration/profiles) that apply different configuration settings to your runs. **Example** diff --git a/docs/app/references/command-line.mdx b/docs/app/references/command-line.mdx index 68c073654e..d45f2c901b 100644 --- a/docs/app/references/command-line.mdx +++ b/docs/app/references/command-line.mdx @@ -594,6 +594,11 @@ Cypress Cloud will display any tags sent with the appropriate run. alt="Cypress run in Cypress Cloud displaying flags" /> +:::info + +**App Quality Profiles**: If you use Cypress Cloud's [accessibility](/accessibility/get-started/introduction) and [UI Coverage reporting](/accessibility/get-started/introduction), a run tag can be mapped to [App Quality Profiles](/accessibility/configuration/profiles) to automatically apply different configuration settings for different types of runs. +::: + #### Exit code Cypress supports two different exit code behaviors. The default behavior is similar to that of Mocha, but is not POSIX compliant: reserved exit codes can be returned for certain conditions. As well, the default behavior diff --git a/docs/partials/_attributefilters.mdx b/docs/partials/_attributefilters.mdx index acff3db8cf..eb6518bc08 100644 --- a/docs/partials/_attributefilters.mdx +++ b/docs/partials/_attributefilters.mdx @@ -33,7 +33,11 @@ supported, if you need to split them up. ### Options -For every attribute that an element has, the first `attributeFilters` rule for which the `attribute` property matches the attribute's name and the `value` property matches the attribute's value, the `include` value is used to determine whether or not the attribute will be used for element identification and grouping. Attributes that do not match any rules are included by default. +Whether Cypress is allowed to use a certain attribute to identify an element when processing it for UI Coverage or Cypress Accessibility reports will be controlled by the **first** filter that matches the name and value of that attribute. + +This means that catch-all rules can be added at the bottom of the list by setting `include` to `false`, and exceptions can be defined earlier in the list using `include: true`. For example, you could avoid all use of `aria-label` for identification of elements as a catch-call filter, but then define exceptions for certain values it may have where it is a good identifier. + +Attributes that do not match any rules are included by default and used if needed, so `include: true` is only required for defining exceptions. If you want to make sure an attribute is preferred as an identifier when available, add it to your [attributeFilters](/accessibility/configuration/attributefilters). | Option | Required | Default | Description | | ----------- | -------- | ------- | ---------------------------------------------------------------------- | @@ -44,19 +48,19 @@ For every attribute that an element has, the first `attributeFilters` rule for w ## Examples -### Excluding common auto-generated id values +### Excluding common auto-generated ID values + +Some component libraries generate ```json { - "uiCoverage": { - "attributeFilters": [ - { - "attribute": "id", - "value": ":r.*:", - "include": false - } - ] - } + "attributeFilters": [ + { + "attribute": "id", + "value": ":r.*", + "include": false + } + ] } ``` @@ -69,7 +73,7 @@ For every attribute that an element has, the first `attributeFilters` rule for w ``` -#### Elements shown in UI Coverage +#### Element identifiers displayed ``` [name="my-button"] @@ -78,108 +82,104 @@ For every attribute that an element has, the first `attributeFilters` rule for w --- -### Excluding auto-generated attribute names +### Filtering related dynamic attributes + +When filtering dynamic `id` attributes, you should also filter attributes that reference those IDs to prevent elements from being identified by these related dynamic values. Common relationships include: + +- Form associations (`for` attributes on labels) +- ARIA relationships (`aria-labelledby`, `aria-describedby`, `aria-controls`, `aria-owns`, `aria-details`) +- Name attributes that may mirror IDs in certain frameworks ```json { - "uiCoverage": { - "attributeFilters": [ - { - "attribute": "ng-include-me", - "value": ".*", - "include": true - }, - { - "attribute": "ng-.*", - "value": ".*", - "include": false - } - ] - } + "attributeFilters": [ + { + "attribute": "id|for|name|aria-.*", + "value": "dynamic-.*", + "include": false + } + ] } ``` #### HTML ```xml - - - - +

+ + +

Enter your first name

+
``` -#### Elements shown in UI Coverage +#### Element identifiers displayed ``` -[ng-include-me="my-button"] -:nth-child(2) +label +input +p ``` -### Ignoring dynamic attributes for accurate grouping + +### Excluding auto-generated attribute names ```json { - "uiCoverage": { - "attributeFilters": [ - { - "attribute": "data-cy", - "value": "user-\\d+", - "include": false - } - ] - } + "attributeFilters": [ + { + "attribute": "ng-include-me", + "value": ".*", + "include": true + }, + { + "attribute": "ng-.*|_ng.*", + "value": ".*", + "include": false + } + ] } ``` #### HTML ```xml - - + + + + ``` -#### Elements shown in UI Coverage +#### Element identifiers displayed ``` -.user (2 instances) +[ng-include-me="my-button"] +:nth-child(2) ``` -### Filtering related dynamic attributes - -When filtering dynamic `id` attributes, you should also filter attributes that reference those IDs to prevent elements from being identified by these related dynamic values. Common relationships include: - -- Form associations (`for` attributes on labels) -- ARIA relationships (`aria-labelledby`, `aria-describedby`, `aria-controls`, `aria-owns`, `aria-details`) -- Name attributes that may mirror IDs in certain frameworks +### Ignoring dynamic attributes for accurate grouping ```json { - "uiCoverage": { - "attributeFilters": [ - { - "attribute": "id|for|name|aria-.*", - "value": "dynamic-.*", - "include": false - } - ] - } + "attributeFilters": [ + { + "attribute": "data-cy", + "value": "user-\\d+", + "include": false + } + ] } ``` #### HTML ```xml -
- - -

Enter your first name

-
+ + ``` -#### Elements shown in UI Coverage +#### Element identifiers displayed ``` -label -input -p +.user (2 instances) ``` + diff --git a/docs/partials/_profiles.mdx b/docs/partials/_profiles.mdx index 9f7e84dbff..3945f9f9e8 100644 --- a/docs/partials/_profiles.mdx +++ b/docs/partials/_profiles.mdx @@ -1,9 +1,11 @@ -The `profiles` property allows you to create configuration overrides that are applied based on run tags. This enables you to use different configuration settings for different types of runs, such as regression tests compared to smoke tests environments, or providing scoped results relevant to specific teams. +The `profiles` property allows you to create configuration overrides that are applied based on [run tags](/app/references/command-line#cypress-run-tag-lt-tag-gt). This enables you to use different configuration settings for different types of runs in the same Cypress Cloud project, such as regression tests compared to smoke tests environments, or providing scoped results relevant to specific teams. + +In many cases, the need for different profiles can be avoided completely by having distinct Cypress Cloud projects for different kinds of runs or different team ownership. This is the recommended first choice, because it usually simplifies reporting and tracking. But where distinct projects are not the right answer, profiles will help. ## Why use profiles? - **Team specific reporting**: If multiple teams use the same Cypress Cloud project, they may have completely different areas of concern for which pages or DOM elements are included in reports about accessibility or UI Coverage. Profiles allow each team to see and track against only the results that matter to them, and remove all other findings. -- **Run-type customization**: Use different filters or settings for regression runs versus pull requests. It can be useful to have a narrow config for blocking a merge, optimized for the most critical areas of your app -- while still running a wide config on a full regression suite to manage on a difference cadence. +- **Run-type customization**: Use different filters or settings for regression runs versus pull requests. It can be useful to have a narrow config for blocking a merge, optimized for the most critical areas of your app and high "solvability", while still running a wide config on a full regression suite to manage findings on a difference cadence. - **Skip runs when needed**: If you know that certain kinds of runs are not going to be valuable for App Quality reporting, you can ignore all view on these runs so that no report is created. In some situations this can improve clarity about when to look at a report and which reports are considered significant. ## How profiles work @@ -16,7 +18,7 @@ If more than one tag provided to a run matches a profile in your App Quality pro Use a naming convention like `aq-config-x` (e.g., `aq-config-regression`, `aq-config-staging`) to make it clear that a tag is used for configuration lookup purposes. -While relying on existing tags works just fine, being explicit will help avoid accidental removal of or changes to important tags. +While relying on existing tags works just fine, being explicit will help avoid unintentionally changing or removing a tag which is depended on for a profile. ## Syntax diff --git a/docs/ui-coverage/configuration/allowedinteractioncommands.mdx b/docs/ui-coverage/configuration/allowedinteractioncommands.mdx index 68933d8b1b..ef7467a4ff 100644 --- a/docs/ui-coverage/configuration/allowedinteractioncommands.mdx +++ b/docs/ui-coverage/configuration/allowedinteractioncommands.mdx @@ -9,7 +9,7 @@ sidebar_position: 100 # allowedInteractionCommands -UI Coverage tracks all interaction commands by default for comprehensive coverage reporting. The `allowedInteractionCommands` configuration allows you to limit which interaction commands are tracked for specific elements by defining rules based on CSS selectors. +UI Coverage tracks [all interaction commands](/ui-coverage/core-concepts/interactivity#Interaction-Commands) by default for comprehensive coverage reporting. The `allowedInteractionCommands` configuration allows you to limit which interaction commands are tracked for specific elements by defining rules based on CSS selectors. This is particularly useful for filtering out irrelevant interactions or focusing coverage tracking on specific interaction patterns for different types of elements. diff --git a/docs/ui-coverage/configuration/overview.mdx b/docs/ui-coverage/configuration/overview.mdx index 964d113268..e88656f602 100644 --- a/docs/ui-coverage/configuration/overview.mdx +++ b/docs/ui-coverage/configuration/overview.mdx @@ -29,7 +29,11 @@ UI Coverage now supports defining custom commands that will count towards covera To add or modify the configuration for your project: 1. Navigate to the **App Quality** tab in your project settings on Cypress Cloud. -2. Use the configuration editor to add or edit confiuration in JSON format. +2. Use the configuration editor to add or edit configuration in JSON format. + +After new configuration changes have been saved, you can reprocess any historical run using the "regenerate" button on the properties tab where the configuration values that were used for that run are displayed, or through the UI Coverage report where the "configuration updated" message appears if you are looking at a historical run using an old config. + +Regenerating reports in this way allows you to make config changes and see their effects without running your Cypress tests again. { By examining the results and customizing your response, you gain maximum control over how to handle coverage gaps. Leverage CI environment context, such as tags, to fine-tune responses to specific coverage outcomes. +## Using Profiles for PR-specific configuration + +You can use [Profiles](/ui-coverage/configuration/profiles) to apply different configuration settings for pull request runs versus regression runs. This allows you to: + +- Use a narrow, focused configuration for PR runs that blocks merges based on critical coverage thresholds +- Maintain a broader configuration for regression runs that tracks all coverage gaps for long-term monitoring +- Apply team-specific configurations when multiple teams share the same Cypress Cloud project + +For example, you might configure a profile named `aq-config-pr` that excludes non-critical pages and focuses only on the most important coverage areas, while your base configuration includes all pages for comprehensive regression tracking. + +```shell +cypress run --record --tag "aq-config-pr" +``` + +This approach ensures that PR checks are fast and focused, while still maintaining comprehensive reporting for your full test suite. + ## Comparing against a baseline {#comparing-against-a-baseline} Comparing current results against a stored baseline allows you to detect only new untested elements that have been introduced, while ignoring existing coverage gaps. This approach helps you focus on regressions in test coverage and track improvements over time. diff --git a/docs/ui-coverage/results-api.mdx b/docs/ui-coverage/results-api.mdx index b97872dac2..50327cc947 100644 --- a/docs/ui-coverage/results-api.mdx +++ b/docs/ui-coverage/results-api.mdx @@ -189,7 +189,7 @@ In your CI workflow that runs your Cypress tests, If you record multiple runs in a single CI build, you must record these runs using the `--tag` parameter and then call `getUICoverageResults` with the `runTags` argument for each run. -This is necessary to identify each unique run and return a corresponding set of results. The tags are how each run is uniquely identified. +This is necessary to identify each unique run and return a corresponding set of results. The tags are how each run is uniquely identified. Tags can also be used to activate [Profiles](/ui-coverage/configuration/profiles) that apply different configuration settings to your runs. **Example** From 5b3c0e8781d130525ac4505e203851d63f968cc0 Mon Sep 17 00:00:00 2001 From: marktnoonan Date: Thu, 18 Dec 2025 07:27:03 -0500 Subject: [PATCH 07/14] linting --- docs/accessibility/configuration/overview.mdx | 2 -- docs/accessibility/core-concepts/compare-reports.mdx | 3 +-- .../core-concepts/inspecting-violation-details.mdx | 2 +- docs/accessibility/guides/block-pull-requests.mdx | 5 ++--- docs/accessibility/guides/maintain-accessibility.mdx | 2 +- docs/app/references/command-line.mdx | 2 +- docs/partials/_attributefilters.mdx | 4 +--- docs/partials/_profiles.mdx | 2 +- docs/ui-coverage/configuration/overview.mdx | 7 ++----- docs/ui-coverage/get-started/setup.mdx | 2 -- 10 files changed, 10 insertions(+), 21 deletions(-) diff --git a/docs/accessibility/configuration/overview.mdx b/docs/accessibility/configuration/overview.mdx index 44d9eed1ac..853e3fbde1 100644 --- a/docs/accessibility/configuration/overview.mdx +++ b/docs/accessibility/configuration/overview.mdx @@ -37,7 +37,6 @@ You can view configuration information for each run in the Properties tab, as sh alt="The properties tab for a run, with an Application Quality section at the bottom" /> - ### Comments All configuration objects support an optional `comment` property that you can use to provide context and explanations for why certain values are set. This helps make your configuration easier to understand and maintain, especially when working in teams or revisiting configuration after some time. @@ -58,7 +57,6 @@ All configuration objects support an optional `comment` property that you can us The `profiles` property allows you to use different configuration settings for different runs based on [run tags](/app/references/command-line#cypress-run-tag-lt-tag-gt). See the [Profiles](/accessibility/configuration/profiles) guide for more details. - ### Complete configuration example A complete configuration with all available options looks as follows: diff --git a/docs/accessibility/core-concepts/compare-reports.mdx b/docs/accessibility/core-concepts/compare-reports.mdx index faf984e228..344238e669 100644 --- a/docs/accessibility/core-concepts/compare-reports.mdx +++ b/docs/accessibility/core-concepts/compare-reports.mdx @@ -165,7 +165,6 @@ For example, sometimes the test may spend enough time on a page to see a confirm There are different solutions depending on the nature of the issue. If you want to ensure the state is always picked up in Cypress Accessibility, you can add some assertion about that state to your tests. On the other hand, if you do not want to account for this state at all, it can be ignored with [`elementFilters`](/accessibility/configuration/elementfilters) configuration. Either approach will lead to a more stable branch comparison. - ## Optimizing for Pull Request reviews If you plan to use branch comparison for investigating Pull Requests that have been blocked through the Results API for not meeting your standard, it's useful to implement this in a gradual way, prioritizing the developer experience at first. @@ -178,4 +177,4 @@ When everything is dialled in correctly, the Branch Review diff will be 100% cle If the team is not already familiar with accessibility, it's useful to consider which rules to start with. See the [starting from scratch guide](/accessibility/guides/improve-accessibility) for suggestions about this. -If multiple teams are working on the same project and need accessibility results to be isolated from each other, consider splitting runs into dedicated Cypress projects or using [configuration profiles](/accessibility/configuration/profiles) so that each team can have a customized report for the areas they are responsible for. \ No newline at end of file +If multiple teams are working on the same project and need accessibility results to be isolated from each other, consider splitting runs into dedicated Cypress projects or using [configuration profiles](/accessibility/configuration/profiles) so that each team can have a customized report for the areas they are responsible for. diff --git a/docs/accessibility/core-concepts/inspecting-violation-details.mdx b/docs/accessibility/core-concepts/inspecting-violation-details.mdx index 70e8ab530b..df4f3c0965 100644 --- a/docs/accessibility/core-concepts/inspecting-violation-details.mdx +++ b/docs/accessibility/core-concepts/inspecting-violation-details.mdx @@ -102,4 +102,4 @@ Snapshots are fully hydrated HTML and CSS representations of your application's This area also has the Test Replay button to provide access to any tests where this snapshot appeared, as well as the specific URL of the snapshot displayed at the bottom of the screen. -It's also possible to cycle through the available snapshots to see all the states of the application that were captured, but this is usually not necessary. Think of snapshots more as examples and evidence related to elements that are listed on the left hand side of the screen. The most useful way to browse the report is to move through the elements on the left. \ No newline at end of file +It's also possible to cycle through the available snapshots to see all the states of the application that were captured, but this is usually not necessary. Think of snapshots more as examples and evidence related to elements that are listed on the left hand side of the screen. The most useful way to browse the report is to move through the elements on the left. diff --git a/docs/accessibility/guides/block-pull-requests.mdx b/docs/accessibility/guides/block-pull-requests.mdx index a2e192a25e..2868797272 100644 --- a/docs/accessibility/guides/block-pull-requests.mdx +++ b/docs/accessibility/guides/block-pull-requests.mdx @@ -137,14 +137,14 @@ const parseRunNumber = (url) => { return url.split('runs/')[1].split('/accessibility')[0] } -// Define your baseline - beginning with no details +// Define your baseline - beginning with no details // will list all current violations as "new", and log a // baseline that you can copy and save as your starting point const baseline = { runNumber: '', severityLevels: ['critical', 'serious', 'moderate', 'minor'], - views: { }, + views: {}, } getAccessibilityResults().then((results) => { @@ -315,4 +315,3 @@ Common approaches for storing baselines: - **Version control**: Commit the baseline JSON file to your repository - **CI artifacts**: Store baselines as build artifacts that can be retrieved in subsequent runs - diff --git a/docs/accessibility/guides/maintain-accessibility.mdx b/docs/accessibility/guides/maintain-accessibility.mdx index 995a27ce9b..57ee5bb370 100644 --- a/docs/accessibility/guides/maintain-accessibility.mdx +++ b/docs/accessibility/guides/maintain-accessibility.mdx @@ -18,7 +18,7 @@ When a specific accessibility rule reaches zero violations for a page, component - **Pre-Merge Insights**: Any new violations detected on a feature branch are clear indicators that changes on that branch introduced the issue. This could stem from updates in application code that impact accessibility or expanded test coverage revealing new issues. - **Post-Merge Monitoring**: If violations resurface on the main branch, tracing their introduction to specific pull requests helps pinpoint code or test changes causing the problem and facilitate follow-ups and training for developers. -Your ultimate goal is to achieve a fully passing state across all rules. Cypress provides you a lot of flexibility to manage large amounts of accessibility violations and make incremental progress towards well-defined targets. Through a combination of fixing accessibility problems, and configuring Cypress to focus on a tight scope of rules, standards, and application areas that matter most to you, you might be closer than you think to a "clean" main branch, from which you can expand your standards over time. +Your ultimate goal is to achieve a fully passing state across all rules. Cypress provides you a lot of flexibility to manage large amounts of accessibility violations and make incremental progress towards well-defined targets. Through a combination of fixing accessibility problems, and configuring Cypress to focus on a tight scope of rules, standards, and application areas that matter most to you, you might be closer than you think to a "clean" main branch, from which you can expand your standards over time. You can also use [Configuration Profiles](/accessibility/configuration/profiles) to manage different standards for different run types, such as stricter requirements for pull requests versus comprehensive monitoring for regression runs. diff --git a/docs/app/references/command-line.mdx b/docs/app/references/command-line.mdx index d45f2c901b..7b48352031 100644 --- a/docs/app/references/command-line.mdx +++ b/docs/app/references/command-line.mdx @@ -596,7 +596,7 @@ Cypress Cloud will display any tags sent with the appropriate run. :::info -**App Quality Profiles**: If you use Cypress Cloud's [accessibility](/accessibility/get-started/introduction) and [UI Coverage reporting](/accessibility/get-started/introduction), a run tag can be mapped to [App Quality Profiles](/accessibility/configuration/profiles) to automatically apply different configuration settings for different types of runs. +**App Quality Profiles**: If you use Cypress Cloud's [accessibility](/accessibility/get-started/introduction) and [UI Coverage reporting](/accessibility/get-started/introduction), a run tag can be mapped to [App Quality Profiles](/accessibility/configuration/profiles) to automatically apply different configuration settings for different types of runs. ::: #### Exit code diff --git a/docs/partials/_attributefilters.mdx b/docs/partials/_attributefilters.mdx index eb6518bc08..733bbcd208 100644 --- a/docs/partials/_attributefilters.mdx +++ b/docs/partials/_attributefilters.mdx @@ -120,7 +120,6 @@ input p ``` - ### Excluding auto-generated attribute names ```json @@ -166,7 +165,7 @@ p "value": "user-\\d+", "include": false } - ] + ] } ``` @@ -182,4 +181,3 @@ p ``` .user (2 instances) ``` - diff --git a/docs/partials/_profiles.mdx b/docs/partials/_profiles.mdx index 3945f9f9e8..d58bdb723a 100644 --- a/docs/partials/_profiles.mdx +++ b/docs/partials/_profiles.mdx @@ -18,7 +18,7 @@ If more than one tag provided to a run matches a profile in your App Quality pro Use a naming convention like `aq-config-x` (e.g., `aq-config-regression`, `aq-config-staging`) to make it clear that a tag is used for configuration lookup purposes. -While relying on existing tags works just fine, being explicit will help avoid unintentionally changing or removing a tag which is depended on for a profile. +While relying on existing tags works just fine, being explicit will help avoid unintentionally changing or removing a tag which is depended on for a profile. ## Syntax diff --git a/docs/ui-coverage/configuration/overview.mdx b/docs/ui-coverage/configuration/overview.mdx index e88656f602..6d5884a3ba 100644 --- a/docs/ui-coverage/configuration/overview.mdx +++ b/docs/ui-coverage/configuration/overview.mdx @@ -31,7 +31,7 @@ To add or modify the configuration for your project: 1. Navigate to the **App Quality** tab in your project settings on Cypress Cloud. 2. Use the configuration editor to add or edit configuration in JSON format. -After new configuration changes have been saved, you can reprocess any historical run using the "regenerate" button on the properties tab where the configuration values that were used for that run are displayed, or through the UI Coverage report where the "configuration updated" message appears if you are looking at a historical run using an old config. +After new configuration changes have been saved, you can reprocess any historical run using the "regenerate" button on the properties tab where the configuration values that were used for that run are displayed, or through the UI Coverage report where the "configuration updated" message appears if you are looking at a historical run using an old config. Regenerating reports in this way allows you to make config changes and see their effects without running your Cypress tests again. @@ -147,8 +147,6 @@ You can review the configuration used during a specific run by checking the **Pr Check out the following configuration guides. - - - [Views](/ui-coverage/configuration/views) - [View Filters](/ui-coverage/configuration/viewfilters) - [Element Filters](/ui-coverage/configuration/elementfilters) @@ -160,5 +158,4 @@ Check out the following configuration guides. - [Allowed Interaction Commands](/ui-coverage/configuration/allowedinteractioncommands) - [Profiles](/ui-coverage/configuration/profiles) - -UI Coverage now supports defining custom commands that will count towards coverage scores, restricting which kinds of interactions are allowed for certain elements, and including assertions in the UI Coverage calculations. See the following new properties for more details: \ No newline at end of file +UI Coverage now supports defining custom commands that will count towards coverage scores, restricting which kinds of interactions are allowed for certain elements, and including assertions in the UI Coverage calculations. See the following new properties for more details: diff --git a/docs/ui-coverage/get-started/setup.mdx b/docs/ui-coverage/get-started/setup.mdx index fe0ff337f9..b1a7409c06 100644 --- a/docs/ui-coverage/get-started/setup.mdx +++ b/docs/ui-coverage/get-started/setup.mdx @@ -42,8 +42,6 @@ After recording a test run, you can view your UI Coverage results in the Cypress UI Coverage provides flexible configuration options to customize your reports. You can configure: - - - [Views](/ui-coverage/configuration/views): specify URL patterns that represent related pages or states of your application - [View filters](/ui-coverage/configuration/viewfilters): specify URL patterns for URLs that should be excluded from UI Coverage for visiting and linking purposes - [Element filters](/ui-coverage/configuration/elementfilters): specify selectors for elements that should be excluded from UI Coverage From 813f6fc615bc3593de193fe09b2649a2d8afe54b Mon Sep 17 00:00:00 2001 From: marktnoonan Date: Thu, 18 Dec 2025 18:04:21 -0500 Subject: [PATCH 08/14] wrap up PR blocking --- .../guides/block-pull-requests.mdx | 315 +++++++++++------- 1 file changed, 188 insertions(+), 127 deletions(-) diff --git a/docs/ui-coverage/guides/block-pull-requests.mdx b/docs/ui-coverage/guides/block-pull-requests.mdx index bb6e3c46f3..33817bf1d1 100644 --- a/docs/ui-coverage/guides/block-pull-requests.mdx +++ b/docs/ui-coverage/guides/block-pull-requests.mdx @@ -78,169 +78,230 @@ This is particularly useful in CI/CD pipelines where you want to fail builds onl ### Baseline structure -A baseline is a JSON object that captures the state of untested elements from a specific run. It includes: +In our example the baseline is a JSON object that captures the state of untested elements from a specific run. It includes: - **runNumber**: The run number used as the baseline reference -- **views**: An object mapping view display names to arrays of view identifiers that had untested elements +- **views**: An object mapping view display names to arrays of view identifiers and their untested elements counts +- **runUrl**: The link to the cloud run that generated this report -Since the UI Coverage Results API provides `untestedElementsCount` per view rather than individual element identifiers, the baseline tracks which views have untested elements (where `untestedElementsCount > 0`). ```javascript { - "runNumber": "111", + "runNumber": 68086, + "runUrl": "https://cloud.cypress.io/projects/ypt4pf/runs/68086", "views": { - "/": [], - "/authorizations": [], - "/checkout": ["/checkout"], - "/profile": ["/profile"] + "/": { testedElements: 55 }, + "/login": { testedElements: 3 }, + "/products/*": { testedElements: 3 }, } } ``` -In this example, `/checkout` and `/profile` had untested elements in the baseline run, while `/` and `/authorizations` had full coverage. +#### Why use untested element counts instead of UI Coverage percentage scores? + +The [UI Coverage score](/ui-coverage/guides/identify-coverage-gaps#Overall-Score) is expressed as based on a ratio of what was and was not tested over time, within what was rendered in Cypress during the run. Since testing one new element might reveal many more elements that aren't tested yet, the score isn't useful for a fine-grained baseline comparison between runs. Comparing the number of tested elements gives a more accurate sense of whether one run has added or removed coverage when compared to another, and is a better predictor of what information would be in the report. ### Complete example -The following example demonstrates how to compare current results against a baseline, detect new views with untested elements, identify views where coverage has improved, and generate a new baseline when changes are detected. +The following example demonstrates how to compare current results against a baseline, detect new views with untested elements, identify views where coverage has improved, and generate a new baseline on every run so that it's easy to copy and update if needed. ```javascript title="scripts/compareUICoverageBaseline.js" -require('dotenv').config() +require('dotenv').config(); const { getUICoverageResults } = require('@cypress/extract-cloud-results') -const fs = require('fs') - -// Parse the run number from a UI Coverage report URL -const parseRunNumber = (url) => { - return url.split('runs/')[1].split('/ui-coverage')[0] -} +const fs = require('fs'); -// Define your baseline - this should be stored and updated as your test coverage improves +// Define your baseline - this should be stored and updated as your application improves +// Running the script once with no baseline will generate a baseline for you const baseline = { - runNumber: '111', - views: { - '/': [], - '/authorizations': [], - '/checkout': ['/checkout'], - '/profile': ['/profile'], - }, + "runNumber": undefined, + "runUrl": undefined, + "views": [] } -getUICoverageResults().then((results) => { - // Create objects to store the results - const viewUntestedElements = {} - const viewsWithNewUntestedElements = {} - const viewsWithResolvedUntestedElements = {} - - // Iterate through each view in current results - results.views.forEach((view) => { - const displayName = view.displayName - const hasUntestedElements = view.untestedElementsCount > 0 - - // Track which views have untested elements - if (hasUntestedElements) { - viewUntestedElements[displayName] = [displayName] +// Function to compare coverage between current results and baseline +const compareTestedElementsWithBaseline = (currentResults, baselineData) => { + const testedElementsIssues = []; + const testedElementsImprovements = []; + const newPages = []; + + // Check if current results has views + if (!currentResults.views || !Array.isArray(currentResults.views)) { + console.log('Warning: Current results do not contain a valid "views" array. Skipping comparison.'); + return { testedElementsIssues, testedElementsImprovements, newPages, hasChanges: false }; + } + + const currentViews = currentResults.views; + + // Check if baseline data has the expected structure + if (!baselineData.views) { + console.log('Warning: Baseline data does not contain "views" property. Skipping comparison.'); + console.log('Current baseline structure:', Object.keys(baselineData)); + return { testedElementsIssues, testedElementsImprovements, newPages, hasChanges: true }; + } + + const baselineViews = baselineData.views; + + // Ensure baselineViews is an array + if (!Array.isArray(baselineViews)) { + console.log('Warning: Baseline views is not an array. Skipping comparison.'); + return { testedElementsIssues, testedElementsImprovements, newPages, hasChanges: true }; + } + + // Create a map of baseline testedElementsCount by displayName for quick lookup + const baselineTestedElementsMap = {}; + baselineViews.forEach(view => { + baselineTestedElementsMap[view.displayName] = view.testedElementsCount; + }); + + // Create a map of current views by displayName to check for missing pages + const currentViewsMap = {}; + currentViews.forEach(view => { + currentViewsMap[view.displayName] = view.testedElementsCount; + }); + + // Compare each current view with baseline + currentViews.forEach(currentView => { + const pageName = currentView.displayName; + const currentTestedElements = currentView.testedElementsCount; + const pageExistsInBaseline = pageName in baselineTestedElementsMap; + + if (pageExistsInBaseline) { + const baselineTestedElements = baselineTestedElementsMap[pageName]; + if (currentTestedElements < baselineTestedElements) { + testedElementsIssues.push({ + page: pageName, + currentTestedElements: currentTestedElements, + baselineTestedElements: baselineTestedElements, + difference: baselineTestedElements - currentTestedElements + }); + } else if (currentTestedElements > baselineTestedElements) { + testedElementsImprovements.push({ + page: pageName, + currentTestedElements: currentTestedElements, + baselineTestedElements: baselineTestedElements, + difference: currentTestedElements - baselineTestedElements + }); + } } else { - viewUntestedElements[displayName] = [] + // New page not in baseline + newPages.push({ + page: pageName, + testedElementsCount: currentTestedElements + }); } - - // Check for new views with untested elements - // A view has new untested elements if: - // 1. It has untested elements in current run, AND - // 2. It either didn't exist in baseline OR had no untested elements in baseline - if (hasUntestedElements) { - const baselineHadUntested = baseline.views?.[displayName]?.length > 0 - - if (!baselineHadUntested) { - viewsWithNewUntestedElements[displayName] = { - untestedElementsCount: view.untestedElementsCount, - url: view.uiCoverageReportUrl, - } - } + }); + + // Check for pages in baseline that are missing from current results + // These are treated as regressions (0 tested elements) + baselineViews.forEach(baselineView => { + const pageName = baselineView.displayName; + if (!(pageName in currentViewsMap)) { + testedElementsIssues.push({ + page: pageName, + currentTestedElements: 0, + baselineTestedElements: baselineView.testedElementsCount, + difference: baselineView.testedElementsCount, + isMissing: true + }); } - }) - - // Check for views in baseline that no longer have untested elements (resolved) - Object.entries(baseline.views).forEach(([displayName, baselineUntested]) => { - const currentHasUntested = viewUntestedElements[displayName]?.length > 0 - const baselineHadUntested = baselineUntested.length > 0 + }); + + const hasChanges = testedElementsIssues.length > 0 || testedElementsImprovements.length > 0 || newPages.length > 0; + + return { testedElementsIssues, testedElementsImprovements, newPages, hasChanges }; +} - // If baseline had untested elements but current run doesn't, it's resolved - if (baselineHadUntested && !currentHasUntested) { - viewsWithResolvedUntestedElements[displayName] = { - resolved: true, - } +function generateUICoverageBaseline(results) { + try { + // Generate simplified baseline with only runNumber, runUrl, and views with displayName and testedElementsCount + return { + runNumber: results.runNumber, + runUrl: results.runUrl, + views: results.views.map(view => ({ + displayName: view.displayName, + testedElementsCount: view.testedElementsCount + })) } - }) + } catch (error) { + console.error('Error generating UI Coverage baseline:', error) + return null + } +} - // Report any changes - const countOfViewsWithResolved = Object.keys( - viewsWithResolvedUntestedElements - ).length - const countOfViewsWithNewUntested = Object.keys( - viewsWithNewUntestedElements - ).length +getUICoverageResults().then((results) => { - if (countOfViewsWithResolved || countOfViewsWithNewUntested) { + // Compare tested elements count with baseline + const { testedElementsIssues, testedElementsImprovements, newPages, hasChanges } = compareTestedElementsWithBaseline(results, baseline); + + if (hasChanges) { // Generate and log the new baseline values if there has been a change - const newBaseline = generateBaseline(results) + const newBaseline = generateUICoverageBaseline(results) console.log('\nTo use this run as the new baseline, copy these values:') console.log(JSON.stringify(newBaseline, null, 2)) - fs.writeFileSync('new-baseline.json', JSON.stringify(newBaseline, null, 2)) + fs.writeFileSync('new-UICbaseline.json', JSON.stringify(newBaseline, null, 2)) } - - if (countOfViewsWithResolved) { - console.log( - '\nThe following Views had untested elements in the baseline that are now fully tested. This indicates improved test coverage:' - ) - console.dir(viewsWithResolvedUntestedElements, { depth: 3 }) - } else if (!countOfViewsWithNewUntested) { - console.log( - '\nNo new or resolved untested elements were detected. All coverage matches the baseline.\n' - ) + + // Log tested elements regressions + if (testedElementsIssues.length > 0) { + console.error('\nāŒ TESTED ELEMENTS REGRESSION DETECTED!'); + console.error('The following pages have fewer tested elements than the baseline:'); + console.error(''); + + testedElementsIssues.forEach(issue => { + console.error(` šŸ“„ ${issue.page}`); + if (issue.isMissing) { + console.error(` āš ļø MISSING FROM REPORT (treated as 0 tested elements)`); + console.error(` Current: 0 | Baseline: ${issue.baselineTestedElements} | Difference: -${issue.difference}`); + } else { + console.error(` Current: ${issue.currentTestedElements} | Baseline: ${issue.baselineTestedElements} | Difference: -${issue.difference}`); + } + console.error(''); + }); + + console.error(`Total pages with tested elements regression: ${testedElementsIssues.length}`); } - - if (countOfViewsWithNewUntested) { - // Report any new untested elements - console.error( - '\nThe following Views have new untested elements that were not present in the baseline:' - ) - console.dir(viewsWithNewUntestedElements, { depth: 3 }) - throw new Error( - `${countOfViewsWithNewUntested} Views contained new untested elements.` - ) + + // Log tested elements improvements + if (testedElementsImprovements.length > 0) { + console.log('\nāœ… TESTED ELEMENTS IMPROVEMENTS DETECTED!'); + console.log('The following pages have more tested elements than the baseline:'); + console.log(''); + + testedElementsImprovements.forEach(improvement => { + console.log(` šŸ“„ ${improvement.page}`); + console.log(` Current: ${improvement.currentTestedElements} | Baseline: ${improvement.baselineTestedElements} | Difference: +${improvement.difference}`); + console.log(''); + }); + + console.log(`Total pages with tested elements improvement: ${testedElementsImprovements.length}`); } - - return viewUntestedElements -}) - -function generateBaseline(results) { - try { - // Create an object to store the results - const viewUntestedElements = {} - - // Iterate through each view - results.views.forEach((view) => { - const displayName = view.displayName - const hasUntestedElements = view.untestedElementsCount > 0 - - // Track views that have untested elements - // Store the view name in an array if it has untested elements, empty array otherwise - viewUntestedElements[displayName] = hasUntestedElements - ? [displayName] - : [] - }) - - const runNumber = parseRunNumber(results.views[0].uiCoverageReportUrl) - - return { - runNumber, - views: viewUntestedElements, - } - } catch (error) { - console.error('Error parsing UI Coverage results:', error) - return null + + // Log new pages + if (newPages.length > 0) { + console.log('\nšŸ“ NEW PAGES DETECTED (not in baseline):'); + newPages.forEach(page => { + console.log(` šŸ“„ ${page.page} - Tested Elements: ${page.testedElementsCount}`); + }); + console.log(`Total new pages: ${newPages.length}`); } -} + + // Summary + if (!hasChanges) { + console.log('\nāœ… All pages meet or exceed baseline tested elements count!'); + } else if (testedElementsIssues.length === 0) { + console.log('\nāœ… No tested elements regressions detected!'); + } + + // Exit with error code if there are regressions + if (testedElementsIssues.length > 0) { + process.exit(1); + } +}).catch((error) => { + console.error('Error getting UI coverage results:', error); + process.exit(1); +}); + ``` ### Key concepts From 028dd736fbf974dbcf50607e843754b6fe2dea7c Mon Sep 17 00:00:00 2001 From: marktnoonan Date: Thu, 18 Dec 2025 18:05:15 -0500 Subject: [PATCH 09/14] lint fix --- .../guides/block-pull-requests.mdx | 316 ++++++++++-------- 1 file changed, 185 insertions(+), 131 deletions(-) diff --git a/docs/ui-coverage/guides/block-pull-requests.mdx b/docs/ui-coverage/guides/block-pull-requests.mdx index 33817bf1d1..539a8d4ecb 100644 --- a/docs/ui-coverage/guides/block-pull-requests.mdx +++ b/docs/ui-coverage/guides/block-pull-requests.mdx @@ -84,7 +84,6 @@ In our example the baseline is a JSON object that captures the state of untested - **views**: An object mapping view display names to arrays of view identifiers and their untested elements counts - **runUrl**: The link to the cloud run that generated this report - ```javascript { "runNumber": 68086, @@ -106,110 +105,137 @@ The [UI Coverage score](/ui-coverage/guides/identify-coverage-gaps#Overall-Score The following example demonstrates how to compare current results against a baseline, detect new views with untested elements, identify views where coverage has improved, and generate a new baseline on every run so that it's easy to copy and update if needed. ```javascript title="scripts/compareUICoverageBaseline.js" -require('dotenv').config(); +require('dotenv').config() const { getUICoverageResults } = require('@cypress/extract-cloud-results') -const fs = require('fs'); +const fs = require('fs') // Define your baseline - this should be stored and updated as your application improves // Running the script once with no baseline will generate a baseline for you const baseline = { - "runNumber": undefined, - "runUrl": undefined, - "views": [] + runNumber: undefined, + runUrl: undefined, + views: [], } // Function to compare coverage between current results and baseline const compareTestedElementsWithBaseline = (currentResults, baselineData) => { - const testedElementsIssues = []; - const testedElementsImprovements = []; - const newPages = []; - + const testedElementsIssues = [] + const testedElementsImprovements = [] + const newPages = [] + // Check if current results has views if (!currentResults.views || !Array.isArray(currentResults.views)) { - console.log('Warning: Current results do not contain a valid "views" array. Skipping comparison.'); - return { testedElementsIssues, testedElementsImprovements, newPages, hasChanges: false }; + console.log( + 'Warning: Current results do not contain a valid "views" array. Skipping comparison.' + ) + return { + testedElementsIssues, + testedElementsImprovements, + newPages, + hasChanges: false, + } } - - const currentViews = currentResults.views; - + + const currentViews = currentResults.views + // Check if baseline data has the expected structure if (!baselineData.views) { - console.log('Warning: Baseline data does not contain "views" property. Skipping comparison.'); - console.log('Current baseline structure:', Object.keys(baselineData)); - return { testedElementsIssues, testedElementsImprovements, newPages, hasChanges: true }; + console.log( + 'Warning: Baseline data does not contain "views" property. Skipping comparison.' + ) + console.log('Current baseline structure:', Object.keys(baselineData)) + return { + testedElementsIssues, + testedElementsImprovements, + newPages, + hasChanges: true, + } } - - const baselineViews = baselineData.views; - + + const baselineViews = baselineData.views + // Ensure baselineViews is an array if (!Array.isArray(baselineViews)) { - console.log('Warning: Baseline views is not an array. Skipping comparison.'); - return { testedElementsIssues, testedElementsImprovements, newPages, hasChanges: true }; + console.log('Warning: Baseline views is not an array. Skipping comparison.') + return { + testedElementsIssues, + testedElementsImprovements, + newPages, + hasChanges: true, + } } - + // Create a map of baseline testedElementsCount by displayName for quick lookup - const baselineTestedElementsMap = {}; - baselineViews.forEach(view => { - baselineTestedElementsMap[view.displayName] = view.testedElementsCount; - }); - + const baselineTestedElementsMap = {} + baselineViews.forEach((view) => { + baselineTestedElementsMap[view.displayName] = view.testedElementsCount + }) + // Create a map of current views by displayName to check for missing pages - const currentViewsMap = {}; - currentViews.forEach(view => { - currentViewsMap[view.displayName] = view.testedElementsCount; - }); - + const currentViewsMap = {} + currentViews.forEach((view) => { + currentViewsMap[view.displayName] = view.testedElementsCount + }) + // Compare each current view with baseline - currentViews.forEach(currentView => { - const pageName = currentView.displayName; - const currentTestedElements = currentView.testedElementsCount; - const pageExistsInBaseline = pageName in baselineTestedElementsMap; - + currentViews.forEach((currentView) => { + const pageName = currentView.displayName + const currentTestedElements = currentView.testedElementsCount + const pageExistsInBaseline = pageName in baselineTestedElementsMap + if (pageExistsInBaseline) { - const baselineTestedElements = baselineTestedElementsMap[pageName]; + const baselineTestedElements = baselineTestedElementsMap[pageName] if (currentTestedElements < baselineTestedElements) { testedElementsIssues.push({ page: pageName, currentTestedElements: currentTestedElements, baselineTestedElements: baselineTestedElements, - difference: baselineTestedElements - currentTestedElements - }); + difference: baselineTestedElements - currentTestedElements, + }) } else if (currentTestedElements > baselineTestedElements) { testedElementsImprovements.push({ page: pageName, currentTestedElements: currentTestedElements, baselineTestedElements: baselineTestedElements, - difference: currentTestedElements - baselineTestedElements - }); + difference: currentTestedElements - baselineTestedElements, + }) } } else { // New page not in baseline newPages.push({ page: pageName, - testedElementsCount: currentTestedElements - }); + testedElementsCount: currentTestedElements, + }) } - }); - + }) + // Check for pages in baseline that are missing from current results // These are treated as regressions (0 tested elements) - baselineViews.forEach(baselineView => { - const pageName = baselineView.displayName; + baselineViews.forEach((baselineView) => { + const pageName = baselineView.displayName if (!(pageName in currentViewsMap)) { testedElementsIssues.push({ page: pageName, currentTestedElements: 0, baselineTestedElements: baselineView.testedElementsCount, difference: baselineView.testedElementsCount, - isMissing: true - }); + isMissing: true, + }) } - }); - - const hasChanges = testedElementsIssues.length > 0 || testedElementsImprovements.length > 0 || newPages.length > 0; - - return { testedElementsIssues, testedElementsImprovements, newPages, hasChanges }; + }) + + const hasChanges = + testedElementsIssues.length > 0 || + testedElementsImprovements.length > 0 || + newPages.length > 0 + + return { + testedElementsIssues, + testedElementsImprovements, + newPages, + hasChanges, + } } function generateUICoverageBaseline(results) { @@ -218,10 +244,10 @@ function generateUICoverageBaseline(results) { return { runNumber: results.runNumber, runUrl: results.runUrl, - views: results.views.map(view => ({ + views: results.views.map((view) => ({ displayName: view.displayName, - testedElementsCount: view.testedElementsCount - })) + testedElementsCount: view.testedElementsCount, + })), } } catch (error) { console.error('Error generating UI Coverage baseline:', error) @@ -229,79 +255,107 @@ function generateUICoverageBaseline(results) { } } -getUICoverageResults().then((results) => { +getUICoverageResults() + .then((results) => { + // Compare tested elements count with baseline + const { + testedElementsIssues, + testedElementsImprovements, + newPages, + hasChanges, + } = compareTestedElementsWithBaseline(results, baseline) + + if (hasChanges) { + // Generate and log the new baseline values if there has been a change + const newBaseline = generateUICoverageBaseline(results) + console.log('\nTo use this run as the new baseline, copy these values:') + console.log(JSON.stringify(newBaseline, null, 2)) + fs.writeFileSync( + 'new-UICbaseline.json', + JSON.stringify(newBaseline, null, 2) + ) + } - // Compare tested elements count with baseline - const { testedElementsIssues, testedElementsImprovements, newPages, hasChanges } = compareTestedElementsWithBaseline(results, baseline); - - if (hasChanges) { - // Generate and log the new baseline values if there has been a change - const newBaseline = generateUICoverageBaseline(results) - console.log('\nTo use this run as the new baseline, copy these values:') - console.log(JSON.stringify(newBaseline, null, 2)) - fs.writeFileSync('new-UICbaseline.json', JSON.stringify(newBaseline, null, 2)) - } - - // Log tested elements regressions - if (testedElementsIssues.length > 0) { - console.error('\nāŒ TESTED ELEMENTS REGRESSION DETECTED!'); - console.error('The following pages have fewer tested elements than the baseline:'); - console.error(''); - - testedElementsIssues.forEach(issue => { - console.error(` šŸ“„ ${issue.page}`); - if (issue.isMissing) { - console.error(` āš ļø MISSING FROM REPORT (treated as 0 tested elements)`); - console.error(` Current: 0 | Baseline: ${issue.baselineTestedElements} | Difference: -${issue.difference}`); - } else { - console.error(` Current: ${issue.currentTestedElements} | Baseline: ${issue.baselineTestedElements} | Difference: -${issue.difference}`); - } - console.error(''); - }); - - console.error(`Total pages with tested elements regression: ${testedElementsIssues.length}`); - } - - // Log tested elements improvements - if (testedElementsImprovements.length > 0) { - console.log('\nāœ… TESTED ELEMENTS IMPROVEMENTS DETECTED!'); - console.log('The following pages have more tested elements than the baseline:'); - console.log(''); - - testedElementsImprovements.forEach(improvement => { - console.log(` šŸ“„ ${improvement.page}`); - console.log(` Current: ${improvement.currentTestedElements} | Baseline: ${improvement.baselineTestedElements} | Difference: +${improvement.difference}`); - console.log(''); - }); - - console.log(`Total pages with tested elements improvement: ${testedElementsImprovements.length}`); - } - - // Log new pages - if (newPages.length > 0) { - console.log('\nšŸ“ NEW PAGES DETECTED (not in baseline):'); - newPages.forEach(page => { - console.log(` šŸ“„ ${page.page} - Tested Elements: ${page.testedElementsCount}`); - }); - console.log(`Total new pages: ${newPages.length}`); - } - - // Summary - if (!hasChanges) { - console.log('\nāœ… All pages meet or exceed baseline tested elements count!'); - } else if (testedElementsIssues.length === 0) { - console.log('\nāœ… No tested elements regressions detected!'); - } - - // Exit with error code if there are regressions - if (testedElementsIssues.length > 0) { - process.exit(1); - } -}).catch((error) => { - console.error('Error getting UI coverage results:', error); - process.exit(1); -}); + // Log tested elements regressions + if (testedElementsIssues.length > 0) { + console.error('\nāŒ TESTED ELEMENTS REGRESSION DETECTED!') + console.error( + 'The following pages have fewer tested elements than the baseline:' + ) + console.error('') + + testedElementsIssues.forEach((issue) => { + console.error(` šŸ“„ ${issue.page}`) + if (issue.isMissing) { + console.error( + ` āš ļø MISSING FROM REPORT (treated as 0 tested elements)` + ) + console.error( + ` Current: 0 | Baseline: ${issue.baselineTestedElements} | Difference: -${issue.difference}` + ) + } else { + console.error( + ` Current: ${issue.currentTestedElements} | Baseline: ${issue.baselineTestedElements} | Difference: -${issue.difference}` + ) + } + console.error('') + }) + + console.error( + `Total pages with tested elements regression: ${testedElementsIssues.length}` + ) + } + // Log tested elements improvements + if (testedElementsImprovements.length > 0) { + console.log('\nāœ… TESTED ELEMENTS IMPROVEMENTS DETECTED!') + console.log( + 'The following pages have more tested elements than the baseline:' + ) + console.log('') + + testedElementsImprovements.forEach((improvement) => { + console.log(` šŸ“„ ${improvement.page}`) + console.log( + ` Current: ${improvement.currentTestedElements} | Baseline: ${improvement.baselineTestedElements} | Difference: +${improvement.difference}` + ) + console.log('') + }) + + console.log( + `Total pages with tested elements improvement: ${testedElementsImprovements.length}` + ) + } + + // Log new pages + if (newPages.length > 0) { + console.log('\nšŸ“ NEW PAGES DETECTED (not in baseline):') + newPages.forEach((page) => { + console.log( + ` šŸ“„ ${page.page} - Tested Elements: ${page.testedElementsCount}` + ) + }) + console.log(`Total new pages: ${newPages.length}`) + } + + // Summary + if (!hasChanges) { + console.log( + '\nāœ… All pages meet or exceed baseline tested elements count!' + ) + } else if (testedElementsIssues.length === 0) { + console.log('\nāœ… No tested elements regressions detected!') + } + + // Exit with error code if there are regressions + if (testedElementsIssues.length > 0) { + process.exit(1) + } + }) + .catch((error) => { + console.error('Error getting UI coverage results:', error) + process.exit(1) + }) ``` ### Key concepts From cd925e49d649deef7c4d6894864f66fe768881da Mon Sep 17 00:00:00 2001 From: marktnoonan Date: Thu, 18 Dec 2025 18:11:47 -0500 Subject: [PATCH 10/14] the link checker might be case sensitive --- docs/accessibility/get-started/setup.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/accessibility/get-started/setup.mdx b/docs/accessibility/get-started/setup.mdx index 84b01a664c..cfbde01188 100644 --- a/docs/accessibility/get-started/setup.mdx +++ b/docs/accessibility/get-started/setup.mdx @@ -46,8 +46,8 @@ Cypress Accessibility provides flexible configuration options to customize your - [Element filters](/accessibility/configuration/elementfilters): specify selectors for elements that should be excluded from Accessibility scans - [View filters](/accessibility/configuration/viewfilters): specify URL patterns for URLs that should be excluded from Accessibility scans. Excluding a URL also excludes all links to that URL. - [Views](/accessibility/configuration/views): specify URL patterns that represent views -- [significantAttributes](/accessibility/configuration/significantAttributes): specify which attributes should be considered significant when identifying elements in Cypress Accessibility. -- [attributeFilters](/accessibility/configuration/attributeFilters): exclude specific attributes or patterns that should not be used for element tracking. +- [significantAttributes](/accessibility/configuration/significantattributes): specify which attributes should be considered significant when identifying elements in Cypress Accessibility. +- [attributeFilters](/accessibility/configuration/attributefilters): exclude specific attributes or patterns that should not be used for element tracking. - [Profiles](/accessibility/configuration/profiles): use different configuration settings for different runs based on run tags To add or modify the configuration for your project, navigate to the **App Quality** tab in your project settings. From ed66e3c47bbc63595753b9f1bc4b31ce8156aea8 Mon Sep 17 00:00:00 2001 From: marktnoonan Date: Thu, 18 Dec 2025 18:16:15 -0500 Subject: [PATCH 11/14] wording --- docs/partials/_attributefilters.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/partials/_attributefilters.mdx b/docs/partials/_attributefilters.mdx index 733bbcd208..b601c11b2e 100644 --- a/docs/partials/_attributefilters.mdx +++ b/docs/partials/_attributefilters.mdx @@ -1,4 +1,4 @@ -Some attributes used for identification may be auto-generated, dynamic, or unrepresentative, leading to inaccurate identification or grouping. The `attributeFilters` configuration property allows you to **exclude** specific attributes or patterns that should not be used for these purposes. +Some attributes used for identification may be auto-generated, dynamic, or state-based, leading to inaccurate identification or grouping. The `attributeFilters` configuration property allows you to **exclude** specific attributes or patterns that should not be used for these purposes. By using `attributeFilters`, you can ensure Cypress selects more appropriate identifiers, leading to cleaner and more accurate reports, with better element de-deduplication across distinct states of the application being tested. @@ -6,7 +6,7 @@ By using `attributeFilters`, you can ensure Cypress selects more appropriate ide - **Handling library-specific attributes**: Attributes generated by libraries may not represent the element's purpose and should be ignored. - **Improving grouping accuracy**: By filtering out irrelevant attributes, you ensure similar elements are grouped correctly. -- **Streamlining reports**: Eliminating noisy attributes reduces clutter in Cypress Accessibility or UI Coverage reports, making them easier to interpret and act upon. +- **Avoiding state-based duplication**: Classes like `link--focused` can clutter report findings. ## Scope From eb500c9c896e11b6fb69c6973aeb525004923fc2 Mon Sep 17 00:00:00 2001 From: marktnoonan Date: Fri, 19 Dec 2025 08:27:46 -0500 Subject: [PATCH 12/14] Update link in changelog for Jira issue creation to match case sensitivity --- docs/accessibility/changelog.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/accessibility/changelog.mdx b/docs/accessibility/changelog.mdx index 82b4abd1a6..7e6a751311 100644 --- a/docs/accessibility/changelog.mdx +++ b/docs/accessibility/changelog.mdx @@ -11,7 +11,7 @@ sidebar_position: 200 ## Week of 12/12/2025 -- You can now create Jira issues directly from accessibility violations in the detail view. This allows you to quickly track and prioritize accessibility issues within your existing Jira workflow. The created Jira issue will include a link back to the accessibility violation in Cypress Cloud. [Learn more about creating Jira issues](/accessibility/core-concepts/inspecting-violation-details#create-jira-issue). +- You can now create Jira issues directly from accessibility violations in the detail view. This allows you to quickly track and prioritize accessibility issues within your existing Jira workflow. The created Jira issue will include a link back to the accessibility violation in Cypress Cloud. [Learn more about creating Jira issues](/accessibility/core-concepts/inspecting-violation-details#Create-Jira-issue). ## Week of 12/1/2025 From 2c7f5bdb237538319df9032927d779f0bcc45ce6 Mon Sep 17 00:00:00 2001 From: marktnoonan Date: Fri, 19 Dec 2025 17:23:17 -0500 Subject: [PATCH 13/14] add documentScope --- docs/accessibility/changelog.mdx | 4 + docs/accessibility/configuration/overview.mdx | 1 + docs/partials/_elementfilters.mdx | 183 +++++++++++++++++- docs/ui-coverage/changelog.mdx | 4 + .../allowedinteractioncommands.mdx | 107 +++++++++- .../configuration/elementgroups.mdx | 103 +++++++++- docs/ui-coverage/configuration/elements.mdx | 101 +++++++++- docs/ui-coverage/configuration/overview.mdx | 2 + 8 files changed, 485 insertions(+), 20 deletions(-) diff --git a/docs/accessibility/changelog.mdx b/docs/accessibility/changelog.mdx index 7e6a751311..7141e0d4d8 100644 --- a/docs/accessibility/changelog.mdx +++ b/docs/accessibility/changelog.mdx @@ -9,6 +9,10 @@ sidebar_position: 200 # Changelog +## Week of 12/19/2025 + +- The `elementFilters` configuration property now supports an optional `documentScope` field that allows you to scope selectors to specific document hosts (iframes or shadow DOM hosts). This enables you to filter elements within nested document contexts without requiring DOM changes. For example, you can filter all elements within a specific shadow DOM component or iframe by combining a selector with `documentScope`. See the [Element Filters](/accessibility/configuration/elementfilters) documentation for more details and examples. + ## Week of 12/12/2025 - You can now create Jira issues directly from accessibility violations in the detail view. This allows you to quickly track and prioritize accessibility issues within your existing Jira workflow. The created Jira issue will include a link back to the accessibility violation in Cypress Cloud. [Learn more about creating Jira issues](/accessibility/core-concepts/inspecting-violation-details#Create-Jira-issue). diff --git a/docs/accessibility/configuration/overview.mdx b/docs/accessibility/configuration/overview.mdx index 853e3fbde1..af7f4f0e4c 100644 --- a/docs/accessibility/configuration/overview.mdx +++ b/docs/accessibility/configuration/overview.mdx @@ -83,6 +83,7 @@ A complete configuration with all available options looks as follows: { "selector": string, "include": boolean, + "documentScope": [string], "comment": string } ], diff --git a/docs/partials/_elementfilters.mdx b/docs/partials/_elementfilters.mdx index ab15d81d35..4f1797b7e7 100644 --- a/docs/partials/_elementfilters.mdx +++ b/docs/partials/_elementfilters.mdx @@ -19,6 +19,7 @@ supported, if you need to split them up. { "selector": string, "include": boolean, + "documentScope": [string], "comment": string } ] @@ -29,11 +30,12 @@ supported, if you need to split them up. The first `elementFilters` rule for which the selector property matches the element is used to either include or exclude the element based on the `include` value. Elements that do not match any rules are included by default. -| Option | Required | Default | Description | -| ---------- | -------- | ------- | -------------------------------------------------------------------------------------------------------------------------------- | -| `selector` | Required | | A CSS selector to identify elements. Supports standard CSS selector syntax, including IDs, classes, attributes, and combinators. | -| `include` | Optional | `true` | A boolean indicating whether the matched elements should be included in the report. | -| `comment` | Optional | | A comment describing the purpose of this filter rule. | +| Option | Required | Default | Description | +| --------------- | -------- | ------- | -------------------------------------------------------------------------------------------------------------------------------- | +| `selector` | Required | | A CSS selector to identify elements. Supports standard CSS selector syntax, including IDs, classes, attributes, and combinators. | +| `include` | Optional | `true` | A boolean indicating whether the matched elements should be included in the report. | +| `documentScope` | Optional | | An array of CSS selectors that identify document hosts (iframes or shadow DOM hosts) that must be ancestors of the matched element. The selector will only match if all specified document hosts are found in the element's ancestor chain. | +| `comment` | Optional | | A comment describing the purpose of this filter rule. | ## Examples @@ -205,3 +207,174 @@ The first `elementFilters` rule for which the selector property matches the elem ``` .cancel ``` + +### Scoping selectors to shadow DOM + +When you need to filter elements within a specific shadow DOM host, use the `documentScope` property to scope your selector to that document context. + +#### Config + +```json +{ + "elementFilters": [ + { + "selector": "#my-button", + "include": false, + "documentScope": ["custom-component"] + } + ] +} +``` + +#### HTML + +```xml + + + + #shadow-dom + + + +``` + +#### Elements shown in UI + +``` +#my-button (from root document) +``` + +Only the button inside the shadow DOM is filtered, while the button in the root document remains in the report. + +--- + +### Scoping selectors to iframes + +You can also scope selectors to elements within specific iframes using `documentScope`. + +#### Config + +```json +{ + "elementFilters": [ + { + "selector": "#my-button", + "include": false, + "documentScope": ["#my-iframe"] + } + ] +} +``` + +#### HTML + +```xml + + + + +``` + +#### Elements shown in UI + +``` +#my-button (from root document) +``` + +Only the button inside the iframe is filtered. + +--- + +### Scoping to nested documents + +You can chain multiple document hosts in the `documentScope` array to target elements within nested documents (e.g., an iframe containing a shadow DOM component). + +#### Config + +```json +{ + "elementFilters": [ + { + "selector": "#my-button", + "include": false, + "documentScope": ["iframe", "custom-component"] + } + ] +} +``` + +#### HTML + +```xml + + + + +``` + +#### Elements shown in UI + +``` +#my-button (from root document) +#my-button (from iframe) +``` + +Only the button inside the shadow DOM (which is nested within the iframe) is filtered. + +--- + +### Filtering all elements within a document scope + +You can use a wildcard selector with `documentScope` to filter all elements within a specific document host. + +#### Config + +```json +{ + "elementFilters": [ + { + "selector": "*", + "include": false, + "documentScope": ["external-component"] + } + ] +} +``` + +#### HTML + +```xml + + + + #shadow-dom + + +
Link + + +``` + +#### Elements shown in UI + +``` +#important +``` + +All elements within the `external-component` shadow DOM are filtered from the report. diff --git a/docs/ui-coverage/changelog.mdx b/docs/ui-coverage/changelog.mdx index ed61e8e376..ecf8904d27 100644 --- a/docs/ui-coverage/changelog.mdx +++ b/docs/ui-coverage/changelog.mdx @@ -9,6 +9,10 @@ sidebar_position: 200 # Changelog +## Week of 12/19/2025 + +- The `elementFilters`, `elements`, `elementGroups`, and `allowedInteractionCommands` configuration properties now support an optional `documentScope` field that allows you to scope selectors to specific document hosts (iframes or shadow DOM hosts). This enables you to target elements within nested document contexts without requiring DOM changes. For example, you can filter, identify, group, or restrict interactions for elements within a specific shadow DOM component or iframe by combining a selector with `documentScope`. Multiple document hosts can be chained in the array to target elements within nested documents (e.g., an iframe containing a shadow DOM component). See the [Element Filters](/ui-coverage/configuration/elementfilters), [Elements](/ui-coverage/configuration/elements), [Element Groups](/ui-coverage/configuration/elementgroups), and [Allowed Interaction Commands](/ui-coverage/configuration/allowedinteractioncommands) documentation for more details and examples. + ## Week of 12/12/2025 - The `profiles` configuration property allows you to use different configuration settings for different runs based on [run tags](/app/references/command-line#cypress-run-tag-lt-tag-gt). This enables you to customize UI Coverage behavior for different environments, branches, or test scenarios. See the [Profiles](/ui-coverage/configuration/profiles) guide for more details. diff --git a/docs/ui-coverage/configuration/allowedinteractioncommands.mdx b/docs/ui-coverage/configuration/allowedinteractioncommands.mdx index ef7467a4ff..dc4858db4e 100644 --- a/docs/ui-coverage/configuration/allowedinteractioncommands.mdx +++ b/docs/ui-coverage/configuration/allowedinteractioncommands.mdx @@ -27,6 +27,7 @@ This is particularly useful for filtering out irrelevant interactions or focusin { "selector": string, "commands": [string], + "documentScope": [string], "comment": string } ] @@ -38,11 +39,12 @@ This is particularly useful for filtering out irrelevant interactions or focusin The `allowedInteractionCommands` property accepts an array of objects, where each object defines a rule for limiting interaction commands for elements matching a specific selector. -| Option | Required | Default | Description | -| ---------- | -------- | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `selector` | Required | | A CSS selector to identify elements. Supports standard CSS selector syntax, including IDs, classes, attributes, and combinators. | -| `commands` | Required | | An array of command names (strings) that should be tracked as interactions for elements matching the selector. All other interaction commands will be ignored for these elements. | -| `comment` | Optional | | A comment describing the purpose of this allowed interaction commands configuration. | +| Option | Required | Default | Description | +| --------------- | -------- | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `selector` | Required | | A CSS selector to identify elements. Supports standard CSS selector syntax, including IDs, classes, attributes, and combinators. | +| `commands` | Required | | An array of command names (strings) that should be tracked as interactions for elements matching the selector. All other interaction commands will be ignored for these elements. | +| `documentScope` | Optional | | An array of CSS selectors that identify document hosts (iframes or shadow DOM hosts) that must be ancestors of the matched element. The selector will only match if all specified document hosts are found in the element's ancestor chain. | +| `comment` | Optional | | A comment describing the purpose of this allowed interaction commands configuration. | ## Examples @@ -170,6 +172,101 @@ cy.get('button[data-no-explicit-interaction="true"]').should('be.visible) // āœ“ cy.get('button[data-no-explicit-interaction="true"]').click() // āœ— Not tracked ``` +### Scoping interaction commands to shadow DOM + +When you need to limit interaction commands for elements within a specific shadow DOM host, use the `documentScope` property to scope your selector to that document context. + +#### Config + +```json +{ + "uiCoverage": { + "allowedInteractionCommands": [ + { + "selector": "button", + "commands": ["click"], + "documentScope": ["custom-component"] + } + ] + } +} +``` + +#### HTML + +```xml + + + + #shadow-dom + + + +``` + +#### Usage in tests + +```javascript +// Root button: all interactions tracked (default behavior) +cy.get('#root-button').click() // āœ“ Tracked +cy.get('#root-button').hover() // āœ“ Tracked + +// Shadow DOM button: only click tracked +cy.get('custom-component').shadow().find('#shadow-button').click() // āœ“ Tracked +cy.get('custom-component').shadow().find('#shadow-button').hover() // āœ— Not tracked +``` + +--- + +### Scoping interaction commands to iframes + +You can also scope interaction command rules to elements within specific iframes using `documentScope`. + +#### Config + +```json +{ + "uiCoverage": { + "allowedInteractionCommands": [ + { + "selector": "input", + "commands": ["type", "clear"], + "documentScope": ["#embedded-form"] + } + ] + } +} +``` + +#### HTML + +```xml + + + + +``` + +#### Usage in tests + +```javascript +// Root input: all interactions tracked (default behavior) +cy.get('#root-input').type('text') // āœ“ Tracked +cy.get('#root-input').focus() // āœ“ Tracked + +// Embedded input: only type and clear tracked +cy.get('#embedded-form').then(($iframe) => { + cy.wrap($iframe.contents().find('#embedded-input')).type('text') // āœ“ Tracked + cy.wrap($iframe.contents().find('#embedded-input')).focus() // āœ— Not tracked +}) +``` + ## Notes - Elements that don't match any selector will have all interaction commands tracked (default behavior). diff --git a/docs/ui-coverage/configuration/elementgroups.mdx b/docs/ui-coverage/configuration/elementgroups.mdx index 980c6f7a62..770e90bc39 100644 --- a/docs/ui-coverage/configuration/elementgroups.mdx +++ b/docs/ui-coverage/configuration/elementgroups.mdx @@ -27,6 +27,7 @@ UI Coverage provides logic to automatically [group](/ui-coverage/core-concepts/e { "selector": string, "name": string, + "documentScope": [string], "comment": string } ] @@ -38,11 +39,12 @@ UI Coverage provides logic to automatically [group](/ui-coverage/core-concepts/e For every element considered by UI Coverage, the first `elementGroup` rule for which the `selector` property matches the element is used to group the element. Elements that do not match any rules are grouped by the default UI Coverage [element grouping rules](/ui-coverage/core-concepts/element-grouping). -| Option | Required | Default | Description | -| ---------- | -------- | ---------- | -------------------------------------------------------------------------------------------------------------------------------- | -| `selector` | Required | | A CSS selector to identify elements. Supports standard CSS selector syntax, including IDs, classes, attributes, and combinators. | -| `name` | Optional | `selector` | A human-readable name for the group, displayed in UI Coverage reports. | -| `comment` | Optional | | A comment describing the purpose of this element group configuration. | +| Option | Required | Default | Description | +| --------------- | -------- | ---------- | -------------------------------------------------------------------------------------------------------------------------------- | +| `selector` | Required | | A CSS selector to identify elements. Supports standard CSS selector syntax, including IDs, classes, attributes, and combinators. | +| `name` | Optional | `selector` | A human-readable name for the group, displayed in UI Coverage reports. | +| `documentScope` | Optional | | An array of CSS selectors that identify document hosts (iframes or shadow DOM hosts) that must be ancestors of the matched element. The selector will only match if all specified document hosts are found in the element's ancestor chain. | +| `comment` | Optional | | A comment describing the purpose of this element group configuration. | ## Examples @@ -219,3 +221,94 @@ Sometimes you may want to group elements by a common attribute but give the grou ``` Add Button (4 instances) ``` + +--- + +### Grouping elements within shadow DOM + +When you need to group elements within a specific shadow DOM host, use the `documentScope` property to scope your selector to that document context. + +#### Config + +```json +{ + "uiCoverage": { + "elementGroups": [ + { + "selector": "button", + "name": "Shadow DOM Buttons", + "documentScope": ["custom-component"] + } + ] + } +} +``` + +#### HTML + +```xml + + + + #shadow-dom + + + + +``` + +#### Elements shown in UI + +``` +#root-button +Shadow DOM Buttons (2 instances) +``` + +Only the buttons inside the shadow DOM are grouped together, while the root button remains separate. + +--- + +### Grouping elements within iframes + +You can also scope element grouping to elements within specific iframes using `documentScope`. + +#### Config + +```json +{ + "uiCoverage": { + "elementGroups": [ + { + "selector": "[data-action]", + "name": "Embedded Actions", + "documentScope": ["#embedded-widget"] + } + ] + } +} +``` + +#### HTML + +```xml + + + + +``` + +#### Elements shown in UI + +``` +[data-action="save"] (from root document) +Embedded Actions (2 instances) +``` + +Only the buttons inside the iframe are grouped together. diff --git a/docs/ui-coverage/configuration/elements.mdx b/docs/ui-coverage/configuration/elements.mdx index c6baa57543..9fa0e7742b 100644 --- a/docs/ui-coverage/configuration/elements.mdx +++ b/docs/ui-coverage/configuration/elements.mdx @@ -28,6 +28,7 @@ The `elements` configuration is used as the element's identity if **only one ele { "selector": string, "name": string, + "documentScope": [string], "comment": string } ] @@ -41,11 +42,12 @@ For every element considered by UI Coverage, the first applicable rule, determin If multiple elements within the same snapshot satisfy the same rule, the rule cannot uniquely identify these elements. In such cases, the rule is bypassed, and either subsequent rules or the default element identification logic are applied. -| Option | Required | Default | Description | -| ---------- | -------- | ---------- | -------------------------------------------------------------------------------------------------------------------------------- | -| `selector` | Required | | A CSS selector to identify elements. Supports standard CSS selector syntax, including IDs, classes, attributes, and combinators. | -| `name` | Optional | `selector` | A human-readable name for the element, displayed in UI Coverage reports. | -| `comment` | Optional | | A comment describing the purpose of this element configuration. | +| Option | Required | Default | Description | +| --------------- | -------- | ---------- | -------------------------------------------------------------------------------------------------------------------------------- | +| `selector` | Required | | A CSS selector to identify elements. Supports standard CSS selector syntax, including IDs, classes, attributes, and combinators. | +| `name` | Optional | `selector` | A human-readable name for the element, displayed in UI Coverage reports. | +| `documentScope` | Optional | | An array of CSS selectors that identify document hosts (iframes or shadow DOM hosts) that must be ancestors of the matched element. The selector will only match if all specified document hosts are found in the element's ancestor chain. | +| `comment` | Optional | | A comment describing the purpose of this element configuration. | ## Examples @@ -121,3 +123,92 @@ If multiple elements within the same snapshot satisfy the same rule, the rule ca ``` Help Popover ``` + +--- + +### Scoping element identification to shadow DOM + +When you need to uniquely identify elements within a specific shadow DOM host, use the `documentScope` property to scope your selector to that document context. + +#### Config + +```json +{ + "uiCoverage": { + "elements": [ + { + "selector": "#my-button", + "name": "Custom Component Button", + "documentScope": ["custom-component"] + } + ] + } +} +``` + +#### HTML + +```xml + + + + #shadow-dom + + + +``` + +#### Elements shown in UI Coverage + +``` +#my-button (from root document) +Custom Component Button (from shadow DOM) +``` + +Only the button inside the shadow DOM is identified using the custom name, while the button in the root document uses the default identification. + +--- + +### Scoping element identification to iframes + +You can also scope element identification to elements within specific iframes using `documentScope`. + +#### Config + +```json +{ + "uiCoverage": { + "elements": [ + { + "selector": "#submit", + "name": "Embedded Form Submit", + "documentScope": ["#embedded-form"] + } + ] + } +} +``` + +#### HTML + +```xml + + + + +``` + +#### Elements shown in UI Coverage + +``` +#submit (from root document) +Embedded Form Submit (from iframe) +``` + +Only the button inside the iframe is identified using the custom name. diff --git a/docs/ui-coverage/configuration/overview.mdx b/docs/ui-coverage/configuration/overview.mdx index 6d5884a3ba..9366ee4202 100644 --- a/docs/ui-coverage/configuration/overview.mdx +++ b/docs/ui-coverage/configuration/overview.mdx @@ -78,6 +78,7 @@ A complete configuration with all available options looks as follows: { "selector": string, "include": boolean, + "documentScope": [string], "comment": string } ], @@ -118,6 +119,7 @@ A complete configuration with all available options looks as follows: { "selector": string, "name": string, + "documentScope": [string], "comment": string } ], From bdea514823b07156803e307f55d1bfd6f222a4c5 Mon Sep 17 00:00:00 2001 From: marktnoonan Date: Fri, 19 Dec 2025 17:30:55 -0500 Subject: [PATCH 14/14] lint:fix --- docs/partials/_elementfilters.mdx | 10 +++++----- .../configuration/allowedinteractioncommands.mdx | 10 +++++----- docs/ui-coverage/configuration/elementgroups.mdx | 10 +++++----- docs/ui-coverage/configuration/elements.mdx | 10 +++++----- 4 files changed, 20 insertions(+), 20 deletions(-) diff --git a/docs/partials/_elementfilters.mdx b/docs/partials/_elementfilters.mdx index 4f1797b7e7..889d644d43 100644 --- a/docs/partials/_elementfilters.mdx +++ b/docs/partials/_elementfilters.mdx @@ -30,12 +30,12 @@ supported, if you need to split them up. The first `elementFilters` rule for which the selector property matches the element is used to either include or exclude the element based on the `include` value. Elements that do not match any rules are included by default. -| Option | Required | Default | Description | -| --------------- | -------- | ------- | -------------------------------------------------------------------------------------------------------------------------------- | -| `selector` | Required | | A CSS selector to identify elements. Supports standard CSS selector syntax, including IDs, classes, attributes, and combinators. | -| `include` | Optional | `true` | A boolean indicating whether the matched elements should be included in the report. | +| Option | Required | Default | Description | +| --------------- | -------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `selector` | Required | | A CSS selector to identify elements. Supports standard CSS selector syntax, including IDs, classes, attributes, and combinators. | +| `include` | Optional | `true` | A boolean indicating whether the matched elements should be included in the report. | | `documentScope` | Optional | | An array of CSS selectors that identify document hosts (iframes or shadow DOM hosts) that must be ancestors of the matched element. The selector will only match if all specified document hosts are found in the element's ancestor chain. | -| `comment` | Optional | | A comment describing the purpose of this filter rule. | +| `comment` | Optional | | A comment describing the purpose of this filter rule. | ## Examples diff --git a/docs/ui-coverage/configuration/allowedinteractioncommands.mdx b/docs/ui-coverage/configuration/allowedinteractioncommands.mdx index dc4858db4e..905bc75581 100644 --- a/docs/ui-coverage/configuration/allowedinteractioncommands.mdx +++ b/docs/ui-coverage/configuration/allowedinteractioncommands.mdx @@ -39,12 +39,12 @@ This is particularly useful for filtering out irrelevant interactions or focusin The `allowedInteractionCommands` property accepts an array of objects, where each object defines a rule for limiting interaction commands for elements matching a specific selector. -| Option | Required | Default | Description | -| --------------- | -------- | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `selector` | Required | | A CSS selector to identify elements. Supports standard CSS selector syntax, including IDs, classes, attributes, and combinators. | -| `commands` | Required | | An array of command names (strings) that should be tracked as interactions for elements matching the selector. All other interaction commands will be ignored for these elements. | +| Option | Required | Default | Description | +| --------------- | -------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `selector` | Required | | A CSS selector to identify elements. Supports standard CSS selector syntax, including IDs, classes, attributes, and combinators. | +| `commands` | Required | | An array of command names (strings) that should be tracked as interactions for elements matching the selector. All other interaction commands will be ignored for these elements. | | `documentScope` | Optional | | An array of CSS selectors that identify document hosts (iframes or shadow DOM hosts) that must be ancestors of the matched element. The selector will only match if all specified document hosts are found in the element's ancestor chain. | -| `comment` | Optional | | A comment describing the purpose of this allowed interaction commands configuration. | +| `comment` | Optional | | A comment describing the purpose of this allowed interaction commands configuration. | ## Examples diff --git a/docs/ui-coverage/configuration/elementgroups.mdx b/docs/ui-coverage/configuration/elementgroups.mdx index 770e90bc39..c39a666c24 100644 --- a/docs/ui-coverage/configuration/elementgroups.mdx +++ b/docs/ui-coverage/configuration/elementgroups.mdx @@ -39,12 +39,12 @@ UI Coverage provides logic to automatically [group](/ui-coverage/core-concepts/e For every element considered by UI Coverage, the first `elementGroup` rule for which the `selector` property matches the element is used to group the element. Elements that do not match any rules are grouped by the default UI Coverage [element grouping rules](/ui-coverage/core-concepts/element-grouping). -| Option | Required | Default | Description | -| --------------- | -------- | ---------- | -------------------------------------------------------------------------------------------------------------------------------- | -| `selector` | Required | | A CSS selector to identify elements. Supports standard CSS selector syntax, including IDs, classes, attributes, and combinators. | -| `name` | Optional | `selector` | A human-readable name for the group, displayed in UI Coverage reports. | +| Option | Required | Default | Description | +| --------------- | -------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `selector` | Required | | A CSS selector to identify elements. Supports standard CSS selector syntax, including IDs, classes, attributes, and combinators. | +| `name` | Optional | `selector` | A human-readable name for the group, displayed in UI Coverage reports. | | `documentScope` | Optional | | An array of CSS selectors that identify document hosts (iframes or shadow DOM hosts) that must be ancestors of the matched element. The selector will only match if all specified document hosts are found in the element's ancestor chain. | -| `comment` | Optional | | A comment describing the purpose of this element group configuration. | +| `comment` | Optional | | A comment describing the purpose of this element group configuration. | ## Examples diff --git a/docs/ui-coverage/configuration/elements.mdx b/docs/ui-coverage/configuration/elements.mdx index 9fa0e7742b..73b1270ff4 100644 --- a/docs/ui-coverage/configuration/elements.mdx +++ b/docs/ui-coverage/configuration/elements.mdx @@ -42,12 +42,12 @@ For every element considered by UI Coverage, the first applicable rule, determin If multiple elements within the same snapshot satisfy the same rule, the rule cannot uniquely identify these elements. In such cases, the rule is bypassed, and either subsequent rules or the default element identification logic are applied. -| Option | Required | Default | Description | -| --------------- | -------- | ---------- | -------------------------------------------------------------------------------------------------------------------------------- | -| `selector` | Required | | A CSS selector to identify elements. Supports standard CSS selector syntax, including IDs, classes, attributes, and combinators. | -| `name` | Optional | `selector` | A human-readable name for the element, displayed in UI Coverage reports. | +| Option | Required | Default | Description | +| --------------- | -------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `selector` | Required | | A CSS selector to identify elements. Supports standard CSS selector syntax, including IDs, classes, attributes, and combinators. | +| `name` | Optional | `selector` | A human-readable name for the element, displayed in UI Coverage reports. | | `documentScope` | Optional | | An array of CSS selectors that identify document hosts (iframes or shadow DOM hosts) that must be ancestors of the matched element. The selector will only match if all specified document hosts are found in the element's ancestor chain. | -| `comment` | Optional | | A comment describing the purpose of this element configuration. | +| `comment` | Optional | | A comment describing the purpose of this element configuration. | ## Examples