OGE logoOGE

Accessibility conformance report

An accessibility conformance report for the OGE UI component suite, following the VPAT® 2.5 format and its WCAG 2.2 table. It is self-assessed by the maintainers from the automated tests named in the remarks; it is not a third-party audit. How the components get there is in the accessibility guide.

VPAT 2.5 WCAG 2.2 A / AA self-assessed

Report details

Report details
ItemValue
Product OGE UI — Angular and React component packages ( @oge-ui/* )
Version 1.1.3
Report date 2026-10-08
Standard WCAG 2.2, levels A and AA
Evaluation methods Self-assessment from automated tests: axe-core over every docs page in both render layers (nightly) and in about 95 component specs (every pull request), keyboard and ARIA assertions in Playwright, emulated forced colours and reduced motion, colour contrast scans. No manual screen-reader test is recorded.
Scope The components as shipped with their default, dark and high-contrast themes. Page-level criteria (titles, language, bypass blocks, navigation) belong to the application using them.
Other standards The Revised Section 508 and EN 301 549 web chapters reference these same WCAG criteria and are not repeated here.

Summary

Criteria per conformance level
Conformance levelCriteria
Supports 32
Partially Supports 6
Does Not Support 0
Not Applicable 17

Level A

WCAG 2.2 level A success criteria
CriterionConformance levelRemarks and explanations
1.1.1 Non-text Content Supports Icons are decorative ( aria-hidden ) or labelled; icon-only buttons take your label. Charts expose role="img" with a generated label, an accessible legend and a screen-reader data table of the plotted values.
1.2.1 Audio-only and Video-only (Prerecorded) Not Applicable No component plays audio or video.
1.2.2 Captions (Prerecorded) Not Applicable No component plays audio or video.
1.2.3 Audio Description or Media Alternative (Prerecorded) Not Applicable No component plays audio or video.
1.3.1 Info and Relationships Supports Grid, treegrid, listbox, tree, tab and menu roles with their owned and labelled relationships; form fields are labelled and errors referenced. Checked by the axe crawl ( wcag2a … wcag22aa , both layers).
1.3.2 Meaningful Sequence Supports DOM order follows reading order; popups render after their trigger in the accessibility tree.
1.3.3 Sensory Characteristics Supports Built-in messages name controls, never their shape or position.
1.4.1 Use of Color Partially Supports Switch and selection states are not colour alone ( forced-colors.spec.ts ). Chart series are told apart by colour unless you set dash styles or markers; legends and tooltips name every series.
1.4.2 Audio Control Not Applicable No component plays audio or video.
2.1.1 Keyboard Supports Every family is operable from the keyboard, including the alternatives to dragging (grid, tree list, pivot, kanban, tile layout). Freehand drawing in the signature pad falls under the path-dependent exception.
2.1.2 No Keyboard Trap Supports Modal dialogs contain focus by design and close with Escape; every popup returns focus to its trigger.
2.1.4 Character Key Shortcuts Supports Single-character shortcuts exist only on the focused BPMN canvas ( C , A , F , H , L , S ), which the criterion allows.
2.2.1 Timing Adjustable Supports Toast timers are configurable and pause on hover, on focus and while the tab is hidden; hold-to-confirm durations are configurable.
2.2.2 Pause, Stop, Hide Supports Carousel auto-rotation always shows a rotation control, pauses on hover, stops on keyboard focus and starts stopped under reduced motion.
2.3.1 Three Flashes or Below Threshold Supports Nothing flashes.
2.4.1 Bypass Blocks Not Applicable A page-level requirement the host application meets; the components do not prevent it.
2.4.2 Page Titled Not Applicable A page-level requirement the host application meets; the components do not prevent it.
2.4.3 Focus Order Supports Composite widgets use one roving tab stop; popups move focus in and back out in order.
2.4.4 Link Purpose (In Context) Supports Breadcrumbs, menus and pagination render the link text you supply; pagination links are labelled.
2.5.1 Pointer Gestures Supports No multipoint or path-based gesture is required: swipes (carousel, action sheet) have button alternatives.
2.5.2 Pointer Cancellation Supports Activation happens on release; drags cancel with Escape or on pointercancel .
2.5.3 Label in Name Supports Visible labels are the accessible names. Not checked by a dedicated test.
2.5.4 Motion Actuation Not Applicable No component responds to device motion.
3.1.1 Language of Page Not Applicable A page-level requirement the host application meets; the components do not prevent it.
3.2.1 On Focus Supports Focus never commits a value or navigates.
3.2.2 On Input Supports Choosing a value commits it to the component only; navigation on change is the application’s decision.
3.2.6 Consistent Help Not Applicable A page-level requirement the host application meets; the components do not prevent it.
3.3.1 Error Identification Supports Invalid cells and fields set aria-invalid , reference the message with aria-errormessage / aria-describedby and announce it ( grid-announcements.spec.ts ).
3.3.2 Labels or Instructions Supports Editors render a visible or floating label; filter-row editors are labelled by their column.
3.3.7 Redundant Entry Not Applicable A process-level requirement of the application.
4.1.2 Name, Role, Value Supports Checked by axe in every component spec and the nightly crawl, and by explicit ARIA assertions in the keyboard specs.

Level AA

WCAG 2.2 level AA success criteria
CriterionConformance levelRemarks and explanations
1.2.4 Captions (Live) Not Applicable No component plays audio or video.
1.2.5 Audio Description (Prerecorded) Not Applicable No component plays audio or video.
1.3.4 Orientation Supports No orientation lock; popups can switch to phone presentations ( adaptiveMode ).
1.3.5 Identify Input Purpose Supports Text boxes forward autocomplete ; the OTP input sets autocomplete="one-time-code" . Setting the right token is yours.
1.4.3 Contrast (Minimum) Supports Default, dark and high-contrast themes: component text is scanned on every pull request ( contrast.spec.ts , themes.spec.ts , high-contrast.spec.ts ) and every page nightly. Tailwind and Bootstrap bridge themes take your palette.
1.4.4 Resize Text Supports Browser zoom to 200 % scales the components. Not covered by an automated test.
1.4.5 Images of Text Supports All text, chart labels included, is real text.
1.4.10 Reflow Supports Editors and layout components fit 320 px; grids, pivot, scheduler and Gantt are two-dimensional content the criterion exempts and scroll inside themselves. Phone-width checks run on the docs pages.
1.4.11 Non-text Contrast Partially Supports The focus ring and selected states are tested to be present, also under forced colours; borders and icons are not measured against 3:1 by any check.
1.4.12 Text Spacing Partially Supports Not tested. Virtualized rows have a fixed height, so increased line height can clip cell text unless autoRowHeight is on.
1.4.13 Content on Hover or Focus Partially Supports Tooltips show on hover and focus, hide with Escape and stay while the trigger is hovered or focused; keeping a tooltip open while the pointer moves onto it is not verified.
2.4.5 Multiple Ways Not Applicable A page-level requirement the host application meets; the components do not prevent it.
2.4.6 Headings and Labels Supports Column headers, dialog titles and field labels describe their content; the texts come from the message catalogs or from you.
2.4.7 Focus Visible Supports One focus ring on :focus-visible in every component, kept under forced colours ( forced-colors.spec.ts ).
2.4.11 Focus Not Obscured (Minimum) Partially Supports Composite widgets scroll the focused item into their viewport; sticky app chrome, toasts and the FAB can still cover focus and are not tested for it.
2.5.7 Dragging Movements Supports Every drag has a keyboard or single-pointer alternative: column resize and move, row moves, pivot fields, kanban cards, tiles, splitters, sliders ( grid-keyboard-drag.spec.ts , tree-list-keyboard-drag.spec.ts , pivot-keyboard.spec.ts ).
2.5.8 Target Size (Minimum) Partially Supports Small controls get a 24 px hit area (44 px on coarse pointers) through a shared stylesheet mixin; target sizes are not measured across every control.
3.1.2 Language of Parts Not Applicable Component strings come from the catalog you provide, in your page’s language.
3.2.3 Consistent Navigation Not Applicable A page-level requirement the host application meets; the components do not prevent it.
3.2.4 Consistent Identification Supports Shared message catalogs give the same function the same name in every family and both layers.
3.3.3 Error Suggestion Supports Validation messages are shown and announced as written; the built-in rules ship descriptive defaults.
3.3.4 Error Prevention (Legal, Financial, Data) Not Applicable Whether a submission is reversible is the application’s decision; the suite supplies the means (batch editing with cancel, undo / redo, confirm() dialogs).
3.3.8 Accessible Authentication (Minimum) Not Applicable No authentication component. The OTP input accepts paste and SMS autofill.
4.1.3 Status Messages Supports Sorting, filtering, paging, selection, moves and errors are announced through shared polite / assertive live regions; toasts are status messages ( grid-announcements.spec.ts ).

Terms

Conformance level terms
TermMeaning
Supports The functionality meets the criterion without known defects.
Partially Supports Some functionality does not meet the criterion, or it is not verified; the remark says which.
Does Not Support The majority of the functionality does not meet the criterion.
Not Applicable The criterion is not relevant to a component library, or is met by the host application.

Level AAA criteria were not evaluated. "VPAT" is a registered service mark of the Information Technology Industry Council (ITI).