Files
portal/pa11y.config.json
T
Дмитрий 3c69f43864 fix(реклама): доступность рекламных экранов и чистота тестов
- Pa11y: в конфиг добавлены три рекламных экрана — клиентский Яндекс,
  рекламный кошелёк и админский расход/маржа.
- Чипы статусов «Черновик» и «На паузе» были на обычном grey — контраст
  2.42:1 при норме WCAG 2.1 AA 4.5:1. Заменены на grey-darken-2, после
  чего оба клиентских рекламных экрана дают 0 ошибок.
- CampaignLauncherTest коммитил кампании в статусе pending_moderation
  с сегментом и сотней телефонов и не откатывал их. При полном прогоне
  SyncCampaignAudienceJob перечисляет кампании всех тенантов через
  pgsql_supplier и подхватывал эти хвосты — SyncCampaignAudienceJobTest
  падал на «ни одного обращения к Яндексу». Добавлен DatabaseTransactions.
  Замер: раньше после прогона папки оставалось 2 живых кампании, теперь 0.
  Полный прогон: было 5 падений, стало 3 — оба рекламных ушли.
- Находка про контраст палитры портала вынесена отдельным документом:
  зелёный 4.25 и жёлтый 2.25 на белом не проходят AA, но это брендбук
  и уже на бою — решение за владельцем.

Реклама 156/156. Боевого не касается, в main не влито.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-27 10:41:52 +03:00

289 lines
12 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/advertising/yandex",
"screenCapture": "./bin/a11y-screenshots/live-auth-22-advertising-yandex.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/advertising/yandex",
"wait for path to be /advertising/yandex"
]
},
{
"url": "http://localhost:8000/advertising/wallet",
"screenCapture": "./bin/a11y-screenshots/live-auth-23-advertising-wallet.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/advertising/wallet",
"wait for path to be /advertising/wallet"
]
},
{
"url": "http://localhost:8000/admin/advertising",
"screenCapture": "./bin/a11y-screenshots/live-auth-24-admin-advertising.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/advertising",
"wait for path to be /admin/advertising"
]
},
{
"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"
]
}
]
}