GH GambleHub

Интерфейстердің қолжетімділігін тестілеу

1) Неге және не үшін «дайын» деп есептейміз

Қолжетімділік (A11y) - бұл өнім бірдей түсінікті және қабылдау мен моториканың, құрылғылар мен контекстердің ерекшеліктері әртүрлі адамдар үшін басқарылатын шарттардың өлшенетін жинағы. Дайын дегенді білдіреді:
  • WCAG 2 критерийлері орындалды. 1/2. мақсатты платформалар үшін АА 2 деңгейі;
  • интерфейс пернетақтадан толығымен өтеді;
  • скринридерлермен дұрыс жұмыс істеу;
  • қарама-қайшылықтар нормаларға сәйкес келеді;
  • барлық жағдайлар/қателер/мәртебелер тінтуірсіз және көзсіз қол жетімді;
  • оқшаулау, RTL, reduce motion және мобильді ерекшеліктер ескерілді.

2) Тестілеу стратегиясы (A11y пирамидасы)

1. Автотесттер/линтерлер (проблемалар сыныптарының 40-60% -на дейін жылдам жабу).
2. Паттерндерді қолмен тексеру (пернетақта, фокус, контент, логика).
3. Assistive Tech (AT) сессиялары: скринридерлер, масштабтау, түсті сүзгілер.
4. Пайдаланушылармен далалық сынақтар (мүмкіндігінше).

Мақсаты: фичте көбеюін болдырмау үшін компоненттер/паттерндер деңгейінде жүйелік ақауларды ұстау.

3) Базалық тексерулердің чек-парағы (жылдам жүру)

  • Пернетақта: барлығы табло/көрсеткілер арқылы қол жетімді; фокус тәртібі қисынды; модальдерде фокус тұзағы бар; ESC/Enter/Space жұмыс істейді.
  • Фокус-индикаторды кез келген тақырыптан/кез келген фоннан көреміз.
  • Қарама-қарсылық: мәтін ≥ 4. 5:1 (кәдімгі), ≥ 3:1 (ірі), иконалар/бақылаулар оқылады.
  • Семантика: дұрыс тегтер ('button', 'a', 'label', 'ul/li', 'th/td'), және 'aria-' тек қажет болған жағдайда.
  • Скринридер: иерархиялық тақырыптар, түймешіктердің/сілтемелердің мағыналық атаулары, иконалар/суреттер үшін баламалар.
  • Пішіндер: анық 'label', кеңестер/қателер байланысты ('aria-describedby'), қате мәтіндері нақты.
  • Динамика: тосттар/баннерлер/қателер 'aria-live' ('polite '/' assertive') арқылы хабарланады.
  • Анимациялар 'prefers-reduced-motion'; интерфейсті «сілкілемей».
  • Локализация/RTL: негізгі экрандар теңестірілген, сандар/күндер/валюталар утилиттермен пішімделеді.
  • Ұтқырлық: 44 ≥ 44 px ×, зум тыйым салынбаған, экранды бұру мазмұнды бұзбайды.

4) Рөлдер, жауапкершілік және артефактілер

Дизайн жүйесі: Әрбір компоненттің сипаттамасында A11y-талаптар.
Әзірлеушілер: автопроверкалар, A11y-ассерттері бар unit/interaction-тестілер.
QA: қол сценарийлері + АТ-сессиялар; елеулі/жиілікпен есеп беру.
UX/Content: қателер/мәртебелер microcopy, дауыстап оқу қабілеті.
Артефактілер: чек-парақтар, сценарийлер, АТ скринкастары, WCAG-референттері бар ақаулар тізімі, ұсынымдар.

5) Автоматтандырылған тексерулер

Линтерлер/анализаторлар: axe, eslint-plugin-jsx-a11y, pa11y, Lighthouse.
Пайплайнда: критикалық бұзылулар кезінде PR блоктаймыз (role/label/контраст/таб-тұзақтар).
Контраст снапшоттары: тақырыптардың/жағдайлардың визуалды тесттері.

💡 Есте сақтайық: автоқұралдар мағынасын тексермейді және фокусты көзімен көрмейді - қол тестілері міндетті.

6) Қолмен тестілеу: сценарийлер

6. 1 Пернетақта

Бетті тек пернетақтамен (Tab/Shift + Tab/Enter/Space/Көрсеткілер) басыңыз.
Тексеріңіз: фокустың көрінуі, кезектілік, барлық әрекеттердің қолжетімділігі, «тұзақтар» мен «өлі» элементтердің болмауы.
Модальде: ішкі фокус, жабылғанда бастамашыға қайтарылады.

6. 2 Скринридерлер (ең аз жиынтық)

