Miles Tracking · Accessibility Conformance Report

Miles Tracking Rider Web App

Accessibility Conformance Report based on VPAT® Version 2.5 Rev (WCAG edition), self-authored from a documented evaluation of the shipped product.

Product
Miles Tracking rider web app — the public live vehicle map (/a/{agency}), the website embed an agency pastes into its own site (embed.js framing /embed/{agency}), and the app's front page.
Version
Production build index-XorQyVBE.js, served at app.milestracking.com (the same bundle is also served at milestracking-app.pages.dev). Later builds have shipped since; see Publication and currency under Notes.
Report date
August 18, 2026
Evaluated
August 18, 2026, against the live production deployment
Standard
WCAG 2.1, Levels A and AA (the standard adopted by the ADA Title II web rule, 28 CFR §35.200, which binds our transit-agency customers)
Author
Miles Tracking (vendor self-assessment)
Contact
contact@milestracking.com — a monitored address. Accessibility problems, questions about any row in this report, and requests for information in another format all go there, and are answered by the people who build the product.

Product description

The rider web app shows the live position of an agency's vehicles on a map, beside a list of every vehicle in the fleet. It is public — no account, no install — and mobile-first. The same component renders the standalone map page and the embed an agency places on its own website, so the two cannot disagree.

The product's central design rule is also an accessibility property: unknown is a value. A vehicle that stops reporting is removed from the map within five minutes and described in the list in plain text — "No data from Bus 31 since 3:42 PM" — rather than left as a stale dot. State is always carried in words, never in color alone.

Notes

Evaluation methods used

Applicable standards/guidelines

Standard / guidelineIncluded in report
Web Content Accessibility Guidelines 2.1, Level AYes (Table 1)
Web Content Accessibility Guidelines 2.1, Level AAYes (Table 2)
Web Content Accessibility Guidelines 2.1, Level AAANo

Terms

TermMeaning
Supports The functionality of the product has at least one method that meets the criterion without known defects or meets with equivalent facilitation.
Does not support The majority of product functionality does not meet the criterion.
Not applicable The criterion is not relevant to the product.

Table 1: WCAG 2.1 — Success criteria, Level A

