Product Information
| Product Name | Velaro Platform — Agent Console (velaro-messaging) and Admin Console (velaro-admin) |
| Product Version | v11 (releasing May 2026) |
| Report Date | May 2026 |
| Report Version | 2.0 |
| VPAT Template | VPAT 2.5 WCAG Edition |
| Primary Contact | accessibility@velaro.com |
| Organization | Velaro, Inc., 1 West Elm Street, Suite 300, Conshohocken, PA 19428 |
Applicable Standards
This report covers conformance with the following standards and versions:
- WCAG 2.0 Level AA — Fully covered. WCAG 2.1 is backward compatible with WCAG 2.0; all 2.0 Level AA criteria are met.
- WCAG 2.1 Level AA — Primary standard for this report. All Level A and Level AA criteria are documented in the tables below.
- WCAG 2.2 Level AA — Fully covered. All new WCAG 2.2 Level AA criteria are documented in a dedicated conformance table below (2.4.11 Focus Not Obscured, 2.5.7 Dragging Movements, 2.5.8 Target Size, 3.2.6 Consistent Help, 3.3.7 Redundant Entry, 3.3.8 Accessible Authentication).
- Section 508 — 36 CFR Part 1194, as revised in 2017, incorporating WCAG 2.0 Level AA by reference.
- EN 301 549 — v3.2.1 (2021-03), incorporating WCAG 2.1 Level AA by reference.
Staff-facing consoles — internal use. This VPAT covers two staff-facing applications on the Velaro Platform: the Agent Console (velaro-messaging) used by support teams to handle conversations, and the Admin Console (velaro-admin) used to configure integrations, bots, billing, and user accounts. Both consoles share the same React + Tailwind component library and accessibility baseline. The visitor-facing chat widget is documented separately in the Visitor Chat Widget VPAT.
WCAG 2.1 Level A — Conformance Table
| Criteria | Level | Status | Notes |
|---|---|---|---|
| 1.1.1 Non-text Content | A | Supports | All icons carry aria-label; decorative icons use aria-hidden="true". Agent headshot images in conversation panels carry descriptive alt text. |
| 1.2.1 Audio-only and Video-only (Prerecorded) | A | Not Applicable | No prerecorded audio or video content is present in the agent console. |
| 1.2.2 Captions (Prerecorded) | A | Not Applicable | No prerecorded video with audio is present. |
| 1.2.3 Audio Description or Media Alternative (Prerecorded) | A | Not Applicable | No prerecorded video is present. |
| 1.3.1 Info and Relationships | A | Supports | Semantic HTML throughout. Form labels linked via htmlFor. DynamicForm controls include aria-invalid and aria-describedby. Data tables use <th> headers with appropriate scope. Conversation lists use role="list" and role="listitem". |
| 1.3.2 Meaningful Sequence | A | Supports | Visual reading order and DOM order are consistent throughout. The sidebar, conversation list, and main panel follow a logical left-to-right, top-to-bottom sequence. |
| 1.3.3 Sensory Characteristics | A | Supports | Status indicators (online, away, offline) communicate state via both color and text label. Unread message counts are represented numerically in addition to visual badges. |
| 1.4.1 Use of Color | A | Supports | Color is not the only means of conveying information. Agent status, conversation state, and alert conditions use text labels or icons in addition to color. |
| 1.4.2 Audio Control | A | Not Applicable | No auto-playing audio is present. Notification sounds are user-controlled via settings and do not auto-play on page load. |
| 2.1.1 Keyboard | A | Supports | All controls are keyboard-operable. Semantic <button> and <a> elements used throughout. Rich text editor toolbar and formatting controls are keyboard-accessible. Deprecated keyCode usage replaced with e.key across CallListItem, EngagementListItem, TagEditor, Tokens/Table, Sessions/Row, and ConfirmCode per May 2026 v11 code review. |
| 2.1.2 No Keyboard Trap | A | Supports | Modal dialogs trap focus within the modal while open and release focus to the triggering element on Escape key or dismissal. No focus loops exist that prevent exiting a component. |
| 2.1.4 Character Key Shortcuts | A | Not Applicable | No single-character key shortcuts are implemented in the agent console. |
| 2.2.1 Timing Adjustable | A | Supports | Session timeout warnings are presented with a countdown and an option to extend the session before expiry. No time limits are imposed on conversation handling workflows. |
| 2.2.2 Pause, Stop, Hide | A | Supports | Real-time conversation list updates use aria-live="polite". Notification badge counts update without auto-scrolling the agent's current view. No auto-advancing carousels or marquees are present. |
| 2.3.1 Three Flashes or Below Threshold | A | Supports | No animated content that flashes more than 3 times per second was identified. |
| 2.4.1 Bypass Blocks | A | Supports | A visually hidden skip-navigation link at the top of the document allows keyboard users to bypass the sidebar navigation and jump directly to the main content area. |
| 2.4.2 Page Titled | A | Supports | document.title is updated dynamically on each route change to reflect the current view (e.g., "Conversations — Velaro", "Settings — Velaro"). The application shell sets a base title on mount. |
| 2.4.3 Focus Order | A | Supports | Tab order follows logical DOM sequence. On modal open, focus moves to the first interactive element within the modal. On modal close, focus returns to the triggering element. |
| 2.4.4 Link Purpose (In Context) | A | Supports | All navigation links and icon buttons carry explicit aria-label values providing purpose without relying on surrounding context. Conversation list items include visitor name in their accessible label. |
| 2.5.1 Pointer Gestures | A | Supports | No multi-point or path-based gestures are required. All interactions use single-point activation. |
| 2.5.2 Pointer Cancellation | A | Supports | Primary actions activate on pointer up (mouseup/click completion), not on pointer down. Dragging to resize panels can be cancelled by releasing outside the target area. |
| 2.5.3 Label in Name | A | Supports | All buttons with visible text have aria-label values that contain or match the visible label. Icon-only buttons carry aria-label values describing the action. |
| 2.5.4 Motion Actuation | A | Not Applicable | No device motion or orientation-based functionality was identified. |
| 3.1.1 Language of Page | A | Supports | The application shell sets lang="en" on the <html> element. Visitor-submitted message content in other languages is rendered verbatim and falls under the host page context. |
| 3.2.1 On Focus | A | Supports | No context change occurs on focus alone. Dropdown menus open on explicit click/Enter, not on focus. |
| 3.2.2 On Input | A | Supports | No unexpected context changes occur on input. Form submissions require explicit button activation. Status changes triggered by toggle switches are limited to the control's immediate state. |
| 3.3.1 Error Identification | A | Supports | DynamicForm validation errors are rendered with role="alert" and linked to the relevant input via aria-describedby. aria-invalid="true" is applied to invalid inputs on form submission. |
| 3.3.2 Labels or Instructions | A | Supports | All form inputs have associated visible <label> elements linked via htmlFor/id. Required fields are indicated both visually and via aria-required="true". |
| 4.1.1 Parsing | A | Supports | Per the September 2023 WCAG 2.1 errata update, this criterion is always considered supported. |
| 4.1.2 Name, Role, Value | A | Supports | ARIA roles and labels applied throughout. Toggle controls use aria-pressed. Expandable sections use aria-expanded. Custom listbox controls use role="listbox" and role="option" with aria-selected. |
WCAG 2.1 Level AA — Conformance Table
| Criteria | Level | Status | Notes |
|---|---|---|---|
| 1.2.4 Captions (Live) | AA | Not Applicable | Live voice/video calling is out of scope for the agent console text-chat interface covered by this VPAT. |
| 1.2.5 Audio Description (Prerecorded) | AA | Not Applicable | No prerecorded video content is present in the agent console. |
| 1.3.4 Orientation | AA | Supports | The application renders correctly in both portrait and landscape orientations. No CSS orientation lock is present. |
| 1.3.5 Identify Input Purpose | AA | Supports | Login and account form inputs use appropriate autocomplete attribute values (e.g., username, current-password, email) enabling browser and assistive technology autofill inference. |
| 1.4.3 Contrast (Minimum) | AA | Supports | The Tailwind-based color palette meets the 4.5:1 minimum contrast ratio for normal text and 3:1 for large text. Dark mode contrast ratios have been verified against the same thresholds. |
| 1.4.4 Resize Text | AA | Supports | The application reflows correctly at 200% browser zoom without loss of content or functionality. Flexible layout units (rem, %, flex) are used throughout. |
| 1.4.5 Images of Text | AA | Supports | No images of text were identified. All UI labels, headings, and navigation items are rendered as HTML text. |
| 1.4.10 Reflow | AA | Supports | Responsive CSS breakpoints at 768px and 1024px. At 320px equivalent viewport width the application switches to a stacked single-column layout without horizontal scrolling of content. |
| 1.4.11 Non-text Contrast | AA | Supports | Focus indicators use a 3px solid #005fcc outline, meeting the 3:1 non-text contrast requirement. Icon buttons and form control boundaries meet 3:1 contrast against their backgrounds. |
| 1.4.12 Text Spacing | AA | Supports | No inline styles that would override user-defined letter-spacing, word-spacing, line-height, or paragraph spacing were identified. Layout does not break when these properties are adjusted via user stylesheets. |
| 1.4.13 Content on Hover or Focus | AA | Supports | Tooltips and hover-triggered dropdowns remain visible while the pointer is over them, can be dismissed via Escape, and do not obscure other content. No hover-only content patterns without keyboard equivalents remain in v11. |
| 2.4.5 Multiple Ways | AA | Supports | The agent console provides sidebar navigation, a global search function, and breadcrumb trails allowing multiple paths to reach any section. Conversation history is accessible via search and via the chronological conversation list. |
| 2.4.6 Headings and Labels | AA | Supports | Section headings are implemented as semantic <h1>–<h3> elements following a logical hierarchy. All form inputs have associated visible labels. Modal dialogs include programmatic headings as their first focusable content. |
| 2.4.7 Focus Visible | AA | Supports | :focus-visible rings (3px solid #005fcc) are applied to all interactive controls. Global outline: none overrides were removed in the v11 accessibility pass. The rich text editor wrapper uses :focus-within to communicate editing focus. |
| 3.1.2 Language of Parts | AA | Supports | The agent console UI is English-only. Visitor-submitted chat messages may contain other languages; these are rendered verbatim as user-generated content and are outside the product's control. |
| 3.2.3 Consistent Navigation | AA | Supports | The sidebar navigation structure, top header controls, and primary action buttons appear in consistent locations and order across all views of the application. |
| 3.2.4 Consistent Identification | AA | Supports | Repeated components (Send button, Assign button, Close conversation, Transfer) use consistent icons, labels, and aria-label values across all views. |
| 3.3.3 Error Suggestion | AA | Supports | DynamicForm validation provides specific, actionable error messages linked via aria-describedby. Error text describes the constraint and how to correct it (e.g., "Email address must include an @ symbol"). |
| 3.3.4 Error Prevention (Legal, Financial, Data) | AA | Not Applicable | The agent console does not process legal, financial, or irreversible data transactions. Destructive actions (close conversation, delete) use confirmation dialogs. |
| 4.1.3 Status Messages | AA | Supports | Status messages (new conversation alerts, transfer confirmations, send errors, connection state changes) use aria-live regions so they are announced by screen readers without requiring focus movement. |
WCAG 2.2 Level AA — Conformance Table
WCAG 2.2 (W3C Recommendation, October 2023) adds nine new success criteria on top of WCAG 2.1. The Velaro Platform agent console conforms to all WCAG 2.2 Level AA criteria as documented below. A global focus-visible safety net and scroll-margin-top reservation in client/src/main.css backstop criteria 2.4.11 and 2.4.7 across the entire application, and a CI regression guard (scripts/validate-accessibility.js) prevents drift.
| Criteria | Level | Status | Notes |
|---|---|---|---|
| 2.4.11 Focus Not Obscured (Minimum) | AA | Supports | Global scroll-margin-top: 80px is applied to all focusable elements and headings in main.css, ensuring that sticky top headers (route header, tab bars, editor toolbars) do not obscure keyboard-focused content. Verified via keyboard tabbing across long forms and KB article editors. |
| 2.4.12 Focus Not Obscured (Enhanced) | AAA | Not Evaluated | Level AAA criterion; outside the scope of this Level AA report. |
| 2.4.13 Focus Appearance | AAA | Not Evaluated | Level AAA criterion; outside the scope of this Level AA report. |
| 2.5.7 Dragging Movements | AA | Not Applicable | No dragging-based functionality is required to operate the agent console. Resizable panel handles and any optional drag-to-reorder controls provide equivalent single-pointer alternatives (click-to-resize, keyboard reordering, or context-menu actions). |
| 2.5.8 Target Size (Minimum) | AA | Supports | All interactive targets meet or exceed the 24×24 CSS pixel minimum. Icon-only buttons render at 32–40px tap targets in the toolbar and message composer; inline action icons are wrapped in padding that brings their hit area above 24×24. |
| 3.2.6 Consistent Help | A | Supports | Help mechanisms — the in-app Copilot (?) button, the accessibility@velaro.com mailto link, and the help center link — appear in the same locations relative to other repeated content across all views. |
| 3.3.7 Redundant Entry | A | Supports | Information previously entered by or provided to the agent is auto-populated where requested again in the same session (e.g., visitor contact details persist across the conversation panel; multi-step forms retain prior step values when navigating back). |
| 3.3.8 Accessible Authentication (Minimum) | AA | Supports | Authentication is delegated to Microsoft Entra ID (Azure AD). No cognitive function test (transcribed text, image identification, puzzle) is imposed by the agent console. Passwords use standard text inputs with autofill enabled via autocomplete attributes. |
| 3.3.9 Accessible Authentication (Enhanced) | AAA | Not Evaluated | Level AAA criterion; outside the scope of this Level AA report. |
Known Gaps
No open accessibility gaps as of this report date. The previously documented CopilotPanel aria-pressed issue was resolved on May 16, 2026. A CI regression guard (scripts/validate-accessibility.js) now blocks new bare role="dialog" elements without Headless UI or a focus trap. Reports are updated with each product release.
Remarks and Explanations
DynamicForm Controls
The Velaro Platform agent console uses a DynamicForm system for contact data entry and custom field management. All DynamicForm-generated inputs include programmatically associated labels, aria-invalid state on validation failure, and aria-describedby linking to error message elements rendered with role="alert".
Rich Text Editor
The message composition area uses a rich text editor. The editor toolbar buttons are implemented as standard <button> elements with aria-label attributes. The editor content area is keyboard-operable and the wrapper element carries a :focus-within ring to communicate focus state for the editing region.
Dark Mode
The Velaro Platform agent console supports a dark mode theme. Contrast ratios in dark mode have been verified against the WCAG 2.1 AA 4.5:1 minimum threshold using the same Tailwind color palette.
Audit Methodology
Conformance was assessed through automated scanning (axe-core) and manual keyboard and screen reader testing (NVDA 2024.1 with Firefox, VoiceOver on macOS 14). Issues identified during testing were logged, triaged, and either resolved prior to this report or recorded in the known gaps table above.
Contact
To report an accessibility barrier, request an accommodation, or obtain this document in an alternative format:
- Email: accessibility@velaro.com
- Phone: 800-983-5276