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

IgniteUI / igniteui-webcomponents / 31720727387
98%

Build:
DEFAULT BRANCH: master
Ran 13 Aug 2026 04:29PM UTC
Jobs 1
Files 236
Run time 1min
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

13 Aug 2026 04:26PM UTC coverage: 98.335% (-0.03%) from 98.365%
31720727387

push

github

web-flow
refactor(a11y): project composite ARIA onto the native editors (#2327)

* refactor(a11y): project composite ARIA onto the native editors

Shadow DOM breaks two things ARIA depends on: the identity of the
focused element (delegated focus lands on the native editor inside the
input's shadow root, not the host holding the semantics) and IDREF
resolution (a reference cannot cross a shadow boundary). Select, combo
and the date pickers each worked around this ad hoc, and select's
combobox semantics were published on an element assistive technology
never reports on.

Replace the per-component workarounds with shared infrastructure:

- ARIA projection controller pair (`addAriaProjector`/`addAriaTarget`):
  composite hosts declaratively project role, popup state and relations
  onto the native editor of their inner input component. Relations
  travel as ARIA element references, which resolve across shadow
  boundaries, and the resolved bindings are applied with a single
  `ariaBindings()` element-expression directive. References are
  re-asserted every render — the browser drops them when assigned to a
  detached element (lit's first render commits inside the template
  fragment).
- External label forwarding is folded into the same channel, replacing
  three copy-pasted implementations; textarea previously did not
  forward host labels at all.
- `internalsOf()` registry lookup so internal code reaches a
  component's internals controller without `@hidden @internal` public
  members; `_ariaProperties`, `_labelElements` and `_labelTarget` are
  deleted.
- `reflectRole` option on the internals controller centralizes the
  "axe only reads content attributes" workaround, removing the seven
  manual `this.role` assignments.
- Both date pickers now project `describedBy` onto their editors,
  fixing a dead helper-text association. Combo's wrapper-level
  attributes move onto the native input (`aria-owns` dropped,
  `aria-haspopup="listbox"` added) and its clear icon g... (continued)

6805 of 7141 branches covered (95.29%)

Branch coverage included in aggregate %.

554 of 574 new or added lines in 21 files covered. (96.52%)

48236 of 48832 relevant lines covered (98.78%)

1451.5 hits per line

Uncovered Changes

Lines Coverage ∆ File
20
93.8
src/internals/controllers/aria-projection.ts
Jobs
ID Job ID Ran Files Coverage
1 31720727387.1 13 Aug 2026 04:29PM UTC 236
98.33
GitHub Action Run
Source Files on build 31720727387
  • Tree
  • List 236
  • Changed 22
  • Source Changed 20
  • Coverage Changed 22
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #31720727387
  • d5e29f53 on github
  • Prev Build on master (#31701023658)
  • Next Build on master (#31786003105)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc