/** * a11y recipe — accessibility assertion patterns. * * Lifted from the PROVEN NQ-2 Playwright a11y suite and qulib's own axe-core * integration in src/phases/accessibility.ts. Real patterns re-derived from * first principles. * * NQ-2 Playwright a11y reference patterns: * - import AxeBuilder from '@axe-core/playwright' * - const results = await new AxeBuilder({ page }).analyze() * - expect(violations.filter(v => v.impact === 'serious' || v.impact === 'critical')).toHaveLength(0) * - await expect(page.locator('main')).toBeVisible() * - await expect(page.locator('h1')).toBeVisible() * - expect(await page.title()).not.toBe('') * * For Cypress (no axe-core adapter in the scaffold toolchain), we use: * - Structural presence checks (h1, main, nav, [role=...]) * - Sufficient-contrast guards via role/aria-label checks * - Focus-visible checks via keyboard nav simulation */ import type { NeutralScenario } from '../schemas/gap-analysis.schema.js'; import type { RecipeConfig } from '../schemas/recipe.schema.js'; /** * Generate NeutralScenarios for the a11y recipe. * * Returns 3 scenarios: * 1. Page-level a11y — heading structure + landmark regions (all frameworks) * 2. Interactive a11y — focus order / aria roles for primary CTA (smoke) * 3. Image/text a11y — alt text presence + non-empty page title * * The Playwright adapter will render axe-core assertions for scenarios tagged * 'a11y-axe'. The Cypress adapter renders structural/aria assertions (axe-core * Cypress integration is out-of-scope for the scaffold toolchain today). */ export declare function buildA11yScenarios(config?: RecipeConfig): NeutralScenario[]; //# sourceMappingURL=a11y.d.ts.map