CriteriaConformance levelRemarks and explanations
1.1.1 Non-text Content Supports Every vehicle marker is a real button with an accessible name ("Bus 14 — live"). The map region carries an aria-label; decorative state dots are aria-hidden; the wheelchair-accessible glyph has an aria-label.
1.2.1–1.2.3 Time-based Media(audio-only, captions, audio description) Not applicable The product contains no audio or video content.
1.3.1 Info and Relationships Supports Semantic headings, lists, and labeled form fields throughout; feed state is a role="status" / role="alert" region. (Advisory: the map pages lack a main landmark — see Notes.)
1.3.2 Meaningful Sequence Supports DOM order matches visual order: agency header, feed status, map, then the vehicle list.
1.3.3 Sensory Characteristics Supports Instructions never rely on shape or position; every state is named in text.
1.4.1 Use of Color Supports Marker and dot colors are always paired with text labels ("Live", "Delayed", "No signal", "No data today"). Route lines are drawn over a contrasting casing so an agency's brand color stays visible on either basemap.
1.4.2 Audio Control Not applicable No audio plays.
2.1.1 Keyboard Supports Verified by keyboard walk on the live build: theme toggle, map canvas (arrow-key pan, +/− zoom), each vehicle marker, zoom and compass controls, 2D/3D switch, and every vehicle-list entry are all reachable and operable.
2.1.2 No Keyboard Trap Supports Tab enters and leaves the map; no trap found in the walk.
2.1.4 Character Key Shortcuts Supports The map's single-key shortcuts (+/−) are active only while the map canvas itself has focus, which is the exception the criterion provides.
2.2.1 Timing Adjustable Not applicable No time limits, sessions, or timed interactions.
2.2.2 Pause, Stop, Hide Does not support Vehicle positions update automatically (a poll about every 20 seconds, and each vehicle's freshness is re-derived once per second) and there is no pause, stop, or hide control. The auto-update runs in parallel with other content, so the criterion applies with no exception. This is the product's one known WCAG A/AA non-conformance; see the remediation note below this table.
2.3.1 Three Flashes or Below Threshold Supports Nothing flashes.
2.4.1 Bypass Blocks Supports Each view is a single screen with no repeated navigation blocks; heading structure supports direct navigation.
2.4.2 Page Titled Supports Every page carries a descriptive title naming the agency, e.g. "Demo Transit — live vehicles".
2.4.3 Focus Order Supports Verified: header, feed status, map and markers, map controls, view switch, vehicle list — the reading order.
2.4.4 Link Purpose (In Context) Supports Links state their destination ("agency website", map data attribution).
2.5.1 Pointer Gestures Supports Every function needed to use the map has a single-pointer or button path: drag to pan, buttons to zoom, buttons to switch 2D/3D, a compass to reset rotation, tap to select a vehicle. Two-finger rotation is an optional convenience carrying no information of its own.
2.5.2 Pointer Cancellation Supports All controls are native buttons activating on the up-event.
2.5.3 Label in Name Supports Accessible names contain the visible text (e.g. the list entry for Bus 14 is named "Bus 14…").
2.5.4 Motion Actuation Not applicable No device-motion input is used.
3.1.1 Language of Page Supports <html lang="en"> on every page.
3.2.1 On Focus / 3.2.2 On Input Supports Focus changes nothing; the one form (open an agency map by name) submits only via its button.
3.3.1 Error Identification Supports An unknown agency is named in a role="alert" banner: "No such agency. Check the link you followed."
3.3.2 Labels or Instructions Supports The agency field is labeled; no other input exists on the rider surface.
4.1.1 Parsing Supports Per the W3C's 2023 errata this criterion is obsolete (removed in WCAG 2.2) and always satisfied by content that modern browsers parse.
4.1.2 Name, Role, Value Supports Toggles expose aria-pressed; the vehicle sheet handle exposes aria-expanded; markers and list entries are buttons with accessible names; verified in the accessibility tree.

Remediation, SC 2.2.2: a pause control for the auto-updating map is a tracked roadmap item scheduled ahead of any customer deployment. When it ships, this report will be reissued with the row re-tested. We publish the gap rather than wait, because a conformance report that hides its one known defect is worth less than the defect.

Table 2: WCAG 2.1 — Success criteria, Level AA

CriteriaConformance levelRemarks and explanations
1.2.4 Captions (Live) / 1.2.5 Audio Description Not applicable No audio or video content.
1.3.4 Orientation Supports The layout works in portrait and landscape; orientation is never locked.
1.3.5 Identify Input Purpose Not applicable The only field collects an agency's short name, not information about the user.
1.4.3 Contrast (Minimum) Supports All application text is machine-checked at ≥ 4.5:1 in both themes on every build (34 assertions; a failure fails the build). The application's own map labels (stop names) are drawn with a contrast halo. Street-name cartography inside the basemap is rendered by the map provider's style and is not individually asserted.
1.4.4 Resize Text Supports Text is set in relative units and the layout reflows; verified at 200% zoom equivalents down to a 320px viewport.
1.4.5 Images of Text Supports No images of text; map labels are rendered text.
1.4.10 Reflow Supports Verified at a 320 CSS-pixel viewport: single column, no horizontal scrolling, the vehicle list becomes a bottom sheet. The map itself is content that requires two-dimensional layout, the exception the criterion names.
1.4.11 Non-text Contrast Supports Focus indicators are 2px solid outlines in the accent color; vehicle markers carry a contrasting ring so the disc reads on any basemap; controls use the same contrast-asserted token set as text.
1.4.12 Text Spacing Supports Tested with the full override set; no content or function is lost.
1.4.13 Content on Hover or Focus Supports Marker popups open on activation, not hover, and persist until dismissed.
2.4.5 Multiple Ways Supports A vehicle can be reached through the map or through the list; pages within the app are linked from the front page and directly addressable by URL.
2.4.6 Headings and Labels Supports Headings and labels describe their content (agency name, "Vehicles", "Agency").
2.4.7 Focus Visible Supports Every interactive element shows a visible focus indicator; measured on the live build as a 2px solid outline.
3.1.2 Language of Parts Supports All content is in English; no passages in another language.
3.2.3 Consistent Navigation / 3.2.4 Consistent Identification Supports The same controls appear in the same order with the same names on every rider surface — the embed is literally the same component as the public map.
3.3.3 Error Suggestion Supports The unknown-agency message says what to do ("Check the link you followed"); a feed outage names the state and offers "Try again".
3.3.4 Error Prevention (Legal, Financial, Data) Not applicable No legal, financial, or data-modifying transactions on the rider surface.
4.1.3 Status Messages Supports Feed state ("3 of 4 vehicles are reporting", outage, reconnecting, demo notice) is a role="status" or role="alert" region, announced without taking focus. This is also where the product's stale-data honesty surfaces to screen-reader users: "No data from Bus 31 since 3:42 PM."

Legal disclaimer (Miles Tracking)