Quality: Lily Core
Lily Core is the set of components Lily is prepared to call proven. A component enters Core only when its evidence is in the repository. Today Core has no members. No candidate meets the criteria yet: the screen-reader matrix has no recorded results, so criterion (c) fails for every candidate.
What Core means
Core is drawn from the 40 interactive components an external audit would look at first: the form family, the five helper pickers, dialogs, tabs, menus, accordion, navigation, pagination, tables and the skip link. These are the candidates. A candidate becomes a member only when all three criteria below hold, and only Core members may be called proven.
The criteria
- Keyboard and ARIA-state tests in all eight libraries (Svelte, React, Vue, Angular, HTML, Web Components, Nunjucks, Blazor). A test file counts when it sends a key event and asserts an
aria-*attribute; the key event is waived for a component whose contract names no keys. - End-to-end tests in Chromium, Firefox and WebKit.
- A filled screen-reader row with a pass or minor result for each of: NVDA + Firefox, NVDA + Chrome, JAWS + Chrome, VoiceOver + Safari (macOS), VoiceOver (iOS), TalkBack + Chrome (Android).
Where the candidates stand
Keyboard and ARIA-state tests in all eight libraries: 3 of 40. End-to-end in all three browsers: 38 of 40. Screen-reader row filled: 0 of 40. All three: 0.
Why none has met them: the screen-reader matrix has 0 of 120 cells filled, because no one has yet run the components with a screen reader and recorded the result, and this project does not record results it has not observed. 17 candidates have no row in the matrix yet. The end-to-end suites run in Chromium, Firefox, WebKit.
Candidates
| Candidate | Keyboard and ARIA tests | End-to-end browsers | Screen-reader row | Core |
|---|---|---|---|---|
| form | 6 of 8 libraries | Chromium, Firefox, WebKit | 0 of 6 filled | no |
| field | 5 of 8 libraries | Chromium, Firefox, WebKit | 0 of 6 filled | no |
| label | 1 of 8 libraries | Chromium, Firefox, WebKit | no row yet | no |
| hint | 1 of 8 libraries | Chromium, Firefox, WebKit | no row yet | no |
| error-message | 1 of 8 libraries | Chromium, Firefox, WebKit | no row yet | no |
| error-summary | 0 of 8 libraries | Chromium, Firefox, WebKit | 0 of 6 filled | no |
| fieldset | 2 of 8 libraries | Chromium, Firefox, WebKit | no row yet | no |
| button | 3 of 8 libraries | Chromium, Firefox, WebKit | no row yet | no |
| text-input | 3 of 8 libraries | Chromium, Firefox, WebKit | 0 of 6 filled | no |
| email-input | 3 of 8 libraries | Chromium, Firefox, WebKit | no row yet | no |
| password-input | 0 of 8 libraries | Chromium, Firefox, WebKit | no row yet | no |
| number-input | 3 of 8 libraries | Chromium, Firefox, WebKit | no row yet | no |
| text-area-input | 0 of 8 libraries | Chromium, Firefox, WebKit | no row yet | no |
| date-input | 0 of 8 libraries | Chromium, Firefox, WebKit | 0 of 6 filled | no |
| select | 0 of 8 libraries | Chromium, Firefox, WebKit | 0 of 6 filled | no |
| checkbox-input | 0 of 8 libraries | Chromium, Firefox, WebKit | 0 of 6 filled | no |
| checkbox-group | 0 of 8 libraries | Chromium, Firefox, WebKit | no row yet | no |
| radio-input | 0 of 8 libraries | Chromium, Firefox, WebKit | 0 of 6 filled | no |
| radio-group | 0 of 8 libraries | Chromium, Firefox, WebKit | no row yet | no |
| net-promoter-score-picker | 0 of 8 libraries | Chromium, Firefox, WebKit | 0 of 6 filled | no |
| theme-picker | 8 of 8 libraries | Chromium, Firefox, WebKit | 0 of 6 filled | no |
| locale-picker | 8 of 8 libraries | Chromium, Firefox, WebKit | 0 of 6 filled | no |
| text-size-picker | 8 of 8 libraries | Chromium, Firefox, WebKit | no row yet | no |
| share-picker | 7 of 8 libraries | Chromium | 0 of 6 filled | no |
| date-time-picker | 7 of 8 libraries | none | 0 of 6 filled | no |
| dialog | 7 of 8 libraries | Chromium, Firefox, WebKit | 0 of 6 filled | no |
| alert-dialog | 2 of 8 libraries | Chromium, Firefox, WebKit | 0 of 6 filled | no |
| tab-bar | 6 of 8 libraries | Chromium, Firefox, WebKit | 0 of 6 filled | no |
| tab-bar-button | 0 of 8 libraries | Chromium, Firefox, WebKit | no row yet | no |
| tab-panel | 0 of 8 libraries | Chromium, Firefox, WebKit | no row yet | no |
| menu | 3 of 8 libraries | Chromium, Firefox, WebKit | 0 of 6 filled | no |
| menu-bar | 3 of 8 libraries | Chromium, Firefox, WebKit | no row yet | no |
| dropdown-menu | 6 of 8 libraries | Chromium, Firefox, WebKit | no row yet | no |
| context-menu | 6 of 8 libraries | Chromium, Firefox, WebKit | no row yet | no |
| accordion-nav | 3 of 8 libraries | Chromium, Firefox, WebKit | 0 of 6 filled | no |
| tree-nav | 1 of 8 libraries | Chromium, Firefox, WebKit | 0 of 6 filled | no |
| breadcrumb-nav | 0 of 8 libraries | Chromium, Firefox, WebKit | 0 of 6 filled | no |
| pagination-nav | 0 of 8 libraries | Chromium, Firefox, WebKit | 0 of 6 filled | no |
| data-table | 6 of 8 libraries | Chromium, Firefox, WebKit | 0 of 6 filled | no |
| skip-link | 0 of 8 libraries | Chromium, Firefox, WebKit | 0 of 6 filled | no |
Read the evidence
- docs/core.md: every test file and spec behind each number above.
- Accessibility conformance report: VPAT 2.5, WCAG 2.2 edition, self-assessed and not an independent audit.
- Accessibility statement: what is verified, and what is not verified by anything.
The page is generated by the same script that checks the evidence, and the project's test run fails if a Core member loses any of it.