Mundarija (36)
- Bu darsda
- 1. Nega bu kerak?
- 2. Uch qatlam
- 3. Avtomat vositalar
- 3.1 html-validate — kod yozayotganda
- 3.2 Lighthouse
- 3.3 axe DevTools
- 3.4 WAVE
- 3.5 Brauzerning o'zidagi vositalar
- 4. Avtomat vositalar amalda: «Bahor» bron sahifasi
- 4.1 html-validate natijasi
- 4.2 Lighthouse natijasi
- 4.3 Kim nimani topdi
- 5. Qo'lda: klaviatura testi
- 6. Qo'lda: kattalashtirish va ko'rish
- 7. Ekran o'quvchi bilan test
- 7.1 Qaysi ekran o'quvchi?
- 7.2 NVDA: birinchi qadamlar
- 7.3 VoiceOver (Mac va iPhone)
- 7.4 TalkBack (Android)
- 7.5 Ekran o'quvchi testi ro'yxati
- 8. Natijani yozish: audit hisoboti
- 9. Qachon tekshirish kerak
- 10. Ko'p uchraydigan xatolar
- 10.1 "Lighthouse 100 — tayyor"
- 10.2 Bitta vosita bilan cheklanish
- 10.3 Ekran o'quvchini sichqoncha bilan sinash
- 10.4 Noto'g'ri juftlik
- 10.5 Tuzatgandan keyin qayta tekshirmaslik
- 11. Mashqlar
- 1-mashq (oson): Qaysi qatlam topadi?
- 2-mashq (o'rta): html-validate'ni bashorat qiling
- 3-mashq (qiyin): Menyu sahifasi auditi
- 12. Real ishda
- Xulosa
- Manbalar
Accessibility testi: axe, Lighthouse, WAVE, klaviatura va ekran o'quvchi bilan tekshirish
Qisqacha: Accessibility uch qatlamda tekshiriladi. Avtomat vositalar (Lighthouse, axe DevTools, WAVE, html-validate) muammolarning taxminan uchdan biridan yarmigacha qismini bir necha soniyada topadi. Qolganini odam topadi: sichqonchasiz, faqat klaviatura bilan yurish, sahifani 200% kattalashtirish va ekran o'quvchi (NVDA, VoiceOver, TalkBack) bilan real vazifani bajarish. Lighthouse'dagi 100 ball "sayt accessible" degani emas.
Bu darsda
- Avtomat vositalar nimani topishi va nimani topa olmasligini tushuntira olasiz.
- Lighthouse, axe DevTools, WAVE va html-validate bilan sahifani tekshira olasiz.
- Klaviatura va kattalashtirish testini ro'yxat bo'yicha o'tkaza olasiz.
- NVDA, VoiceOver va TalkBack'ning asosiy buyruqlari bilan sahifani sinay olasiz.
- Topilgan muammolarni tushunarli audit hisobotiga yoza olasiz.
Oldin bilishingiz kerak: Kontent accessibility'si, Chrome DevTools II: Network, Application va Lighthouse, HTML'ni formatlash va validatsiya qilish, Klaviatura va fokus boshqaruvi.
1. Nega bu kerak?
O'tgan darsda matn, rang va havolalarni tartibga keltirdik. «Bahor» sayti ishga tushishga tayyor. Jasur aka Lighthouse'ni ishga tushirdi va xursand bo'ldi: "Accessibility — 100! Tayyor!"
Biz bir tajriba qildik. Ataylab yomon sahifa yozdik: rasmning alt i — "rasm", ikki havola ham "bu yerni bosing", tugma — div, klaviatura bilan unga yetib bo'lmaydi. Lighthouse unga ham 100 ball berdi.
Nega? Chunki vosita alt borligini tekshiradi, uning ma'nosini emas. div ga aria-label berilgan — nomi bor, demak "joyida". Unga Tab bilan yetib bo'lmasligini esa dastur bilmaydi.
Shifokor ko'rigini eslang. Qon tahlili ko'p narsani ko'rsatadi, lekin shifokor bemorni o'zi ham ko'radi, eshitadi, savol beradi. Avtomat vosita — qon tahlili. Qo'lda test — shifokor ko'rigi. Ikkalasi ham kerak.
2. Uch qatlam
| Qatlam | Nimani topadi | Vaqt |
|---|---|---|
| Avtomat vositalar | alt yo'q, label yo'q, kontrast, lang, ARIA xatolari |
Soniyalar |
| Qo'lda: klaviatura va ko'rish | Tab tartibi, fokus, tuzoq, zoom, alt sifati, havola matni | 10–20 daqiqa |
| Ekran o'quvchi | E'lonlar, holatlar, dinamik xabarlar, umumiy tajriba | 20–40 daqiqa |
Turli tadqiqotlarga ko'ra, avtomat vositalar muammolarning taxminan uchdan biridan yarmigacha qismini topadi. Qolgani ma'no va tajriba masalasi: "bu alt rasmni to'g'ri tasvirlaydimi?", "bu tartib mantiqiymi?", "ekran o'quvchi xabarni o'z vaqtida aytdimi?". Bularni faqat odam baholaydi.
To'rtinchi, eng qimmatli qatlam ham bor: haqiqiy foydalanuvchilar — ekran o'quvchi bilan kundalik ishlaydigan odamlar sinovi. Katta loyihalarda shunday sinovlar ham o'tkaziladi.
Tekshirib ko'ring: Rasmning
alti "IMG_2045.jpg". Qaysi qatlam buni topadi?
Javob
Ko'pincha faqat qo'lda tekshirish yoki ekran o'quvchi. Avtomat vosita alt bor-yo'qligini ko'radi — bor. Ba'zi vositalar (WAVE) "shubhali alt" deb ogohlantirishi mumkin, lekin faqat ingliz tilidagi tanish naqshlarni biladi. "Bu matn rasmni tasvirlaydimi?" — degan savolga faqat odam javob beradi.
3. Avtomat vositalar
3.1 html-validate — kod yozayotganda
HTML validatsiya darsida html-validate bilan tanishgan edik. Uning wcag/... qoidalari va bir nechta a11y (accessibility'ning qisqa yozilishi: "a", 11 ta harf, "y") qoidalari bor. Ba'zilari tavsiya etilgan to'plamga kirmaydi — ularni .htmlvalidate.json da yoqing:
{
"extends": ["html-validate:recommended"],
"rules": {
"heading-level": "error",
"input-missing-label": "error",
"no-missing-references": "error"
}
}heading-level— sarlavha darajasi sakramasin.input-missing-label— har maydonninglabeli bo'lsin.no-missing-references—for,aria-labelledby,aria-controlsmavjudidga ishora qilsin.
Afzalligi — u brauzersiz, VS Code terminalida bir soniyada ishlaydi. Kamchiligi — u faqat HTML'ni ko'radi. CSS'dan keladigan kontrastni, sahifaning haqiqiy ko'rinishini bilmaydi.
3.2 Lighthouse
Lighthouse'ni DevTools II darsida ko'rgansiz. Faqat accessibility uchun:
- Sahifani oching (Live Server orqali,
http://127.0.0.1:5500/...). F12→ Lighthouse paneli.- Categories da faqat Accessibility ni qoldiring.
- Analyze page load tugmasini bosing.
Natijada: 0–100 ball, xatolar ro'yxati, "Additional items to manually check" (qo'lda tekshiring) bo'limi va o'tgan tekshiruvlar. Har xato yonida — qaysi element va qanday tuzatish haqida havola.
Terminaldan ham ishlaydi (kompyuterda Chrome o'rnatilgan bo'lishi kerak):
npx lighthouse http://127.0.0.1:5500/bron.html \
--only-categories=accessibility --view--view — hisobotni brauzerda ochadi.
Ikki muhim fakt:
- Lighthouse ichida axe-core ishlaydi — Deque kompaniyasining ochiq kodli tekshiruv dvigateli. Lighthouse uning qoidalaridan bir qismini oladi.
- Ball — tekshiruvlarning og'irlikdagi o'rtachasi. U "muammo qanchalik jiddiy"ni emas, "avtomat tekshiruvlarning qanchasi o'tdi"ni ko'rsatadi. Shuning uchun 100 — boshlanish, tugash emas.
3.3 axe DevTools
axe DevTools — Deque'ning bepul brauzer kengaytmasi (Chrome, Edge, Firefox). O'rnatgach, DevTools'da yangi axe DevTools yorlig'i paydo bo'ladi. U yerda sahifani to'liq skanerlash tugmasini bosasiz.
Lighthouse'dan farqi:
- axe'ning to'liq qoidalar to'plami ishlaydi va natija batafsilroq.
- Har muammo jiddiylik darajasi bilan: critical (jiddiy to'siq), serious, moderate, minor.
- Highlight — muammoli elementni sahifada ko'rsatadi, Inspect — Elements panelida ochadi.
- Needs review — dastur ishonchi komil bo'lmagan joylar. axe'ning tamoyili: noto'g'ri signal bermaslik. Aniq bo'lmasa, xato demaydi, "odam tekshirsin" deydi.
Kengaytmaning pullik versiyasida bosqichma-bosqich qo'lda testlar ham bor. Bepul versiya boshlash uchun yetarli. axe-core'ni avtomatik testlarga ulashni Accessibility testlari darsida ko'ramiz.
3.4 WAVE
WAVE — WebAIM tashkilotining vositasi: wave.webaim.org saytida yoki kengaytma sifatida. U natijani sahifaning ustiga ikonkalar bilan chizadi:
| Rang | Ma'nosi |
|---|---|
| Qizil | Xato (Errors) va kontrast xatolari |
| Sariq | Ogohlantirish (Alerts) — odam ko'rishi kerak |
| Yashil | Accessibility imkoniyati (alt, label, skip link) |
| Ko'k va binafsha | Tuzilma (sarlavha, landmark) va ARIA |
Yashil ikonkalar ham foydali: ular sizga ekran o'quvchi nimani "ko'rishini" ko'rsatadi. Masalan, rasm ustidagi yashil belgi uning alt matnini ko'rsatadi — uni o'qib, mazmunini baholaysiz.
WAVE'da yana bir kuchli tugma — Styles: Off. U sahifani CSS'siz ko'rsatadi. Ekran o'quvchi sahifani aynan shu tartibda o'qiydi. Tartib chalkash bo'lsa — HTML tartibini tuzating.
Maslahat: Vositalar asosan ingliz tili uchun yaratilgan. WAVE "click here" ni shubhali havola deb biladi, lekin "bu yerni bosing" ni bilmasligi mumkin. O'zbekcha kontent sifatini baribir o'zingiz o'qib tekshirasiz.
3.5 Brauzerning o'zidagi vositalar
- Chrome → Elements → Accessibility — element roli, nomi va holati (Accessibility daraxti darsida ko'rgandik).
- Chrome → Rendering paneli (
Ctrl + Shift + P→ "Rendering") → Emulate vision deficiencies — sahifani xira ko'rish, past kontrast yoki rang ajratmaslik (protanopiya, deyteranopiya, tritanopiya, akromatopsiya) holatida ko'rsatadi. "Qizil — chegirma" kabi xatolar shu yerda darhol ko'rinadi. - Firefox → Accessibility paneli — "Check for issues" (kontrast, klaviatura, matn yorlig'i) va Show Tabbing Order: sahifadagi hamma
Tabto'xtashlarini raqamlab chizadi. - Accessibility Insights for Web (Microsoft'ning bepul kengaytmasi) — FastPass rejimi: avtomat tekshiruv va
Tabto'xtashlari xaritasi.
| Vosita | Qayerda | Eng kuchli tomoni |
|---|---|---|
| html-validate | Terminal, VS Code | Kod yozish paytida, tez |
| Lighthouse | Chrome DevTools, terminal | Tez umumiy manzara, ball |
| axe DevTools | Kengaytma | Batafsil, ishonchli natija |
| WAVE | Kengaytma, sayt | Natija sahifa ustida, CSS'siz ko'rinish |
4. Avtomat vositalar amalda: «Bahor» bron sahifasi
Stajyor bron sahifasining birinchi versiyasini yozdi. Uni ikki vosita bilan tekshiramiz:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport"
content="width=device-width, maximum-scale=1">
<title>Bahor</title>
</head>
<body>
<h1>Stol band qilish</h1>
<img src="assets/images/zal.jpg" alt="rasm">
<h3>Ma'lumotlaringiz</h3>
<form action="https://example.com/band-qilish" method="post">
<input id="ism" name="ism" type="text" placeholder="Ism">
<input id="tel" name="tel" type="tel" placeholder="Telefon">
<p style="color: #bbb">Barcha maydonlar majburiy</p>
<div role="button">Band qilish</div>
</form>
<a href="shartlar.html"><img src="assets/icons/info.svg"></a>
</body>
</html>style="color: #bbb" — matnni och kulrang qiladigan CSS. CSS'ni keyingi qismda o'rganamiz, bu yerda faqat natijasi muhim: oq fonda xira matn.
4.1 html-validate natijasi
2:2 error <html> is missing required "lang" attribute element-required-attributes
12:4 error Heading level can only increase by one, expected <h2> but got <h3> heading-level
13:4 error <form> element must have a submit button wcag/h32
14:6 error <input> element does not have a <label> input-missing-label
15:6 error <input> element does not have a <label> input-missing-label
16:8 error Inline style is not allowed no-inline-style
17:10 error Prefer to use the native <button> element prefer-native-element
19:4 error Anchor link must have a text describing its purpose wcag/h30
19:28 error <img> is missing required "alt" attribute wcag/h37Tarjimasi, yuqoridan pastga:
htmldalangyo'q;- sarlavha
h2o'rnigah3ga sakragan; - formada yuborish tugmasi yo'q;
- ikki maydonda
labelyo'q; - inline stil — bu a11y emas, uslub qoidasi;
divo'rniga nativebuttonishlating;- havolada maqsadini aytadigan matn yo'q;
imgdaaltyo'q.
4.2 Lighthouse natijasi
Ball — 57. Xatolar:
Background and foreground colors do not have a sufficient contrast ratio.
Heading elements are not in a sequentially-descending order
`<html>` element does not have a `[lang]` attribute
Image elements do not have `[alt]` attributes
Links do not have a discernible name
`[user-scalable="no"]` is used in the `<meta name="viewport">` element or the `[maximum-scale]` attribute is less than 5.Tarjimasi: matn va fon kontrasti yetarli emas; sarlavhalar tartibi buzilgan; lang yo'q; rasmda alt yo'q; havolaning nomi yo'q; viewport kattalashtirishni taqiqlaydi (maximum-scale 5 dan kichik).
4.3 Kim nimani topdi
| Muammo | html-validate | Lighthouse |
|---|---|---|
lang yo'q, sarlavha sakragan |
||
| Ikonkali havolada nom va alt yo'q | ||
Maydonda faqat placeholder, label yo'q |
||
div — tugma, yuborish tugmasi yo'q |
||
| Xira matn (kontrast) | ||
| Kattalashtirish taqiqlangan | ||
alt="rasm" — ma'nosiz |
||
title — "Bahor", sahifaga xos emas |
Xulosalar:
- Vositalar bir-birini to'ldiradi. html-validate kontrastni ko'rmaydi — u CSS'ni bilmaydi. Lighthouse esa
placeholderni "nom" deb qabul qildi. Qulay forma darsidan bilasiz:placeholderyozish boshlanishi bilan yo'qoladi va label o'rnini bosmaydi. - Ikkalasi ham ma'noni ko'rmaydi. "rasm" alt'i va "Bahor" sarlavhasi ikkalasidan ham o'tib ketdi.
- Eng jiddiy muammoni Lighthouse ko'rmadi.
div role="button"klaviatura bilan fokus olmaydi. Malika (NVDA bilan ishlaydigan doimiy mehmonimiz) bronni umuman yubora olmaydi. Buni birinchiTabtesti darhol ko'rsatadi.
Tuzatilgan versiya (label'lar, button, lang, mazmunli alt va title) ikkala vositadan xatosiz o'tadi: html-validate — 0 xato, Lighthouse — 100. Lekin bu hali oxiri emas — navbat qo'lda testga.
Tekshirib ko'ring: Nega Lighthouse kontrastni topdi, html-validate esa yo'q?
Javob
Kontrast — matn va fonning haqiqiy ranglari nisbati. Uni bilish uchun sahifani brauzerda chizish va CSS'ni qo'llash kerak. Lighthouse sahifani haqiqiy Chrome'da ochadi. html-validate esa faqat HTML matnini o'qiydi — u uchun style atributi shunchaki satr.
5. Qo'lda: klaviatura testi
Klaviatura va fokus darsida "Tab testi" ni o'tkazgan edik. Endi uni to'liq ro'yxatga aylantiramiz. Sichqonchani chetga suring va har bandni tekshiring:
TabvaShift + Tabbilan hamma havola, tugma va maydonga yetib borasizmi?- Fokus doim ko'rinadimi? Qayerda turganini har lahzada bilasizmi?
- Tartib mantiqiymi — sahifani o'qish tartibiga mosmi?
- Sahifa boshidagi skip link ishlaydimi?
Enterhavola va tugmalarni,Spacetugma va checkbox'larni ishlatadimi?- Strelkalar radio,
select, tabs va menyuda APG qoidalari bo'yicha ishlaydimi? Escdialog va popover'ni yopadimi? Fokus uni ochgan tugmaga qaytadimi?- Klaviatura tuzog'i yo'qmi — har joydan
Tabbilan chiqib keta olasizmi? - Yopiq menyu yoki yashirin blok ichidagi havolalarga fokus tushmayaptimi?
- Fokus yopishqoq sarlavha ostida yashirinib qolmayaptimi?
Bitta sahifa uchun 5–10 daqiqa. Eng ko'p xato aynan shu yerda chiqadi.
6. Qo'lda: kattalashtirish va ko'rish
- 200% kattalashtirish (
Ctrl++). Matn kesilmasin, bir-biriga chiqib ketmasin. WCAG: 1.4.4 Resize Text (AA). - Tor ekran. DevTools device mode'da enini 320 pikselga qo'ying. Hamma narsa gorizontal aylantirishsiz o'qilsin. WCAG: 1.4.10 Reflow (AA). Bu 1280 pikselli ekranni 400% kattalashtirish bilan teng.
- Telefonni aylantirish — sayt ham tik, ham yotiq holatda ishlasin (1.3.4 Orientation, AA).
- Rasmlarsiz — alt matn darsidagi usul: rasmlarni o'chirib, sahifani alt'lar bilan o'qing.
- CSS'siz — WAVE'ning Styles: Off tugmasi: o'qish tartibi mantiqiymi?
- Rang ajratmaslik — Chrome Rendering panelidagi emulyatsiya.
Viewport'da maximum-scale=1 yoki user-scalable=no bo'lsa, telefonda kattalashtirib bo'lmaydi — yuqoridagi Lighthouse xatosi aynan shu. head anatomiyasi va viewport darsidagi qoida: zoom'ni o'chirmang.
7. Ekran o'quvchi bilan test
7.1 Qaysi ekran o'quvchi?
| Dastur | Tizim | Narxi | Qaysi brauzer bilan |
|---|---|---|---|
| NVDA | Windows | Bepul | Chrome, Firefox |
| JAWS | Windows | Pullik | Chrome |
| VoiceOver | macOS, iPhone | O'rnatilgan | Safari |
| TalkBack | Android | O'rnatilgan | Chrome |
Windows'da o'rnatilgan Narrator ham bor, lekin veb-testda NVDA ko'proq ishlatiladi. WebAIM'ning so'rovlarida kompyuterda JAWS va NVDA eng mashhur, telefonda esa VoiceOver oldinda. O'zbekistonda telefonlarning ko'pchiligi Android — shuning uchun TalkBack'ni ham albatta sinang.
Har ekran o'quvchi o'z juft brauzeri bilan eng yaxshi ishlaydi. Shuning uchun NVDA'ni Safari'da emas, Chrome yoki Firefox'da; VoiceOver'ni esa Safari'da sinang.
7.2 NVDA: birinchi qadamlar
nvaccess.org saytidan yuklab o'rnating. O'rnatishda ish stoli yorlig'ini qoldirsangiz, Ctrl + Alt + N bilan ishga tushadi. NVDA'ning maxsus tugmasi — Insert (noutbukda sozlamada Caps Lock ni tanlash mumkin). Quyida u "NVDA" deb yozilgan.
| Tugma | Nima qiladi |
|---|---|
Ctrl |
Gapirishni to'xtatadi |
NVDA + ↓ |
Joriy joydan oxirigacha o'qiydi |
↓ / ↑ |
Keyingi / oldingi qator |
H / Shift + H |
Keyingi / oldingi sarlavha |
1 ... 6 |
Keyingi shu darajadagi sarlavha |
D |
Keyingi landmark |
K |
Keyingi havola |
F |
Keyingi forma maydoni |
B |
Keyingi tugma |
NVDA + F7 |
Sarlavhalar, havolalar, landmarklar ro'yxati |
NVDA + Space |
Ko'rish va fokus rejimi almashadi |
NVDA + T |
Sahifa nomini (title) o'qiydi |
NVDA + Q |
NVDA'dan chiqish |
Noutbuk tartibida "oxirigacha o'qish" — NVDA + A.
Maslahat: NVDA menyusida (
NVDA + N) Tools → Speech Viewer bor. U NVDA aytayotgan hamma gapni oynada matn qilib yozib boradi. Boshida quloq bilan ilg'ash qiyin — shu oyna juda yordam beradi. Hisobotga iqtibos olish uchun ham qulay.
7.3 VoiceOver (Mac va iPhone)
Mac: Cmd + F5 — yoqish va o'chirish. Maxsus tugmalar — Control + Option ("VO"). VO + → — keyingi element, VO + Space — bosish, VO + U — rotor (sarlavhalar, havolalar ro'yxati), VO + Cmd + H — keyingi sarlavha.
iPhone: Sozlamalar → Accessibility (Universal kirish) → VoiceOver.
Diqqat: VoiceOver va TalkBack yoqilganda telefon boshqacha boshqariladi: bitta bosish — faqat tanlaydi, ikki marta bosish — ishga tushiradi. O'chirish yo'lini bilmasangiz, telefon "qulflanib" qolgandek tuyuladi. Yoqishdan oldin tezkor tugmani sozlang: iPhone'da Accessibility Shortcut (yon tugmani uch marta bosish), Android'da — ikkala ovoz tugmasini 3 soniya bosib turish.
iPhone imo-ishoralari: bir barmoq bilan o'ngga/chapga surish — keyingi/oldingi element; ikki marta bosish — ishga tushirish; ikki barmoqni aylantirish — rotor (sarlavha, havola bo'yicha yurish). Uch barmoq bilan uch marta bosish — "ekran pardasi": ekran qorayadi, siz faqat eshitasiz. Haqiqiy test shunday bo'ladi.
7.4 TalkBack (Android)
Sozlamalar → Maxsus imkoniyatlar (Accessibility) → TalkBack. Asosiy imo-ishoralar iPhone'ga o'xshash: o'ngga/chapga surish — keyingi/oldingi element, ikki marta bosish — ishga tushirish, sahifani aylantirish — ikki barmoq bilan. Sarlavha yoki havola bo'yicha yurish imo-ishorasi TalkBack versiyasiga qarab farq qiladi. TalkBack sozlamalaridagi o'rnatilgan qo'llanma (tutorial) — o'rganishning eng tez yo'li.
7.5 Ekran o'quvchi testi ro'yxati
Faqat "tinglab ko'rish" emas — vazifani bajaring: ko'zingizni yuming (yoki ekran pardasini yoqing) va stolni band qilib ko'ring. Yo'lda tekshiring:
- Sahifa ochilganda
titleo'qildimi va u mazmunlimi? - Matn to'g'ri tilda (o'zbekcha ovozda) o'qilyaptimi? —
lang. - Sarlavhalar ro'yxati (
NVDA + F7) sahifaning mundarijasiga o'xshaydimi? - Landmarklar (
D) bormi:header,nav,main,footer? - Havolalar ro'yxati kontekstsiz tushunarlimi ("Batafsil" x5 yo'qmi)?
- Rasmlar alt'i ma'noli, bezak rasmlar esa jimmi?
- Har maydon nomi, "majburiy"ligi va yo'riqnomasi o'qilyaptimi?
- Xato chiqqanda u e'lon qilinyaptimi?
- Tugmalar nomi va holati ("yoyilgan", "tanlangan") aytilyaptimi?
- Dinamik xabar ("Bron qabul qilindi") jonli hudud orqali o'zi aytilyaptimi?
- Dialog ochilganda fokus unga o'tib, sarlavhasi o'qilyaptimi?
Tekshirib ko'ring: NVDA bilan sahifada
Btugmasini bosdingiz, lekin "Band qilish" tugmasiga o'tmadi, NVDA "tugma yo'q" dedi. Sabab nima bo'lishi mumkin?
Javob
"Band qilish" haqiqiy tugma emas: div yoki span, role="button" siz. NVDA B bilan faqat accessibility daraxtida button roli bor elementlarni qidiradi. role="button" qo'shilgan div ni topadi, lekin unga baribir Tab bilan yetib bo'lmasligi mumkin. To'g'ri tuzatish — native button.
8. Natijani yozish: audit hisoboti
Topilgan muammo yozilmasa — tuzatilmaydi. Yaxshi hisobotda har muammo uchun beshta narsa bor:
- Nima va qayerda — sahifa va element.
- Qanday takrorlash — qadamlar ("
Tabbosing — 'Band qilish' ga fokus tushmaydi"). - Kimga ta'sir qiladi — klaviatura, ekran o'quvchi, rang ajratmaydiganlar.
- WCAG mezoni — masalan, 2.1.1 Keyboard.
- Jiddiyligi va tuzatish taklifi.
«Bahor» bron sahifasi bo'yicha qisqa hisobot:
| # | Muammo | WCAG | Jiddiyligi |
|---|---|---|---|
| 1 | "Band qilish" div — klaviatura bilan yuborib bo'lmaydi |
2.1.1 | To'siq |
| 2 | Maydonlarda label yo'q, faqat placeholder |
1.3.1, 3.3.2 | Jiddiy |
| 3 | "Barcha maydonlar majburiy" — xira matn | 1.4.3 | Jiddiy |
| 4 | Zoom taqiqlangan (maximum-scale=1) |
1.4.4 | Jiddiy |
| 5 | Ikonkali havolaning nomi yo'q | 2.4.4, 1.1.1 | Jiddiy |
| 6 | lang yo'q |
3.1.1 | O'rta |
| 7 | alt="rasm", title — "Bahor" |
1.1.1, 2.4.2 | O'rta |
| 8 | h1 dan h3 ga sakrash |
1.3.1 | Kichik |
Jiddiylik darajalari: to'siq — vazifani umuman bajarib bo'lmaydi; jiddiy — juda qiyin; o'rta — noqulay; kichik — sezilarli, lekin ishlashga xalaqit bermaydi. Tuzatish shu tartibda boshlanadi. Tuzatgach — qayta tekshiring: xuddi shu qadamlar bilan.
Maslahat: Yevropa va boshqa mamlakatlarda saytlar accessibility bayonoti (accessibility statement) e'lon qiladi: qaysi WCAG darajasiga mos, qaysi ma'lum muammolar bor va ular haqida qanday xabar berish mumkin. Audit hisoboti — shu bayonotning asosi.
9. Qachon tekshirish kerak
| Qachon | Nima |
|---|---|
| Kod yozayotganda | html-validate, DevTools Accessibility paneli |
| Har o'zgarishdan keyin | Avtomat testlar (keyinroq — CI'da) |
| Har yangi sahifa yoki vidjetda | Klaviatura testi, axe yoki WAVE |
| Katta relizdan oldin | Ekran o'quvchi testi, to'liq audit |
| Yilda bir marta | Haqiqiy foydalanuvchilar bilan sinov |
Avtomat tekshiruvni har o'zgarishda o'zi ishga tushirish — Playwright va axe-core bilan, Accessibility testlari darsida.
10. Ko'p uchraydigan xatolar
10.1 "Lighthouse 100 — tayyor"
Ko'rdik: ma'nosiz alt, "bu yerni bosing" va fokus olmaydigan tugma bilan ham 100 bo'ladi. Tuzatish: 100 — qo'lda testni boshlash uchun ruxsat, xolos.
10.2 Bitta vosita bilan cheklanish
Har vosita boshqa narsani ko'radi. Tuzatish: kamida bitta "HTML" vosita (html-validate) va bitta "brauzer" vosita (axe yoki Lighthouse) va qo'lda test.
10.3 Ekran o'quvchini sichqoncha bilan sinash
Sichqoncha bilan bosib, NVDA nima deyishini eshitish — haqiqiy foydalanuvchi tajribasi emas. Tuzatish: faqat klaviatura yoki imo-ishoralar bilan, vazifani boshidan oxirigacha bajaring.
10.4 Noto'g'ri juftlik
VoiceOver'ni Chrome'da sinab "Safari'da ham shunday" deb o'ylash. Tuzatish: NVDA — Chrome/Firefox, VoiceOver — Safari, TalkBack — Chrome.
10.5 Tuzatgandan keyin qayta tekshirmaslik
Bitta muammoni tuzatish boshqasini keltirib chiqarishi mumkin. Tuzatish: har tuzatishdan keyin o'sha qadamlarni takrorlang.
11. Mashqlar
1-mashq (oson): Qaysi qatlam topadi?
Har muammo uchun uni topadigan eng arzon usulni yozing: avtomat vosita, klaviatura testi yoki ekran o'quvchi.
imgdaaltatributi umuman yo'q.- Modal oyna yopilgandan keyin fokus sahifa boshiga "uchib" ketadi.
- "Bron qabul qilindi" xabari ekranda chiqadi, lekin ovozda aytilmaydi.
- Matn rangi fonga juda yaqin.
alt="IMG_2045".
Yechim
- Avtomat vosita —
altyo'qligini hammasi topadi. - Klaviatura testi —
Escdan keyin fokus qayerga tushganini ko'rasiz. - Ekran o'quvchi — faqat tinglab bilinadi. Sababi, ehtimol, jonli hudud (
role="status") yo'q. - Avtomat vosita — Lighthouse yoki axe kontrastni o'lchaydi.
- Qo'lda tekshirish (yoki ekran o'quvchi) — alt bor, uning ma'nosini faqat odam baholaydi.
2-mashq (o'rta): html-validate'ni bashorat qiling
Quyidagi parcha uchun html-validate (darsdagi sozlama bilan) qaysi qoidalarni buzilgan deb aytishini oldindan yozing. Keyin o'zingiz ishga tushirib tekshiring.
<nav aria-label="Asosiy">
<a href="/"><img src="assets/icons/uy.svg"></a>
</nav>
<label for="qidiruv">Taom qidirish</label>
<input id="qidir" type="search">
<div role="button" tabindex="0">Qidirish</div>Eslatma: label ning for qiymatini va input ning id sini solishtiring. Bu no-missing-references qoidasi, uning to'liq nomi — .
Yechim
Parchani faylga saqlab, npx html-validate bilan tekshirdik:
2:4 error Anchor link must have a text describing its purpose wcag/h30
2:16 error <img> is missing required "alt" attribute wcag/h37
4:13 error Element references missing id "qidiruv" no-missing-references
5:2 error <input> element does not have a <label> input-missing-label
6:6 error Prefer to use the native <button> element prefer-native-element- Havolada matn yo'q, rasmida
altyo'q: tuzatish —alt="Bosh sahifa". for="qidiruv",id="qidir"— mos emas, shuning uchun maydon label'siz qoldi (ikki xato bitta sababdan).div role="button"— nativebuttonbo'lsin.
3-mashq (qiyin): Menyu sahifasi auditi
«Bahor» menyu sahifangizni (oldingi darslarda yozganingiz) to'liq tekshiring:
- html-validate (darsdagi sozlama bilan) va Lighthouse (faqat Accessibility).
- Klaviatura testi — darsdagi 10 bandli ro'yxat.
- 200% zoom va 320 pikselli en.
- NVDA (yoki telefoningizdagi TalkBack/VoiceOver) bilan: sarlavhalar ro'yxati, havolalar ro'yxati va bitta vazifa — "Ichimliklar bo'limida kompot narxini topish".
Natijani darsdagi jadval shaklida hisobot qilib yozing: kamida 5 ta qator.
Yechim
Har kimning sahifasi har xil, shuning uchun namuna hisobot beramiz. Bu choyxona menyusida haqiqatan uchraydigan muammolar:
| # | Muammo | WCAG | Jiddiyligi |
|---|---|---|---|
| 1 | Tablar strelka bilan almashmaydi — JS yo'q, faqat sichqoncha | 2.1.1 | To'siq |
| 2 | Narx faqat rang bilan "chegirma" deb belgilangan | 1.4.1 | Jiddiy |
| 3 | Taom kartalarida "Batafsil" x12 | 2.4.4 | O'rta |
| 4 | 200% zoom'da narxlar ustunining matni kesiladi | 1.4.4 | O'rta |
| 5 | Taom rasmlarida alt = fayl nomi | 1.1.1 | O'rta |
| 6 | title — "Menyu", sayt nomisiz |
2.4.2 | Kichik |
Qanday topildi: 1 — klaviatura testi (Lighthouse ko'rmaydi); 2 — Rendering panelidagi rang emulyatsiyasi; 3 — NVDA havolalar ro'yxati; 4 — Ctrl + +; 5 — WAVE'ning yashil alt belgilari; 6 — NVDA + T. E'tibor bering: oltitadan faqat bittasi (5 — va u ham faqat WAVE ko'rsatgani uchun) avtomat vositaga bog'liq.
12. Real ishda
- QA muhandisi va a11y mutaxassisi. Katta kompaniyalarda accessibility bo'yicha alohida mutaxassislar ishlaydi. Xalqaro sertifikatlar ham bor — IAAP tashkilotining CPACC va WAS sertifikatlari.
- Hisobot hujjatlari. Xalqaro buyurtmachilar ko'pincha VPAT/ACR (mahsulot accessibility talablariga qanchalik mosligi haqidagi rasmiy hisobot) so'raydi. Uning asosi — shu darsdagi audit.
- Kod review. Ko'p jamoalarda "PR'da yangi sahifa bo'lsa — klaviatura testidan o'tkazildimi?" degan band bor.
- Intervyu. "Saytni accessibility bo'yicha qanday tekshirasiz?" — yaxshi javob uchala qatlamni sanaydi va "Lighthouse 100 yetmaydi" deb biladi.
Xulosa
- Accessibility uch qatlamda tekshiriladi: avtomat vositalar, qo'lda (klaviatura, zoom), ekran o'quvchi.
- Avtomat vositalar muammolarning faqat bir qismini topadi va ma'noni baholay olmaydi; Lighthouse 100 — boshlanish.
- html-validate, Lighthouse, axe DevTools va WAVE bir-birini to'ldiradi.
- Klaviatura testi — eng arzon va eng foydali qo'lda test.
- Ekran o'quvchini o'z brauzeri bilan va real vazifada sinang: NVDA + Chrome, VoiceOver + Safari, TalkBack + Chrome.
- Topilgan muammo — hisobotga: nima, qanday takrorlash, kimga ta'sir, WCAG, jiddiylik.
Keyingi dars: template va slot — sahifada ko'rinmaydigan va ishlamaydigan HTML qolip: JavaScript uni klonlab, sahifaga qo'yadi.
Manbalar
- Google: "Lighthouse accessibility scoring" — developer.chrome.com/docs/lighthouse
- Deque: "axe DevTools" va "axe-core" — deque.com, github.com/dequelabs/axe-core
- WebAIM: "WAVE", "Using NVDA to Evaluate Web Accessibility", "Screen Reader User Survey" — webaim.org
- W3C WAI: "Easy Checks – A First Review of Web Accessibility" — w3.org/WAI/test-evaluate
- NV Access: "NVDA User Guide" — nvaccess.org
Izohlar (0)
Izoh yozish uchun kiring.
- Hozircha izoh yo'q. Birinchi bo'ling!