विज़ुअल एक्सेसिबिलिटी टेस्टिंग

विज़ुअल एक्सेसिबिलिटी टेस्टिंग जाँचती है कि कम दृष्टि, रंग-दृष्टि की कमी, vestibular विकार वाले लोग — या तेज़ धूप में छोटी स्क्रीन देखता कोई भी व्यक्ति — इंटरफ़ेस को देख और चला सकता है या नहीं। इसमें contrast, रंग, images, zoom, spacing, target size और motion आते हैं — WCAG 2.2 का वह हिस्सा जिसे आप ज़्यादातर अपनी आँखों, एक ब्राउज़र और कुछ settings से टेस्ट कर सकते हैं।

यह गाइड बताती है कि हर success criterion क्या माँगता है, उसे तेज़ी और भरोसे से कैसे टेस्ट करें, और defect कैसे लिखें। कीबोर्ड focus और screen reader आउटपुट की अपनी अलग गाइड हैं।

टेक्स्ट contrast: ratio का मतलब और उसे कैसे मापें

1.4.3 Contrast (Minimum) (AA) के अनुसार टेक्स्ट और टेक्स्ट की images का background के सामने contrast ratio कम से कम 4.5:1 हो, या large-scale टेक्स्ट के लिए 3:1। WCAG large scale को कम से कम 18 point, या 14 point bold परिभाषित करता है (CSS pixels में 18pt = 24px और 14pt लगभग 18.7px)। Inactive components का टेक्स्ट, शुद्ध सजावट, अदृश्य टेक्स्ट, ऐसी तस्वीर का हिस्सा टेक्स्ट जिसमें अन्य महत्वपूर्ण दृश्य सामग्री हो, और logotypes पर contrast आवश्यकता नहीं है। ज़्यादा सख़्त 1.4.6 Contrast (Enhanced) AAA है, 7:1 और 4.5:1 के साथ।

Ratio डिज़ाइन की राय नहीं है। WCAG इसे दोनों रंगों की relative luminance से परिभाषित करता है — हर रंग की सापेक्ष चमक, 0 (सबसे गहरा काला) से 1 (सबसे हल्का सफ़ेद) के पैमाने पर, sRGB values से गणना की गई — और परिणामी ratio 1:1 से 21:1 तक होता है। WCAG की परिभाषा लागू करने वाला contrast checker इस्तेमाल करें; आँख से अंदाज़ा न लगाएँ।

उदाहरण के लिए: सफ़ेद पर grey #767676 का ratio 4.54:1 है और body text के लिए पास है; सफ़ेद पर #777777 का 4.48:1 है और सामान्य आकार के टेक्स्ट के लिए फ़ेल है (ऊपर round न करें), हालाँकि large text के लिए पास है। रंगों को वैसे मापें जैसे वे render होते हैं: photo या gradient पर टेक्स्ट को सबसे ख़राब बिंदु पर जाँचें, और hover, focus, visited, selected और error states हर एक का अलग माप चाहिए।

मापा गया ratio तभी पास है जब वह threshold के बराबर या ऊपर हो: सफ़ेद पर #767676 (4.54:1) body text के लिए पास है, जबकि #777777 (4.48:1) फ़ेल है और ऊपर round नहीं होता।

सफ़ेद पर contrast ratio

अक्ष 1:1 से 21:1 तक

8 और 20 के बीच अक्ष छोटा किया गया है: पैमाने पर नहीं

  • ≥ 3:1Large text AA (1.4.3) · UI components और graphics (1.4.11)
  • ≥ 4.5:1सामान्य टेक्स्ट AA (1.4.3) · large text AAA (1.4.6)
  • ≥ 7:1सामान्य टेक्स्ट AAA (1.4.6)
  1. 11.61:1 #CCCCCC input border3:1 से कम (1.4.11): फ़ील्ड पहचानना मुश्किल।फ़ेल
  2. 22.85:1 #999999 hint textसामान्य आकार के टेक्स्ट के लिए 4.5:1 से कम (1.4.3)।फ़ेल
  3. 34.48:1 #777777 टेक्स्टसामान्य आकार के टेक्स्ट के लिए फ़ेल; large text के लिए पास।फ़ेल
  4. 44.54:1 #767676 टेक्स्टBody text के लिए पास।पास

बड़ा करके: 4.4:1 से 4.6:1 तक

अक्ष 4.4:1 से 4.6:1 तक
  • ≥ 4.5:1सामान्य टेक्स्ट AA (1.4.3)
  1. 14.48:1 #777777फ़ेल
  2. 24.54:1 #767676पास
  • रंग devtools के colour picker से या computed styles से लें, डिज़ाइन फ़ाइल से नहीं।
  • Body text, secondary text, links, button labels, input text और hint text, table headers, badges और toast संदेश जाँचें।
  • Images और semi-transparent overlays पर टेक्स्ट को उसके पीछे के सबसे हल्के हिस्से पर जाँचें।
  • Disabled controls छूट में हैं, पर जो control सिर्फ़ disabled दिखता है और काम करता है, वह नहीं।

आज़माएँ: कलर कन्वर्टर आज़माएँ: HEX / RGB / HSL कन्वर्टर

Non-text contrast: components, states और graphics

1.4.11 Non-text Contrast (AA) के अनुसार UI components और उनकी states पहचानने के लिए ज़रूरी दृश्य जानकारी, और content समझने के लिए ज़रूरी graphics के हिस्सों का आसपास के रंगों के सामने 3:1 होना चाहिए। Inactive components और बिना बदले ब्राउज़र-default controls छूट में हैं, और वे graphics भी जिनकी एक ख़ास प्रस्तुति आवश्यक है।

