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
TypeScript
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