The browser suite never applies WCAG's text-spacing overrides or 200% zoom (SC 1.4.12) #278
Labels
No labels
accessibility
authentication
breaking change
bug
documentation
enhancement
interface
internationalisation
observability
security
tier
1
tier
2
tier
3
tier/4
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Postulo/postulo#278
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
From an accessibility read of the tests on 2026-09-18. The suite is strong where it looks: axe in both themes with heading order on, measured 24px targets, reflow at 320 pixels in three languages, focus after every swap, right-to-left, the forced-colours outline on fields. There is one AA criterion it never exercises.
SC 1.4.12 (text spacing, AA) says a page must lose nothing when a reader overrides line height to 1.5, paragraph spacing to twice the font size, letter spacing to 0.12em and word spacing to 0.16em, which is the standard override low-vision and dyslexic readers apply. Nothing tests it, and the stylesheet has the shapes that break under it: forty uses of
truncate,whitespace-nowrapon labels, fixed heights on controls,tracking-wideon 12px headers,.chip-text. The 320-pixel reflow pass approximates 400% zoom, but a zoom pass at 200% on a 1280 window is not the same as spacing overrides, and neither is run.Proposal: one browser test over
signed_in_pathsthat injects the overrideand asserts, for every text-bearing element, that
scrollWidthandscrollHeightdo not exceed the client box whereoverflowis hidden or clipped, and that no two text boxes overlap: the same measure-in-the-browser shape astests/e2e/test_target_size.py. A second case at 200% zoom on a 1280 window (a 640-pixel viewport at device scale 2). The list oftruncateuses that fail is the list of places to wrap or clamp instead; some are named in the companion issue on tooltips and truncation.Cheap to add beside it:
page.emulate_media(reduced_motion="reduce")asserting the global rule atassets/css/app.css:784-793really zeroes the two transitions, so the accessibility page's "the little animation there is respects prefers-reduced-motion" stays a tested sentence.