आम failures: हल्के input borders (सफ़ेद पर #CCCCCC border 1.61:1 है), checkbox जिसकी checked state सिर्फ़ हल्के रंग से अलग है, हल्के grey icon-only buttons, background से मुश्किल से अलग focus indicators, और chart lines या pie segments जो सिर्फ़ मिलते-जुलते pastel रंगों से अलग हैं। अगर फ़ील्ड का कोई दिखने वाला border ही नहीं है, तो जाँचें कि कुछ और उसे फ़ील्ड के रूप में पहचान देता है — 3:1 पूरा करने वाला background fill या underline।

रंग का उपयोग

1.4.1 Use of Color (A) कहता है कि जानकारी देने, action बताने, प्रतिक्रिया माँगने या element अलग दिखाने का एकमात्र दृश्य साधन रंग न हो। यह contrast से अलग है: दो रंग contrast पास करके भी लाल-हरे की कमी वाले व्यक्ति के लिए अभिन्न हो सकते हैं।

पेज को greyscale में बदलकर टेस्ट करें (OS का colour filter या ब्राउज़र का vision-deficiency emulation) और पूछें: क्या मैं अब भी बता सकता हूँ कि किस फ़ील्ड में error है, कौन-सा link है, chart की कौन-सी line कौन-सी है, कौन-सा status “failed” है? Body text के अंदर जो links आसपास के टेक्स्ट से सिर्फ़ रंग से अलग हैं, उन्हें underline या कोई और non-colour संकेत चाहिए।

Text alternatives: alt text क्या हो, कैसे तय करें

1.1.1 Non-text Content (A) ऐसा text alternative माँगता है जो समान उद्देश्य पूरा करे। टूल बता सकते हैं कि alt attribute मौजूद है या नहीं; वह सही है या नहीं, यह केवल इंसान तय कर सकता है। पहले हर image को वर्गीकृत करें, फिर टेक्स्ट को आँकें।

  • Informative image — alt संदर्भ में image जो जानकारी जोड़ती है उसे संक्षेप में बताए: “chart.png” के बजाय “Bar chart: नए checkout के बाद refunds 9% से घटकर 4% हुए”।
  • Decorative image — ख़ाली alt (alt="") या CSS background, ताकि screen reader उसे छोड़ दे। alt="decorative swirl" वाली सजावटी image सिर्फ़ शोर है।
  • Functional image — जो image link या button है: alt action या गंतव्य बताए (“Search”, “Invoice PDF डाउनलोड करें”), तस्वीर नहीं (“magnifying glass”)।
  • Complex image — charts, diagrams, maps: पहचानने वाला छोटा alt, साथ में पास ही लंबा विवरण या data table जिसमें विवरण हो।
  • Images of text — 1.4.5 Images of Text (AA) माँगता है कि जहाँ तकनीक वही दृश्य प्रस्तुति दे सके, वहाँ images of text के बजाय असली टेक्स्ट इस्तेमाल हो; customizable images और आवश्यक प्रस्तुति (जैसे logotypes) छूट में हैं।
  • Redundant alt — अगर पास का टेक्स्ट पहले से वही कहता है तो image decorative हो सकती है; caption दोहराने से screen reader यूज़र दो बार सुनता है।

Resize text, 320 CSS px पर reflow और text spacing

1.4.4 Resize Text (AA): टेक्स्ट को assistive technology के बिना 200 प्रतिशत तक बढ़ाया जा सके, बिना content या functionality खोए। 200% browser zoom और बड़े default font size से टेस्ट करें, और कटे हुए टेक्स्ट, overlapping elements और स्क्रीन से बाहर जाते controls देखें।

1.4.10 Reflow (AA): content 320 CSS pixels के बराबर चौड़ाई (vertical scroll वाले content के लिए) या 256 CSS pixels ऊँचाई (horizontal scroll वाले content के लिए) पर दो दिशाओं में scroll किए बिना काम करे। WCAG नोट करता है कि 320 CSS pixels, 400% zoom पर 1280 px चौड़े viewport के बराबर है — यही व्यावहारिक टेस्ट है: ब्राउज़र विंडो 1280 px पर सेट करें, 400% zoom करें, और पूरा पेज सिर्फ़ vertical scroll से पढ़ें। Maps, diagrams, video, games, presentations और data tables उन हिस्सों के लिए दो-दिशा scroll रख सकते हैं।

1.4.12 Text Spacing (AA): जब यूज़र line height को font size का 1.5 गुना, paragraphs के बाद spacing 2 गुना, letter spacing 0.12 गुना और word spacing 0.16 गुना सेट करे, तो content या functionality न खोए। नीचे का override bookmarklet या user-stylesheet extension से लगाएँ और कटे labels, overlapping टेक्स्ट और कटे टेक्स्ट वाले buttons देखें। WCAG में उन भाषाओं और लिपियों के लिए अपवाद है जो इनमें से कोई property इस्तेमाल नहीं करतीं — यह अरबी के लिए प्रासंगिक है, जहाँ letter spacing जुड़े अक्षरों से टकराती है; इसे कैसे लागू करें, यह टीम के साथ तय करें।

/* WCAG 1.4.12 text-spacing test override */
* {
  line-height: 1.5 !important;
  letter-spacing: 0.12em !important;
  word-spacing: 0.16em !important;
}
p {
  margin-bottom: 2em !important;
}

Target size

2.5.8 Target Size (Minimum) (AA), जो WCAG 2.2 में नया है, pointer targets को कम से कम 24 by 24 CSS pixels माँगता है, अपवादों के साथ। छोटा target पास होता है अगर उस पर केंद्रित 24 CSS px व्यास का वृत्त किसी दूसरे target या दूसरे छोटे target के वृत्त को न काटे; यह तब भी पास होता है जब उसी पेज पर आकार पूरा करने वाला समकक्ष control हो, जब वह वाक्य के भीतर inline हो, जब उसका आकार user agent तय करे और author ने न बदला हो, या जब प्रस्तुति आवश्यक या कानूनी रूप से ज़रूरी हो।

Devtools में मापें (element का box, उस padding सहित जो clickable क्षेत्र का हिस्सा है)। आम failures: dialogs और chips में close “×” icons, सटे हुए pagination नंबर, छोटे checkboxes, और table cells में icons की पंक्तियाँ। Apple और Google की mobile platform guidelines इस न्यूनतम से बड़े touch targets की सलाह देती हैं; native apps टेस्ट करते समय platform guidance भी इस्तेमाल करें।

Motion, animation और reduced-motion प्राथमिकता

तीन criteria मायने रखते हैं। 2.2.2 Pause, Stop, Hide (A): जो moving, blinking या scrolling content अपने आप शुरू होता है, पाँच सेकंड से ज़्यादा चलता है और दूसरे content के साथ दिखता है, उसे pause, stop या hide करने का तरीका चाहिए — carousels और marquee banners आम संदिग्ध हैं। 2.3.1 Three Flashes or Below Threshold (A): कुछ भी किसी एक सेकंड में तीन बार से ज़्यादा flash न करे, जब तक flash general और red flash thresholds से नीचे न हो। 2.3.3 Animation from Interactions (AAA): interaction से शुरू motion animation बंद किया जा सके, जब तक वह आवश्यक न हो।

भले प्रोजेक्ट AA को लक्ष्य करे, OS की “reduce motion” setting का सम्मान करना सस्ता और अपेक्षित है। ब्राउज़र इसे prefers-reduced-motion media feature से देते हैं। OS में reduce motion चालू करें (या devtools में emulate करें) और सत्यापित करें कि parallax, zoom-in page transitions, अपने आप चलने वाला background video और बड़े sliding effects हटे हैं या सादे fade से बदले गए हैं।

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}

