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

agama-project / agama / 28454854079
83%

Build:
DEFAULT BRANCH: master
Ran 30 Jun 2026 03:14PM UTC
Jobs 3
Files 1038
Run time 4min
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

30 Jun 2026 03:10PM UTC coverage: 83.086% (+0.003%) from 83.083%
28454854079

push

github

web-flow
fix(web): resolve duplicate Mode labels in system page a11y tree (#3684)

## Summary

- Fix duplicate "Mode" accessible names in SystemPage
- Use `aria-labelledby` to create composite accessible names without
adding translations
- Result: "Mode" labels now have unique accessible names ("Hostname
Mode" and "Time Synchronization Servers Mode")

## Context

@jknphy reported that Puppeteer automated tests were finding two
elements when trying to select the "Mode" dropdown in SystemPage. The
issue was that both the Hostname and NTP sections had dropdowns with the
same accessible name "Mode", making them indistinguishable to:

- Screen reader navigation by form controls
- Voice control users ("click Mode" → ambiguous)
- Automated testing tools (Puppeteer)

Changing visible labels is not an option since they could sound
redundant with the fieldset legend. Moreover, at this moment Agama is
currently in string freeze phase.

## Solution

The fix leverages `aria-labelledby` to create composite accessible names
by combining parent context (fieldset legends) with field labels:

**Changes to components:**

1. **Fieldset**: Added optional `legendId` prop
   - Allows fieldset legends to be referenced by descendant elements
   - When provided, adds `id` attribute to the `<legend>` element

2. **DropdownField**: Added optional `additionalLabelId` prop
   - Wraps label in `<span id="{fieldName}-label">` for referenceability
- When `additionalLabelId` is provided, combines it with the label ID:
`aria-labelledby="{additionalLabelId} {fieldName}-label"`
   - When not provided, works as before (no aria-labelledby)

3. **HostnameFields & NtpFields**: Wire up the legend and label IDs
   - Set `legendId` on Fieldset
   - Pass same ID as `additionalLabelId` to DropdownField

**Result:**
- Visible labels: "Mode" (unchanged - no new translations needed)
- Accessible names:
  - Hostname dropdown: "Hostname Mode"
  - NTP dropdown: "Time Synchronization Servers Mode"
- Both dropdow... (continued)

4879 of 6799 branches covered (71.76%)

Branch coverage included in aggregate %.

3 of 3 new or added lines in 2 files covered. (100.0%)

25425 of 29674 relevant lines covered (85.68%)

124.12 hits per line

Subprojects
ID Flag name Job ID Ran Files Coverage
3 web 28454854079.3 30 Jun 2026 03:14PM UTC 719
79.96
GitHub Action Run
1 rust 19474749743.1 18 Nov 2025 05:18PM UTC 185
22.45
GitHub Action Run
3 service 28025224739.3 23 Jun 2026 12:13PM UTC 319
92.33
GitHub Action Run
Source Files on build 28454854079
  • Tree
  • List 1038
  • Changed 14
  • Source Changed 10
  • Coverage Changed 13
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #28454854079
  • c6f21087 on github
  • Prev Build on master (#28354874181)
  • 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