Desktop: NVDA/JAWS (Windows), VoiceOver (macOS).
Mobile: VoiceOver (iOS), TalkBack (Android).
Тексереміз: дұрыс тақырыптар (H-иерархиясы), түймешіктердің/сілтемелердің атаулары, кестелерді оқу ('th '/' scope'), мәртебелерді жариялау, пішіндердің түсінікті қателері.

6. 3 Контент және microcopy

Сыни мәтіндерді дауыстап оқимыз - түсініксіз, «қате 400» жоқ.
Қате = «не дұрыс емес + қалай түзетуге болады + шектеу/пішім».

6. 4 Динамика және тірі өңірлер

Табысты тост - 'aria-live = «polite»', қате - 'assertive'.
Прогресс/жүктеу мәтінмен түсіндірілді; skeleton спиннерден артық.

7) Нысандар мен қателер (терең)

Әрбір өрісте байланған label (placeholder емес) бар.
Қателер мына өріспен байланысты:' aria-invalid =» true»',' aria-describedby =» [id]»'.
Форматтардың формулалары (күні, телефоны) алдын ала көрсетіледі; қалқалар енгізу/кірістіруді бұзбайды.
submit + авто-скролл кезіндегі қателердің жиынтық баннері және бірінші қатеге назар аударыңыз.
Қате мәтіндері: нақты, техникалық жаргонсыз.

8) Кестелер, тізімдер, графиктер

Кестелер: 'th' so 'scope =' col/row ', қолтаңбалар, түйіндеме.
Тізімдер - нақты 'ul/ol/li', дивалар емес.
Графиктер - баламалы кестелер/сипаттамалар; аңыздар қол жетімді; түсі ≠ жалғыз белгі.

9) Мультимедиа және анимациялар

Бейне: субтитрлер/толық жазу; пернетақтадан басқару; автоплейсіз (немесе үнсіз).
GIF/микроанимациялар: 'prefers-reduced-motion' кезінде өшіреміз; жарқылдаудан аулақ боламыз.
Діріл/дыбыстар - міндетті емес және визуалды/мәтінмен қайталанады.

10) Мобильді қолжетімділік

Интерактивтер ≥ 44 × 44 px, жеткілікті аралықтар.
Масштабтауға тыйым салынбайды (meta viewport 'user-scalable = no').
Пішін/пернетақта: дұрыс түрлері ('tel', 'email', 'number'), жүйелік мүмкіндіктерді жасырмаймыз.
Қараңғы тақырыпта және «үлкен» жүйелік қаріптермен тексеру.

11) Оқшаулау, сандар және RTL

Мәтіні бар i18n-кілттер арқылы жолдар; ұзын тілдер (DE/TR) орналасуды бұзбайды.
Күндер/валюталардың форматтары - жолдармен емес, утилиттермен.
RTL-режимі: навигация иконаларының айнасы, фокус және күймешек тәртібін, екі бағытты енгізуді тексереміз.

12) Сыни флоның ерекшелігі (iGaming)

Төлемдер/қорытындылар

Нақты нұсқаулықтар, лимиттер/мерзімдер/комиссиялар - мәтінмен.
Провайдердің қателері анық, кодсыз жарияланады; әрекетке балама бар.
Әрекетті растау: логикалық CTA-ға назар аудару, болдырмау мүмкіндігі.

АКҚ/верификация

Фото/құжаттарға қадамдық кеңестер; прогресс және ETA.
«Бұлдыр/блик/кесілген» қателері - түзету мысалдарымен.
Бейтарап үн, әзіл жоқ.

13) Ақаулардың күрделілігін бағалау

Blocker: негізгі тапсырманы аяқтау мүмкін емес (пернетақта/скринридер).
Critical: сындарлы функционал жұмыс істейді, бірақ елеулі кедергілермен.
Major: кедергі келтіреді, айналма жолы бар.
Minor: косметика/тапсырмаға әсер етпейтін гайдаларға сәйкессіздік.

Әрбір ақау - WCAG критерийіне және қайталанатын сценарийге сілтеме.

14) Қабылдау критерийлері (Definition of Done, A11y)

Пернетақталық сценарийді тышқансыз 100% өту.
axe/Lighthouse: сыни/жоғары бұзушылықтар жоқ.
Барлық тақырыптар/күйде AA қарама-қарсылығы.
Негізгі жолдардың скринридер-прогоны (навбар, пішіндер, модальдар, тостар).
Құжаттама жаңа компоненттер/фич үшін A11y (рөлдік модель, aria, фокус, мысалдар).
A11y-тесттерінің регрессиясы CI жасыл.

15) Процестер және автоматтандыру

