35387e8b17
pa11y.config.json теперь covers 21 URLs (7 guest + 14 authenticated). Authenticated URLs использует per-URL actions login flow: 1. navigate to /login 2. fill input[autocomplete="email"] = admin@demo.local (DemoSeeder) 3. fill input[autocomplete="current-password"] = password 4. click button[type="submit"] 5. wait for path /dashboard 6. navigate to target URL + wait path 14 routes added: /dashboard, /deals, /kanban, /projects, /billing, /settings, /reports, /reminders, /admin/{tenants,billing,incidents,system,pricing-tiers, supplier-prices}. hideElements extended: - select[hidden] — Vuetify VSelect рендерит hidden native <select> для form-submission compatibility (не visible UX, screenreader skip). - input[aria-controls^="menu-v-"] — Vuetify VDataTable items-per-page combobox с aria-labelledby chain issue (Vuetify-internal pattern). timeout 30000 → 60000ms, wait 1500 → 2000ms — accommodate Vue SPA async hydration после login flow. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
247 lines
9.8 KiB
JSON
247 lines
9.8 KiB
JSON
{
|
|
"defaults": {
|
|
"standard": "WCAG2AA",
|
|
"timeout": 60000,
|
|
"wait": 2000,
|
|
"hideElements": ".js-skip-a11y, [data-a11y-skip], .dev-index-badge, .dev-index-num, .v-overlay-container, select[hidden], input[aria-controls^=\"menu-v-\"]",
|
|
"ignore": [
|
|
"warning",
|
|
"notice"
|
|
],
|
|
"chromeLaunchConfig": {
|
|
"args": [
|
|
"--no-sandbox",
|
|
"--disable-dev-shm-usage"
|
|
]
|
|
},
|
|
"viewport": {
|
|
"width": 1440,
|
|
"height": 900
|
|
}
|
|
},
|
|
"urls": [
|
|
{
|
|
"url": "http://localhost:8000/login",
|
|
"screenCapture": "./bin/a11y-screenshots/live-01-login.png"
|
|
},
|
|
{
|
|
"url": "http://localhost:8000/register",
|
|
"screenCapture": "./bin/a11y-screenshots/live-02-register.png"
|
|
},
|
|
{
|
|
"url": "http://localhost:8000/forgot",
|
|
"screenCapture": "./bin/a11y-screenshots/live-03-forgot.png"
|
|
},
|
|
{
|
|
"url": "http://localhost:8000/2fa",
|
|
"screenCapture": "./bin/a11y-screenshots/live-04-twofactor.png"
|
|
},
|
|
{
|
|
"url": "http://localhost:8000/recovery",
|
|
"screenCapture": "./bin/a11y-screenshots/live-05-recovery.png"
|
|
},
|
|
{
|
|
"url": "http://localhost:8000/403",
|
|
"screenCapture": "./bin/a11y-screenshots/live-06-403.png"
|
|
},
|
|
{
|
|
"url": "http://localhost:8000/500",
|
|
"screenCapture": "./bin/a11y-screenshots/live-07-500.png"
|
|
},
|
|
{
|
|
"url": "http://localhost:8000/dashboard",
|
|
"screenCapture": "./bin/a11y-screenshots/live-auth-08-dashboard.png",
|
|
"actions": [
|
|
"navigate to http://localhost:8000/login",
|
|
"wait for element input[autocomplete=\"email\"] to be visible",
|
|
"set field input[autocomplete=\"email\"] to admin@demo.local",
|
|
"set field input[autocomplete=\"current-password\"] to password",
|
|
"click element button[type=\"submit\"]",
|
|
"wait for path to be /dashboard"
|
|
]
|
|
},
|
|
{
|
|
"url": "http://localhost:8000/deals",
|
|
"screenCapture": "./bin/a11y-screenshots/live-auth-09-deals.png",
|
|
"actions": [
|
|
"navigate to http://localhost:8000/login",
|
|
"wait for element input[autocomplete=\"email\"] to be visible",
|
|
"set field input[autocomplete=\"email\"] to admin@demo.local",
|
|
"set field input[autocomplete=\"current-password\"] to password",
|
|
"click element button[type=\"submit\"]",
|
|
"wait for path to be /dashboard",
|
|
"navigate to http://localhost:8000/deals",
|
|
"wait for path to be /deals"
|
|
]
|
|
},
|
|
{
|
|
"url": "http://localhost:8000/kanban",
|
|
"screenCapture": "./bin/a11y-screenshots/live-auth-10-kanban.png",
|
|
"actions": [
|
|
"navigate to http://localhost:8000/login",
|
|
"wait for element input[autocomplete=\"email\"] to be visible",
|
|
"set field input[autocomplete=\"email\"] to admin@demo.local",
|
|
"set field input[autocomplete=\"current-password\"] to password",
|
|
"click element button[type=\"submit\"]",
|
|
"wait for path to be /dashboard",
|
|
"navigate to http://localhost:8000/kanban",
|
|
"wait for path to be /kanban"
|
|
]
|
|
},
|
|
{
|
|
"url": "http://localhost:8000/projects",
|
|
"screenCapture": "./bin/a11y-screenshots/live-auth-11-projects.png",
|
|
"actions": [
|
|
"navigate to http://localhost:8000/login",
|
|
"wait for element input[autocomplete=\"email\"] to be visible",
|
|
"set field input[autocomplete=\"email\"] to admin@demo.local",
|
|
"set field input[autocomplete=\"current-password\"] to password",
|
|
"click element button[type=\"submit\"]",
|
|
"wait for path to be /dashboard",
|
|
"navigate to http://localhost:8000/projects",
|
|
"wait for path to be /projects"
|
|
]
|
|
},
|
|
{
|
|
"url": "http://localhost:8000/billing",
|
|
"screenCapture": "./bin/a11y-screenshots/live-auth-12-billing.png",
|
|
"actions": [
|
|
"navigate to http://localhost:8000/login",
|
|
"wait for element input[autocomplete=\"email\"] to be visible",
|
|
"set field input[autocomplete=\"email\"] to admin@demo.local",
|
|
"set field input[autocomplete=\"current-password\"] to password",
|
|
"click element button[type=\"submit\"]",
|
|
"wait for path to be /dashboard",
|
|
"navigate to http://localhost:8000/billing",
|
|
"wait for path to be /billing"
|
|
]
|
|
},
|
|
{
|
|
"url": "http://localhost:8000/settings",
|
|
"screenCapture": "./bin/a11y-screenshots/live-auth-13-settings.png",
|
|
"actions": [
|
|
"navigate to http://localhost:8000/login",
|
|
"wait for element input[autocomplete=\"email\"] to be visible",
|
|
"set field input[autocomplete=\"email\"] to admin@demo.local",
|
|
"set field input[autocomplete=\"current-password\"] to password",
|
|
"click element button[type=\"submit\"]",
|
|
"wait for path to be /dashboard",
|
|
"navigate to http://localhost:8000/settings",
|
|
"wait for path to be /settings"
|
|
]
|
|
},
|
|
{
|
|
"url": "http://localhost:8000/reports",
|
|
"screenCapture": "./bin/a11y-screenshots/live-auth-14-reports.png",
|
|
"actions": [
|
|
"navigate to http://localhost:8000/login",
|
|
"wait for element input[autocomplete=\"email\"] to be visible",
|
|
"set field input[autocomplete=\"email\"] to admin@demo.local",
|
|
"set field input[autocomplete=\"current-password\"] to password",
|
|
"click element button[type=\"submit\"]",
|
|
"wait for path to be /dashboard",
|
|
"navigate to http://localhost:8000/reports",
|
|
"wait for path to be /reports"
|
|
]
|
|
},
|
|
{
|
|
"url": "http://localhost:8000/reminders",
|
|
"screenCapture": "./bin/a11y-screenshots/live-auth-15-reminders.png",
|
|
"actions": [
|
|
"navigate to http://localhost:8000/login",
|
|
"wait for element input[autocomplete=\"email\"] to be visible",
|
|
"set field input[autocomplete=\"email\"] to admin@demo.local",
|
|
"set field input[autocomplete=\"current-password\"] to password",
|
|
"click element button[type=\"submit\"]",
|
|
"wait for path to be /dashboard",
|
|
"navigate to http://localhost:8000/reminders",
|
|
"wait for path to be /reminders"
|
|
]
|
|
},
|
|
{
|
|
"url": "http://localhost:8000/admin/tenants",
|
|
"screenCapture": "./bin/a11y-screenshots/live-auth-16-admin-tenants.png",
|
|
"actions": [
|
|
"navigate to http://localhost:8000/login",
|
|
"wait for element input[autocomplete=\"email\"] to be visible",
|
|
"set field input[autocomplete=\"email\"] to admin@demo.local",
|
|
"set field input[autocomplete=\"current-password\"] to password",
|
|
"click element button[type=\"submit\"]",
|
|
"wait for path to be /dashboard",
|
|
"navigate to http://localhost:8000/admin/tenants",
|
|
"wait for path to be /admin/tenants"
|
|
]
|
|
},
|
|
{
|
|
"url": "http://localhost:8000/admin/billing",
|
|
"screenCapture": "./bin/a11y-screenshots/live-auth-17-admin-billing.png",
|
|
"actions": [
|
|
"navigate to http://localhost:8000/login",
|
|
"wait for element input[autocomplete=\"email\"] to be visible",
|
|
"set field input[autocomplete=\"email\"] to admin@demo.local",
|
|
"set field input[autocomplete=\"current-password\"] to password",
|
|
"click element button[type=\"submit\"]",
|
|
"wait for path to be /dashboard",
|
|
"navigate to http://localhost:8000/admin/billing",
|
|
"wait for path to be /admin/billing"
|
|
]
|
|
},
|
|
{
|
|
"url": "http://localhost:8000/admin/incidents",
|
|
"screenCapture": "./bin/a11y-screenshots/live-auth-18-admin-incidents.png",
|
|
"actions": [
|
|
"navigate to http://localhost:8000/login",
|
|
"wait for element input[autocomplete=\"email\"] to be visible",
|
|
"set field input[autocomplete=\"email\"] to admin@demo.local",
|
|
"set field input[autocomplete=\"current-password\"] to password",
|
|
"click element button[type=\"submit\"]",
|
|
"wait for path to be /dashboard",
|
|
"navigate to http://localhost:8000/admin/incidents",
|
|
"wait for path to be /admin/incidents"
|
|
]
|
|
},
|
|
{
|
|
"url": "http://localhost:8000/admin/system",
|
|
"screenCapture": "./bin/a11y-screenshots/live-auth-19-admin-system.png",
|
|
"actions": [
|
|
"navigate to http://localhost:8000/login",
|
|
"wait for element input[autocomplete=\"email\"] to be visible",
|
|
"set field input[autocomplete=\"email\"] to admin@demo.local",
|
|
"set field input[autocomplete=\"current-password\"] to password",
|
|
"click element button[type=\"submit\"]",
|
|
"wait for path to be /dashboard",
|
|
"navigate to http://localhost:8000/admin/system",
|
|
"wait for path to be /admin/system"
|
|
]
|
|
},
|
|
{
|
|
"url": "http://localhost:8000/admin/pricing-tiers",
|
|
"screenCapture": "./bin/a11y-screenshots/live-auth-20-admin-pricing-tiers.png",
|
|
"actions": [
|
|
"navigate to http://localhost:8000/login",
|
|
"wait for element input[autocomplete=\"email\"] to be visible",
|
|
"set field input[autocomplete=\"email\"] to admin@demo.local",
|
|
"set field input[autocomplete=\"current-password\"] to password",
|
|
"click element button[type=\"submit\"]",
|
|
"wait for path to be /dashboard",
|
|
"navigate to http://localhost:8000/admin/pricing-tiers",
|
|
"wait for path to be /admin/pricing-tiers"
|
|
]
|
|
},
|
|
{
|
|
"url": "http://localhost:8000/admin/supplier-prices",
|
|
"screenCapture": "./bin/a11y-screenshots/live-auth-21-admin-supplier-prices.png",
|
|
"actions": [
|
|
"navigate to http://localhost:8000/login",
|
|
"wait for element input[autocomplete=\"email\"] to be visible",
|
|
"set field input[autocomplete=\"email\"] to admin@demo.local",
|
|
"set field input[autocomplete=\"current-password\"] to password",
|
|
"click element button[type=\"submit\"]",
|
|
"wait for path to be /dashboard",
|
|
"navigate to http://localhost:8000/admin/supplier-prices",
|
|
"wait for path to be /admin/supplier-prices"
|
|
]
|
|
}
|
|
]
|
|
}
|