Dark mode, high contrast और forced colours

Dark theme दूसरी दृश्य प्रस्तुति है, और हर contrast जाँच उस पर स्वतंत्र रूप से लागू होती है। आम dark-mode defects: brand रंग जो सफ़ेद पर पास और लगभग-काले पर फ़ेल होते हैं, transparent PNG logos और गहरी stroke वाले icons जो ग़ायब हो जाते हैं, हल्के background के लिए बने focus rings, light-theme palette रखने वाले charts, और card या फ़ील्ड की एकमात्र सीमा के रूप में shadows। OS setting या devtools के prefers-color-scheme emulation से theme बदलें और contrast pass दोबारा चलाएँ।

Forced-colours या high-contrast mode (जैसे Windows contrast themes) के साथ भी टेस्ट करें। ब्राउज़र author के रंग बदल देता है, इसलिए केवल background रंग या background images से दी गई जानकारी ग़ायब हो सकती है: backgrounds से बने कस्टम checkboxes, CSS backgrounds के रूप में बने icons, और केवल box-shadow पर टिके focus styles।

Checklist: विज़ुअल एक्सेसिबिलिटी test cases

नीचे की checklist अंग्रेज़ी में है ताकि test management टूल में सीधे कॉपी हो सके; उसके बिंदु हिंदी में ये हैं:

  • Contrast — body, secondary, link, button, input और hint टेक्स्ट कम से कम 4.5:1 (बड़ा टेक्स्ट 3:1) (1.4.3); images/gradients पर टेक्स्ट सबसे ख़राब बिंदु पर मापा जाए; hover, focus, selected, visited और error states मापे जाएँ; input borders, icons, checkbox/radio states और focus indicator कम से कम 3:1 (1.4.11); समझने के लिए ज़रूरी chart elements पड़ोसी रंगों के मुकाबले कम से कम 3:1 (1.4.11)।
  • रंग — greyscale में भी errors, links, statuses और chart series अलग पहचाने जा सकें (1.4.1)।
  • Images — हर image वर्गीकृत हो: informative, decorative, functional या complex (1.1.1); functional images action बताएँ, decorative का alt="" हो; logos के अलावा images of text न हों (1.4.5)।
  • Zoom और layout — 200% ज़ूम पर कोई टेक्स्ट कटा या overlap न हो और सभी फ़ंक्शन उपलब्ध हों (1.4.4); 1280px पर 400% (= 320 CSS px) में सिर्फ़ vertical scroll हो, 2-D कंटेंट को छोड़कर (1.4.10); text-spacing override से कुछ कटे या overlap न हो (1.4.12)।
  • Targets और motion — pointer targets कम से कम 24×24 CSS px हों या किसी exception में आएँ (2.5.8); 5 सेकंड से ज़्यादा अपने-आप चलने वाला कंटेंट pause, stop या hide हो सके (2.2.2); एक सेकंड में 3 से ज़्यादा बार flashing न हो (2.3.1); reduce-motion setting ग़ैर-ज़रूरी motion हटा दे।
  • Themes — dark theme में पूरा contrast pass दोबारा हो; forced colours/high contrast में controls, icons और focus दिखते रहें।
VISUAL A11Y CHECKLIST — <page / screen / build / theme>

