Accessibility Conformance Report: Action Stations
VPAT 2.5 Rev, Revised Section 508 Edition (WCAG 2.2 Level A and AA, Revised 508 Chapters 3, 5 and 6)
| Product | Action Stations (machine name actionstations) |
| Version evaluated | 0.6.2 |
| Report date | 2026-11-02 |
| Product description | A local-first desktop application (Electron) that generates tabletop exercises, with a phone, tablet or laptop web page for live-play participants and exported PDF, Word and Excel documents |
| Contact for accessibility problems | Open an issue at github.com/actionstations-ai/actionstations |
| Template | ITI VPAT 2.5 Rev (508 edition). This is the vendor’s own evaluation, not a third-party audit. |
Scope: three products evaluated separately
Section titled “Scope: three products evaluated separately”| Product | What it is | How it was checked |
|---|---|---|
| Desktop app | The Electron application on Windows, macOS and Linux (the renderer, a React web UI in a Chromium window) | Automated accessibility tests of every screen, scripted keyboard and layout checks, color contrast check |
| Player page | The web page participants open in a browser during live play (served by the facilitator’s computer or a relay) | Automated accessibility tests of every screen, in light and dark |
| Exported PDFs | PDFs the app writes: briefing, handouts, player injects, MSEL, inject deck, handbook, EEG packet, survey forms, AAR/IP, inject media PDFs, and large-print copies | Tagged-PDF output on every export, structure checks; see the Translation and accessibility guide |
Word (.docx) and Excel (.xlsx) exports, the project website, and the guides are not evaluated in this report (see “Not evaluated” at the end).
- Supports: the functionality meets the criterion with no known defects, on the evidence listed.
- Partially Supports: some functionality does not meet the criterion, or the criterion has only been partly evaluated. The remarks say which.
- Does Not Support: the majority of functionality does not meet the criterion.
- Not Applicable: the criterion is not relevant to the product.
Evaluation methods used
Section titled “Evaluation methods used”- Automated: axe-core accessibility tests, with the tags
wcag2a,wcag2aa,wcag21a,wcag21aa,wcag22aaandbest-practice.- Desktop: an automated test audits every screen in light and dark mode against a seeded project (documents, a scenario with rendered injects, packs, live connection, settings) and fails on any violation.
- Desktop: a second automated test covers the criteria axe cannot test (text spacing, content on hover or focus, focus not obscured, pointer cancellation, dragging alternatives, target size, consistent help) on 16 screens.
- Player page: an automated test audits every screen in light and dark, on a phone viewport, at 100 % and 200 % zoom, plus the end screen.
- Scripted keyboard and layout checks alongside those tests: visible focus on every tab stop, no keyboard traps, dialogs take focus, close on Escape and return focus, a keyboard-only walkthrough (new project to export; for the player page, joining), a 200 % zoom check that no control is clipped or unreachable, no horizontal scroll, and targets of at least 24 px on the player page. Empty and error states are checked for next-step text.
- Contrast check: a script tests every design-token color pair the renderer’s stylesheets use, in light and dark, at 4.5:1 for text and 3:1 for UI boundaries and focus rings. The player page imports the same tokens.
- PDF checks: Chromium’s tagged-PDF output is switched on for every export. An automated test checks the language tag and tagged structure of the Spanish packet, injects and survey form. A script can run veraPDF (PDF/UA-1) on exported PDFs when veraPDF is installed. No veraPDF run is recorded, so PDF/UA conformance is not claimed.
- Design review of the accessibility requirements for the player page and for player translation.
Not done: no recorded testing with a screen reader (NVDA, JAWS, VoiceOver, Narrator), screen magnifier, speech-recognition software or switch device; no usability testing with people with disabilities; no third-party audit. Automated tools find only part of the WCAG failures, so “Supports” below means “no defect found by the checks above and none known”, not “verified with assistive technology”.
Known exceptions
Section titled “Known exceptions”| Item | Product | Criteria | Status |
|---|---|---|---|
| Exported PDFs are fixed-layout pages (Letter size). They do not reflow at 320 px or 400 % zoom. A large-print copy (18 pt, one column) is offered for the briefing, handouts and player injects only. | Exported PDFs | 1.4.4, 1.4.10 | By design. |
| PDF/UA conformance has not been tested. Text generated by CSS (page numbers, the stamp) is not tagged. Running headers and footers are page text and may be read on every page. | Exported PDFs | 1.3.1, 4.1.2, 504.2.2 | Known limits of Chromium’s PDF writer. |
| AI-generated video clips have no audio description. Video has captions only when the inject has voice lines. | Player page, desktop, media | 1.2.2, 1.2.3, 1.2.5 | Open. |
| No person has tested the desktop app, the player page or the PDFs with a screen reader and recorded the result. The Translation and accessibility guide asks users to check a packet with VoiceOver or NVDA. | All | Several; see the tables | Open. |
| Map pin placement is by clicking the plan; a keyboard alternative has not been checked. | Desktop app | 2.1.1, 2.5.1 | Not evaluated. |
| The app’s own screens are English only. Player material (briefing, handouts, injects, participant surveys) can be exported in Spanish after a person reviews the translation. | All | None (3.1.1 and 3.1.2 are met) | Listed for buyers who need other interface languages. |
Table 1: WCAG 2.x Level A
Section titled “Table 1: WCAG 2.x Level A”Desktop = desktop app, Player = player page, PDF = exported PDFs.
| Criterion | Desktop | Player | Remarks | |
|---|---|---|---|---|
| 1.1.1 Non-text Content | Partially Supports | Supports | Supports | Desktop: axe passes on every audited screen; the label of a generated photograph is only as good as the text the user supplies. Player: every image inject has its exact text in a collapsed Text version that screen readers read as the description. PDF: each inject picture has a short alt and its words follow as real text. Text-bearing media is template-rendered, so the text exists in the source. |
| 1.2.1 Audio-only and Video-only (Prerecorded) | Partially Supports | Partially Supports | Not Applicable | Audio injects have a transcript on the player page. Video-only clips have no text alternative of their own beyond the inject’s text version. |
| 1.2.2 Captions (Prerecorded) | Partially Supports | Partially Supports | Not Applicable | Video has captions when the inject has voice lines. Clips without voice lines are silent. Not every generated clip has been checked. |
| 1.2.3 Audio Description or Media Alternative (Prerecorded) | Partially Supports | Partially Supports | Not Applicable | A text version of each inject is provided as a media alternative. There is no audio description track. |
| 1.3.1 Info and Relationships | Supports | Supports | Partially Supports | Desktop and player: axe passes; landmarks, headings, labels, tablists and live regions are in use. PDF: tagged; one level-1 heading, headings in order, table column headers, lists as lists. CSS-generated text is untagged; PDF/UA not run. |
| 1.3.2 Meaningful Sequence | Supports | Supports | Partially Supports | The keyboard walkthrough follows visual order. PDF reading order comes from Chromium’s tagging and has not been checked with a screen reader. |
| 1.3.3 Sensory Characteristics | Supports | Supports | Supports | Instructions name controls by label. Statuses are given in words (for example clock status “due soon”, “overdue”). |
| 1.4.1 Use of Color | Supports | Supports | Partially Supports | Selected list items use a highlight with an accent bar, and the domain picker also shows a check. Not every exported document template has been reviewed for color-only meaning. |
| 1.4.2 Audio Control | Supports | Supports | Not Applicable | Audio does not play by itself on the player page. In the desktop app, playback starts on a user action. |
| 2.1.1 Keyboard | Partially Supports | Supports | Not Applicable | The keyboard-only walkthrough from new project to export passes, and joining the player page by keyboard alone passes. Pointer-driven features (map pins and similar) have not been checked for a keyboard equivalent. |
| 2.1.2 No Keyboard Trap | Supports | Supports | Not Applicable | Tested on every tab stop; dialogs close on Escape. |
| 2.1.4 Character Key Shortcuts | Supports | Supports | Not Applicable | Single-key shortcuts (Space, N, D) in Facilitate can be switched off with Single-key shortcuts, and never fire while typing. |
| 2.2.1 Timing Adjustable | Supports | Supports | Not Applicable | No interface time-outs on user input. Exercise clocks are exercise content. The player page reconnects by itself after sleep. |
| 2.2.2 Pause, Stop, Hide | Supports | Supports | Not Applicable | The only moving content is the exercise clock and the live feed; the feed announces politely and reduced motion is honored. Pausing the clock is a facilitator control. |
| 2.3.1 Three Flashes or Below Threshold | Partially Supports | Partially Supports | Not Applicable | No flashing content in the interface. Generated video clips have not been analyzed for flashes. |
| 2.4.1 Bypass Blocks | Supports | Supports | Partially Supports | Skip to main content is the first Tab stop in the desktop app. Bookmarks and navigation inside PDFs are not evaluated. |
| 2.4.2 Page Titled | Supports | Supports | Supports | The window title names the current page. Every exported PDF sets a title. |
| 2.4.3 Focus Order | Supports | Supports | Not Applicable | After following a link focus moves to the new page’s heading; dialogs return focus to the opener. Tested. |
| 2.4.4 Link Purpose (In Context) | Supports | Supports | Partially Supports | Axe link-name rules pass. Links inside PDFs are not evaluated. |
| 2.5.1 Pointer Gestures | Partially Supports | Supports | Not Applicable | The player page uses taps and buttons only. Desktop map interactions have not been checked. |
| 2.5.2 Pointer Cancellation | Partially Supports | Partially Supports | Not Applicable | Desktop: tab and menu triggers act on press; they only change the view and are reversed by selecting again. All other controls act on release (12 buttons and links on each of six screens, tested). Player: standard controls act on release in Chromium; no test verifies this. |
| 2.5.3 Label in Name | Supports | Supports | Not Applicable | Axe label-content-name-mismatch is part of the best-practice set audited. |
| 2.5.4 Motion Actuation | Not Applicable | Not Applicable | Not Applicable | No feature is operated by device motion. |
| 3.1.1 Language of Page | Supports | Supports | Supports | The page language is set. Every exported PDF sets the document language, including Spanish. |
| 3.2.1 On Focus | Supports | Supports | Not Applicable | No context changes on focus in audited screens. |
| 3.2.2 On Input | Supports | Supports | Not Applicable | Form changes need an explicit action. |
| 3.2.6 Consistent Help | Supports | Partially Supports | Not Applicable | Desktop: the Glossary is the one help mechanism that repeats across screens. A test finds it first in the page header actions on every screen that has it. Player: help sits in the same place in the screens reviewed; no test or full review covers every screen. |
| 3.3.1 Error Identification | Supports | Supports | Not Applicable | Errors say what went wrong and what to try, with Retry where it applies; covered by the empty and error state test. |
| 3.3.2 Labels or Instructions | Supports | Supports | Not Applicable | Axe label rules pass on all audited screens. |
| 3.3.7 Redundant Entry | Supports | Supports | Not Applicable | The player join flow does not ask twice for anything. The desktop app has not been reviewed for repeated entry beyond that. |
| 4.1.1 Parsing | Supports | Supports | Not Applicable | Obsolete in WCAG 2.2. Axe duplicate-id rules pass. |
| 4.1.2 Name, Role, Value | Supports | Supports | Partially Supports | Axe ARIA rules pass; Radix primitives are used for dialogs and tabs. PDF: survey forms are printable pages and are not tested as fillable form fields. |
Table 2: WCAG 2.x Level AA
Section titled “Table 2: WCAG 2.x Level AA”| Criterion | Desktop | Player | Remarks | |
|---|---|---|---|---|
| 1.2.4 Captions (Live) | Not Applicable | Not Applicable | Not Applicable | No live synchronized audio or video is provided. |
| 1.2.5 Audio Description (Prerecorded) | Does Not Support | Does Not Support | Not Applicable | Generated video clips have no audio description track. A text version of the inject is provided. |
| 1.4.3 Contrast (Minimum) | Supports | Supports | Partially Supports | scripts/check-contrast.mjs checks every token pair in light and dark; axe color-contrast passes in both themes. PDF: large-print copies are black on white; contrast of the regular packet templates has not been measured. |
| 1.4.4 Resize Text | Supports | Supports | Partially Supports | The 200 % zoom check passes with no clipped or unreachable controls (since fixed). The player page has a text-size setting. PDF: fixed pages; a large-print copy is provided for player documents. |
| 1.4.5 Images of Text | Supports | Supports | Partially Supports | Text-bearing injects (tweets, tickets, emails, logs, boards) are rendered from templates, and each picture is followed by the same words as real text. Pictures of text stay in the inject deck and player injects because the look is the point of the inject. |
| 1.4.10 Reflow | Supports | Supports | Does Not Support | Desktop: the sidebar folds behind Menu below about 830 px; page header actions and settings rows wrap; wide tables scroll inside labelled regions. The Room tab stacks its tables in the side panel; an overlap check runs at 1280×800, 1024×768 and 960×640. Player: tested at 320 px with no horizontal scroll. PDF: fixed-layout pages. |
| 1.4.11 Non-text Contrast | Supports | Supports | Partially Supports | The contrast script covers UI boundaries and focus rings at 3:1. PDF: graphics and form-field borders in the exports were not measured. |
| 1.4.12 Text Spacing | Supports | Partially Supports | Not Applicable | Desktop: a test applies the WCAG text-spacing overrides (line height 1.5, letter spacing 0.12 em, word spacing 0.16 em) on 16 main screens and finds no newly clipped, overlapping or lost text. Player: no text-spacing override test was run. |
| 1.4.13 Content on Hover or Focus | Supports | Not Applicable | Not Applicable | Desktop: hovering or focusing the first controls on 16 screens shows no tooltip or popup. The Glossary popover opens on click, stays open when the pointer moves onto it or away, and closes with Esc, returning focus to its button. Title text on controls is the browser’s own tooltip. The player page has no hover content. |
| 2.4.5 Multiple Ways | Supports | Supports | Not Applicable | Desktop: sidebar navigation and project search. Player: bottom tabs or left rail, and the More list. |
| 2.4.6 Headings and Labels | Supports | Supports | Supports | One level-1 heading per page and per PDF; labels describe purpose. |
| 2.4.7 Focus Visible | Supports | Supports | Not Applicable | Tested on every tab stop, in both themes. |
| 2.4.11 Focus Not Obscured (Minimum) | Supports | Partially Supports | Not Applicable | Desktop: tabbing through 16 screens, and through the MSEL after a row action, never leaves the focused control fully hidden behind another element. Notifications appear at the bottom left of the desktop window, away from primary buttons. Player: not tested. |
| 2.5.7 Dragging Movements | Supports | Supports | Not Applicable | Desktop: the MSEL grid offers Move up and Move down in each row’s actions menu beside the drag handle; the site plan has Pan buttons beside dragging; file drop areas have Import documents and Install from file buttons. The player page has no dragging. |
| 2.5.8 Target Size (Minimum) | Supports | Supports | Not Applicable | Desktop: a test measures every button, link, field, tab and radio or checkbox on 16 screens; each is at least 24 by 24 px or has no other target within the 24 px circle. The export checkboxes were 13 px and are now 24 px. Player: an automated check fails on any target under 24 px; primary actions are 44 px. |
| 3.1.2 Language of Parts | Supports | Supports | Supports | Spanish items are marked with their language in the review screen and in the Spanish PDFs. |
| 3.2.3 Consistent Navigation | Supports | Supports | Not Applicable | Same navigation order on each screen. |
| 3.2.4 Consistent Identification | Supports | Supports | Not Applicable | Shared components are used throughout. |
| 3.3.3 Error Suggestion | Supports | Supports | Not Applicable | Failure messages state what to try next. |
| 3.3.4 Error Prevention (Legal, Financial, Data) | Partially Supports | Not Applicable | Not Applicable | Export is refused while translations are unreviewed. Other destructive actions have not been reviewed for confirmation or undo as a set. No legal or financial transactions; data stays on the user’s computer. |
| 3.3.8 Accessible Authentication (Minimum) | Not Applicable | Supports | Not Applicable | The desktop app has no login. Player join is by link or QR code with no cognitive function test. |
| 4.1.3 Status Messages | Supports | Supports | Not Applicable | Progress and results are announced through polite live regions without flooding; the player page announces new inbox items. |
Table 3: Revised Section 508, Chapter 3: Functional Performance Criteria
Section titled “Table 3: Revised Section 508, Chapter 3: Functional Performance Criteria”| Criterion | Rating | Remarks |
|---|---|---|
| 302.1 Without Vision | Partially Supports | Semantic structure, labels and live regions are in place and pass axe. No recorded screen reader testing. Pictures of text have text alternatives. Video has no audio description. |
| 302.2 With Limited Vision | Partially Supports | 200 % zoom, checked contrast in light and dark, a player text-size setting, and large-print PDFs. Exception: PDFs do not reflow. |
| 302.3 Without Perception of Color | Supports | Status is given in words, not color alone, in audited screens. |
| 302.4 Without Hearing | Partially Supports | Transcripts for audio injects, captions for video with voice lines. Audio injects are delivered with their text on the facilitator’s screen. |
| 302.5 With Limited Hearing | Partially Supports | As 302.4. Volume is controlled by the operating system. |
| 302.6 Without Speech | Supports | No feature requires speech input. Hot wash recording is optional; typed notes are the alternative. |
| 302.7 With Limited Manipulation | Partially Supports | The desktop app is keyboard operable per the walkthrough, and single-key shortcuts can be turned off. Not tested with switch devices or speech-input software. |
| 302.8 With Limited Reach and Strength | Supports | No simultaneous or sustained physical action is required. |
| 302.9 With Limited Language, Cognitive, and Learning Abilities | Partially Supports | Plain-language copy, no cognitive tests on the player page, clear error states, Spanish player material, a large-print option. No user testing, and the facilitator interface is dense. |
Table 4: Revised Section 508, Chapter 4: Hardware
Section titled “Table 4: Revised Section 508, Chapter 4: Hardware”Not Applicable. Action Stations is software only.
Table 5: Revised Section 508, Chapter 5: Software
Section titled “Table 5: Revised Section 508, Chapter 5: Software”Rated for the desktop application, and for the player page where it applies as web content.
| Criterion | Rating | Remarks |
|---|---|---|
| 501.1 Scope | Not Applicable | Section 508 incorporates WCAG 2.0 A and AA by reference. This report evaluates against WCAG 2.2 A and AA (Tables 1 and 2), which includes every 2.0 criterion. |
| 502.2.1 User Control of Accessibility Features | Partially Supports | The app follows the operating-system color scheme and reduced-motion setting. No test checks that other platform settings pass through. |
| 502.2.2 No Disruption of Accessibility Features | Partially Supports | No known feature disables an operating-system accessibility feature. Not tested against specific assistive technology. |
| 502.3 Accessibility Services | Partially Supports | The UI is Chromium web content, which exposes name, role, state and relationships to the platform accessibility API. Axe verifies those attributes. No recorded test with assistive technology on Windows, macOS or Linux. |
| 502.4 Platform Accessibility Features | Partially Supports | Keyboard, zoom and contrast behavior is tested in Chromium. Operating-system high-contrast and magnifier modes are not tested. |
| 503.2 User Preferences | Supports | Theme follows the operating system; the player page has text size, theme, sound and vibration settings. |
| 503.3 Alternate User Interfaces | Not Applicable | No alternate user interface is provided. |
| 503.4 User Controls for Captions and Audio Description | Partially Supports | Captions are shown for video with voice lines. There is no audio description. |
| 504.2 Content Creation or Editing | Partially Supports | PDF exports are tagged with titles, language, headings, table headers and list structure, so accessible content is the default. Word and Excel exports are not evaluated. |
| 504.2.1 Preservation of Information Provided for Accessibility | Partially Supports | Alt text, language and heading structure are carried from the inject model into PDFs. Word exports are not evaluated. |
| 504.2.2 PDF Export | Partially Supports | Tagged PDF export with document language and title. PDF/UA not verified (no veraPDF run); CSS-generated text is untagged. |
| 504.3 Prompts | Partially Supports | The app warns before exporting unreviewed translation. It does not prompt users to write alt text for images they upload. |
| 504.4 Templates | Partially Supports | Built-in inject templates keep the words as real text with a short alt label. Template authors are guided by docs/guides/templates.md; third-party and community templates are not evaluated. |
Table 6: Revised Section 508, Chapter 6: Support Documentation and Services
Section titled “Table 6: Revised Section 508, Chapter 6: Support Documentation and Services”| Criterion | Rating | Remarks |
|---|---|---|
| 602.2 Accessibility and Compatibility Features | Partially Supports | Keyboard use, skip link, shortcut toggle, large print and screen-reader packets are described in docs/guides/getting-started.md and docs/guides/translation-and-accessibility.md. No single page lists every feature. |
| 602.3 Electronic Support Documentation | Partially Supports | Guides are Markdown in the repository and are published on the website. The repository text follows the same plain-language and heading rules; the rendered website pages were not tested. |
| 602.4 Alternate Formats for Non-electronic Support Documentation | Not Applicable | No non-electronic documentation is provided. |
| 603.2 Information on Accessibility and Compatibility Features | Partially Supports | This report and the guides named above. |
| 603.3 Accommodation of Communication Needs | Partially Supports | Support is through the issue tracker (text). No telephone or relay service is offered. |
Not evaluated
Section titled “Not evaluated”- Word (.docx) and Excel (.xlsx) exports.
- The project website and the published copies of the guides.
- Installers and operating-system dialogs (file pickers, keychain prompts).
- The self-hosted server and relay (their only user interface is the player page they serve).
- Third-party packs and templates.
- Behavior with specific screen readers, magnifiers, speech recognition and switch access.
How to check this yourself
Section titled “How to check this yourself”- Desktop app and player page: open every screen with the keyboard alone, zoom to 200 %, and run an accessibility checker such as axe in light and dark mode.
- PDFs: run veraPDF on an exported packet; open a packet with VoiceOver or NVDA and list headings.
Revision history
Section titled “Revision history”| Version | Date | Notes |
|---|---|---|
| 0.6.2 | 2026-11-02 | First report. |
