시맨틱 태그

Jinmin Kim·2025년 8월 15일
HTML 예시접근성 RolegetByRole 예시비고/함정
<button>저장</button>buttongetByRole('button', { name: '저장' })버튼 텍스트가 name이 됨
<a href="/home">홈</a>linkgetByRole('link', { name: '홈' })href 있어야만 link
<input type="checkbox" aria-label="동의">checkboxgetByRole('checkbox', { name: '동의' })레이블/aria-label 필수
<input type="radio" aria-label="여성">radiogetByRole('radio', { name: '여성' })같은 name 그룹 라디오 주의
<input type="button" value="더보기">buttongetByRole('button', { name: '더보기' })value가 name
<input type="text" aria-label="이름">textboxgetByRole('textbox', { name: '이름' })email/url/tel도 대부분 textbox
<input type="search" aria-label="검색">searchboxgetByRole('searchbox', { name: '검색' })검색 전용 role
<input type="number" aria-label="수량">spinbuttongetByRole('spinbutton', { name: '수량' })숫자 입력 전용
<input type="range" aria-label="볼륨">slidergetByRole('slider', { name: '볼륨' })슬라이더
<select aria-label="국가">listboxgetByRole('listbox', { name: '국가' })<option>option
<option>한국</option>optionwithin(listbox).getByRole('option', { name: '한국' })within 추천
<ul>listgetByRole('list')<ol>list
<li>항목</li>listitemgetAllByRole('listitem')
<table>tablegetByRole('table')데이터 테이블만 해당(표시 가능)
<caption>매출표</caption>captionwithin(table).getByText('매출표')caption 자체는 보통 getByText
<th scope="col">이름</th>columnheadergetByRole('columnheader', { name: '이름' })scope에 따라 column/row
<th scope="row">총합</th>rowheadergetByRole('rowheader', { name: '총합' })
<td>홍길동</td>cellgetByRole('cell', { name: /홍길동/ })cell의 name은 내용 텍스트
<tr>rowgetAllByRole('row')헤더/바디 모두 포함
<fieldset>groupgetByRole('group', { name: '개인정보' })보통 <legend>로 name 제공
<main>maingetByRole('main')페이지당 1개 권장
<header>bannergetByRole('banner')페이지 루트 바로 하위일 때
<footer>contentinfogetByRole('contentinfo')페이지 루트 바로 하위일 때
<nav aria-label="주 메뉴">navigationgetByRole('navigation', { name: '주 메뉴' })여러 개면 레이블 필수
<section aria-labelledby="s1">regiongetByRole('region', { name: '섹션 제목' })레이블 없으면 region 아님
<article>articlegetByRole('article', { name: /제목/ })제목이 name이 됨
<form aria-label="로그인">formgetByRole('form', { name: '로그인' })접근 가능한 이름 필요
profile
Let's do it developer

0개의 댓글