Contrast
[ ] Body, secondary, link, button, input and hint text >= 4.5:1 (large text >= 3:1) (1.4.3)
[ ] Text over images/gradients measured at the worst point
[ ] Hover, focus, selected, visited and error states measured
[ ] Input borders, icons, checkbox/radio states, focus indicator >= 3:1 (1.4.11)
[ ] Chart elements needed for understanding >= 3:1 against neighbours (1.4.11)

Colour
[ ] In greyscale, errors, links, statuses and chart series are still distinguishable (1.4.1)

Images
[ ] Each image classified: informative / decorative / functional / complex (1.1.1)
[ ] Functional images describe the action; decorative have alt=""
[ ] No images of text except logos (1.4.5)

Zoom & layout
[ ] 200% zoom: no clipped or overlapping text, all functions available (1.4.4)
[ ] 1280px at 400% (= 320 CSS px): vertical scroll only, except 2-D content (1.4.10)
[ ] Text-spacing override: nothing truncated or overlapping (1.4.12)

Targets & motion
[ ] Pointer targets >= 24x24 CSS px or meet an exception (2.5.8)
[ ] Auto-moving content > 5 s can be paused/stopped/hidden (2.2.2)
[ ] No flashing more than 3 times per second (2.3.1)
[ ] Reduce-motion setting removes non-essential motion

Themes
[ ] Dark theme: full contrast pass repeated
[ ] Forced colours/high contrast: controls, icons and focus still visible

आज़माएँ: AI QA चेकलिस्ट जनरेटर

आम defects, bug titles के रूप में

रिपोर्ट में मापे गए रंग और ratio लिखें, screenshot लगाएँ और criterion का नाम दें। “#9E9E9E on #FFFFFF = 2.68:1, आवश्यक 4.5:1” वाला contrast bug बिना बहस के ठीक होता है।

  • “Login: सफ़ेद पर hint text #999999 का ratio 2.85:1, 4.5:1 से कम (1.4.3)”
  • “Profile फ़ॉर्म: सफ़ेद पर input borders #CCCCCC 1.61:1, फ़ील्ड पहचाने नहीं जाते (1.4.11)”
  • “Orders table: ‘Failed’ और ‘Paid’ status केवल लाल/हरे dot से (1.4.1)”
  • “Header search बटन: image alt ‘magnifier icon’ है, action ‘Search’ नहीं (1.1.1)”
  • “Pricing पेज 1280px/400% zoom पर: comparison cards को horizontal scroll चाहिए (1.4.10)”
  • “Chip close buttons 16×16 CSS px के और एक-दूसरे से सटे (2.5.8)”
  • “Home carousel हर 4 सेकंड में आगे बढ़ता है, pause control नहीं (2.2.2)”
  • “Dark theme: brand blue पर primary button टेक्स्ट 3.1:1 (1.4.3)”

आज़माएँ: AI बग टाइटल जनरेटर

अक्सर पूछे जाने वाले सवाल

क्या 4.49:1, 4.5:1 के काफ़ी क़रीब है?

नहीं। Threshold न्यूनतम है; उससे नीचे का मान फ़ेल है। मापा गया ratio ठीक वैसा ही रिपोर्ट करें जैसा checker गणना करता है।

क्या disabled buttons को contrast पूरा करना होता है?

नहीं — inactive UI components का टेक्स्ट 1.4.3 से और inactive components 1.4.11 से छूट में हैं। यह छूट उन controls पर लागू नहीं जो disabled दिखते हैं पर काम करते हैं।

फ़ोन के बिना reflow कैसे टेस्ट करें?

Desktop ब्राउज़र विंडो 1280 CSS px चौड़ी करें और 400% zoom करें; WCAG नोट करता है कि यह 320 CSS px के बराबर है। 320 px चौड़ाई पर devtools responsive mode उपयोगी cross-check है।

क्या WCAG dark mode या reduced-motion समर्थन माँगता है?

कोई success criterion dark theme नहीं माँगता; अगर आप देते हैं तो उसे किसी भी प्रस्तुति की तरह टेस्ट करें। Interaction से शुरू motion बंद करना 2.3.3 है, जो AAA criterion है; prefers-reduced-motion का समर्थन इसे पूरा करने का आम तरीका है और हर स्तर पर अच्छी practice है।

क्या mobile apps के लिए 24×24 CSS px काफ़ी है?

यह वेब content के लिए WCAG 2.2 AA का न्यूनतम है। Apple और Google अपनी platform guidelines में बड़े अनुशंसित touch-target आकार प्रकाशित करते हैं, जिन्हें टीमें आम तौर पर native apps के लिए अपनाती हैं।

Decorative images में alt="" हो या alt attribute ही न हो?

ख़ाली alt attribute। alt attribute न होने पर कुछ screen reader इसकी जगह फ़ाइल का नाम बोल सकते हैं, जो चुप्पी से बदतर है।

