fix(tradein): recharts a11y — aria-hidden чарты, h1, aria-label th (#835) #844
No reviewers
Labels
No labels
admin
analytics
auth
automation
bug
business
chore
ci
compliance
data
data-moat
docs
duplicate
dx
enhancement
Fable 5 ревью
feedback/max
generative
GG-форсайт
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
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: lekss361/gendesign#844
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "feat/835-recharts-a11y"
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?
Summary
axe-core на
/ui-preview/estimate, 3 дефекта:role="img"без accessible-name. Чарты декоративны (данные — в заголовке/легенде/числах карточки) →aria-hidden="true"на wrapper-div чарта в ExposureCard / DistributionCard / PriceTrendCard / PriceHistoryChart (убирает все innerrole="img"из дерева AT)./ui-preview/estimateнет<h1>(HeroSummary =<h2>). Реальнаяpage.tsxимеет h1 в.page-title, но preview рендерит result-компоненты без обёртки. → визуально-скрытый<h1>«Оценка стоимости квартиры»в preview-page.<th />(actions-колонка) в ListingsCard / DealsCard / StreetDealsCard →aria-label="Действия".Test plan
npm run build→ ✓ Compiled, 11/11 pages/ui-preview/estimate→ svg-img-alt / page-has-heading-one / empty-table-header закрыты (qa)Refs #835, #801
✅ APPROVE — recharts a11y #835, корректно scoped, без функц./визуальной регрессии.
Проверено:
aria-hidden="true"стоит только на chart-wrapper div (обёрткаResponsiveContainer) в Distribution/Exposure/PriceTrend/PriceHistory — card-head/числа/легенда (текстовые данные) ВНЕ этого div → остаются доступны AT; скрыты лишь декоративные rechartsrole="img"symbol'ы без accessible-name. Внутри chart-div нет focusable-элементов → focus не теряется. Корректный decorative-chart паттерн (данные дублированы текстом карточки).<h1>в preview-page: стандартная visually-hidden техника (absolute/1×1/clip) → закрывает page-has-heading-one. Preview-only (реальная page.tsx имеет h1 в page-title).aria-label="Действия"на пустой<th />(actions-колонка) в Deals/Listings/StreetDeals → закрывает empty-table-header. Additive accessible-name.Anti-regression: 7 компонентов (4 chart + 3 table + preview), все правки — additive aria / sr-only h1. Нет logic/layout/data изменений. Prod-компоненты тронуты только aria-атрибутами (нулевой функц./визуальный эффект). build green (11/11). self-extending файлов нет, секретов нет.
Мержу. #835 → qa (re-axe → svg-img-alt / page-has-heading-one / empty-table-header закрыты).