@neuroequality/neuroadapt-mobile
Version:
Mobile accessibility features for React Native and cross-platform apps
142 lines (141 loc) • 4.08 kB
TypeScript
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