Accessibility Conformance Report
How the SentraBridge app meets WCAG 2.1 level A and AA, criterion by criterion. It's a self-assessment, and it says plainly where we fall short.
WCAG Edition (based on VPAT® Version 2.5)
Name of Product/Version
SentraBridge admin web app (the flow designer, connections, run history and settings that city staff use), version 0.6 (development build), November 2026.
Report Date
November 11, 2026
Product Description
SentraBridge is a web app for city and county staff who connect government systems. Staff build "flows" in a visual designer: they read records from one system, change them, and send them to another. The app also covers connections, run history, monitoring, approvals, people and settings. It runs in a desktop browser.
This report covers the signed-in web app (web/src). It does not cover:
- the marketing site;
- the public status page;
- the sandbox's pretend sign-in pages;
- third-party sign-in pages (Clerk) or other systems' own screens.
Contact Information
SentraBridge is a product of Civic Solution Partners, LLC, sold and supported in partnership with authorized reseller Computer Systems Plus, Inc. Accessibility questions and problem reports: 1-559-251-7767, or through your SentraBridge account contact.
Notes
- Not yet tested with assistive technology. We have not yet run a screen reader pass with NVDA, JAWS or VoiceOver, or tested with people who use them. The levels below come from automated checks, the accessibility tree that browsers hand to screen readers, and scripted keyboard-only tests. Treat them as a self-assessment, not an independent audit. We recommend, and plan, a human screen reader test before the first city go-live.
- What changed in version 0.6. Five criteria moved from Partially Supports to Supports: 1.3.1 Info and Relationships, 2.1.1 Keyboard and 4.1.2 Name, Role, Value (the Outline and named canvas steps), 1.4.10 Reflow (narrow-screen designer) and 1.4.11 Non-text Contrast (darker canvas colors). No criterion is now rated Partially Supports. These moves are based on automated and scripted checks only; the human screen reader test above could find problems that move some of them back.
- The flow designer is the hardest screen. It is a drag-and-drop canvas built on React Flow. This review added keyboard alternatives for the canvas tasks:
- Add a step: press a palette item. The step is added after the selected step and wired to it.
- Wire steps: the new Wires section in each step's settings lists the step's wires, removes them, and adds new ones. It covers which output (Yes/No, Matched/Different…) and which input (A/B).
- Select and move steps: steps can be reached with Tab, selected with Enter, and moved with the arrow keys.
- Delete a step: press Delete, or use the button in the step's settings.
- Not covered: the minimap and panning with the mouse have no direct keyboard equivalent. The zoom and fit buttons work by keyboard.
- Flow outline (version 0.6). The designer has an Outline view (toolbar button, or Alt+Shift+O). It shows the whole flow as a text list in wiring order. Each step has a heading with its number, name and kind, a plain-English description, any problems, its last test counts, and its wires in and out (with output names such as Yes/No or Matched/Different, and inputs A/B). From the outline a person can open a step's settings, add a step after it (chosen from a list), rename it, move it up or down in the chain, delete it (its neighbours are wired together), add and remove wires, and run Preview. Each change is announced ("Added Filter after Changed records") and focus moves to the right place. On screens 760 pixels wide or less, the outline is the default view.
- Canvas changes (version 0.6). Each step on the canvas has an accessible name with its kind, name, summary, inputs, outputs, problems and last test result (for example "Filter: Open potholes. 1 input, from Changed 311 requests. Sends records to Shape as a visit."). Wires are named "Wire from … to …". Wire, handle and step border colors were darkened to at least 3:1. At narrow widths the step list and step settings open as drawers.
- Fixes made during this review (November 2026):
- Brand-colored connector badges are darkened when needed so their text meets 4.5:1.
- Canvas wire handles no longer carry ARIA labels that aren't allowed on them.
- The designer has a page heading.
- Palette group headings are in order.
- A copy button has a name.
- The People page headings are in order.
- Every page now sets its own title.
- There is a "Skip to main content" link.
- Pages reflow to a single column at 320 CSS pixels wide.
- Version 0.6: empty-state headings and console section headings are in order; action columns in tables have a hidden header; download links' names include their visible text.
Evaluation Methods Used
- Automated: axe-core 4.x through Playwright (Chromium), with the WCAG 2.0 and 2.1 A and AA rules plus best practices. Pages checked: Overview, Flows, the flow designer (empty, with a step selected and its settings open), Connections (list, "Add a connection" dialog, connection form), Run history, Run detail, Templates, Monitoring, Settings, People and System. After the fixes, axe reports no violations on any of these pages.
- Manual keyboard checks:
- Building a flow with the keyboard only: add steps, select them, wire and unwire them.
- Dialogs: focus moves into a dialog when it opens, Escape closes it, and focus returns to the button that opened it.
- Focus is visible on palette items and buttons (2px outline) and on form fields (a blue border and 3px focus ring).
- Manual reflow and title checks:
- At 320 CSS pixels wide there is no sideways scrolling on Overview, Connections and Run history. Data tables scroll inside their own box.
- Each page has its own title.
- Code review: form labels, ARIA live regions (toasts use
role="status"), landmark regions, and language of the page. - Version 0.6 re-check (November 2026):
- axe-core 4.11 (WCAG 2.0/2.1 A and AA plus best practices) on 43 pages and states: every app page (Overview, Approvals, Flows, Templates, Connections, Value maps, Run history, Trace, Monitoring, People, Activity), all nine Settings tabs, run detail, the "Add a connection" dialog and a connection form, the designer (canvas, step selected, outline, outline with its add forms open, outline with the data inspector, canvas after a preview), the Explain, Notifications, AI change and Version history dialogs, and all eleven SentraBridge Console pages. Result: no violations. The Promote dialog was not checked because the test workspace has no Production link.
- Accessibility tree review (screen reader simulation): Playwright accessibility snapshots of the designer canvas, the outline, step settings, the connection form, run detail, Settings, the console and each dialog, read to confirm names, roles, headings, lists and states. This shows what a screen reader is given; it does not show how a screen reader speaks or navigates it.
- Scripted keyboard-only test: a Playwright script that uses only the keyboard (Tab, Enter, Escape, typing, shortcuts) to turn on the outline, add three steps after the start step, choose a connection and what to read in the settings, insert a step between two others, move a step down, rename a step, add and remove a wire, run Preview and save. It then checks the saved flow has the four steps wired in the expected order, and that each change was announced. It passes at 1440 and 390 pixels wide.
- Reflow: the designer at 320, 390 and 760 pixels wide (outline, step settings drawer, steps drawer, data inspector) has no sideways scrolling outside the canvas and data tables.
- Contrast: wire, handle and border colors were measured against the canvas background.
Applicable Standards/Guidelines
| Standard/Guideline | Included In Report |
|---|---|
| Web Content Accessibility Guidelines 2.0 | Level A (Yes), Level AA (Yes), Level AAA (No) |
| Web Content Accessibility Guidelines 2.1 | Level A (Yes), Level AA (Yes), Level AAA (No) |
| Web Content Accessibility Guidelines 2.2 | Not evaluated |
Terms
- Supports: the functionality of the product has at least one method that meets the criterion without known defects, or meets it with equivalent facilitation.
- Partially Supports: some functionality of the product does not meet the criterion.
- Does Not Support: the majority of product functionality does not meet the criterion.
- Not Applicable: the criterion is not relevant to the product.
- Not Evaluated: the product has not been evaluated against the criterion. This term is used only for WCAG Level AAA.
WCAG 2.x Report
Table 1: Success Criteria, Level A
| Criteria | Conformance Level | Remarks and Explanations |
|---|---|---|
| 1.1.1 Non-text Content (Level A) | Supports | Icon-only buttons have accessible names. Decorative icons and connector initials are hidden from assistive technology. Charts on Monitoring have a table view. The canvas minimap is decorative; the same steps are in the canvas and the Wires lists. |
| 1.2.1 Audio-only and Video-only (Prerecorded) (Level A) | Not Applicable | The app has no audio or video. |
| 1.2.2 Captions (Prerecorded) (Level A) | Not Applicable | No video in the app. |
| 1.2.3 Audio Description or Media Alternative (Prerecorded) (Level A) | Not Applicable | No video in the app. |
| 1.3.1 Info and Relationships (Level A) | Supports | Headings, lists, tables with header cells, labeled form fields, and landmarks (main, navigation, aside) are used. A flow's structure (which step feeds which, through which output and input) is drawn on the canvas and is also given in text: in the Outline (an ordered list with a heading per step and its wires) and in each canvas step's accessible name. Checked in the accessibility tree; not yet with a screen reader. |
| 1.3.2 Meaningful Sequence (Level A) | Supports | Reading order follows the visual order. In the designer, the order is toolbar, steps list, canvas or Outline, then step settings. The Outline lists steps in wiring order. |
| 1.3.3 Sensory Characteristics (Level A) | Supports | Instructions name controls by their label, not only by shape or position ("Wires in the step's settings", "Add connection"). |
| 1.4.1 Use of Color (Level A) | Supports | Status uses text as well as color (Succeeded, Failed, untested). Problems on steps carry a text message. If/else outputs are labeled Yes/No. |
| 1.4.2 Audio Control (Level A) | Not Applicable | No audio. |
| 2.1.1 Keyboard (Level A) | Supports | All pages, forms and dialogs work with the keyboard. Everything the designer canvas does can be done from the Outline by keyboard: add a step after any step or output, change settings, rename, reorder in the chain, delete, add and remove wires, preview and save. On the canvas, steps are also reached with Tab, selected with Enter, moved with the arrow keys and deleted with Delete; zoom and fit have buttons. Placing a step at an exact point by dragging, panning by dragging and the minimap are mouse-only, but they only change the drawing, not the flow. A scripted keyboard-only test builds, previews and saves a four-step flow. Not yet confirmed with a screen reader's own keyboard modes. |
| 2.1.2 No Keyboard Trap (Level A) | Supports | Dialogs close with Escape and return focus. Focus can leave the canvas with Tab. |
| 2.1.4 Character Key Shortcuts (Level A) | Supports | The only single-key shortcuts are Delete and Backspace on a selected canvas step. They work only while the canvas has focus, never while typing in a field. Other shortcuts use modifier keys: Ctrl/⌘ Z and Ctrl/⌘ Shift Z (undo, redo), Ctrl/⌘ S (save), Alt+Shift+O (Outline). |
| 2.2.1 Timing Adjustable (Level A) | Supports | No time limits on tasks. Messages that disappear (toasts) repeat what the page already shows. Error toasts stay 6 seconds and are announced. The sign-in session lasts a working day. |
| 2.2.2 Pause, Stop, Hide (Level A) | Supports | No auto-moving, blinking or auto-updating content that lasts more than 5 seconds, except "Saving…/Saved" status text, which is essential status. |
| 2.3.1 Three Flashes or Below Threshold (Level A) | Supports | Nothing flashes. |
| 2.4.1 Bypass Blocks (Level A) | Supports | A "Skip to main content" link is the first stop on every page, and the page has main and navigation landmarks. |
| 2.4.2 Page Titled (Level A) | Supports | Each page sets its title from its heading (for example "Connections · SentraBridge"). |
| 2.4.3 Focus Order (Level A) | Supports | Focus moves in reading order. Dialogs take focus when they open and give it back when they close. |
| 2.4.4 Link Purpose (In Context) (Level A) | Supports | Links name their target (flow names, "Back to flows", vendor docs). |
| 3.1.1 Language of Page (Level A) | Supports | lang="en". |
| 3.2.1 On Focus (Level A) | Supports | Focus alone never changes context. |
| 3.2.2 On Input (Level A) | Supports | Changing a setting doesn't move the person elsewhere. The designer saves on its own and says so ("Saved"). Choosing "Sign in" on an OAuth connection opens the sign-in server's page only when the person presses the button. |
| 3.3.1 Error Identification (Level A) | Supports | Form errors are shown in text with role="alert". Flow problems are listed in text on each step and in a problems list. |
| 3.3.2 Labels or Instructions (Level A) | Supports | Every field has a visible label. Help text explains formats (for example the fixed-width column spec and cron schedules). |
| 4.1.1 Parsing (Level A) | Supports | Rendered by React; axe reports no duplicate-ID or parsing issues. (WCAG 2.2 retires this criterion.) |
| 4.1.2 Name, Role, Value (Level A) | Supports | Standard controls use native elements; switches use role="switch", tabs use role="tab" with aria-selected, toggles use aria-pressed or aria-expanded. Canvas steps are focusable groups with role description "step" and a name that gives kind, name, summary, inputs, outputs, problems and last test result; wires are named "Wire from … to …". Wire handles are not exposed to assistive technology; the Outline and Wires sections are the accessible way to wire. Confirmed in the accessibility tree; not yet with a screen reader. |
Table 2: Success Criteria, Level AA
| Criteria | Conformance Level | Remarks and Explanations |
|---|---|---|
| 1.2.4 Captions (Live) (Level AA) | Not Applicable | No live media. |
| 1.2.5 Audio Description (Prerecorded) (Level AA) | Not Applicable | No video. |
| 1.3.4 Orientation (Level AA) | Supports | Works in portrait and landscape. The designer is meant for larger screens but is not locked to one orientation. |
| 1.3.5 Identify Input Purpose (Level AA) | Supports | Sign-in fields use autocomplete (username, current-password, one-time-code). Secret fields use new-password so browsers don't fill them. Other fields are not about the user. |
| 1.4.3 Contrast (Minimum) (Level AA) | Supports | axe reports no contrast failures on the pages checked. Brand-colored connector badges are darkened automatically to reach 4.5:1. |
| 1.4.4 Resize Text (Level AA) | Supports | Text scales with browser zoom up to 200% without loss of content. The designer canvas has its own zoom buttons. |
| 1.4.5 Images of Text (Level AA) | Supports | No images of text, other than the logo. |
| 1.4.10 Reflow (Level AA) | Supports | At 320 CSS pixels, pages stack into one column with no sideways scrolling, and data tables scroll inside their own box (an allowed exception). In the designer at 760 pixels or less the Outline is the default view, the steps list and step settings open as drawers, and the data inspector stacks; nothing needs sideways scrolling except the canvas itself, which is two-dimensional content (an allowed exception) and has the Outline as a one-column alternative. |
| 1.4.11 Non-text Contrast (Level AA) | Supports | Form field borders, focus outlines and buttons meet 3:1. On the canvas, wires and wire handles are #62757d (4.4:1 on the canvas background), wires that carried no records are dashed #80869a (3.3:1), step borders are #80869a (3.3:1), the selected step border is #946b16 (4.4:1) and a step with a problem has a red border (5.4:1). The grid dots are decorative. While dragging a new wire, the handle under the pointer turns brass (below 3:1); this is a hover hint on top of the handle, which stays visible. |
| 1.4.12 Text Spacing (Level AA) | Supports | Layouts use flexible sizes. No clipped text was seen with increased spacing in spot checks. Not tested with a text-spacing bookmarklet on every page. |
| 1.4.13 Content on Hover or Focus (Level AA) | Supports | Hover hints use the browser's native title tooltips. No custom pop-ups appear on hover. |
| 2.4.5 Multiple Ways (Level AA) | Supports | Navigation menu, overview links, search on Flows and in the connector picker, and links from runs and connections to their flows. |
| 2.4.6 Headings and Labels (Level AA) | Supports | Pages and sections have descriptive headings, and fields have descriptive labels. |
| 2.4.7 Focus Visible (Level AA) | Supports | A 2px focus outline on buttons, links, palette items and canvas steps. Form fields show a blue border and a 3px focus ring. |
| 3.1.2 Language of Parts (Level AA) | Supports | All content is English. Record values from other systems are shown as data. |
| 3.2.3 Consistent Navigation (Level AA) | Supports | The same sidebar on every page. |
| 3.2.4 Consistent Identification (Level AA) | Supports | The same icons and labels for the same actions throughout (Test, Delete, Run now, Preview). |
| 3.3.3 Error Suggestion (Level AA) | Supports | Errors say what to do in plain language (for example "Give the fixed-width columns, like …", "Sign in again", "Wire one source into input A and the other into input B"). |
| 3.3.4 Error Prevention (Legal, Financial, Data) (Level AA) | Supports | Deleting a connection or flow asks for confirmation. Turning on a flow is blocked while it has problems. Approvals let people check records before a flow continues. Version history can restore earlier versions. |
| 4.1.3 Status Messages (Level AA) | Supports | Toasts are announced through a role="status" live region. The designer's save state is aria-live="polite". Changes made in the Outline, the Wires sections and the steps list (step added, moved, renamed or deleted, wire added or removed, preview finished) are announced through a polite live region without moving focus away. |
Table 3: Success Criteria, Level AAA
Not evaluated.
Revised Section 508 Report and EN 301 549
Not included in this edition. The WCAG tables above are the basis for both. Request the 508 or EN 301 549 edition if a procurement needs it.
Known Issues and Plans
- Screen reader testing by people with NVDA and JAWS (Windows) and VoiceOver (Mac and iPad) of the designer canvas and Outline, the connection form, run detail and Settings. Not done yet. It is the most important next step: the version 0.6 Supports ratings for 1.3.1, 2.1.1 and 4.1.2 rest on the accessibility tree and scripted keyboard tests, and a screen reader test may change them. Planned before the first city go-live; an independent audit is recommended.
- Reordering in the Outline works for steps in a simple chain (one wire in, one out). Steps with two inputs (Reconcile, Join) or several outputs (If/else) are rewired with their Wires section instead.
- The Promote dialog was not part of the axe run (no Production link in the test workspace).
- WCAG 2.2 review: target size (2.5.8), dragging movements (2.5.7: the Wires section and palette press are the single-pointer alternatives), focus not obscured (2.4.11), accessible authentication (3.3.8).
Legal Disclaimer
This report describes SentraBridge's accessibility as assessed on the report date by the SentraBridge team. It is not a guarantee, and it will change as the product changes. "VPAT" is a registered service mark of the Information Technology Industry Council (ITI).