๐จ Palette: [์ ๊ทผ์ฑ] ๋ ์ง ๋ฒ์ ์ ํ ๋ฒํผ์ aria-label ์ถ๊ฐ - #661
seonghobae wants to merge 8 commits into
Conversation
`date-range-picker.tsx`์ ๋ ์ง ๋ฒ์ ์ ํ ๋ฒํผ(7d, 30d, 90d, ALL)์ ์คํฌ๋ฆฐ ๋ฆฌ๋์ฉ `aria-label` ์์ฑ์ ์ถ๊ฐํ์ต๋๋ค.
|
๐ Jules, reporting for duty! I'm here to lend a hand with this pull request. When you start a review, I'll add a ๐ emoji to each comment to let you know I've read it. I'll focus on feedback directed at me and will do my best to stay out of conversations between you and other bots or reviewers to keep the noise down. I'll push a commit with your requested changes shortly after. Please note there might be a delay between these steps, but rest assured I'm on the job! For more direct control, you can switch me to Reactive Mode. When this mode is on, I will only act on comments where you specifically mention me with New to Jules? Learn more at jules.google/docs. For security, I will only act on instructions from the user who triggered this task. |
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: trueNo actionable comments were generated in the recent review. ๐ โน๏ธ Recent review infoโ๏ธ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Advanced Run ID: ๐ Files selected for processing (2)
Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review. ๐ WalkthroughWalkthroughDateRangePicker ํ๋ฆฌ์
๋ฒํผ์ ํ๊ตญ์ด Changes๋ ์ง ๋ฒ์ ์ ํ๊ธฐ ์ ๊ทผ์ฑ
Priority: โฌ๏ธ Low Estimated code review effort: 1 (Trivial) | ~5 minutes Change: Feature ๐ฅ Pre-merge checks | โ 4 | โ 1โ Failed checks (1 warning)
โ Passed checks (4 passed)
โจ Finishing Touches ๐ก 1๐ Generate docstrings ๐ก
๐งช Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
seonghobae
left a comment
There was a problem hiding this comment.
Exact-head review: 63f99b3a6c3da76b377fac0601975d3b75068cfa
ํ์ฌ ์๋ฆฌ๋ ์คํฌ๋ฆฐ ๋ฆฌ๋ ์ค๋ช
์ ๋๋ฆฌ์ง๋ง, visible label๊ณผ accessible name์ ์๋ก ๋ค๋ฅธ ๋ฌธ์์ด๋ก ๋ง๋ค์ด WCAG 2.5.3 Label in Name ๊ณ์ฝ์ ๊นจ๋จ๋ฆฝ๋๋ค. ๋ฒํผ์๋ ์ฌ์ ํ 7d / 30d / 90d / ALL์ด ๋ณด์ด๋๋ฐ aria-label์ ๊ฐ๊ฐ ์ง๋ 7์ผ / ์ง๋ 30์ผ / ์ง๋ 90์ผ / ์ ์ฒด ๊ธฐ๊ฐ์ผ๋ก visible token์ ์ ํ ํฌํจํ์ง ์์ต๋๋ค. ์์ฑ ์
๋ ฅ ์ฌ์ฉ์๋ ํ๋ฉด์์ ๋ณด์ด๋ 7d๋ฅผ ๋งํด๋ ๊ทธ ์ด๋ฆ์ผ๋ก ์ปจํธ๋กค์ ์ฐพ์ง ๋ชปํ ์ ์์ต๋๋ค. W3C APG๋ visible text๋ฅผ accessible name์ ์ฐ์ ์์ค๋ก ์ฐ๋ ํธ์ ๊ถ๊ณ ํฉ๋๋ค.
RED: ์ด exact head์์ ๊ฐ ๋ฒํผ์ computed accessible name์ด ํ๋ฉด์ ๋ณด์ด๋ token์ ํฌํจํ๋์ง ์ค์ browser accessibility tree๋ก ๊ฒ์ฆํ๊ณ , Tab/Enter/Space ๋ฐ aria-pressed ์ ํ๊น์ง ํจ๊ป ๊ณ ์ ํด ์ฃผ์ธ์. aria-label="์ง๋ 7์ผ"์ฒ๋ผ visible token์ ์ ๊ฑฐํ mutation์ ๋ฐ๋์ ์คํจํด์ผ ํฉ๋๋ค.
GREEN: 7d โ ์ง๋ 7์ผ์ฒ๋ผ visible token์ accessible name์ ํฌํจ์ํค๊ฑฐ๋, ๋ ๊ฒฌ๊ณ ํ๊ฒ๋ visible 7d + visually-hidden ์ค๋ช
suffix๋ก ์ด๋ฆ์ content์์ ํ์์ํค๋ ๋ฐฉ๋ฒ์ด ์ข์ต๋๋ค. ์ ํ์ด ์ฝ์ด ๋์ ์ ์ฒด ๋ฌธ๊ตฌ๋ฅผ ๋
ธ์ถํ ์ ์๋ค๋ฉด visible label ์์ฒด๋ฅผ ๋ช
ํํ locale ๋ฌธ์์ด๋ก ๋ฐ๊พธ๋ ์ชฝ์ด ๋ ๋จ์ํฉ๋๋ค. ํ๊ตญ์ด ์ค๋ช
์ ์ปดํฌ๋ํธ ์์์ ์ canonical truth๋ก ๊ตณํ์ง ๋ง๊ณ , locale owner/translation resource๊ฐ ์์ผ๋ฉด ๊ทธ ๊ฒฝ๊ณ๋ฅผ ์ฌ์ฉํด ์ฃผ์ธ์.
UI Delivery Gate: FAIL until current-head browser a11y/keyboard evidence is GREEN.
`date-range-picker.tsx`์ ๋ ์ง ๋ฒ์ ์ ํ ๋ฒํผ(7d, 30d, 90d, ALL)์ ์คํฌ๋ฆฐ ๋ฆฌ๋์ฉ `aria-label` ์์ฑ์ ์ถ๊ฐํ์ต๋๋ค.
`date-range-picker.tsx`์ ๋ ์ง ๋ฒ์ ์ ํ ๋ฒํผ(7d, 30d, 90d, ALL)์ ์คํฌ๋ฆฐ ๋ฆฌ๋์ฉ `aria-label` ์์ฑ์ ์ถ๊ฐํ์ต๋๋ค.
`date-range-picker.tsx`์ ๋ ์ง ๋ฒ์ ์ ํ ๋ฒํผ(7d, 30d, 90d, ALL)์ ์คํฌ๋ฆฐ ๋ฆฌ๋์ฉ `aria-label` ์์ฑ์ ์ถ๊ฐํ์ต๋๋ค.
seonghobae
left a comment
There was a problem hiding this comment.
exact 40eeeee1bb05a5737b720609fe8780ff0bba0c65์ ์ ๊ทผ์ฑ ์๋๋ ๋ง์ง๋ง, ํ์ฌ ์๋ฆฌ๋ accessible name์ ํ๊ตญ์ด ๋ฌธ์์ด๋ก source์ ๊ณ ์ ํด locale contract๋ฅผ ์๋ก ๊นจ๋จ๋ฆฝ๋๋ค. visible label์ 7d/30d/90d/ALL์ฒ๋ผ ์ธ์ด ์ค๋ฆฝ์ธ๋ฐ aria-label๋ง ์ง๋ 7์ผ/์ง๋ 30์ผ/์ง๋ 90์ผ/์ ์ฒด ๊ธฐ๊ฐ์ผ๋ก ๊ฐ์ ๋๋ฏ๋ก EN/JA/ZH/VI/ES/DE/FR ์ฌ์ฉ์์ ์คํฌ๋ฆฐ ๋ฆฌ๋๋ UI locale๊ณผ ๋ค๋ฅธ ์ธ์ด์ ์ด๋ฆ์ ๋ฐ๊ฒ ๋ฉ๋๋ค. protected developmental์ ์ด ์ปดํฌ๋ํธ์๋ locale-aware surface๊ฐ ์๊ณ , ์ด๋ฒ PR์ ๊ทธ ์ํ๋ฅผ ๋ ๊น๊ฒ ๊ณ ์ ํฉ๋๋ค.
CWL UI/i18n ๊ฒฝ๊ณ์ file/JS bundle์ locale catalog๋ฅผ ๋๋ฆฌ๋ ๋ฐฉํฅ๋ GREEN์ด ์๋๋๋ค. ๋ ์ง ํ๋ฆฌ์ ์ accessible name์ screen-key ๊ธฐ๋ฐ versioned translation resource/cache์์ ํ์ฌ locale๋ก resolveํ๊ณ , ontology label ledger์๋ ๋ถ๋ฆฌํด์ผ ํฉ๋๋ค. ์ ํ์ด ์์ง ์ด translation boundary๋ฅผ ์๋นํ์ง ๋ชปํ๋ค๋ฉด ์ด PR์ Ready๋ก ๋๊ธฐ๋ณด๋ค Draft/owner prerequisite๋ก ์ฐ๊ฒฐํ๋ ํธ์ด ๋ง์ต๋๋ค.
RED: ๊ฐ์ current-head component๋ฅผ KO/EN/JA/ZH/VI/ES/DE/FR locale fixture์์ ๋ ๋ํด ๊ฐ preset์ accessible name์ด ์ ํ locale๊ณผ ์ผ์นํ๋์ง, aria-pressed/click/keyboard ๋์์ด ๊ทธ๋๋ก์ธ์ง accessibility tree๋ก ๊ฒ์ฆํ์ญ์์ค. CJK line-wrap/text expansion์ visible UI๊ฐ ์๋๋ผ๋ screen-reader name truncation/์กฐํฉ์ด ์๋์ง ํจ๊ป ํ์ธํ์ญ์์ค. 320/768/desktop๊ณผ Chromium/Firefox/WebKit์์ ํ์ฌ ์์ preset control์ focus-visible/touch target๋ material UI delivery evidence๋ก ๋จ๊ฒจ์ผ ํฉ๋๋ค.
GREEN: literal ariaLabel์ PRESETS์ ๋ฃ์ง ๋ง๊ณ semantic key(date_range.last_n_days, date_range.all_time ๋ฑ)+parameter๋ฅผ ํ์ฌ product translation boundary์ ์ ๋ฌํ์ญ์์ค. full catalog/heavy SPA i18n์ ์ถ๊ฐํ๋ผ๋ ๋ป์ด ์๋๋ผ, ์ด๋ฏธ ์๊ตฌ๋ DB-versioned screen-key cache๋ฅผ ์๊ฒ ์๋นํ๋ ํํ์ฌ์ผ ํฉ๋๋ค. ํด๋น owner๊ฐ ์์ง ์๋ค๋ฉด prerequisite๋ฅผ ๋ช
์ํ๊ณ ์ด PR์ Draft๋ก ์ ์งํ์ญ์์ค.
ํ์ : a11y intent PASS ํ๋ณด, accessible-name locale correctness FAIL, translation ownership FAIL/PENDING, material UI locale/E2E evidence FAIL.
`date-range-picker.tsx`์ ๋ ์ง ๋ฒ์ ์ ํ ๋ฒํผ(7d, 30d, 90d, ALL)์ ์คํฌ๋ฆฐ ๋ฆฌ๋์ฉ `aria-label` ์์ฑ์ ์ถ๊ฐํ์ต๋๋ค.
`date-range-picker.tsx`์ ๋ ์ง ๋ฒ์ ์ ํ ๋ฒํผ(7d, 30d, 90d, ALL)์ ์คํฌ๋ฆฐ ๋ฆฌ๋์ฉ `aria-label` ์์ฑ์ ์ถ๊ฐํ์ต๋๋ค.
seonghobae
left a comment
There was a problem hiding this comment.
exact-head a25c908982b710f022f56f9bbc28188296f2dea2 owner-path review์
๋๋ค.
ํ์ฌ aria-label='์ง๋ 7์ผ'์ฒ๋ผ visible text 7d/30d/90d/ALL์ accessible name์์ ์์ ํ ๋์ฒดํ๋ ๋ฐฉ์์ ์ ๊ทผ์ฑ์ ๊ฐ์ ํ๋ฉด์ ๋์์ WCAG 2.2 SC 2.5.3 Label in Name ํ๊ท๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค. W3C๋ visible label์ ํ
์คํธ๊ฐ accessible name์ ํฌํจ๋์ด์ผ ํ๋ค๊ณ ์๊ตฌํ๊ณ , speech-input ์ฌ์ฉ์๊ฐ ํ๋ฉด์ ๋ณด์ด๋ ์ด๋ฆ์ผ๋ก control์ ํธ์ถํ ์ ์์ด์ผ ํ๋ค๊ณ ์ค๋ช
ํฉ๋๋ค. aria-label์ button text๋ณด๋ค accessible-name ์ฐ์ ์์๊ฐ ๋์ผ๋ฏ๋ก ์ง๊ธ ๊ตฌ์กฐ์์๋ 7d๊ฐ ์ด๋ฆ์์ ์ฌ๋ผ์ง๋๋ค. ์ฐธ๊ณ : https://www.w3.org/TR/WCAG22/#label-in-name , https://www.w3.org/WAI/WCAG22/Techniques/failures/F96
๋ํ accessibility-only string์ด component ์์์ ํ๊ตญ์ด๋ก ๊ณ ์ ๋์ด ์์ด EN/JA/ZH/VI/ES/DE/FR locale์์๋ screen reader๋ง ํ๊ตญ์ด ์ด๋ฆ์ ๋ฐ์ ์ ์์ต๋๋ค. ์ด ๋ฌธ์์ด์ visible locale๊ณผ ๊ฐ์ screen-key/versioned translation resource์์ ๋์์ผ ํ๋ฉฐ ๋ณ๋ ํ๊ตญ์ด-only path๊ฐ ๋๋ฉด ์ ๋ฉ๋๋ค.
RED: KO/EN/JA/ZH/VI/ES/DE/FR ๊ฐ๊ฐ์์ Chromium/Firefox/WebKit accessibility tree์ name/pressed state๋ฅผ ํ์ธํ๊ณ , speech/label-in-name acceptance๋ก visible token ์ ์ฒด(7d ๋ฑ)๊ฐ accessible name์ ํฌํจ๋๋์ง ๊ณ ์ ํด ์ฃผ์ธ์. keyboard Tab/Enter/Space, focus-visible, active/inactive state๋ current-head E2E๋ก ํ์ธํด์ผ ํฉ๋๋ค.
GREEN ์์๋ visible token์ ์ด๋ฆ์ ์ ๋์ ๋ณด์กดํ๋ฉด์ locale ์ค๋ช
์ ๋ณด์ถฉํ๋ ํํ(7d, โฆ)์ด์ง๋ง, ๊ตฌ์ฒด ๋ฌธ๊ตฌ๋ product locale owner๊ฐ ๊ฒฐ์ ํ๋ฉด ๋ฉ๋๋ค. hard-coded Korean์ ์ ๊ฑฐํ๊ณ locale resource + screen key๋ก ์ฐ๊ฒฐํ ๋ค ์ค์ browser evidence๊ฐ ์์ด์ผ UI Delivery Gate PASS์
๋๋ค.
|
Admission correction โ exact current head |
`date-range-picker.tsx`์ ๋ ์ง ๋ฒ์ ์ ํ ๋ฒํผ(7d, 30d, 90d, ALL)์ ์คํฌ๋ฆฐ ๋ฆฌ๋์ฉ `aria-label` ์์ฑ์ ์ถ๊ฐํ์ต๋๋ค.
`date-range-picker.tsx`์ ๋ ์ง ๋ฒ์ ์ ํ ๋ฒํผ(7d, 30d, 90d, ALL)์ ์คํฌ๋ฆฐ ๋ฆฌ๋์ฉ `aria-label` ์์ฑ์ ์ถ๊ฐํ์ต๋๋ค.
๐ก What:
date-range-picker.tsx์ ๋ ์ง ๋ฒ์ ์ ํ ๋ฒํผ(7d, 30d, 90d, ALL)์ ์คํฌ๋ฆฐ ๋ฆฌ๋์ฉaria-label์์ฑ์ ์ถ๊ฐํ๊ณ ํ ์คํธ๋ฅผ ๊ฐฑ์ ํ์ต๋๋ค.๐ฏ Why: ์์ด์ฝ์ ์๋์ง๋ง "7d" ๊ฐ์ ์ฝ์ด ํ ์คํธ๋ง ์๋ ๋ฒํผ์ ์คํฌ๋ฆฐ ๋ฆฌ๋ ์ฌ์ฉ์๊ฐ ์ง๊ด์ ์ผ๋ก ์ดํดํ๊ธฐ ์ด๋ ต์ต๋๋ค. "์ง๋ 7์ผ"๊ณผ ๊ฐ์ด ๋ช ํํ ๋งฅ๋ฝ์ ์ ๊ณตํ์ฌ ์น ์ ๊ทผ์ฑ์ ๊ฐ์ ํฉ๋๋ค.
๐ธ Before/After: ์๊ฐ์ ์ธ ๋ณ๊ฒฝ ์ฌํญ์ ์์ผ๋ฉฐ, ์คํฌ๋ฆฐ ๋ฆฌ๋์์ '7d' ๋์ '์ง๋ 7์ผ'๋ก ์ฝ์ด์ค๋๋ค.
โฟ Accessibility: ๋ฒํผ ์ปดํฌ๋ํธ์ ์ ๊ทผ ๊ฐ๋ฅํ
aria-label์ ์ถ๊ฐํ์ต๋๋ค.PR created automatically by Jules for task 12429340074811950587 started by @seonghobae
Summary by CodeRabbit