संदर्भ

  • Web Content Accessibility Guidelines (WCAG) 2.2W3C · 2024W3C की Recommendation जो सुलभ वेब कंटेंट के लिए टेस्ट करने योग्य success criteria तय करती है — चार सिद्धांतों और तीन conformance स्तरों (A, AA, AAA) में व्यवस्थित।
  • Understanding WCAG 2.2W3C Web Accessibility Initiative (WAI)WCAG 2.2 की हर guideline और success criterion की व्याख्या: उद्देश्य, किसे लाभ, उदाहरण और तकनीकें (नॉर्मेटिव नहीं)।
  • How to Meet WCAG (Quick Reference)W3C Web Accessibility Initiative (WAI)WCAG 2.2 के हर success criterion की फ़िल्टर करने योग्य सूची, पर्याप्त तकनीकों और आम विफलताओं के साथ।
  • Easy Checks – A First Review of Web AccessibilityW3C Web Accessibility Initiative (WAI)पूरे मूल्यांकन से पहले कोई भी कर सके ऐसी शुरुआती जाँचें — पेज टाइटल, टेक्स्ट विकल्प, हेडिंग, कंट्रास्ट, टेक्स्ट रीसाइज़, कीबोर्ड एक्सेस।
  • Accessibility — MDNMDN Web Docs (Mozilla)सुलभ वेब पेज बनाने और जाँचने की व्यावहारिक गाइड: सिमैंटिक HTML, ARIA, कीबोर्ड सपोर्ट और टेस्टिंग।
  • Accessibility — Human Interface GuidelinesAppleiOS और अन्य प्लेटफ़ॉर्म के लिए Apple की एक्सेसिबिलिटी डिज़ाइन गाइडेंस: VoiceOver, Dynamic Type, कंट्रास्ट, टच टारगेट और मोशन।
  • Test your app's accessibilityAndroid Developers (Google)Android ऐप की एक्सेसिबिलिटी को TalkBack जैसी सेवाओं से मैन्युअली और प्लेटफ़ॉर्म के टेस्टिंग टूल से ऑटोमेटेड तरीके से कैसे जाँचें।

अभ्यास

Booking पेज के विज़ुअल एक्सेसिबिलिटी pass की समीक्षा करें

आपका काम

आप एक medical centre chain (काल्पनिक) का web app टेस्ट करते हैं, जिसमें मरीज़ appointment बुक करते हैं। Build 4.8.0-rc1 में booking पेज का नया डिज़ाइन आया है, और contract में WCAG 2.2 level AA की शर्त है। App में English और Arabic दो UI हैं। आपने English UI पर visual pass शुरू किया है और मापे गए रंगों, ratios और sizes के साथ चौदह कच्चे observations लिखे हैं; UI का टेक्स्ट हर भाषा के संस्करण में English में quote किया गया है, क्योंकि टेस्ट हो रही UI वही है। कुछ भी file करने से पहले, notes को verdicts और defects में बदलें।

गाइड के success criteria और उसकी checklist के साथ काग़ज़ पर काम करें। Ratios पहले से मापे हुए हैं, इसलिए relative luminance की गणना नहीं करनी; pointer targets के लिए थोड़ा हिसाब चाहिए। हर observation failure नहीं है, और हर समस्या level AA का failure नहीं है: बताएँ कौन-सा क्या है, और क्यों। इसके लिए 25–30 मिनट रखें।

सामग्री
एक medical centre chain की appointment booking (काल्पनिक) - web app, English और Arabic UI
Build 4.8.0-rc1: नए डिज़ाइन वाला "Book an appointment" पेज, एक पेज पर चार steps।
Contract: WCAG 2.2 level AA।
अब तक का pass: English UI, light theme, Windows पर Chrome, browser window 1280 px
चौड़ी, साथ में dark theme में एक spot check। Ratios वैसे जैसे devtools का contrast
checker दिखाता है। Sizes CSS px में, devtools में मापे गए। Quotes में टेक्स्ट
English UI का है।

1   Step heading "Choose a doctor": 24px, regular weight।
    #FFFFFF पर #8A8A8A = 3.45:1
2   Doctor card की line "Next free slot: Tue 10:30": 14px, regular।
    जैसा render होता है: card background #F5F5F5 पर #767676 = 4.17:1।
    Design फ़ाइल में card सफ़ेद है: #FFFFFF पर #767676 = 4.54:1।
3   Mobile number फ़ील्ड के नीचे hint "Example: 0501234567": 13px, regular।
    #FFFFFF पर #777777 = 4.48:1
    Developer का comment: "4.48 round होकर 4.5 है, इसलिए पास।"
4   Button "Pay at the clinic": 16px, regular, #EEEEEE पर #9E9E9E = 2.31:1।
    यह disabled दिखता है, पर काम करता है: एक click से online payment के बिना
    visit बुक हो जाती है।
5   Step 1 पर डॉक्टर चुनने से पहले button "Next": disabled attribute है और click पर
    कुछ नहीं होता। #F5F5F5 पर #BDBDBD = 1.72:1।
6   Text fields (नाम, mobile number, national ID): #FFFFFF पर 1px border #D6D6D6
    = 1.45:1। न fill, न underline: फ़ील्ड कहाँ है, इसका एकमात्र संकेत border है।
7   Time slots: ख़ाली slots का background हल्का हरा (#C8E6C9), बुक हो चुके slots का
    हल्का लाल (#FFCDD2)। समय का टेक्स्ट, जैसे "10:30", दोनों पर #212121 है (11.98:1
    और 11.44:1)। और कोई फ़र्क नहीं। बुक हो चुके slots चुने नहीं जा सकते।
8   सिर्फ़ icon वाला button जो date picker खोलता है:
    <button type="button"><img src="calendar.svg" alt="calendar icon"></button>
9   फ़ॉर्म के ऊपर banner: सपाट हरे background पर सादे सफ़ेद टेक्स्ट की JPG,
    "Free check-up for over-60s every Sunday", और alt text में यही वाक्य।
    Banner में कोई photo या दूसरी तस्वीर नहीं।
10  Browser window 1280 px चौड़ी, zoom 400%:
    a) फ़ॉर्म की चौड़ाई 600 px पर fixed रहती है। "Next" button दाईं ओर कटा है और
       सिर्फ़ sideways scroll करके उस तक पहुँचा जा सकता है।
    b) Fee table (6 columns वाली data table) अपने box के अंदर sideways scroll होती है।
       बाक़ी पेज सिर्फ़ vertical scroll होता है।
