UNPKG

a11yanalyze

Version:

A command-line tool for developers and QA engineers to test web pages and websites for WCAG 2.2 AA accessibility compliance

144 lines 4.74 kB
import { Page } from 'playwright'; import { ScanResult, ScanOptions, BrowserConfig, RuleEngineConfig } from '../types'; import { ResilienceConfig } from './error-resilience'; import { WCAGLevelConfig } from './wcag-level-handler'; export interface KeyboardNavigationResult { tabOrder: string[]; unreachableElements: string[]; focusTraps: string[]; missingFocusIndicators: string[]; issues: string[]; } export interface ScanResultWithKeyboard extends ScanResult { keyboardNavigation?: KeyboardNavigationResult; } export interface ScreenReaderSimulationResult { tree: any; missingNames: string[]; ambiguousRoles: string[]; skippedElements: string[]; summary: string[]; } export interface ScanResultWithA11y extends ScanResultWithKeyboard { screenReaderSimulation?: ScreenReaderSimulationResult; } export interface CognitiveAccessibilityResult { readingLevel: number; readingLevelCategory: 'easy' | 'average' | 'difficult'; jargonTerms: string[]; abbreviationCount: number; summary: string[]; } export interface ScanResultWithCognitive extends ScanResultWithA11y { cognitiveAccessibility?: CognitiveAccessibilityResult; summary?: string[]; groupedWarnings?: Record<string, string[]>; } export declare function simulateKeyboardNavigation(page: Page): Promise<KeyboardNavigationResult>; export declare function simulateScreenReader(page: Page): Promise<ScreenReaderSimulationResult>; export declare function analyzeCognitiveAccessibility(page: Page): Promise<CognitiveAccessibilityResult>; /** * Core single page accessibility scanner * Implements WCAG 2.2 AA testing with hybrid rule engine and JavaScript rendering support */ export declare class PageScanner { private browserManager; private ruleEngine; private resilienceManager; private wcagLevelHandler; private isInitialized; constructor(browserConfig?: BrowserConfig, ruleEngineConfig?: RuleEngineConfig, resilienceConfig?: Partial<ResilienceConfig>, wcagLevelConfig?: Partial<WCAGLevelConfig>); /** * Initialize the page scanner with browser and rule engine setup */ initialize(): Promise<void>; /** * Scan a single page for accessibility issues with JavaScript rendering support * @param url - URL to scan * @param options - Scanning options * @returns Promise<ScanResult> */ scan(url: string, options?: Partial<ScanOptions>): Promise<ScanResultWithCognitive>; /** * Update rule engine configuration based on scan options * @private */ private updateRuleEngineConfig; /** * Wait for page to be fully ready including JavaScript execution * @private */ private waitForPageReady; /** * Extract comprehensive page metadata * @private */ private extractPageMetadata; /** * Transform rule results to accessibility issues * @private */ private transformRuleResultToIssues; /** * Map axe impact levels to severity levels * @private */ private mapImpactToSeverity; /** * Extract element name from HTML string * @private */ private extractElementName; /** * Calculate accessibility score based on issues and page complexity * @private */ private calculateAccessibilityScore; /** * Validate URL format * @private */ private isValidUrl; /** * Get current scanner status */ getStatus(): { initialized: boolean; browserStatus: any; ruleEngineConfig: any; resilienceStatus: any; wcagLevelConfig: any; }; /** * Get detailed resilience metrics and status */ getResilienceStatus(): { config: ResilienceConfig; activeOperations: number; circuitBreakers: { name: string; state: import("./error-resilience").CircuitBreakerState; failureCount: number; }[]; operationMetrics: { [k: string]: import("./error-resilience").OperationMetrics; }; }; /** * Reset resilience state (circuit breakers, metrics, etc.) */ resetResilience(): void; /** * Update scanner configuration */ updateConfiguration(browserConfig?: Partial<BrowserConfig>, ruleEngineConfig?: Partial<RuleEngineConfig>, resilienceConfig?: Partial<ResilienceConfig>, wcagLevelConfig?: Partial<WCAGLevelConfig>): Promise<void>; /** * Cleanup browser and other resources */ cleanup(): Promise<void>; /** * Set storage state (cookies, localStorage, etc.) for the browser context */ setStorageState(storageState: any): Promise<void>; } //# sourceMappingURL=page-scanner.d.ts.map