• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

agama-project / agama / 28667439712
83%

Build:
DEFAULT BRANCH: master
Ran 03 Jul 2026 02:44PM UTC
Jobs 3
Files 1046
Run time 3min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

03 Jul 2026 02:40PM UTC coverage: 83.235% (+0.03%) from 83.204%
28667439712

push

github

web-flow
feat(web): allow disambiguate  form fields accessible name (#3685)

## Motivation

As a follow-up to #3684, which this PR actually supersedes, adds a
`useFieldLabel` hook that lets any form field adjust its accessible name
in a flexible way, reusing existing text nodes as a prefix for its
label, among other options, to disambiguate fields that share a generic
label without introducing new translatable strings.

The previous PR only fixed two "Mode" dropdowns on the System page that
shared the accessible name "Mode", making them indistinguishable to
screen readers, voice control, and automated tests. The fix lived only
in `DropdownField`, despite the same collision happening elsewhere. On
the Authentication page, the administrator and root sections each render
"Password", "Password confirmation" and "SSH Public Keys", so those
names are ambiguous across sections. Changing the visible labels is not
an option (they would read as redundant next to the section legend, and
also Agama is in a translation freeze at this moment), so the
disambiguation has to happen in the accessible name.

This PR generalizes the one-off approach into a reusable hook and rolls
it out to every field that renders a label.

## Main changes summary

### `useFieldLabel` hook

Resolves a field's accessible name from three independent options:

- `aria-label`: a literal name (consumer owns it).
- `aria-labelledby`: referenced element ids (consumer owns it).
- `labelPrefixedBy`: one or more element ids whose text is placed before
the field's own label, producing a name like "Hostname Mode". Unlike
`aria-labelledby`, the visible label is kept in the name (WCAG 2.5.3).

An explicit `aria-labelledby` wins over `labelPrefixedBy`. With no
options the hook is a no-op and the control keeps the label association
`FormGroup` already provides.

### Field rollout

All label-bearing fields accept the options: `TextField`, `MaskedField`,
`NumberField`, `EmailField`, `SuggestionsTextField`, `Dropdo... (continued)

4891 of 6806 branches covered (71.86%)

Branch coverage included in aggregate %.

45 of 45 new or added lines in 15 files covered. (100.0%)

23 existing lines in 5 files now uncovered.

25539 of 29753 relevant lines covered (85.84%)

124.14 hits per line

Coverage Regressions

Lines Coverage ∆ File
17
82.87
0.29% web/web/src/components/form/SearchableSelectField.tsx
2
88.89
0.43% web/web/src/components/users/authentication-form/RootAuthFields.tsx
2
98.43
0.06% web/web/src/components/form/ArrayField.tsx
1
97.22
0.0% web/web/src/components/network/connection-form/IpFields.tsx
1
97.44
0.07% web/web/src/components/users/authentication-form/FirstUserFields.tsx
Subprojects
ID Flag name Job ID Ran Files Coverage
3 web 28667439712.3 03 Jul 2026 02:44PM UTC 727
80.17
GitHub Action Run
1 rust 19474749743.1 18 Nov 2025 05:18PM UTC 185
22.45
GitHub Action Run
3 service 28653966105.3 03 Jul 2026 10:16AM UTC 319
92.37
GitHub Action Run
Source Files on build 28667439712
  • Tree
  • List 1046
  • Changed 30
  • Source Changed 15
  • Coverage Changed 30
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #28667439712
  • e13ed410 on github
  • Prev Build on master (#28653966105)
  • Next Build on master (#28671708926)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc