wrolpi/app/src
Roland 72df29ee85 test: act on review — and one of the seven turned out to be undemonstrable
Six real fixes and one honest retraction.

The control is now a SIBLING of the heading inside a flex row, not a child of
it.  Inside the `<h3>` it joined the heading's accessible name, so screen reader
heading navigation announced "Root CA Certificate Help".  The row is what keeps
them on one line, and it is only rendered when there is something to sit beside,
so the markup for the other 46 call sites is unchanged.

`style` now lands on the wrapper.  It used to reach the outer div; going through
Header put it on the inner heading, where a margin sets space INSIDE the wrapper
and only worked at all through margin collapse -- which stops the moment the
wrapper gains padding or a border.  Status's "Drive Bandwidth" is the live case:
verified 16px on the block, 0 on the h2.  Text properties still arrive, because
colour and text-align inherit; the `color` PROP stays on the heading.

A `<label>` only when `for_` names a field.  Several call sites pass an
InfoHeader as the `label` prop of InputForm/ToggleForm, which wraps it in a
label of its own -- an unconditional one nested labels, which is invalid and
makes clicking the text ambiguous.  Verified: zero `label label` on
/videos/settings, where "Video Resolutions" keeps its label and "Video File
Format" no longer has one.

The help controls carried `iconStyle: {margin: '0.5em'}`, which separated a
free-floating sibling and, inside the row, added to the gap on every side.
Zeroed; the row's gap is the spacing.

The browser test mounted a plain Button in an `after` slot rather than a real
HelpHeader, so the default icon chrome above was exactly what it could not see.
It mounts the real wrapper now.  Two of my assertions were also too weak to
catch what they claimed: the gap was measured to `.wrolpi-header-after`, a flex
container whose own rect does not move when a child gains a margin, so it had to
measure the button; and the squeeze case used a title of ordinary words, which
simply wraps and never puts the row under pressure.

Renamed the suites -- "keeps the icon on its own line" read as the opposite of
the fix.

The retraction: `flex-shrink: 0` is declared but has NO test. Three attempts
could not find a width where removing it changes what is painted -- the row's
only other item is a heading, and its automatic minimum size absorbs the
pressure; the help control is an ActionIcon with a min-width it will not go
below either.  The declaration stays as a statement of intent, with a comment
saying it is unproven, rather than a green test that does not discriminate.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-01 19:04:59 -06:00
..
api controller: VNC toggle, gated on the Desktop running 2026-07-29 18:10:05 -06:00
components test: act on review — and one of the seven turned out to be undemonstrable 2026-08-01 19:04:59 -06:00
contexts test: one place for fixtures, real providers instead of mocked context modules 2026-07-30 16:44:40 -06:00
hooks build: uninstall Semantic UI 2026-07-30 14:50:47 -06:00
themes test: act on review — and correct an overstated claim about the toast bug 2026-08-01 17:54:22 -06:00
types ui: the last Semantic UI file, and the stylesheet with it 2026-07-30 13:41:05 -06:00
api.js ui: thirty-five files off Semantic, leaving fifteen 2026-07-30 12:54:24 -06:00
App.css ui: headings open their section, and keep their help icon on one line 2026-08-01 19:04:59 -06:00
App.js ui: the last Semantic UI file, and the stylesheet with it 2026-07-30 13:41:05 -06:00
DashboardPage.js ui: thirty-five files off Semantic, leaving fifteen 2026-07-30 12:54:24 -06:00
DashboardPage.test.js ui: thirty-five files off Semantic, leaving fifteen 2026-07-30 12:54:24 -06:00
Events.js ui: thirty-five files off Semantic, leaving fifteen 2026-07-30 12:54:24 -06:00
index.css ui: the last Semantic UI file, and the stylesheet with it 2026-07-30 13:41:05 -06:00
index.js Fixing changes before merge. 2023-02-08 21:18:51 -07:00
logo.svg Renaming examples to avoid grouping of pdf with ebooks. Reworking URLs for media files to avoid escaping url safe characters. 2023-03-29 13:46:39 -06:00
reportWebVitals.js Renaming examples to avoid grouping of pdf with ebooks. Reworking URLs for media files to avoid escaping url safe characters. 2023-03-29 13:46:39 -06:00
semantic-baseline.json ui: the last Semantic UI file, and the stylesheet with it 2026-07-30 13:41:05 -06:00
semantic-baseline.test.js build: uninstall Semantic UI 2026-07-30 14:50:47 -06:00
setupTests.js ui: Common.js and thirteen more files off Semantic 2026-07-30 11:55:39 -06:00
Tags.cy.js Video downloads have many more options. Downloads are migrated. 2024-11-28 09:48:57 -07:00
Tags.js ui: map the twelve icon names that were rendering as question marks 2026-08-01 16:30:20 -06:00
Tags.test.js ui: tags look like tags, and stay readable in every theme 2026-08-01 14:35:35 -06:00
test-fixtures.js test: check declared types, not just field names, and fix the three that were wrong 2026-07-30 17:34:36 -06:00
test-fixtures.test.js test: one place for fixtures, real providers instead of mocked context modules 2026-07-30 16:44:40 -06:00
test-utils.js test: the theme drives the colour scheme, and mockModule takes the module 2026-07-30 16:44:40 -06:00
test-utils.test.js test: the theme drives the colour scheme, and mockModule takes the module 2026-07-30 16:44:40 -06:00