Product
On this page · 4 sections
Accessibility
Scada Studio is measured against WCAG 2.2 level AA with a script in the repository, and this page is written from what that script found. Nothing here is a claim without a figure behind it: npm run studio:a11y reproduces every line, and writes studio/a11y/report.json.
Three surfaces are measured and they are not the same product:
- The designer - the tool an engineer builds with. A professional desktop editor: a pointer and a wide screen are assumed, and its canvas is a drawing surface.
- A published app - the screen an operator uses at the bench or on the line. This is the surface an accessibility requirement in a tender is usually about.
- The documentation - these pages.
The components on a panel come from the Smart.Industrial library, which has its own conformance report per component (roles, keyboard, contrast, a VPAT); the conformance page of the library covers them. This page covers what Scada Studio puts around them.
What is supported
The surfaces
| Surface | What it holds |
|---|---|
| The designer | 318 controls the keyboard reaches, 26 stops in a walk of the chrome, 6 dialogs, smallest target 24 px (1 the browser draws itself) |
| The designer's themes | bench (158 texts, worst 5.68:1), industrial (159 texts, worst 5.71:1), industrial-dark (159 texts, worst 5.13:1) |
| A published app | 17 controls, 19 texts, reflows to 320 px |
| The documentation | one first-level heading, no skipped heading levels, every link named, every text over the contrast minimum |
The measurement of 2026-10-01
| What was measured | Result | The figure |
|---|---|---|
| The designer says its language and names the document | Passes | lang "en" · Scada Studio |
| The designer has one main region and every region is named | Passes | header "Toolbar" · aside "Components" · main "Workspace" · aside "Inspector" · footer "Data sources" |
| A keyboard user can skip to the canvas | Passes | skip link present |
| Every control the keyboard reaches in the designer has a name | Passes | 317 controls |
| The palette pictures are marked decorative or named | Passes | 0 of 54 without alt |
| The keyboard walks the designer chrome without a trap | Passes | 26 stops, 26 distinct: Skip to the workspace → Project name → Panel → Diagram → Alarms → System … |
| Every stop of that walk shows where the focus is | Passes | 26 stops, indicators outline |
| The keyboard never goes off screen | Passes | |
| Every control the keyboard reaches is at least 24 by 24 pixels | Passes | smallest 24 px, exceptions: 1 |
| Every dialog is named, takes the focus, and gives it back | Passes | gridDialog · licenceDialog · helpDialog · pageDialog · sourceDialog · publishDialog |
| The designer chrome on the bench theme meets the contrast minimum | Passes | 158 texts, worst 5.68:1 |
| The designer chrome on the industrial theme meets the contrast minimum | Passes | 159 texts, worst 5.71:1 |
| The designer chrome on the industrial-dark theme meets the contrast minimum | Passes | 159 texts, worst 5.13:1 |
| A component on the canvas can be focused and named | Passes | {"focusable":true,"tabindex":"0","role":"group","selected":false,"name":"title (heading)"} |
| The designer honours a reduced-motion setting | Passes | a reduced-motion block is in studio.css |
| A published app names its document, has one main region and a heading | Passes | Signal generator - Scada Studio · H2 Signal Generator |
| Every control of a published app has a name | Passes | 17 controls |
| The text of a published app meets the contrast minimum | Passes | 19 texts, worst 5.17:1 |
| A published app reflows to a 320-pixel viewport without sideways scrolling | Passes | 320 px wide in 320 px, 13 components |
| The documentation has one first-level heading, no skipped levels and named links | Passes | h1 1, skipped levels 0, unnamed links 0 |
| The documentation meets the contrast minimum | Passes | every text passes |
| No page errors while measuring | Passes |
_22 of 22 checks passed on 2026-10-01, Scada Studio 1.18.0._
How it is measured
The method is the component library's, so the two reports can be read together.
- Names are computed from the element the way a browser computes an accessible name - aria-labelledby, aria-label, a <label>, alt, the text of a button or a link, title - never assumed from the code that wrote it.
- Contrast resolves the computed colour of each text node and the first opaque background behind it, blends translucent colours, and takes the WCAG ratio. Text of 24 px, or 18.66 px bold, needs 3:1; everything else needs 4.5:1.
- Focus is reached with real Tab presses, because element.focus() does not reliably match :focus-visible. The indicator is the difference between the computed style of the element with the keyboard on it and the same element with the focus away.
- Targets are measured as the area a pointer can hit: a control inside its label is as big as the label. Controls the browser draws itself are the user agent's, as WCAG 2.2 allows.
- Reflow loads a published app in a 320 px viewport and fails it if the page scrolls sideways.
Three kinds of text are counted but not judged by the colour walk, and the report says so for each: text inside a drawing (its background is a shape fill, not a background colour), text over a gradient or an image, and the evaluation badge that the unlicensed component bundle injects - a licensed build has none.
What is not supported
- The designer does not reflow to a narrow screen. It is laid out for a wide one: a toolbar, a palette, a canvas, an inspector and the sources at the bottom. It keeps every control reachable down to 1024 px and no lower. Published apps reflow to 320 px.
- The canvas is a drawing surface. A component can be focused, is announced with its own label, and moves and resizes with the arrow keys, but laying a panel out by keyboard alone is slower than with a pointer, and wiring a diagram needs one: wires are drawn between terminals, and there is no keyboard equivalent yet. Building a panel is therefore partially supported; running one is supported.
- No formal VPAT for Scada Studio yet. The figures here are the evidence a VPAT would carry, and a VPAT will follow the first release that a customer's procurement asks for one. The component library has one today.
- Screen readers are not part of the automated measurement. The report measures what a reader is given - roles, names, landmarks, headings, focus - not how a particular reader speaks it. The designer has been walked with the keyboard only; it has not been through a formal screen-reader test with users.
If something here blocks you
Write to the support address on the support page with the surface and what it blocks. An accessibility defect is handled as a defect, at the severity of what it prevents: a screen an operator cannot read is not a cosmetic issue.