Gridex Inc. · Accessibility Conformance Report
Accessibility exception request accessibility report
WCAG 2.1 Levels A and AA · version 1.1 · October 4, 2026
Self-evaluation organized according to the criterion-level reporting structure of the VPAT 2.5 WCAG edition. This is an ACR-style report, not an ITI certification or an independently issued audit. The WCAG 2.2 additions in the broader VPAT 2.5 template are outside this requested WCAG 2.1 scope.
Product and evaluation scope
Four-step HTML/JavaScript demonstration, including validation, review, saved browser drafts, confirmation dialogs, restore, cancellation, submission confirmation and browser-storage failure.
Supplier: Gridex Inc. · Contact: ryan@gridex.dev. Content is synthetic. Power Apps, SharePoint tenant integration and real client performance are outside scope.
Results and limitations
35 Supports; 1 Partially Supports; 14 Not Applicable. Results reflect the methods below. Physical screen reader interoperability is untested; any retained partial entries identify a simulator or downloaded-document verification limitation.
All completed axe scans and reproducible keyboard tests pass. The additional online evaluation covers 19 form states and both read-only samples in each browser (42 states total). Browser accessibility tree inspection (Chromium, WebKit) and Guidepup Virtual Screen Reader speech output were completed; not verified with a physical screen reader. No VoiceOver or NVDA was started in this evaluation. These model-generated phrases do not establish actual hardware/software speech delivery.
Production verification: the published sample passed the complete keyboard journey (where applicable) and axe scans in Chromium and WebKit. All eight suite/sample/report HTML pages and internal links returned successful responses. See the live axe evidence below.
Evaluation Methods Used
- axe-core 4.13.0 through @axe-core/playwright 4.13.0; WCAG 2 A, AA and WCAG 2.1 A, AA tags.
- Playwright 1.63.0, headless Chromium 153.0.8010.12 and WebKit 26.6. Synthetic keyboard events only for form interaction; no mouse or programmatic filling in the keyboard journey.
- 320 CSS pixel viewport; 200% CSS zoom at 1280px; text-spacing overrides; screenshots and computed overflow checks.
- Color-pair contrast calculation using WCAG relative luminance, plus axe contrast rules.
- DOM, accessible name, landmark, heading and table review; native Safari 26.5 semantic inspection.
- Guidepup Virtual Screen Reader 0.33.0, bundled with esbuild 0.28.2 and instrumented in isolated headless browser DOMs. Full navigation transcripts plus live-region mutation transcripts. Playwright ariaSnapshot is a computed ARIA representation; Chromium CDP Accessibility.getFullAXTree additionally records the native AX tree. WebKit platform-native AX was not obtained; associated descriptions are separately checked with dom-accessibility-api. WebKit uses Option+Tab without changing system preferences.
- Simulator limitations: the Chromium transcript includes the raw noscript fallback although scripting is active; save/restore/delete live events can yield duplicate model phrases. On the form, the simulator also reports not checked despite native DOM/AX checked=true and traverses modal background content. Those simulator artifacts are retained and are not claimed as physical-reader behavior. Native browser snapshots do not expose the fallback as active content.
Conformance terms
- Supports
- Completed tests and inspection support the criterion within the documented evaluation scope.
- Partially Supports
- The criterion has an identified limitation or incomplete assistive-technology verification, stated in the remarks. This report distinguishes unverified behavior from known defects.
- Not Applicable
- The work does not contain the feature addressed by the criterion.
WCAG 2.1 Level A
| Criterion | Conformance | Remarks and test basis |
|---|---|---|
| 1.1.1 Non-text Content | Supports | No informative images; controls have text labels. Native checkbox meaning is identified by its visible label. |
| 1.2.1 Audio-only and Video-only (Prerecorded) | Not Applicable | No audio-only or video-only media. |
| 1.2.2 Captions (Prerecorded) | Not Applicable | No prerecorded synchronized media. |
| 1.2.3 Audio Description or Media Alternative (Prerecorded) | Not Applicable | No prerecorded synchronized media. |
| 1.3.1 Info and Relationships | Supports | HTML headings, native controls, explicit labels, definition lists, list semantics and scoped table headers were reviewed in the DOM and accessibility tree. Evaluated by accessibility tree inspection (Chromium, WebKit) and Guidepup Virtual Screen Reader speech output; not verified with a physical screen reader. |
| 1.3.2 Meaningful Sequence | Supports | DOM order matches the visual reading order. No CSS reordering. PDF structure-tree traversal and extracted text were inspected where provided. HTML sequence was verified by accessibility tree inspection (Chromium, WebKit) and Guidepup Virtual Screen Reader speech output; not verified with a physical screen reader. |
| 1.3.3 Sensory Characteristics | Supports | Instructions use names, dates and text, rather than position, shape or color alone. |
| 1.4.1 Use of Color | Supports | Statuses, errors and risk levels are written as text. Links are underlined. |
| 1.4.2 Audio Control | Not Applicable | No audio playback. |
| 2.1.1 Keyboard | Supports | Tab, Shift+Tab, Enter and Space operate the web controls. Headless Playwright keyboard tests provide reproducible interaction records; document reading and downloads use the reader application. |
| 2.1.2 No Keyboard Trap | Supports | Native modal dialogs with explicit first/last-button Tab wrapping permit Escape to exit. Static documents introduce no traps. |
| 2.1.4 Character Key Shortcuts | Not Applicable | No single-character application shortcuts. |
| 2.2.1 Timing Adjustable | Not Applicable | No session time limit or timed interaction. An exception expiration date is business content, not an interaction time limit. |
| 2.2.2 Pause, Stop, Hide | Not Applicable | No moving, blinking, scrolling, or auto-updating content. |
| 2.3.1 Three Flashes or Below Threshold | Not Applicable | No flashing content. |
| 2.4.1 Bypass Blocks | Supports | A first-in-order skip link targets the main landmark. HTML heading navigation, Word heading styles and PDF heading tags support bypassing sections. |
| 2.4.2 Page Titled | Supports | Each page has a specific title. DOCX core properties and PDF metadata identify the document. |
| 2.4.3 Focus Order | Supports | Tab order follows DOM order. Focus is moved to error summaries, new step headings and submission confirmation; native dialog closure restores the trigger. |
| 2.4.4 Link Purpose (In Context) | Supports | Navigation, reports and downloads have descriptive link text. |
| 2.5.1 Pointer Gestures | Not Applicable | No multipoint or path-based gestures. |
| 2.5.2 Pointer Cancellation | Supports | Actions activate on standard click/release, not pointer down. Draft deletion has a confirmation step. |
| 2.5.3 Label in Name | Supports | Accessible names contain their visible label text; verified by axe and accessibility snapshots. |
| 2.5.4 Motion Actuation | Not Applicable | No motion-actuated functions. |
| 3.1.1 Language of Page | Supports | HTML uses lang="en". Word default language and PDF catalog language are en-US. |
| 3.2.1 On Focus | Supports | Focusing a field or link does not navigate or submit. |
| 3.2.2 On Input | Supports | Typing and selecting values do not change steps. Explicit Continue or Submit activates the change. |
| 3.3.1 Error Identification | Supports | Empty fields, missing DAC consultation, invalid email, invalid calendar dates and date-order errors produce an error summary linked to inline errors; invalid fields use aria-invalid. |
| 3.3.2 Labels or Instructions | Supports | Required fields are labeled in text and programmatically required. Field help is associated with aria-describedby. Dates use explicit YYYY-MM-DD instructions. |
| 4.1.1 Parsing | Supports | HTML DOM was checked for duplicate IDs, invalid label targets and broken describedby references. axe checks pass. Documents use well-formed XML and tagged structure. |
| 4.1.2 Name, Role, Value | Partially Supports | Native Chromium AX and DOM correctly expose checked=true after DAC consultation, labels, roles, values, required/invalid states and descriptions. However Guidepup Virtual Screen Reader 0.33.0 continues to say not checked for that native checkbox, even with a new instance. Its full modal traversal also includes background content, while native AX correctly limits the modal. This simulator disagreement prevents complete dual-method name/role/value verification. No application state defect was measured. Evaluation used accessibility tree inspection (Chromium, WebKit) and Guidepup Virtual Screen Reader speech output; not verified with a physical screen reader. See virtual-sr-model-limitations-*.json. |
WCAG 2.1 Level AA
| Criterion | Conformance | Remarks and test basis |
|---|---|---|
| 1.2.4 Captions (Live) | Not Applicable | No live synchronized media. |
| 1.2.5 Audio Description (Prerecorded) | Not Applicable | No prerecorded video. |
| 1.3.4 Orientation | Supports | No orientation lock; 320px narrow viewport and landscape rendering were checked. |
| 1.3.5 Identify Input Purpose | Supports | Requester name and email inputs have autocomplete="name" and autocomplete="email". |
| 1.4.3 Contrast (Minimum) | Supports | axe color-contrast checks and calculated color pairs pass. See contrast.json for ratios. |
| 1.4.4 Resize text | Supports | 200% CSS zoom layout checks in Chromium and WebKit pass without horizontal overflow. Native Safari 200% was inspected on the form. Document view uses the reader application zoom. |
| 1.4.5 Images of Text | Supports | All essential prose is real text. The guide includes a configuration relationship diagram with an equivalent textual description; no essential text is provided solely as an image. |
| 1.4.10 Reflow | Supports | All HTML views tested at 320 CSS pixels without document-wide horizontal scrolling. Tagged PDFs have fixed page layouts; equivalent HTML is the recommended reflow reading path. |
| 1.4.11 Non-text Contrast | Supports | Borders, control boundaries and focus outlines use contrasting colors. Contrast ratios are calculated in contrast.json. |
| 1.4.12 Text Spacing | Supports | Text spacing overrides (1.5 line height, .12em letter spacing, .16em word spacing and 2em paragraph spacing) were tested without clipped content or horizontal overflow in HTML. |
| 1.4.13 Content on Hover or Focus | Not Applicable | No custom hover or focus-triggered supplemental content. |
| 2.4.5 Multiple Ways | Supports | Form steps are sequential process steps and exempt from multiple-ways requirements. The suite index and common navigation locate the entry page. |
| 2.4.6 Headings and Labels | Supports | Headings identify request, risk, approvals, renewals and administrative tasks. Labels identify field purpose and required state. |
| 2.4.7 Focus Visible | Supports | Keyboard focus has a 3px contrasting outline with a 4px offset. Keyboard navigation and screenshots were inspected. |
| 3.1.2 Language of Parts | Not Applicable | Content is entirely English; technical names are proper names or terms. |
| 3.2.3 Consistent Navigation | Supports | The same sample navigation appears in the same order on pages and reports. |
| 3.2.4 Consistent Identification | Supports | Download links, navigation labels and headings use consistent identification. |
| 3.3.3 Error Suggestion | Supports | Errors give specific corrective instructions and calendar examples. Error links focus the affected field. |
| 3.3.4 Error Prevention (Legal, Financial, Data) | Supports | Final review and confirmation precede demonstration submission. Saving, restoring and deleting a browser draft require confirmation; Keep editing and Escape cancel the action. No legal or financial transaction occurs. |
| 4.1.3 Status Messages | Supports | Draft status uses role="status", aria-live="polite" and aria-atomic="true". Save, restore, delete and storage-failure mutations generated polite speech output without navigating to the status. Evaluated by accessibility tree inspection (Chromium, WebKit) and Guidepup Virtual Screen Reader speech output; not verified with a physical screen reader. |
Reproducible evidence
- sr-evidence-validation-live.json
- test-summary.json
- live-test-summary.json
- axe-live-initial.json
- axe-live-webkit.json
- axe-initial.json
- axe-320-initial.json
- axe-200-initial.json
- axe-webkit.json
- contrast.json
- semantic-layout-checks.json
- screen-reader-check.md
- axe-errors-step-1.json
- axe-save-dialog.json
- axe-review.json
- axe-success.json
- accessibility-details-live-chromium-confirmation-error.json
- accessibility-details-live-chromium-date-chronology.json
- accessibility-details-live-chromium-delete-dialog.json
- accessibility-details-live-chromium-draft-available.json
- accessibility-details-live-chromium-draft-deleted.json
- accessibility-details-live-chromium-draft-restored.json
- accessibility-details-live-chromium-draft-saved.json
- accessibility-details-live-chromium-email-error.json
- accessibility-details-live-chromium-empty-errors.json
- accessibility-details-live-chromium-initial.json
- accessibility-details-live-chromium-invalid-calendar.json
- accessibility-details-live-chromium-restore-dialog.json
- accessibility-details-live-chromium-review.json
- accessibility-details-live-chromium-save-dialog.json
- accessibility-details-live-chromium-step-2-errors.json
- accessibility-details-live-chromium-step-2.json
- accessibility-details-live-chromium-step-3.json
- accessibility-details-live-chromium-storage-failure.json
- accessibility-details-live-chromium-submission.json
- accessibility-details-live-webkit-confirmation-error.json
- accessibility-details-live-webkit-date-chronology.json
- accessibility-details-live-webkit-delete-dialog.json
- accessibility-details-live-webkit-draft-available.json
- accessibility-details-live-webkit-draft-deleted.json
- accessibility-details-live-webkit-draft-restored.json
- accessibility-details-live-webkit-draft-saved.json
- accessibility-details-live-webkit-email-error.json
- accessibility-details-live-webkit-empty-errors.json
- accessibility-details-live-webkit-initial.json
- accessibility-details-live-webkit-invalid-calendar.json
- accessibility-details-live-webkit-restore-dialog.json
- accessibility-details-live-webkit-review.json
- accessibility-details-live-webkit-save-dialog.json
- accessibility-details-live-webkit-step-2-errors.json
- accessibility-details-live-webkit-step-2.json
- accessibility-details-live-webkit-step-3.json
- accessibility-details-live-webkit-storage-failure.json
- accessibility-details-live-webkit-submission.json
- accessibility-tree-live-chromium-confirmation-error.yml
- accessibility-tree-live-chromium-date-chronology.yml
- accessibility-tree-live-chromium-delete-dialog.yml
- accessibility-tree-live-chromium-draft-available.yml
- accessibility-tree-live-chromium-draft-deleted.yml
- accessibility-tree-live-chromium-draft-restored.yml
- accessibility-tree-live-chromium-draft-saved.yml
- accessibility-tree-live-chromium-email-error.yml
- accessibility-tree-live-chromium-empty-errors.yml
- accessibility-tree-live-chromium-initial.yml
- accessibility-tree-live-chromium-invalid-calendar.yml
- accessibility-tree-live-chromium-restore-dialog.yml
- accessibility-tree-live-chromium-review.yml
- accessibility-tree-live-chromium-save-dialog.yml
- accessibility-tree-live-chromium-step-2-errors.yml
- accessibility-tree-live-chromium-step-2.yml
- accessibility-tree-live-chromium-step-3.yml
- accessibility-tree-live-chromium-storage-failure.yml
- accessibility-tree-live-chromium-submission.yml
- accessibility-tree-live-webkit-confirmation-error.yml
- accessibility-tree-live-webkit-date-chronology.yml
- accessibility-tree-live-webkit-delete-dialog.yml
- accessibility-tree-live-webkit-draft-available.yml
- accessibility-tree-live-webkit-draft-deleted.yml
- accessibility-tree-live-webkit-draft-restored.yml
- accessibility-tree-live-webkit-draft-saved.yml
- accessibility-tree-live-webkit-email-error.yml
- accessibility-tree-live-webkit-empty-errors.yml
- accessibility-tree-live-webkit-initial.yml
- accessibility-tree-live-webkit-invalid-calendar.yml
- accessibility-tree-live-webkit-restore-dialog.yml
- accessibility-tree-live-webkit-review.yml
- accessibility-tree-live-webkit-save-dialog.yml
- accessibility-tree-live-webkit-step-2-errors.yml
- accessibility-tree-live-webkit-step-2.yml
- accessibility-tree-live-webkit-step-3.yml
- accessibility-tree-live-webkit-storage-failure.yml
- accessibility-tree-live-webkit-submission.yml
- native-ax-live-chromium-confirmation-error.json
- native-ax-live-chromium-date-chronology.json
- native-ax-live-chromium-delete-dialog.json
- native-ax-live-chromium-draft-available.json
- native-ax-live-chromium-draft-deleted.json
- native-ax-live-chromium-draft-restored.json
- native-ax-live-chromium-draft-saved.json
- native-ax-live-chromium-email-error.json
- native-ax-live-chromium-empty-errors.json
- native-ax-live-chromium-initial.json
- native-ax-live-chromium-invalid-calendar.json
- native-ax-live-chromium-restore-dialog.json
- native-ax-live-chromium-review.json
- native-ax-live-chromium-save-dialog.json
- native-ax-live-chromium-step-2-errors.json
- native-ax-live-chromium-step-2.json
- native-ax-live-chromium-step-3.json
- native-ax-live-chromium-storage-failure.json
- native-ax-live-chromium-submission.json
- virtual-sr-model-limitations-chromium.json
- virtual-sr-model-limitations-webkit.json
- virtual-sr-transcript-live-chromium-confirmation-error.txt
- virtual-sr-transcript-live-chromium-date-chronology.txt
- virtual-sr-transcript-live-chromium-delete-dialog.txt
- virtual-sr-transcript-live-chromium-draft-available.txt
- virtual-sr-transcript-live-chromium-draft-deleted-event.txt
- virtual-sr-transcript-live-chromium-draft-deleted.txt
- virtual-sr-transcript-live-chromium-draft-restored-event.txt
- virtual-sr-transcript-live-chromium-draft-restored.txt
- virtual-sr-transcript-live-chromium-draft-saved-event.txt
- virtual-sr-transcript-live-chromium-draft-saved.txt
- virtual-sr-transcript-live-chromium-email-error.txt
- virtual-sr-transcript-live-chromium-empty-errors.txt
- virtual-sr-transcript-live-chromium-initial.txt
- virtual-sr-transcript-live-chromium-invalid-calendar.txt
- virtual-sr-transcript-live-chromium-restore-dialog.txt
- virtual-sr-transcript-live-chromium-review.txt
- virtual-sr-transcript-live-chromium-save-dialog.txt
- virtual-sr-transcript-live-chromium-step-2-errors.txt
- virtual-sr-transcript-live-chromium-step-2.txt
- virtual-sr-transcript-live-chromium-step-3.txt
- virtual-sr-transcript-live-chromium-storage-failure-event.txt
- virtual-sr-transcript-live-chromium-storage-failure.txt
- virtual-sr-transcript-live-chromium-submission.txt
- virtual-sr-transcript-live-webkit-confirmation-error.txt
- virtual-sr-transcript-live-webkit-date-chronology.txt
- virtual-sr-transcript-live-webkit-delete-dialog.txt
- virtual-sr-transcript-live-webkit-draft-available.txt
- virtual-sr-transcript-live-webkit-draft-deleted-event.txt
- virtual-sr-transcript-live-webkit-draft-deleted.txt
- virtual-sr-transcript-live-webkit-draft-restored-event.txt
- virtual-sr-transcript-live-webkit-draft-restored.txt
- virtual-sr-transcript-live-webkit-draft-saved-event.txt
- virtual-sr-transcript-live-webkit-draft-saved.txt
- virtual-sr-transcript-live-webkit-email-error.txt
- virtual-sr-transcript-live-webkit-empty-errors.txt
- virtual-sr-transcript-live-webkit-initial.txt
- virtual-sr-transcript-live-webkit-invalid-calendar.txt
- virtual-sr-transcript-live-webkit-restore-dialog.txt
- virtual-sr-transcript-live-webkit-review.txt
- virtual-sr-transcript-live-webkit-save-dialog.txt
- virtual-sr-transcript-live-webkit-step-2-errors.txt
- virtual-sr-transcript-live-webkit-step-2.txt
- virtual-sr-transcript-live-webkit-step-3.txt
- virtual-sr-transcript-live-webkit-storage-failure-event.txt
- virtual-sr-transcript-live-webkit-storage-failure.txt
- virtual-sr-transcript-live-webkit-submission.txt
Remediation and remaining work
Read the remediation log. Physical screen reader review can resolve the form simulator checked-state limitation and add HTML interoperability coverage. For the remaining downloaded-document partial entries, complete keyboard and heading navigation in an accessible PDF reader before changing those conclusions.