Skip to content

Commit 0025c3b

Browse files
Merge branch 'main' into feat/grace-range-validation
2 parents 235c378 + 19a485d commit 0025c3b

1 file changed

Lines changed: 45 additions & 0 deletions

File tree

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
import { describe, it, expect } from 'vitest';
2+
import { RefreshPolicy } from './refresh-policy';
3+
4+
describe('RefreshPolicy - Accessibility Standards', () => {
5+
it('validates correct aria attributes for rate limit alert modals', () => {
6+
const policy = RefreshPolicy.getInstance();
7+
const alertModal = {
8+
role: 'alert',
9+
'aria-live': 'assertive',
10+
'aria-atomic': 'true',
11+
};
12+
13+
expect(policy).toBeDefined();
14+
expect(alertModal.role).toBe('alert');
15+
expect(alertModal['aria-live']).toBe('assertive');
16+
expect(alertModal['aria-atomic']).toBe('true');
17+
});
18+
19+
it('verifies screen reader descriptive messages are generated for remaining cooldown durations', () => {
20+
const policy = RefreshPolicy.getInstance();
21+
policy.reset();
22+
policy.setCooldown(300000); // 5 minutes
23+
policy.recordRefresh('user-a11y');
24+
25+
const remaining = policy.getRemainingCooldown('user-a11y');
26+
const minutes = Math.ceil(remaining / 60000);
27+
const screenReaderText = `Please wait ${minutes} minutes before requesting another refresh.`;
28+
29+
expect(minutes).toBeLessThanOrEqual(5);
30+
expect(screenReaderText).toContain('Please wait');
31+
expect(screenReaderText).toContain('minutes before requesting another refresh');
32+
});
33+
34+
it('asserts custom alert dismiss button maintains focus outlines', () => {
35+
const dismissButton = {
36+
role: 'button',
37+
'aria-label': 'Dismiss rate limit warning',
38+
style: { outline: '2px solid transparent', ringColor: 'rgb(16, 185, 129)' },
39+
};
40+
41+
expect(dismissButton.role).toBe('button');
42+
expect(dismissButton['aria-label']).toBe('Dismiss rate limit warning');
43+
expect(dismissButton.style.ringColor).toBe('rgb(16, 185, 129)');
44+
});
45+
});

0 commit comments

Comments
 (0)