11  Pointer targets (padding सहित box):
    a) चुनी गई services chips के रूप में एक के नीचे एक दिखती हैं। हर chip में 16×16 px
       का "×" remove button है। पड़ोसी chips के "×" buttons के केंद्रों के बीच 20 px की
       दूरी है। इस step पर service हटाने का कोई और तरीका नहीं।
    b) Fee के पास "i" info icon: 18×18 px। सबसे नज़दीकी दूसरा target उसके किनारे से
       30 px दूर है।
12  फ़ॉर्म के ऊपर "Health tips" carousel: पेज load होते ही शुरू होता है, हर 6 सेकंड
    में अगले tip पर जाता है और बिना रुके loop करता है। Pause, stop या hide control नहीं।
13  Devtools में prefers-reduced-motion: reduce emulate करने पर भी एक step से अगले
    step पर जाते समय पूरा फ़ॉर्म किनारे से slide होकर आता है (लगभग 0.4 सेकंड)।
14  Dark theme spot check: link "Change doctor", 16px regular, page background
    #121212 पर #1565C0 = 3.26:1। यही link रंग सफ़ेद पर 5.75:1 है।
चरण
  1. हर observation को verdict दें — Pass, Fail, Exempt (कोई आवश्यकता लागू नहीं) या AA failure नहीं — और success criterion का नंबर, नाम और level (A, AA या AAA) लिखें। 10a, 10b, 11a और 11b को अलग-अलग आँकें।
  2. हर रंग वाले observation में पहले लिखें कि कौन-सा threshold लागू होता है और क्यों — सामान्य टेक्स्ट के लिए 4.5:1, large-scale टेक्स्ट के लिए 3:1, non-text के लिए 3:1, या कोई नहीं — और उसके बाद ही मापे गए ratio से तुलना करें।
  3. हर failure के लिए गाइड की शैली में bug title लिखें: स्क्रीन और element, आवश्यक मान के सामने मापे गए मान, और criterion।
  4. अपने notes की तुलना गाइड की checklist से करें। वे जाँचें लिखें जो इस visual pass को पूरा कहने से पहले अभी बाक़ी हैं, और बताएँ कि कौन-से observations किस mode या setting में दोबारा जाँचने हैं।
मॉडल उत्तर दिखाएँ
मॉडल उत्तर

टेक्स्ट contrast — पहले threshold, फिर ratio। 1, step heading: Pass, 1.4.3 Contrast (Minimum) (AA)। 24px = 18pt, इसलिए regular weight में भी heading large-scale टेक्स्ट है और उसे 3:1 चाहिए; 3.45:1 पास है। अगर heading 24px regular से, या लगभग 18.7px bold से, छोटी कर दी जाए, तो इसी grey को 4.5:1 चाहिए होगा और यह फ़ेल होगा। 2, doctor card: Fail, 1.4.3। 14px regular सामान्य टेक्स्ट है और उसे 4.5:1 चाहिए, और गिनती उस रंग की होती है जो render होता है: #F5F5F5 पर #767676 = 4.17:1। Design फ़ाइल का सफ़ेद card मायने नहीं रखता। Title: “Booking, doctor card: #F5F5F5 पर ‘Next free slot’ टेक्स्ट #767676 का ratio 4.17:1, 4.5:1 से कम (1.4.3)”। 3, mobile number hint: Fail, 1.4.3। 4.48:1, 4.5:1 के न्यूनतम से कम है, और ratios कभी ऊपर round नहीं होते; developer को राय से नहीं, नियम और मापे गए मान से जवाब दें। Title: “Booking फ़ॉर्म: सफ़ेद पर mobile number hint #777777 का ratio 4.48:1, 4.5:1 से कम (1.4.3)”।

4, Pay at the clinic: Fail, 1.4.3। Contrast की छूट सिर्फ़ inactive components पर है, और यह button काम करता है, इसलिए इसके टेक्स्ट को 4.5:1 चाहिए और ratio 2.31:1 है। यह भ्रामक भी है: मरीज़ इस विकल्प को अनुपलब्ध समझ सकते हैं, इसलिए कहें कि इसे वैसा ही active button दिखाया जाए जैसा यह है। Title: “Booking: active ‘Pay at the clinic’ button का टेक्स्ट #EEEEEE पर #9E9E9E, 2.31:1, 4.5:1 से कम, और disabled दिखता है (1.4.3)”। 5, disabled Next: Exempt। Button पर disabled attribute है और वह कुछ नहीं करता, इसलिए वह inactive component है: 1.4.3 में उसके टेक्स्ट पर कोई आवश्यकता नहीं, और component 1.4.11 से छूट में है। यह defect नहीं है। 6, text fields: Fail, 1.4.11 Non-text Contrast (AA)। Border ही फ़ील्ड को पहचानने वाली एकमात्र दृश्य जानकारी है, इसलिए सफ़ेद background के सामने उसे 3:1 चाहिए; 1.45:1 फ़ेल है। गहरा border, या 3:1 तक पहुँचने वाला fill या underline, इसे ठीक करता है। Title: “Booking फ़ॉर्म: सफ़ेद पर input borders #D6D6D6, 1.45:1, 3:1 से कम, फ़ील्ड पहचाने नहीं जाते (1.4.11)”। 14, dark theme link: Fail, 1.4.3। 16px regular को 4.5:1 चाहिए, और #121212 पर #1565C0 = 3.26:1। यही रंग सफ़ेद पर 5.75:1 से पास है, और ठीक इसी वजह से dark theme को अपना contrast pass चाहिए। Title: “Dark theme, booking पेज: #121212 पर ‘Change doctor’ link #1565C0 का ratio 3.26:1, 4.5:1 से कम (1.4.3)”।

