UNPKG

@neuroequality/neuroadapt-mobile

Version:

Mobile accessibility features for React Native and cross-platform apps

142 lines (141 loc) 4.08 kB
import { MobileAccessibilityState } from '../react-native/accessibility-provider'; import { GestureEvent, GestureType } from '../gestures/accessible-gestures'; export interface MobileTestSuite { id: string; name: string; description: string; platform: 'ios' | 'android' | 'all'; tests: MobileAccessibilityTest[]; } export interface MobileAccessibilityTest { id: string; name: string; description: string; category: 'visual' | 'motor' | 'cognitive' | 'sensory' | 'navigation'; severity: 'low' | 'medium' | 'high' | 'critical'; automated: boolean; implementation: TestImplementation; } export interface TestImplementation { setup?: () => Promise<void>; execute: () => Promise<TestResult>; cleanup?: () => Promise<void>; } export interface TestResult { passed: boolean; score: number; message: string; details: any; recommendations: string[]; platform: string; timestamp: Date; } export interface MockGestureEvent { type: GestureType; duration: number; distance: number; velocity: number; fingerCount: number; location: { x: number; y: number; }; } export interface AccessibilityAssertion { type: 'screenReader' | 'contrast' | 'textSize' | 'touchTarget' | 'gesture' | 'navigation'; element?: any; expected: any; actual?: any; tolerance?: number; } /** * Cross-Platform Mobile Testing Manager */ export declare class MobileTestingManager { private testSuites; private mockState; private testResults; constructor(); /** * Register a test suite */ registerTestSuite(suite: MobileTestSuite): void; /** * Run accessibility tests */ runTests(suiteId?: string, platform?: 'ios' | 'android' | 'all'): Promise<{ summary: { total: number; passed: number; failed: number; score: number; }; results: TestResult[]; recommendations: string[]; }>; /** * Create mock gesture event */ createMockGesture(config: Partial<MockGestureEvent>): GestureEvent; /** * Assert accessibility requirements */ assertAccessibility(assertion: AccessibilityAssertion): Promise<TestResult>; /** * Test color contrast compliance */ testColorContrast(foreground: string, background: string, level?: 'AA' | 'AAA'): Promise<TestResult>; /** * Test touch target sizes */ testTouchTargets(elements: Array<{ width: number; height: number; label: string; }>): Promise<TestResult>; /** * Test gesture accessibility */ testGestureAccessibility(gestures: GestureType[]): Promise<TestResult>; /** * Mock accessibility state for testing */ setMockAccessibilityState(state: Partial<MobileAccessibilityState>): void; /** * Get mock accessibility state */ getMockAccessibilityState(): Partial<MobileAccessibilityState>; /** * Test with different accessibility settings */ testWithAccessibilitySettings(settings: Partial<MobileAccessibilityState>, testFunction: () => Promise<void>): Promise<TestResult>; /** * Generate accessibility test report */ generateReport(): { summary: { totalTests: number; passedTests: number; overallScore: number; platform: string; }; categories: Record<string, { tests: number; passed: number; score: number; }>; recommendations: string[]; details: TestResult[]; }; private initializeDefaultTestSuites; private assertScreenReaderCompatibility; private assertColorContrast; private assertTextSize; private assertTouchTargetSize; private assertGestureSupport; private assertKeyboardNavigation; private calculateContrastRatio; private hasGestureAlternatives; } export default MobileTestingManager; //# sourceMappingURL=cross-platform-testing.d.ts.map