Full-width muted band; RANGE renders a span pill (1914–1918) with a Zeitraum aria-label (REQ-009); a RANGE with no end degrades to the start year, no pill, no crash (REQ-010). World glyph is a redundant non-color cue with sr-only label (REQ-018); text uses text-ink-2 to hold AA in both themes (REQ-019). Refs #779 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
49 lines
1.7 KiB
TypeScript
49 lines
1.7 KiB
TypeScript
import { describe, it, expect, afterEach } from 'vitest';
|
||
import { cleanup, render } from 'vitest-browser-svelte';
|
||
import WorldBand from './WorldBand.svelte';
|
||
import { makeEntry } from './test-factories';
|
||
|
||
afterEach(() => cleanup());
|
||
|
||
function historical(overrides = {}) {
|
||
return makeEntry({
|
||
kind: 'EVENT',
|
||
derived: false,
|
||
type: 'HISTORICAL',
|
||
title: 'Erster Weltkrieg',
|
||
senderName: '',
|
||
receiverName: '',
|
||
precision: 'RANGE',
|
||
eventDate: '1914-01-01',
|
||
eventDateEnd: '1918-12-31',
|
||
documentId: undefined,
|
||
...overrides
|
||
});
|
||
}
|
||
|
||
describe('WorldBand', () => {
|
||
it('renders the historical title with the world glyph + "Weltgeschehen" cue (REQ-018)', () => {
|
||
render(WorldBand, { entry: historical() });
|
||
expect(document.body.textContent).toContain('Erster Weltkrieg');
|
||
const hidden = document.querySelector('[aria-hidden="true"]');
|
||
expect(hidden?.textContent).toBe('◍');
|
||
const srOnly = document.querySelector('.sr-only');
|
||
expect(srOnly?.textContent).toBe('Weltgeschehen');
|
||
});
|
||
|
||
it('renders a RANGE span pill 1914–1918 with a Zeitraum aria-label (REQ-009)', () => {
|
||
render(WorldBand, { entry: historical() });
|
||
const pill = document.querySelector('[data-testid="world-range"]');
|
||
expect(pill).not.toBeNull();
|
||
expect(pill?.textContent).toContain('1914–1918');
|
||
expect(pill?.getAttribute('aria-label')).toBe('Zeitraum: 1914 bis 1918');
|
||
});
|
||
|
||
it('degrades a RANGE with no end to the start year, no span pill, no crash (REQ-010)', () => {
|
||
render(WorldBand, { entry: historical({ eventDateEnd: undefined }) });
|
||
expect(document.querySelector('[data-testid="world-range"]')).toBeNull();
|
||
expect(document.body.textContent).toContain('Erster Weltkrieg');
|
||
expect(document.body.textContent).toContain('1914');
|
||
});
|
||
});
|