रंग और images। 7, time slots: Fail, 1.4.1 Use of Color (A)। समय का टेक्स्ट, उसका आकार जो भी हो, दोनों backgrounds पर 1.4.3 पास करता है, क्योंकि 11.98:1 और 11.44:1 दोनों 4.5:1 से ऊपर हैं, लेकिन ख़ाली और बुक हो चुके slots सिर्फ़ रंग से अलग हैं, और दोनों backgrounds लगभग बराबर हल्के हैं (एक-दूसरे के सामने लगभग 1.05:1), इसलिए greyscale में, या लाल-हरे की कमी वाले व्यक्ति को, वे एक जैसे दिखते हैं। अच्छा contrast ratio 1.4.1 पूरा नहीं करता। रंग के अलावा कोई संकेत जोड़ें: शब्द “Booked”, icon, strike-through, या बुक हो चुके slots छिपा दें। Title: “Booking, time slots: booked और free सिर्फ़ लाल/हरे background से (1.4.1)”। 8, date picker button: Fail, 1.1.1 Non-text Content (A)। Image ही button की एकमात्र सामग्री है, इसलिए यह functional image है, और इसका alt बताए कि button क्या करता है — “Choose a date” — न कि तस्वीर में क्या है। Title: “Booking फ़ॉर्म: date picker button की image का alt ‘calendar icon’ है, action ‘Choose a date’ नहीं (1.1.1)”। 9, banner: Fail, 1.4.5 Images of Text (AA), हालाँकि 1.1.1 पास है क्योंकि alt में वही टेक्स्ट है। सपाट background पर सादा टेक्स्ट असली टेक्स्ट और CSS से बन सकता है, और banner न logo है, न customizable, न आवश्यक। Image होने के कारण इसका टेक्स्ट zoom पर धुँधला होता है, और text-spacing override या dark theme का उस पर कोई असर नहीं होता। Title: “Booking पेज: ‘Free check-up for over-60s every Sunday’ banner, image of text है (1.4.5)”।

Layout और targets। 10a, fixed-width फ़ॉर्म: Fail, 1.4.10 Reflow (AA)। 400% zoom पर 1280 px की window, 320 CSS px के viewport के बराबर है, और फ़ॉर्म ऐसा content नहीं जिसे दो-दिशा layout चाहिए, इसलिए जिस “Next” button तक सिर्फ़ sideways scroll से पहुँचा जा सके, वह फ़ेल है। Title: “1280px/400% zoom पर booking फ़ॉर्म: fixed 600 px चौड़ाई, ‘Next’ तक सिर्फ़ horizontal scroll से पहुँच (1.4.10)”। 10b, fee table: Pass। Data tables उस हिस्से के लिए दो-दिशा scroll रख सकती हैं, और बाक़ी पेज reflow होता है। 11a, chip के “×” buttons: Fail, 2.5.8 Target Size (Minimum) (AA)। 16×16, 24×24 से छोटा है, और spacing exception भी नहीं बचाता: 20 px की दूरी पर केंद्रित 24 px के वृत्त एक-दूसरे को काटते हैं, क्योंकि 20, 24 से कम है। Step पर कोई समकक्ष control नहीं, buttons किसी वाक्य के भीतर inline नहीं, और उनका आकार author तय करता है, user agent नहीं। Fix: 24×24 targets, या केंद्र कम से कम 24 px दूर और वृत्तों के अंदर कोई दूसरा target नहीं। Title: “Booking, चुनी गई services: chip के ‘×’ remove buttons 16×16 CSS px, 24×24 से छोटे, केंद्र 20 px दूर (2.5.8)”। 11b, info icon: spacing exception से Pass। 18 px के icon पर केंद्रित 24 px का वृत्त उसके किनारे से सिर्फ़ 3 px बाहर जाता है (12 − 9); अगर सबसे नज़दीकी target भी छोटा हो, तब भी उसका वृत्त उसके किनारे से अधिकतम 12 px बाहर जाता है, और 3 + 12, 30 से काफ़ी कम है।

Motion। 12, carousel: Fail, 2.2.2 Pause, Stop, Hide (A)। यह अपने आप शुरू होता है, फ़ॉर्म के साथ दिखता है, और कुल मिलाकर पाँच सेकंड से कहीं ज़्यादा चलता रहता है। पाँच सेकंड इस बारे में हैं कि movement कितनी देर चलता है, slides के बीच के 6 सेकंड के बारे में नहीं। Title: “Booking पेज: ‘Health tips’ carousel हर 6 सेकंड में अपने आप आगे बढ़ता है और loop करता है, pause, stop या hide control नहीं (2.2.2)”। 13, reduced motion के साथ step transition: AA failure नहीं। Interaction से शुरू motion को बंद कर पाना 2.3.3 Animation from Interactions है, जो level AAA criterion है, और 2.2.2 उस 0.4 सेकंड के transition पर लागू नहीं होता जिसे यूज़र ख़ुद शुरू करता है। इसे improvement के रूप में दर्ज करें — reduce-motion setting का सम्मान करना सस्ता और अपेक्षित है — और साफ़ लिखें कि यह AA contract को नहीं रोकता।

