/** * Accessibility auditor — lightweight a11y checks using Playwright's aria snapshot * and manual DOM queries. No axe-core dependency needed. * * Checks: * 1. Images without alt text * 2. Form inputs without associated labels * 3. Buttons/links with no accessible name * 4. Missing lang attribute on html element * 5. Missing page title * 6. Empty headings * 7. Color contrast (limited — detects text with inline style color only) * 8. Keyboard-unfocusable interactive elements (tabIndex=-1 on buttons) */ import type { Page } from 'playwright'; export interface A11yViolation { rule: string; severity: 'critical' | 'serious' | 'moderate' | 'minor'; count: number; examples: string[]; } export interface A11yAuditResult { url: string; violations: A11yViolation[]; passCount: number; score: number; auditedAt: string; } export declare function auditAccessibility(page: Page, url: string): Promise;