fix(timeline): give the event-card letter count a screen-reader label
The bare "· {count}" spans in both the same-year and cross-year headers
announced as "· 2" with no context. Each now pairs the aria-hidden visible
count with an sr-only "{count} Briefe" via a new Paraglide key
(timeline_cluster_letter_count, present in de/en/es). Fixes review
finding #6 (count half).
Refs #850
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -108,6 +108,16 @@ describe('EventCluster — contained event card (#850)', () => {
|
||||
expect(srOnly?.textContent).toBe(m.timeline_letter_glyph_label());
|
||||
});
|
||||
|
||||
it('gives the letter count an sr-only "{count} Briefe" label so "· 2" is not announced bare (finding #6)', () => {
|
||||
render(EventCluster, { letters: letters(2), title: 'Briefe von der Front' });
|
||||
const count = document.querySelector('[data-testid="event-count"]') as HTMLElement;
|
||||
// the visible "· 2" stays aria-hidden; the sr-only sibling carries the meaning
|
||||
expect(count.querySelector('[aria-hidden="true"]')?.textContent).toContain('· 2');
|
||||
expect(count.querySelector('.sr-only')?.textContent).toBe(
|
||||
m.timeline_cluster_letter_count({ count: 2 })
|
||||
);
|
||||
});
|
||||
|
||||
it('renders an HTML-bearing event title verbatim as text, never as markup (REQ-010)', () => {
|
||||
render(EventCluster, {
|
||||
letters: letters(1),
|
||||
|
||||
Reference in New Issue
Block a user