лендинг: 32 нарушения контраста WCAG AA — затемнены токены, поставлен сторож #3277
No reviewers
Labels
No labels
Fable 5 ревью
GG-форсайт
admin
analytics
auth
automation
bug
business
chore
ci
compliance
data
data-moat
docs
duplicate
dx
enhancement
feedback/max
generative
needs-discussion
needs-human
observability
pause-bots
performance
priority/p0
priority/p1
priority/p2
priority/p3
scope/backend
scope/db
scope/devops
scope/frontend
scope/qa
scrapers
security
site-finder
stage/1
stage/2
status/blocked
status/done
status/needs-analysis
status/needs-fix
status/qa
status/ready
status/review
status/wip
tech-debt
tradein
ux
week ревью 1
wontfix
ИРД
вторичка
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: lekss361/gendesign#3277
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "fix/mera-public-contrast"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Из отчёта тестировщика 30.08.2026, пункт 4: 32 нарушения
color-contrast, все severity=serious. Одно правило, 32 узла — поэтому Lighthouse показывал 97 и занижал масштаб.Замеры подтвердились
Пересчитал пары прямо из кода:
.heroSubmitBtn(главная кнопка).artSoonОтдельно: шапка
b2c-tokens.tsутверждала проaccentDeepконтраст «4.6:1». Это было не замером, а числом из головы — фактически 4,41. Переписана честными цифрами.Правка
Затемнены четыре токена до запаса на худшем светлом фоне (
surfaceSoft, он темнееpageBg), оттенок сохранён:accentDeep→#0C7B8B(4,97) ·muted→#5B686C(5,19) ·success→#177A50(4,80) ·danger→#B33D28(5,23)Второй класс — светлый текст на тёмной плашке, где шкала перевёрнута: метки тикера и стрелка (1,50 → 6,20).
Плюс убраны сырые hex мимо палитры: 11 вхождений
#9fb0b4разведены наmutedдля светлых узлов иmuted-darkдля тёмных. Разводить пришлось поимённо —muted-darkна белом даёт 2,84, то есть механическая замена одним значением сделала бы хуже.Не тронуты после проверки:
.heroListIcon(aria-hidden, axe его не считает),.gameRowLabelAccentи.pathEyebrow— лежат на светлых рядах, сверено по TSX.Сторож
contrast-tokens.test.ts: функция яркости WCAG + ассерты на значениях токенов для обоих фонов страницы, плюс проверка на новые сырые hex вcolor:/fill:с явным allowlist.Фальсификация автором и ревьюером независимо, дважды: возврат
mutedк#667579даёт красное с точным числом («muted на pageBg: 4,4478 >= 4,5»), возврат сырого#9fb0b4— красное со списком вхождений.Честный потолок
axe заново не гоняли — «32 → 0» не подтверждено. Утверждается только расчёт по значениям: все найденные в коде пары ≥ 4,5. Прогнать axe после деплоя.
Allowlist сканера — снимок, а не расчёт: подложку CSS-правила по тексту не вывести. Помечено
ponytail:прямо в коде.Проверки
vitest11 файлов / 130 passed ·tsc --noEmitrc=0 ·eslint --max-warnings 0rc=0. Всё перепрогнано ревьюером независимо в отдельном worktree.Замечания ревьюера (не блокеры, беру в следующий заход)
.artLeadкрасит текст токеном границы--b2c-line-dark. Значение сейчас совпадает (11,8:1), но тюнинг рамки молча перекрасит абзац статьи.mutedDarkссылается на старое значениеmuted— тот же дефект, который эта же правка чинила в шапке файла.