Created
April 24, 2025 07:04
-
-
Save AleksejDix/b8de608af7e6a7a83e3be26f7bb5cd9b to your computer and use it in GitHub Desktop.
v0 schema audit
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "reportMetadata": { | |
| "reportId": "f47ac10b-58cc-4372-a567-0e02b2c3d479", | |
| "reportGeneratedDate": "2024-07-27T10:30:00Z", | |
| "schemaVersion": "0.1.0", | |
| "product": { | |
| "name": "Example E-commerce Site", | |
| "version": "3.1.4", | |
| "description": "Platform for selling artisanal widgets online." | |
| }, | |
| "assessmentScope": { | |
| "description": "Manual and automated assessment of core user flows: Homepage, Product Listing, Product Detail, Cart, and Checkout (Steps 1-3).", | |
| "urlsIncluded": [ | |
| "https://example-widgets.com/", | |
| "https://example-widgets.com/products", | |
| "https://example-widgets.com/product/*", | |
| "https://example-widgets.com/cart", | |
| "https://example-widgets.com/checkout/step1", | |
| "https://example-widgets.com/checkout/step2", | |
| "https://example-widgets.com/checkout/step3" | |
| ], | |
| "urlsExcluded": [ | |
| "https://example-widgets.com/blog/*", | |
| "https://example-widgets.com/admin/*" | |
| ], | |
| "startDate": "2024-07-20T09:00:00Z", | |
| "endDate": "2024-07-26T17:00:00Z" | |
| }, | |
| "standardsAssessed": [ | |
| { | |
| "standard": "WCAG", | |
| "version": "2.1", | |
| "conformanceLevel": "AA" | |
| } | |
| ], | |
| "testingOrganization": { | |
| "name": "Internal Accessibility Team", | |
| "contact": "[email protected]" | |
| } | |
| }, | |
| "summary": { | |
| "totalIssues": 2, | |
| "totalOccurrences": 3, | |
| "issuesBySeverity": { | |
| "critical": 1, | |
| "serious": 1 | |
| }, | |
| "issuesByStatus": { | |
| "new": 2 | |
| }, | |
| "conformanceStatements": [ | |
| { | |
| "standard": "WCAG 2.1 AA", | |
| "status": "Does Not Support", | |
| "remarks": "Critical and serious issues identified impacting core functionality like adding items to cart and checkout navigation, preventing full conformance." | |
| } | |
| ], | |
| "overallConformanceLevel": "Does Not Support WCAG 2.1 AA" | |
| }, | |
| "issues": [ | |
| { | |
| "id": "a1b2c3d4-e5f6-7890-1234-567890abcdef", | |
| "issueTypeId": "missing-accessible-name", | |
| "title": "Button lacks accessible name", | |
| "description": { | |
| "technical": "The button element used for 'Add to Cart' does not have an accessible name provided through its content, an `aria-label`, or `aria-labelledby`.", | |
| "userImpact": "Screen reader users cannot determine the purpose of the button, preventing them from adding items to their cart. Speech recognition users may also be unable to target the button reliably.", | |
| "affectedUserGroups": ["screen-reader", "speech-recognition"], | |
| "remediation": { | |
| "guidance": "Provide an accessible name for the button. If the button only contains an icon, use `aria-label` to describe its function (e.g., aria-label='Add ItemName to Cart'). If visible text is present but not part of the button content, use `aria-labelledby` to associate it.", | |
| "codeExample": "<button aria-label='Add Widget X to Cart' class='add-cart-btn'><svg>...</svg></button>" | |
| } | |
| }, | |
| "severity": { | |
| "level": "critical", | |
| "factors": { | |
| "userImpact": "high", | |
| "reach": "high" | |
| } | |
| }, | |
| "references": [ | |
| { | |
| "standard": "WCAG", | |
| "version": "2.1", | |
| "criteriaId": "4.1.2", | |
| "level": "A", | |
| "url": "https://www.w3.org/TR/WCAG21/#name-role-value" | |
| }, | |
| { | |
| "standard": "WCAG", | |
| "version": "2.1", | |
| "criteriaId": "2.5.3", | |
| "level": "A", | |
| "url": "https://www.w3.org/TR/WCAG21/#label-in-name" | |
| } | |
| ], | |
| "context": { | |
| "url": "https://example-widgets.com/product/widget-x", | |
| "location": { | |
| "domSelector": "#product-details > div.actions > button.add-cart-btn", | |
| "htmlSnippet": "<button class='add-cart-btn'><svg><!-- icon --></svg></button>", | |
| "component": "ProductAddToCartButton" | |
| }, | |
| "environment": { | |
| "browser": "Chrome 126.0.0.0", | |
| "os": "Windows 11", | |
| "assistiveTech": "NVDA 2024.1" | |
| } | |
| }, | |
| "instances": [ | |
| { | |
| "url": "https://example-widgets.com/product/widget-x", | |
| "location": { | |
| "domSelector": "#product-details > div.actions > button.add-cart-btn", | |
| "component": "ProductAddToCartButton" | |
| } | |
| }, | |
| { | |
| "url": "https://example-widgets.com/product/gadget-y", | |
| "location": { | |
| "domSelector": "#product-main > form > button.btn-add", | |
| "component": "ProductAddToCartButton" | |
| } | |
| } | |
| ], | |
| "evidence": [ | |
| { | |
| "type": "description", | |
| "text": "Verified with NVDA 2024.1 in Chrome. Button is announced only as 'button' on both product pages." | |
| } | |
| ], | |
| "testing": { | |
| "method": "assistive-tech", | |
| "tester": { | |
| "name": "Jane Doe", | |
| "email": "[email protected]", | |
| "type": "human" | |
| } | |
| }, | |
| "status": { | |
| "state": "new", | |
| "lastChanged": "2024-07-26T14:05:10Z", | |
| "assignee": null | |
| }, | |
| "tags": ["product-detail", "button", "aria", "cart", "at-nvda"] | |
| }, | |
| { | |
| "id": "b2c3d4e5-f6a7-8901-2345-67890abcdef0", | |
| "issueTypeId": "focus-order-incorrect", | |
| "title": "Incorrect focus order in checkout form", | |
| "description": { | |
| "technical": "The keyboard focus order does not follow a logical sequence through the shipping address form fields. Focus jumps from 'First Name' to 'Postal Code', skipping other fields.", | |
| "userImpact": "Keyboard-only users find it extremely difficult and confusing to complete the form, as they cannot navigate fields sequentially. This significantly increases the effort required and may cause users to abandon the checkout process.", | |
| "affectedUserGroups": ["keyboard-only", "screen-reader"], | |
| "remediation": { | |
| "guidance": "Ensure the DOM order of the interactive elements matches the visual reading order, or use `tabindex` values appropriately (use `tabindex=\"0\"` for custom controls in sequence, avoid positive `tabindex` values). Verify the logical flow using keyboard navigation." | |
| } | |
| }, | |
| "severity": { | |
| "level": "serious", | |
| "factors": { | |
| "userImpact": "high", | |
| "reach": "medium" | |
| } | |
| }, | |
| "references": [ | |
| { | |
| "standard": "WCAG", | |
| "version": "2.1", | |
| "criteriaId": "2.4.3", | |
| "level": "A", | |
| "url": "https://www.w3.org/TR/WCAG21/#focus-order" | |
| } | |
| ], | |
| "context": { | |
| "url": "https://example-widgets.com/checkout/step2", | |
| "location": { | |
| "domSelector": "form#shipping-address", | |
| "htmlSnippet": "<form id=\"shipping-address\">... <input id=\"fname\"> ... <input id=\"pcode\"> ...</form>", | |
| "component": "ShippingAddressForm" | |
| }, | |
| "environment": { | |
| "browser": "Firefox 127.0", | |
| "os": "macOS Sonoma" | |
| } | |
| }, | |
| "evidence": [ | |
| { | |
| "type": "description", | |
| "text": "Verified by pressing Tab key repeatedly. After focusing on First Name input, focus moves directly to Postal Code input." | |
| }, | |
| { | |
| "type": "screenshot", | |
| "url": "https://example-widgets.com/testing/evidence/focus-order-screenshot.png" | |
| } | |
| ], | |
| "testing": { | |
| "method": "manual", | |
| "tester": { | |
| "name": "John Smith", | |
| "email": "[email protected]", | |
| "type": "human" | |
| } | |
| }, | |
| "status": { | |
| "state": "new", | |
| "lastChanged": "2024-07-25T11:22:30Z", | |
| "assignee": null | |
| }, | |
| "tags": ["checkout", "form", "keyboard", "focus", "shipping"] | |
| } | |
| ] | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment