디자인 시스템에서 접근성 자동화하기 — axe + Storybook + CI
접근성 시리즈
(5편)- 1.KWCAG 2.2 웹접근성 자동 적용 - KRDS React 컴포넌트로 검수 통과하기
- 2.금융 프론트엔드에서 접근성이 필수인 이유 — 전자금융 접근성 실무 가이드
- 3.키보드 네비게이션 완전 가이드 — Tab, Arrow, Esc 패턴
- 4.스크린 리더 테스트 실전 — VoiceOver/NVDA로 내 앱 검증하기
- 5.디자인 시스템에서 접근성 자동화하기 — axe + Storybook + CI
접근성 테스트, 배포 직전에 몰아서 하고 계신가요?
그러면 이미 늦어요. 코드가 쌓인 뒤에 접근성 문제를 고치는 건 — 렌더 이후에 레이아웃 다시 짜는 것만큼 힘들어요.
해답은 **"처음부터 자동으로 막는 것"**이에요. 컴포넌트 작성할 때, PR 올릴 때, 배포 전에. 각 단계마다 자동 검사가 붙으면 접근성 문제가 운영에 나갈 일이 없어요.
오늘은 HANUI 디자인 시스템에 적용한 접근성 자동화 파이프라인을 공유할게요.
3단계 자동화 파이프라인
각 단계마다 다른 종류의 문제를 잡아요. 겹치는 게 있어도 괜찮아요 — 그게 안전망이에요.
1단계: axe-core 단위 테스트
설치
기본 패턴
HANUI에서 실제로 잡힌 문제들
axe 테스트 붙이고 나서 발견한 것들이에요:
커버리지 설정 (vitest)
테스트 커버리지랑 접근성 검사를 같이 돌리면 어떤 컴포넌트가 빠졌는지 한눈에 보여요.
2단계: Storybook a11y 애드온
axe 테스트는 코드 레벨에서 잡는 거예요. 근데 **"실제로 어떻게 보이는가"**는 Storybook에서 봐야 해요.
설치
스토리별 접근성 설정
Storybook에서 보이는 것들
a11y 탭에서 실시간으로 보여요:
- 위반 (Violations): 반드시 고쳐야 하는 것
- 불완전 (Incomplete): 수동 확인 필요
- 통과 (Passes): 문제 없는 것
색상 대비 문제는 axe 테스트에서는 잘 안 잡히는데 Storybook에서 시각적으로 확인하기 좋아요.
3단계: CI 자동 차단
로컬에서 테스트 다 통과해도 PR에서 놓치는 경우가 있어요. CI에 붙이면 완전히 막을 수 있어요.
GitHub Actions 설정
Storybook 자동 테스트 설정
이렇게 하면 모든 Story를 자동으로 접근성 검사해요. 새 컴포넌트 추가할 때 Story만 작성하면 자동으로 검사 대상이 돼요.
HANUI 파이프라인 전체 그림
실제로 이 파이프라인 붙이고 나서 운영에 접근성 문제가 나간 게 0건이에요. 개발 중에 다 잡히거든요.
자동화로 못 잡는 것들
자동화가 완벽하진 않아요. 놓치는 부분도 알고 있어야 해요.
| 자동 검사 가능 | 수동 검사 필요 |
|---|---|
| alt 텍스트 누락 | alt 내용이 의미 있는지 |
| label 연결 | 읽기 순서가 자연스러운지 |
| 색상 대비 비율 | 실제 스크린 리더 경험 |
| ARIA 문법 | 인지 부하가 적절한지 |
| 키보드 포커스 표시 | 실제 키보드 사용 흐름 |
4편에서 다룬 VoiceOver/NVDA 테스트는 자동화랑 병행해야 해요.
접근성 점수 추적
GitHub Actions에서 배지도 달 수 있어요:
PR 코멘트로 결과 자동 게시:
5편에 걸쳐 접근성 시리즈를 정리했어요.
1편 (KWCAG 자동 적용) → 2편 (금융 접근성 실무) → 3편 (키보드 네비게이션) → 4편 (스크린 리더 테스트) → 5편 (자동화)
이 순서대로 적용하면 접근성 인증을 준비할 수 있어요. HANUI는 이 파이프라인으로 만들어진 컴포넌트들이에요.
관련 링크
접근성 시리즈
- 1편: KWCAG 2.2 웹접근성 자동 적용
- 2편: 금융 프론트엔드 접근성 실무 가이드
- 3편: 키보드 네비게이션 완전 가이드
- 4편: 스크린 리더 테스트 실전
- 5편: 디자인 시스템 접근성 자동화 ← 현재 글
HANUI
KRDS 기반 React 컴포넌트 라이브러리. 공공 웹 개발을 더 쉽게.