Әзірленгенге дейін: тапсырмалардағы A11y-критерийлері, фокус/қате жағдайлары бар орналасулар.
Әзірлеуде: жергілікті құрастыру кезіндегі линтерлер/ахах; контрастардың/фокустың көзбен шолу снапшттары.
CI-де: pa11y/axe-скан сыни беттер бойынша; Blocker/Critical кезінде билдтің құлауы.
Шығарылғаннан кейін: тоқсандық аудиттер, A11y-тег бойынша пайдаланушы шағымдарының мониторингі.

16) Қарсы үлгілер

label орнына плейсхолдер.
'button '/' a' орнына 'div'.
«Сұлулық үшін» ажыратылған фокус-сақиналар.
Түс мәртебенің жалғыз тасымалдаушысы ретінде.
Фокус-трэпсіз модульдер/ESC.
Mobile масштабтауға тыйым салу.
«Қате 400/500» адамның түсініктемесінсіз.

17) Тестілеу сценарийлерінің үлгілері

Скрипт 1 - Пернетақта навигациясы (пішіні бар бет)

1. Tab бірінші өріске дейін, деректерді енгізіңіз.
2. Shift + Tab артқа - дұрыс ретін тексеріңіз.
3. Валидацияны (submit) шақырыңыз - фокус бірінші қатеге ауыстырылады.
4. ESC перне модулін жабыңыз, фокус бастамашыға оралды.

Сценарий 2 - Скринридер (төлем беті)

1. (h1) беттің тақырыбына өтіңіз, бөлімдерді тыңдаңыз.
2. Әдісті таңдаңыз - рөлдерді/күйді жариялау естіледі.
3. Саналы түрде қате жіберіңіз - хабар оқылды және өріспен байланысты.
4. Төлем туралы сәтті тост 'polite' деп жарияланды.

Сценарий 3 - Динамика

1. > 3 с күту әрекетін іске қосыңыз - процесс/ETA туралы мәтін бар.
2. Желі қатесі болса - 'assertive' баннері пернетақтадан қол жетімді, «қайталау/көмек» жолы бар.

18) Пайдалы микро-шаблондар

Тосттар үшін рольдер/aria

html
<div role = "status" aria-live = "polite"> Payment accepted. Balance updated. </div>
<div role = "alert" aria-live = "assertive"> The payment was denied. Try another method. </div>

Қатенің өріспен байланысы

html
<label for = "amount "> Amount </label>
<input id="amount" aria-invalid="true" aria-describedby="amount-error">
<div id = "amount-error "> Minimum 100 UAH. Please enter a larger amount. </div>

Модалка (мағыналық атрибуттар)

html
<div role="dialog" aria-modal="true" aria-labelledby="m-title">
<h2 id =" m-title "> Confirm Payment </h2>
<! -- content -->
<button> Confirm </button>
<button> Cancel </button>
</div>

19) A11y-практикасын енгізудің жылдам жоспары

1. Ағымдағы компоненттердің/паттерндердің аудиті (контраст/фокус/рөлдік семантика).
2. Дизайн жүйесін түзету: әрбір компонентке A11y бөлімін қосу.
3. Құралдар :/axe/pa11y/Lighthouse линтерлерін жергілікті және CI ішінде теңшеу.
4. Оқыту: дизайнерлер/әзірлеушілер/копирайтерлер үшін қысқа гайдтар.
5. Ұшқыш: 3-5 ең жиі ақауларды (модальдар, қалыптар, тостар) жөндеу.
6. Регламент: A11y-критерийлері бар DoD; тоқсандық аудит.

Қорытынды шпаргалка

Пернетақтаны, фокусты, қарама-қайшылықтарды, скринридерді, динамиканы тексеріңіз.
Мәртебелерді aria-live арқылы жариялау; қателер - өрістермен байланысты.
reduce motion қадір, масштабтауға тыйым салмаңыз.
«Қалай көрінеді» емес, семантикамен ойлау (тегтер/рөлдер).
Тексерулерді автоматтандыру, бірақ әрқашан қолмен толықтыру.
WCAG сілтемесі бар ақауларды, елеулі және ойнату сценарийін белгілеңіз.

Contact

Бізбен байланысыңыз

Кез келген сұрақ немесе қолдау қажет болса, бізге жазыңыз.Біз әрдайым көмектесуге дайынбыз!

Интеграцияны бастау

Email — міндетті. Telegram немесе WhatsApp — қосымша.

Сіздің атыңыз міндетті емес
Email міндетті емес
Тақырып міндетті емес
Хабарлама міндетті емес
Telegram міндетті емес
@
Егер Telegram-ды көрсетсеңіз — Email-ге қоса, сол жерге де жауап береміз.
WhatsApp міндетті емес
Пішім: +ел коды және номер (мысалы, +7XXXXXXXXXX).

Батырманы басу арқылы деректерді өңдеуге келісім бересіз.