What we measured, and when
On 2026-09-09 we ran an automated pass over 23 public pages of getimportready.com, against the response a reader actually receives rather than against our source. That distinction is not pedantry: this site once served no stylesheet at all for weeks, and a check reading the repository would have reported it healthy the entire time.
The pass is pnpm audit:site, it is in the repository, and it writes the figures on this page. Nothing here was typed by hand — if the audit moves and this page does not, that is a bug rather than a difference of opinion.
23 of those 23 pages returned no finding of any kind.
Exactly what was checked
Each row is one check, the success criterion it is evidence for, and the number of pages it passed on. A check is listed whether or not it is flattering, and the denominator is always the same 23.
- 23 of 23
- The document declares its language. 3.1.1 Language of Page
- 23 of 23
- Exactly one main landmark. 1.3.1 Info and Relationships
- 23 of 23
- A banner landmark. 1.3.1 Info and Relationships
- 23 of 23
- A skip link that jumps past the navigation. 2.4.1 Bypass Blocks
- 23 of 23
- Exactly one first-level heading. 2.4.6 Headings and Labels
- 23 of 23
- No skipped heading level anywhere in the document. 1.3.1 Info and Relationships
- 23 of 23
- No positive tabindex, so the focus order is the document order. 2.4.3 Focus Order
- 23 of 23
- Every horizontally scrollable region is reachable by keyboard. 2.1.1 Keyboard
- 23 of 23
- No third-party script or stylesheet on the page. not a WCAG criterion — a privacy and performance fact
Colour contrast
Every colour pair the stylesheet declares is computed in both themes and in both surface scopes — 32 pairs, from the 65,240-byte stylesheet as served. The threshold is 4.5:1, which is AA for body text, and it is held there rather than lowered to whatever currently passes.
- 4.55:1
- The lowest text pair in root light — --muted on --bg-sunk.
- 5.46:1
- The lowest text pair in root dark — --muted on --bg-sunk.
- 4.72:1
- The lowest text pair in surface light — --muted on --bg-sunk.
- 5.64:1
- The lowest text pair in surface dark — --muted on --bg-sunk.
These are floors, not averages. An average would hide the one pair that fails, which is the only pair that matters. A small number of non-text pairs — borders, rules, focus rings, icon strokes — are exempt from the 4.5:1 threshold and excluded from the figures above, because quoting a ratio the threshold was never applied to would be wrong in whichever direction it happened to land.
The parts behind a sign-in
The audit above can only fetch public pages. The report and the review grid sit behind an upload, so their semantics are verified by tests in our build instead, and that is a weaker kind of evidence — it confirms the markup is what we intended, not that a reader received it.
- The row-by-row diff is a grid with counted rows and columns, and every row carries its absolute position in the file rather than its position in the visible window. On a virtualised grid those two numbers differ, and announcing the wrong one tells a screen-reader user they are on row four of a ten-thousand-row catalogue.
- The scrolling viewport is focusable and handles arrow keys, so the grid is not mouse-only.
- Every outcome a merchant must not miss — the report finishing, an export succeeding, either one failing — is announced rather than only drawn.
- Reduced motion is honoured through a universal selector, so anything added later is covered by default rather than by remembering.
What we have not done
This is the part of the page that makes the rest of it worth reading.
No screen reader has been driven over this product. The semantics were read off the markup; the behaviour was never observed. That is the step which finds what markup review structurally cannot, and until somebody has run a real Pre-Flight Report and a real diff under a screen reader, every sentence above is a statement about our HTML rather than about anyone’s experience of it.
No manual tab-order walk. We verified that no element claims a positive tab index and that focus is visible everywhere. We did not walk the actual sequence through the mapping screen and the diff by hand, and a document-order tab sequence can still be a bad one.
One browser. The measurements come from Chrome. Safari and Firefox are untested, and neither is a rounding error for assistive technology.
If something here is wrong
Write to contact@getimportready.com and describe what happened, with your assistive technology and browser if you know them. A person reads that inbox, because there is only a person.
A barrier that stops you finishing a task is treated as a defect and not as a feature request. If we cannot fix it quickly we will say so and say when, which is the same commitment the security page makes about anything else we get wrong.
Last updated 9 September 2026 · last reviewed 9 September 2026 against the running product. The figures above carry their own date, 2026-09-09, set by the run that produced them rather than by anybody’s memory. If something here stops being true, it changes here first.