गाइड की checklist के अनुसार pass ने अभी क्या नहीं जाँचा: hover, focus, selected, visited और error states, जैसे चुना गया time slot और mobile number फ़ील्ड की error state (उनके टेक्स्ट के लिए 1.4.3, state indicators के लिए 1.4.11); focus indicator, जिसे 3:1 चाहिए (1.4.11); icons और दूसरे non-text हिस्से, जैसे calendar और “i” icons और कोई भी checkbox या radio states (1.4.11); पूरे पेज की greyscale जाँच — error संदेश, body text के links, statuses — सिर्फ़ slots की नहीं (1.4.1); 200% zoom और बड़ा default font size (1.4.4); text-spacing override (1.4.12); carousel में flashing (2.3.1); एक spot check की जगह dark theme में टेक्स्ट और non-text दोनों का पूरा contrast pass; forced colours या high-contrast theme, जहाँ observation 7 के slot backgrounds system रंगों से बदल जाते हैं और ख़ाली व बुक हो चुके slots एक जैसे दिख सकते हैं, और जहाँ केवल box-shadow पर टिके focus styles ग़ायब हो सकते हैं; और Arabic UI पर यही pass, जहाँ font और टेक्स्ट की लंबाई अलग है और टीम को तय करना है कि 1.4.12 का letter-spacing अपवाद कैसे लागू हो। Observation 9 के banner के टेक्स्ट का हरे background पर contrast भी मापें: 1.4.3 images of text पर भी लागू होता है, और banner के असली टेक्स्ट बनने पर यह माप दोहराया जाता है। Keyboard focus order और screen reader आउटपुट अपनी-अपनी गाइड वाले अलग passes हैं, इस pass की कमी नहीं।

दर्ज करें और जाँचें। हर bug में build (4.8.0-rc1), browser, window की चौड़ाई, zoom और theme, screenshot और मापे गए रंग हों, ताकि fix के बाद confirmation testing वही माप दोहराए। गिनती: 11 Fail (2, 3, 4, 6, 7, 8, 9, 10a, 11a, 12, 14), 3 Pass (1, 10b, 11b), 1 Exempt (5) और 1 AA failure नहीं (13)। अगर आपके verdicts अलग हैं, तो आम जाल जाँचें: threshold टेक्स्ट के आकार और weight पर निर्भर है; ratios कभी ऊपर round नहीं होते; रंग वैसे मापे जाते हैं जैसे render होते हैं; सिर्फ़ सच में inactive components छूट में हैं; रंग का उपयोग contrast से अलग आँका जाता है; 1.1.1 और 1.4.5 अलग criteria हैं; दो-दिशा वाला अपवाद पेज के सिर्फ़ उसी हिस्से पर लागू है; और level AAA का criterion, AA failure नहीं है।

इस topic में आपकी प्रगति

QA रोडमैप का हिस्सा

इस गाइड में बताए गए टूल्स

रंगों को HEX, RGB(A), HSL(A), HSB/HSV, CMYK और CSS नामित रंगों के बीच बदलें, लाइव प्रीव्यू के साथ।

यूटिलिटीज़

Mutqan AI से किसी भी फ़ीचर के लिए अनुकूलित QA चेकलिस्ट (functional, UI, API, security, performance, accessibility, release) बनाएँ।

टेस्ट जनरेशन AI

Mutqan AI से बिखरे हुए विवरण से स्पष्ट और खोजने में आसान बग टाइटल बनाएँ।

बग विश्लेषण AI

Mutqan Soft कैसे मदद कर सकता है

और गाइड

और गाइड
टेस्ट डिज़ाइन

एक्सेसिबिलिटी टेस्टिंग

WCAG 2.2 के साथ एक्सेसिबिलिटी टेस्टिंग: POUR सिद्धांत, A/AA/AAA लेवल, WCAG-EM मूल्यांकन, मैनुअल बनाम ऑटोमेटेड, स्प्रिंट और CI में अभ्यास, आम डिफ़ेक्ट।

17 मिनट पढ़ने का समय
टेस्ट डिज़ाइन

सुलभ फ़ॉर्म की टेस्टिंग

WCAG 2.2 के अनुसार वेब फ़ॉर्म की एक्सेसिबिलिटी कैसे टेस्ट करें: labels, required फ़ील्ड, grouping, errors, autocomplete, redundant entry और सुलभ लॉगिन।

14 मिनट पढ़ने का समय
ऑटोमेशन

ऑटोमेटेड एक्सेसिबिलिटी टेस्टिंग

Automated एक्सेसिबिलिटी checks क्या तय कर सकते हैं और क्या नहीं, ACT rules, आम engines, unit, E2E और CI में checks, triage, baselines और WCAG-EM।

10 मिनट पढ़ने का समय
टेस्ट डिज़ाइन

मोबाइल ऐप टेस्ट सिनेरियो

दोबारा इस्तेमाल लायक मोबाइल टेस्ट सिनेरियो: इंस्टॉल और अपडेट, permissions, इंटरप्शन, नेटवर्क बदलाव, ऑफ़लाइन sync, resources, push notification और gestures।

11 मिनट पढ़ने का समय
टेस्ट डिज़ाइन

कीबोर्ड एक्सेसिबिलिटी टेस्टिंग

कीबोर्ड एक्सेसिबिलिटी कैसे टेस्ट करें: WCAG 2.2 criteria, focus order और visibility, trap, skip link, APG key patterns, dialog, टेस्ट केस, डिफ़ेक्ट।

12 मिनट पढ़ने का समय
टेस्ट डिज़ाइन

स्क्रीन रीडर टेस्टिंग

स्क्रीन रीडर टेस्टिंग: semantics, accessible names, headings और landmarks, ARIA नियम, live regions, NVDA/VoiceOver/TalkBack रूटीन और डिफ़ेक्ट।

14 मिनट पढ़ने का समय