The dashboard arrange page scrolls sideways at 320 pixels, and in five languages on any machine #165
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#165
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?
Observation
The
browserjob fails the reflow check:Why it passed locally
I measured the arrange page at 320px with the same fixture. On the Windows machine this work was
done on, the widest row is Where things stand, whose button reads "Take Where things stand
off". Its action group is 280px wide and ends at 313px: 7px of slack. The CI runner draws
the same text 15px wider (295px), which puts it 8px over.
The difference is fonts.
--font-sansnames"Inter var"first, but no Inter is shipped — thereis no
@font-faceand no font file — so every width in the interface is whatever the viewer'ssystem substitutes: Segoe UI on Windows, a wider fallback on the Linux runner. #74 is the open
issue about declared-but-undrawn fonts, and this is one more reason it matters.
It is not a font quirk
The reflow suite checks English only. I set the account's interface language and measured the
same page on the machine where English passes:
Two things overflow, and they have the same shape: a
shrink-0container holding a buttonwhose text includes a translated widget name, so neither the container nor the words can give
way.
<div class="flex shrink-0 items-center gap-2">oneach chosen row. It came with the four directions (#124,
23ac44d7).<form method="post" class="shrink-0">. Thisone is older (#44,
dae75d8a), so the released versions overflow in German and Greek too.An arrange page that makes a German reader scroll sideways on a phone fails SC 1.4.10 whatever
fonts CI happens to have.
Found while measuring: a widget with no name
The Suggestions widget is registered with
label=""on purpose, because it draws its ownheading on the dashboard. On the arrange page, that empty label is used in three places that need
a name:
suggestions, untranslated;using a screen reader hears four buttons that do not say what they move — the thing #124 set out
to guarantee.
It belongs in this issue because it constrains the fix. The obvious way to shorten the row is a
visible "Take off" with the widget's name in the accessible name only, and that needs every
widget to have a name.
What fixing it is
shrink-0from both containersand let the action group
flex-wrap. Then a long name in a long language moves the button ontothe next line instead of past the edge. Any fix that depends on the words fitting breaks with
the next translation.
nameseparate from the heading, ora required
labelthat the dashboard is free to hide — and use it for the visible name, theTake and Add buttons, and the four arrows.
row.widget.label|default:row.widget.keyshows acode to people and should go.
languages — Greek and German, on this evidence — is what would have caught this on any machine.
The full walk takes about a minute per language, so a subset of pages in a subset of languages
rather than the full matrix.
Worth being careful about
closer to what a Linux or Android reader sees than Segoe UI is.
shrink them below 24×24.
Classification
Bug, accessibility. Blocks CI, and so the 0.3.0 release.
Done in
e7e1540c. The browser job is green on it (run 273) and on the latest run (276), walks in Greek and German included.The fix, and where else it applied
As proposed: let the groups wrap rather than tighten the words. The
shrink-0groups areflex-wrap, and the words beside them claim twelve rem before anything may sit next to them (grow basis-48). On a phone the buttons go underneath; on a wide screen nothing moves. I checked the arrange, account and industries pages at desktop width by screenshot.Measuring with a font as wide as the runner's (Verdana forced, ≈ DejaVu Sans) found the same row in more places. All got the same fix:
A second failure the check could not see
Looking at the result showed words squeezed out of their own space where the buttons did fit: a column one word wide on the arrange page, with the longest written across the arrows; 14 px for a career entry in Greek; 6 px for each built-in plugin's description on Plugins, in English. Nothing scrolls, so nothing failed. The walk now also asks every box that holds text whether its words fit inside it (
SPILLSintests/e2e/test_reflow.py). It usescheckVisibility, so the inside of a closed<details>is not measured.Walking in Greek with the catalogues compiled found two more:
overflow-x-autobox. It is the #113 trap, whichscroll-xexists to prevent. The report had the same. Both usescroll-x, and the template lint now refuses a bare scroll utility.text-2xlis 300 px in a 288 px column. Headings getoverflow-wrap: break-word, which changes nothing for a heading whose words fit.The log file's path gets
wrap-anywhere, as the plugins page's path already had.The widget with no name
Widgethas anamefor where a widget is referred to rather than headed, andcalledis what every sentence about one says. The arrange page, the Take … off and Add … buttons, the four arrows, the line after a move and the new-widget notice all use it.register()refuses a widget with neither a label nor a name. The suggestions widget is Suggestions from plugins, filled in the 39 European catalogues and flaggeddraft. I kept the visible Take … off wording with the full name: once the group wraps, it has room.Your "worth being careful about" points
Tests
shrink-0.Found while here, and filed
/applications/suggestions/,/jobs/captures/and/documents/cvs/empty. With content, the suggestions page runs off a phone in English (45 px) and a CV's page in Greek and German. Worse, 35 of the 104 pages the suite claims to check are opened by no test.