UNPKG

@birhaus/test-utils

Version:

BIRHAUS v3.0 Radical Minimalist Testing Framework - Glass morphism validators, generous spacing tests, and v3 component validation utilities

101 lines (99 loc) 3.08 kB
/** * BIRHAUS Accessibility Validator * * Comprehensive accessibility testing utilities implementing BIRHAUS Principle #6: * "Accessibility = dignity" * * Features: * - WCAG AA+ compliance validation * - Spanish-first accessibility testing * - Color contrast analysis * - Keyboard navigation testing * - Screen reader compatibility * - Focus management validation */ interface AccessibilityViolation { type: 'contrast' | 'keyboard' | 'aria' | 'structure' | 'focus' | 'spanish'; element: Element; severity: 'minor' | 'moderate' | 'serious' | 'critical'; message: string; messageEs: string; wcagLevel: 'A' | 'AA' | 'AAA'; wcagCriterion: string; suggestions: string[]; birhausPrinciple: number; } interface AccessibilityTestOptions { level?: 'A' | 'AA' | 'AAA'; includeColorContrast?: boolean; includeKeyboardNav?: boolean; includeFocusManagement?: boolean; includeAriaLabels?: boolean; includeSpanishLabels?: boolean; customRules?: { [key: string]: any; }; interactiveElements?: string; spanishElements?: string; } declare class AccessibilityValidator { private options; constructor(options?: AccessibilityTestOptions); /** * Run comprehensive accessibility validation */ validateAll(container?: HTMLElement): Promise<AccessibilityViolation[]>; /** * Validate using axe-core accessibility engine */ private validateWithAxe; /** * Validate color contrast ratios (WCAG AA+ requirement) */ private validateColorContrast; /** * Validate keyboard navigation (WCAG requirement) */ validateKeyboardNavigation(container: HTMLElement): Promise<AccessibilityViolation[]>; /** * Validate focus management */ private validateFocusManagement; /** * Validate ARIA labels and roles */ private validateAriaLabels; /** * Validate Spanish-first accessibility (BIRHAUS Principle #7) */ private validateSpanishLabels; private getViolationType; private getWcagLevel; private translateViolation; private hasText; private calculateContrastRatio; private parseColor; private getRelativeLuminance; private getRequiredContrast; private isFocusable; private hasFocusIndicator; private getFocusableElements; private hasAccessibleName; private hasSpanishAccessibilityLabel; } /** * Test helper functions for accessibility assertions */ /** * Assert WCAG AA+ compliance */ declare function expectAccessibilityCompliance(container?: HTMLElement, level?: 'A' | 'AA' | 'AAA'): Promise<void>; /** * Assert Spanish-first accessibility */ declare function expectSpanishAccessibility(container?: HTMLElement): Promise<void>; /** * Assert keyboard navigation works */ declare function expectKeyboardAccessible(container?: HTMLElement): Promise<void>; export { type AccessibilityTestOptions, AccessibilityValidator, type AccessibilityViolation, expectAccessibilityCompliance, expectKeyboardAccessible, expectSpanishAccessibility };