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

फ़ॉर्म वह जगह है जहाँ एक्सेसिबिलिटी defects सबसे महँगे पड़ते हैं: साइन-अप, पेमेंट या सरकारी आवेदन जिसे screen reader यूज़र पूरा न कर सके, वह cosmetic समस्या नहीं बल्कि रुका हुआ ट्रांज़ैक्शन है। ज़्यादातर फ़ॉर्म defects पकड़ना आसान भी है, बशर्ते आपको पता हो क्या ढूँढना है — बिना programmatic label वाला फ़ील्ड, सिर्फ़ लाल रंग में दिखने वाली error, या ऐसा one-time code जिसे paste नहीं किया जा सकता।

यह गाइड फ़ॉर्म पर लागू होने वाले WCAG 2.2 success criteria, व्यवहार में हर एक का मतलब, दोहराने योग्य टेस्ट प्रक्रिया, कॉपी-रेडी checklist और यथार्थवादी defect titles देती है। कीबोर्ड ऑपरेशन और screen reader तकनीक की अपनी अलग गाइड हैं; यहाँ उन्हें फ़ॉर्म पर लागू किया गया है।

फ़ॉर्म पर कौन-से WCAG 2.2 criteria लागू होते हैं

“फ़ॉर्म” नाम का कोई एक success criterion नहीं है। आवश्यकताएँ चारों सिद्धांतों में फैली हैं, इसलिए फ़ॉर्म review असल में criteria के एक तय सेट पर से गुज़रना है। नीचे मुख्य सेट है; स्तर वही हैं जो WCAG 2.2 में प्रकाशित हैं।

  • 1.3.1 Info and Relationships (A) — labels, groups और required स्थिति programmatically उपलब्ध हों, केवल दृश्य रूप से नहीं।
  • 1.3.5 Identify Input Purpose (AA) — यूज़र के बारे में जानकारी लेने वाले फ़ील्ड अपना उद्देश्य बताएँ (HTML में autocomplete attribute से)।
  • 1.4.1 Use of Color (A) — required फ़ील्ड और errors केवल रंग से न दर्शाए जाएँ।
  • 2.5.3 Label in Name (A) — control के accessible name में उसका दिखने वाला label टेक्स्ट शामिल हो।
  • 3.2.2 On Input (A) — फ़ील्ड बदलने से संदर्भ में अप्रत्याशित बदलाव न हो, जैसे फ़ॉर्म का submit हो जाना।
  • 3.3.1 Error Identification (A) — input error पकड़ी जाए तो फ़ील्ड पहचाना जाए और error टेक्स्ट में बताई जाए।
  • 3.3.2 Labels or Instructions (A) — जहाँ यूज़र input चाहिए, वहाँ labels या निर्देश दिए जाएँ।
  • 3.3.3 Error Suggestion (AA) — सुधार ज्ञात हो तो सुझाया जाए, जब तक इससे सुरक्षा या उद्देश्य ख़तरे में न पड़े।
  • 3.3.4 Error Prevention (Legal, Financial, Data) (AA) — कानूनी, वित्तीय या डेटा असर वाले submission reversible, checked या confirmed हों।
  • 3.3.7 Redundant Entry (A) — उसी प्रक्रिया में पहले दी गई जानकारी auto-populate हो या चुनने के लिए उपलब्ध हो।
  • 3.3.8 Accessible Authentication (Minimum) (AA) — लॉगिन का कोई चरण cognitive function test न माँगे, जब तक अनुमत विकल्प या mechanism न हो।
  • 4.1.2 Name, Role, Value (A) और 4.1.3 Status Messages (AA) — कस्टम controls नाम, role और state बताएँ; status और error संदेश focus हटाए बिना assistive technology तक पहुँचें।

Labels, निर्देश और required फ़ील्ड

हर input को ऐसा accessible name चाहिए जो उसके पास दिखने वाले टेक्स्ट से मेल खाए। HTML में मज़बूत तरीका है <label> element जो for/id से input से जुड़ा हो, या input को घेरे हो। खाली फ़ील्ड के अंदर दिखने वाला hint टेक्स्ट label नहीं है: टाइप करते ही ग़ायब हो जाता है, अक्सर contrast में फ़ेल होता है, और accessible name के रूप में उसका समर्थन असंगत है। जहाँ दिखने वाला label element नहीं है वहाँ aria-label और aria-labelledby सही हैं, पर तब Label in Name जाँचें — जो बटन “भेजें” दिखाता है और जिसका नाम “Submit form” है, वह voice-control यूज़र को तोड़ देता है जो वही बोलते हैं जो दिखता है।

निर्देश और format hints (“DD/MM/YYYY”, “कम से कम 8 अक्षर, एक अंक”) फ़ील्ड से पहले हों या उससे जुड़े हों, आम तौर पर aria-describedby से, ताकि फ़ील्ड पर focus आते ही पढ़े जाएँ। जो निर्देश केवल hover पर tooltip में दिखते हैं, वे कीबोर्ड और टच यूज़र तक नहीं पहुँचते।

Required फ़ील्ड को दृश्य और programmatic दोनों संकेत चाहिए। अकेला लाल तारांकन रंग पर और यूज़र के परंपरा जानने पर निर्भर है; फ़ॉर्म के ऊपर एक बार समझाएँ (“* वाले फ़ील्ड अनिवार्य हैं”) या label में “(अनिवार्य)” लिखें, और required attribute या aria-required="true" सेट करें ताकि screen reader उसे बोले।

  • हर फ़ील्ड का accessible name ब्राउज़र devtools के accessibility pane में देखें — markup से अनुमान न लगाएँ।
  • दिखने वाले label पर क्लिक करें: focus फ़ील्ड पर जाना चाहिए (label सच में जुड़ा है, इसकी तेज़ जाँच)।

आज़माएँ: वैलिडेशन टेस्ट जनरेटर आज़माएँ: HTML एक्सेसिबिलिटी चेकर

fieldset और legend से संबंधित फ़ील्ड का grouping

Radio buttons या checkboxes के समूह में अर्थ के दो स्तर होते हैं: प्रश्न और हर उत्तर। अगर केवल उत्तरों के labels हों, तो screen reader यूज़र सुनता है “हाँ, radio button, 1 of 2” और उसे पता नहीं चलता कि पूछा क्या जा रहा है। समूह को <fieldset> और <legend> में रखें, या कस्टम विजेट के लिए aria-labelledby के साथ role="group"/role="radiogroup" इस्तेमाल करें। यही बात दिन, महीना और साल में बँटी जन्म-तिथि और दोहराए गए पते के ब्लॉक पर भी लागू होती है।

<!-- Defect: the question is plain text, not associated with the radios -->
<p>क्या आपके पास residence permit है?</p>
<input type="radio" id="p-yes" name="permit"><label for="p-yes">हाँ</label>
<input type="radio" id="p-no" name="permit"><label for="p-no">नहीं</label>

<!-- Fixed: the legend names the group; each option keeps its own label -->
<fieldset>
  <legend>क्या आपके पास residence permit है? (अनिवार्य)</legend>
  <input type="radio" id="p-yes" name="permit" required><label for="p-yes">हाँ</label>
  <input type="radio" id="p-no" name="permit"><label for="p-no">नहीं</label>
</fieldset>

Error पहचान, सुझाव और announcement

Validation फ़ेल होने पर तीन बातें सही होनी चाहिए। Error वाला फ़ील्ड पहचाना जाए; error टेक्स्ट में बताई जाए (3.3.1); और जहाँ सुधार ज्ञात हो, सुझाया जाए (3.3.3) — “तारीख़ DD/MM/YYYY में लिखें, जैसे 05/03/2026”, न कि “Invalid input”। अकेला लाल border 1.4.1 में फ़ेल है; अकेले icon को text alternative चाहिए; और संदेश फ़ील्ड से programmatically जुड़ा हो (aria-describedby या aria-errormessage के साथ aria-invalid="true") ताकि यूज़र फ़ील्ड पर लौटे तो पढ़ा जाए।

सुलभ फ़ील्ड code में जुड़ा होता है, सिर्फ़ पास-पास रखा नहीं: label input को नाम देता है, और hint व error टेक्स्ट उससे programmatically जुड़े होते हैं।

ग़लत format डालने के बाद जन्म-तिथि फ़ील्ड

<label भाग 1:for="dob">भाग 2:Date of birth (required)</label>
<p id="dob-hint">भाग 3:DD/MM/YYYY</p>
<input भाग 1:id="dob" भाग 4:required
  भाग 5:autocomplete="bday"
  भाग 6:aria-invalid="true"
  भाग 7:aria-describedby="dob-hint dob-error">
<p id="dob-error">भाग 8:Enter the date as DD/MM/YYYY, for example 05/03/2026</p>
  1. 1Input से जुड़ा labelfor input के id से मेल खाता है: label पर क्लिक करने से focus फ़ील्ड पर जाता है।1.3.1
  2. 2दिखने वाला label = accessible nameनाम में दिखने वाला टेक्स्ट शामिल है; (required) लिखा गया है, सिर्फ़ रंग से नहीं दर्शाया गया।2.5.3 · 3.3.2 · 1.4.1
  3. 3फ़ील्ड से पहले format hintफ़ील्ड से पहले लिखा है, सिर्फ़ hover tooltip में नहीं; (7) से जुड़ा है ताकि focus आते ही पढ़ा जाए।3.3.2
  4. 4Required स्थितिrequired या aria-required="true", ताकि screen reader उसे बोले।1.3.1
  5. 5Input purposebday token बताता है कि फ़ील्ड क्या लेता है; ब्राउज़र उसे भर सकते हैं।1.3.5
  6. 6Invalid स्थितिजब तक फ़ील्ड की value validation में फ़ेल है, तब तक सेट रहता है।
  7. 7Hint और error जुड़े हुएHint (3) और error (8) की ओर इशारा करता है, ताकि दोनों फ़ील्ड पर पढ़े जाएँ। विकल्प: aria-invalid के साथ aria-errormessage।
  8. 8Error टेक्स्ट में, सुधार के साथसमस्या बताता है और अपेक्षित format उदाहरण सहित सुझाता है, “Invalid input” नहीं।3.3.1 · 3.3.3

Styling लाल border या icon जोड़ सकती है, पर अकेला लाल border 1.4.1 में फ़ेल है और अकेले icon को text alternative चाहिए: यहाँ error टेक्स्ट में है (8)।

यूज़र को यह भी पता चलना चाहिए कि error हुई है। दो आम, व्यावहारिक पैटर्न: submit पर फ़ॉर्म के ऊपर error summary दिखाएँ, focus उस पर ले जाएँ और हर प्रविष्टि को उसके फ़ील्ड से link करें; या focus सीधे पहले invalid फ़ील्ड पर ले जाएँ। जो संदेश focus हटाए बिना आते हैं — “सेव हो गया”, “3 परिणाम”, asynchronous “username पहले से लिया गया” — उनके लिए live region इस्तेमाल करें (जानकारी के लिए role="status" या aria-live="polite"; ज़रूरी errors के लिए role="alert") ताकि 4.1.3 Status Messages पूरा हो। Live region का container टेक्स्ट डालने से पहले पेज में मौजूद होना चाहिए, वरना कई screen readers उसे नहीं बोलते।

Inline validation की टाइमिंग पर ध्यान दें। हर keystroke पर, या जब यूज़र अभी ईमेल टाइप कर रहा हो, error बोलना शोरगुल और उलझन पैदा करता है; blur या submit पर validate करना आम तौर पर शांत रहता है। और किसी फ़ील्ड का बदलना अपने आप फ़ॉर्म submit या पेज navigate नहीं करना चाहिए (3.2.2 On Input), जब तक यूज़र को पहले न बताया गया हो।

  • खाली फ़ॉर्म submit करें: हर required फ़ील्ड टेक्स्ट में रिपोर्ट हो, संदेश में फ़ील्ड का नाम हो।
  • ग़लत format डालें: संदेश अपेक्षित format उदाहरण सहित बताए।
  • Screen reader के साथ invalid फ़ॉर्म submit करें: बिना खोजे सुनाई दे कि errors हैं।
  • Server-side errors (जैसे “card declined”) भी client-side errors की तरह ही announce हों।

आज़माएँ: नेगेटिव टेस्ट जनरेटर आज़माएँ: Mock एरर पेलोड जनरेटर

Error prevention और redundant entry

3.3.4 Error Prevention (Legal, Financial, Data) उन पेजों पर लागू है जो कानूनी प्रतिबद्धता या वित्तीय ट्रांज़ैक्शन बनाते हैं, यूज़र-नियंत्रित डेटा बदलते या हटाते हैं, या टेस्ट उत्तर जमा करते हैं। तीन में से कम से कम एक विकल्प सही होना चाहिए: submission reversible हो; डेटा जाँचा जाए और यूज़र सुधार सके; या अंतिम रूप देने से पहले review, confirm और सुधार की व्यवस्था हो। व्यवहार में टेस्टर पेमेंट से पहले review चरण, undo या cancellation की अवधि, या अकाउंट हटाने से पहले confirmation dialog जाँचते हैं — और यह कि review स्क्रीन ख़ुद सुलभ है (headings, पढ़ने योग्य values, हर सेक्शन के लिए साफ़ नाम वाला “Edit” link)।

3.3.7 Redundant Entry (A) WCAG 2.2 में नया है। अगर कोई multi-step प्रक्रिया वह जानकारी फिर माँगती है जो यूज़र पहले दे चुका है — billing चरण में shipping पता, confirmation चरण में national ID — तो उसे auto-populate करना या चुनने के लिए देना होगा (जैसे “shipping पते जैसा ही” checkbox)। अपवाद तब हैं जब दोबारा डालना आवश्यक हो, सुरक्षा के लिए ज़रूरी हो (जैसे नया password confirm करना), या पहले की जानकारी अब मान्य न हो।

Input purpose, autocomplete और सुलभ authentication

1.3.5 Identify Input Purpose चाहता है कि यूज़र की जानकारी लेने वाले फ़ील्ड अपना उद्देश्य programmatically बताएँ, जब वह उद्देश्य WCAG के “Input Purposes for User Interface Components” सेक्शन में सूचीबद्ध हो। HTML में इसका मतलब है सही token वाला autocomplete attribute: name, given-name, family-name, email, tel, street-address, postal-code, bday, username, current-password, new-password, cc-number आदि। Conformance से आगे, सही tokens ब्राउज़र और password managers को फ़ॉर्म भरने देते हैं, जो मोटर और संज्ञानात्मक विकलांगता वाले लोगों की सीधी मदद है। हर फ़ील्ड पर token जाँचें; व्यक्तिगत-डेटा फ़ील्ड पर autocomplete="off" उठाने लायक finding है।

3.3.8 Accessible Authentication (Minimum) कहता है कि authentication प्रक्रिया का कोई चरण cognitive function test — password याद रखना, puzzle हल करना, code हाथ से उतारना — न माँगे, जब तक वह चरण बिना ऐसे test का वैकल्पिक तरीका, मदद करने वाला mechanism (WCAG के अपने उदाहरण: password manager समर्थन और copy-paste), या वस्तु पहचानने या यूज़र द्वारा दी गई व्यक्तिगत सामग्री पहचानने वाला test न दे। Understanding दस्तावेज़ one-time code को हाथ से उतारने को cognitive function test मानता है, इसलिए यूज़र को कम से कम code paste करने में सक्षम होना चाहिए।

  • Username और password फ़ील्ड paste स्वीकार करें और password managers उन्हें भर सकें (कोई script paste या autofill को न रोके)।
  • One-time code पूरा paste हो सके। “हर अंक के लिए एक बॉक्स” वाले inputs अक्सर इसमें फ़ेल होते हैं: paste सिर्फ़ पहला बॉक्स भरता है — इसे स्पष्ट रूप से टेस्ट करें। HTML token autocomplete="one-time-code" ब्राउज़र को code सुझाने में मदद करता है; यह WCAG की input-purpose सूची में नहीं है, इसलिए इसे 1.3.5 की आवश्यकता नहीं, अच्छी practice मानें।
  • CAPTCHA: टेक्स्ट या puzzle CAPTCHA cognitive function test है और उसे विकल्प चाहिए; object-recognition CAPTCHA AA पर अपवाद है (AAA यानी 3.3.9 Accessible Authentication (Enhanced) पर नहीं)। किसी भी CAPTCHA image को 1.1.1 के तहत उसका उद्देश्य बताने वाला text alternative, और दूसरी इंद्रिय वाला वैकल्पिक रूप फिर भी चाहिए।
  • Passwordless विकल्प (ईमेल link, passkeys/WebAuthn) cognitive function test से बचने वाले विकल्प हैं — जाँचें कि वे कीबोर्ड और screen reader से पहुँचने और चलाने योग्य हैं।

आज़माएँ: फ़ेक यूज़र जनरेटर

एक व्यावहारिक टेस्ट प्रक्रिया

  • Structure pass (devtools): हर फ़ील्ड के लिए accessibility tree में computed accessible name, role, description, required और invalid स्थिति पढ़ें। Autocomplete tokens की पुष्टि करें।
  • Keyboard pass: फ़ॉर्म केवल Tab, Shift+Tab, arrow keys, Space और Enter से पूरा करें — focus order दृश्य क्रम का पालन करे, focus हमेशा दिखे, कस्टम select और date picker चलें (कीबोर्ड एक्सेसिबिलिटी गाइड देखें)।
  • Screen-reader pass: Windows पर NVDA या JAWS, macOS/iOS पर VoiceOver, या Android पर TalkBack से पूरा करें — हर फ़ील्ड, group, hint और error सार्थक रूप से बोला जाए (screen reader टेस्टिंग गाइड देखें)।
  • Error pass: खाली submit, हर ग़लत format, server-side errors और timeout ट्रिगर करें। Focus की गति और announcements देखें।
  • Visual pass: 200% zoom करें और 320 CSS px चौड़ाई पर reflow जाँचें; labels और errors अपने फ़ील्ड के पास रहें; errors रंग पर निर्भर न हों; फ़ील्ड borders और focus indicators non-text contrast पूरा करें।

आज़माएँ: वैलिडेशन टेस्ट जनरेटर आज़माएँ: फ़ेक नाम जनरेटर

Checklist: सुलभ फ़ॉर्म test cases

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

  • Labels और निर्देश — हर फ़ील्ड का दिखने वाला label और उससे मेल खाता accessible name हो (1.3.1, 3.3.2, 2.5.3); placeholder कभी अकेला label न हो; format hints फ़ील्ड से जुड़े हों (aria-describedby) और फ़ोकस पर पढ़े जाएँ; required फ़ील्ड दिखने वाले टेक्स्ट या समझाए गए चिह्न के साथ required/aria-required से चिह्नित हों (1.3.1, 1.4.1)।
  • Grouping — radio/checkbox groups और बँटे हुए फ़ील्ड (तारीख़, फ़ोन) में fieldset+legend हो, या नाम वाला role=group।
  • Errors — ख़ाली submit पर हर error फ़ील्ड का नाम ले और टेक्स्ट में हो (3.3.1); ग़लत format पर संदेश उदाहरण के साथ सही format सुझाए (3.3.3); error फ़ील्ड से जुड़ा हो और invalid फ़ील्ड पर aria-invalid लगा हो; errors announce हों — फ़ोकस summary या पहले error पर जाए, या live region इस्तेमाल हो (4.1.3); errors सिर्फ़ रंग से न दिखें (1.4.1); फ़ील्ड बदलने से अचानक submit या navigation न हो (3.2.2)।
  • Prevention और redundant entry — कानूनी, वित्तीय या डेटा बदलने वाले submit में review, undo या check-and-correct हो (3.3.4); पिछले चरणों का डेटा पहले से भरा या चुनने योग्य हो (3.3.7); session timeout डेटा खोए बिना बढ़ाया जा सके (2.2.1)।
  • Purpose और authentication — personal-data फ़ील्ड पर autocomplete tokens सही हों (1.3.5); username/password/OTP फ़ील्ड में paste और password managers काम करें (3.3.8); पूरा OTP paste करने पर सभी बँटे boxes भर जाएँ; CAPTCHA का विकल्प और टेक्स्ट विकल्प हो (3.3.8, 1.1.1)।
  • Operation — पूरा फ़ॉर्म सिर्फ़ कीबोर्ड से, दिखने वाले फ़ोकस के साथ, और स्क्रीन रीडर से पूरा हो सके; 200% ज़ूम और 320 CSS px चौड़ाई पर कोई label या error न खोए; RTL फ़ॉर्म में lang="ar" dir="rtl" हो और LTR डेटा फ़ील्ड dir="ltr" या dir="auto" इस्तेमाल करें।
FORM A11Y CHECKLIST — <form name / URL / build>

Labels & instructions
[ ] Every field has a visible label and a matching accessible name (1.3.1, 3.3.2, 2.5.3)
[ ] Placeholder is never the only label
[ ] Format hints are associated with the field (aria-describedby) and read on focus
[ ] Required fields: visible text or explained marker + required/aria-required (1.3.1, 1.4.1)

Grouping
[ ] Radio/checkbox groups and split fields (date, phone) have fieldset+legend or role=group with a name

Errors
[ ] Empty submit: each error names the field and is in text (3.3.1)
[ ] Wrong format: message suggests the correct format with an example (3.3.3)
[ ] Error is associated with the field; aria-invalid set on invalid fields
[ ] Errors are announced: focus moves to summary/first error, or live region used (4.1.3)
[ ] Errors are not shown by colour alone (1.4.1)
[ ] Changing a field does not submit or navigate unexpectedly (3.2.2)

Prevention & redundant entry
[ ] Legal/financial/data-changing submit: review, undo or check-and-correct exists (3.3.4)
[ ] Data from earlier steps is pre-filled or selectable (3.3.7)
[ ] Session timeout can be extended without data loss (2.2.1)

Purpose & authentication
[ ] autocomplete tokens correct on personal-data fields (1.3.5)
[ ] Paste and password managers work on username/password/OTP fields (3.3.8)
[ ] Pasting a full OTP into split boxes fills all boxes
[ ] CAPTCHA has an alternative and a text alternative (3.3.8, 1.1.1)

Operation
[ ] Whole form completable by keyboard only; focus visible
[ ] Whole form completable with a screen reader
[ ] 200% zoom and 320 CSS px width: no lost labels or errors
[ ] RTL forms: lang="ar" dir="rtl"; LTR data fields use dir="ltr"/"auto"

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

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

एक्सेसिबिलिटी bugs तेज़ी से ठीक होते हैं जब title control, दिखने वाली विफलता और प्रभावित यूज़र्स का नाम ले, और body success criterion का हवाला दे। पूरी रिपोर्ट की बनावट bug-report गाइड में है; ये यथार्थवादी titles हैं जिनके अनुसार आप अपने लिख सकते हैं।

  • “Sign-up: Email फ़ील्ड का कोई accessible name नहीं — screen reader केवल ‘edit text’ बोलता है (1.3.1, 4.1.2)”
  • “Checkout: card errors केवल लाल border से दिखती हैं; कोई टेक्स्ट संदेश नहीं (1.4.1, 3.3.1)”
  • “Payment: submit के बाद error summary दिखता है पर focus बटन पर ही रहता है और कुछ announce नहीं होता (4.1.3)”
  • “Login: password फ़ील्ड में paste ब्लॉक, password managers भर नहीं पाते (3.3.8)”
  • “OTP स्क्रीन: 6 अंकों का code paste करने पर छह में से केवल पहला बॉक्स भरता है (3.3.8)”
  • “Visa आवेदन चरण 3: passport नंबर दोबारा टाइप करना पड़ता है जबकि चरण 1 में डाला गया था (3.3.7)”

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

अरबी और right-to-left फ़ॉर्म

अरबी फ़ॉर्म ऊपर की सूची के अलावा अपनी जाँचें जोड़ते हैं। पेज या फ़ॉर्म में lang="ar" और dir="rtl" होना चाहिए ताकि screen reader आवाज़ बदले और सही क्रम में पढ़े; labels, hints और error summaries right-to-left पढ़ने के क्रम का पालन करें, और focus order उससे मेल खाए। Left-to-right डेटा वाले फ़ील्ड — ईमेल, URL, IBAN, कई फ़ोन formats — को आम तौर पर input पर ही dir="ltr" (या dir="auto") चाहिए ताकि टाइप करते समय अक्षरों का क्रम न बदले, और ऐसे values उद्धृत करने वाले error संदेश उन्हें उलझाएँ नहीं।

Validation को वही स्वीकार करना चाहिए जो लोग अरबी में सच में टाइप करते हैं: फ़ोन और ID नंबर में Arabic-Indic अंक (अगर सिस्टम उन्हें बदलता है), अरबी लिपि में नाम, और जहाँ बिज़नेस स्वीकार करे वहाँ हिजरी तारीख़ें। सही अरबी नाम पर “मान्य नाम डालें” जैसी error functional और एक्सेसिबिलिटी दोनों तरह का defect है। RTL टेस्टिंग गाइड bidirectional टेक्स्ट, mirroring और mixed-direction input को विस्तार से कवर करती है।

आज़माएँ: फ़ेक नाम जनरेटर

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

क्या फ़ील्ड के अंदर का hint टेक्स्ट label के रूप में काफ़ी है?

नहीं। यूज़र के टाइप शुरू करते ही वह ग़ायब हो जाता है, अक्सर उसका contrast कम होता है और वह भरोसेमंद रूप से accessible name के रूप में उपलब्ध नहीं होता। फ़ील्ड से जुड़ा दिखने वाला label इस्तेमाल करें; hint टेक्स्ट, अगर रखें, तो उदाहरण value के लिए।

Errors inline दिखें, summary में, या दोनों में?

WCAG चाहता है कि फ़ील्ड पहचाना जाए और error टेक्स्ट में बताई जाए; वह कोई layout अनिवार्य नहीं करता। कई टीमें दोनों इस्तेमाल करती हैं: ऊपर summary जो submit के बाद focus पाता है और हर फ़ील्ड का link देता है, साथ ही हर फ़ील्ड के पास programmatically जुड़ा संदेश।

फ़ॉर्म errors के लिए aria-live="polite" या role="alert"?

Status updates और गैर-ज़रूरी संदेशों के लिए polite announcements (role="status" या aria-live="polite"), और तुरंत ध्यान माँगने वाली errors के लिए role="alert" संयम से इस्तेमाल करें। जो भी चुनें, असली screen reader से पुष्टि करें कि संदेश एक बार बोला जाता है और हर keystroke पर दोहराया नहीं जाता।

क्या 3.3.8 passwords पर रोक लगाता है?

नहीं। यह चाहता है कि cognitive function test एकमात्र रास्ता न हो, या कोई mechanism मदद करे। Password managers को फ़ील्ड भरने देना और paste की अनुमति देना ऐसा mechanism है जिसे WCAG ख़ुद उदाहरण के रूप में देता है।

क्या autocomplete="off" WCAG failure है?

जो फ़ील्ड यूज़र के बारे में जानकारी लेते हैं और जिनका उद्देश्य WCAG की input-purpose सूची में है, उनका उद्देश्य programmatically निर्धारित होना चाहिए; autocomplete="off" यह संकेत हटा देता है, इसलिए इसे आम तौर पर 1.3.5 के तहत रिपोर्ट किया जाता है। Search box या एक बार के reference जैसे फ़ील्ड, जो यूज़र के बारे में नहीं हैं, उन पर यह उचित है।

संदर्भ

  • 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 की फ़िल्टर करने योग्य सूची, पर्याप्त तकनीकों और आम विफलताओं के साथ।
  • Accessible Rich Internet Applications (WAI-ARIA) 1.2W3C · 2023W3C Recommendation जो ARIA roles, states और properties परिभाषित करती है — कस्टम विजेट अपना अर्थ सहायक तकनीक को कैसे बताते हैं।
  • ARIA Authoring Practices Guide (APG)W3C Web Accessibility Initiative (WAI)आम विजेट (tabs, menus, dialogs, comboboxes) के पैटर्न, अपेक्षित कीबोर्ड इंटरैक्शन और ARIA उपयोग के साथ — वह संदर्भ जिससे टेस्टर कस्टम कंपोनेंट की तुलना करते हैं।
  • Accessibility — MDNMDN Web Docs (Mozilla)सुलभ वेब पेज बनाने और जाँचने की व्यावहारिक गाइड: सिमैंटिक HTML, ARIA, कीबोर्ड सपोर्ट और टेस्टिंग।
  • Evaluating Web Accessibility OverviewW3C Web Accessibility Initiative (WAI)एक्सेसिबिलिटी मूल्यांकन के लिए W3C का प्रवेश-पृष्ठ: शुरू से और पूरे विकास में मूल्यांकन क्यों, और मैनुअल जाँच, टूल व यूज़र भागीदारी कैसे साथ काम करते हैं।

अभ्यास

चार चरणों वाले ऑर्डर फ़ॉर्म की WCAG 2.2 AA के अनुसार समीक्षा करें

आपका काम

आप सऊदी अरब के एक काल्पनिक internet provider के घरेलू fibre internet के online ऑर्डर को टेस्ट कर रहे हैं। ऑर्डर के चार चरण हैं: मोबाइल नंबर से साइन इन, आपकी जानकारी, इंस्टॉलेशन, और रिव्यू व भुगतान। एक्सेसिबिलिटी के लिए test basis WCAG 2.2 Level AA है। Release से पहले आप गाइड की प्रक्रिया से फ़ॉर्म की समीक्षा करते हैं। नीचे के material में चरण 2 का markup है, जैसा server भेजता है, और आपके keyboard, screen reader और error passes के notes हैं।

गाइड की criteria सूची और checklist के साथ काग़ज़ पर काम करें। हर defect के लिए success criterion का नंबर, नाम और स्तर लिखें; जो item defect नहीं है, उसके लिए कारण लिखें। इसके लिए 20–30 मिनट रखें।

सामग्री
Home fibre internet का ऑर्डर, सऊदी अरब का internet provider (काल्पनिक) - web, staging
Page: <html lang="hi">। Test basis: WCAG 2.2, Level AA।
चरण: 1 मोबाइल से साइन इन · 2 आपकी जानकारी · 3 इंस्टॉलेशन · 4 रिव्यू और भुगतान
चरण 1 में ग्राहक अपने मोबाइल नंबर और SMS से आए 6 अंकों के code से साइन इन करता है;
नया नंबर हो तो नया account बनता है।

चरण 2 का markup (अंश, जैसा server भेजता है)

<h2>चरण 2 (4 में से): आपकी जानकारी</h2>
<p>सभी फ़ील्ड अनिवार्य हैं।</p>
<form id="details" novalidate>
  <span class="lbl">पूरा नाम</span>
  <input id="name" name="name" autocomplete="name" required>

  <label for="email">ईमेल</label>
  <input id="email" name="email" type="email" autocomplete="off" required>

  <input id="mobile" name="mobile" type="tel" placeholder="मोबाइल नंबर" required>

  <p>जन्म तिथि</p>
  <select id="dob-d" name="dob-d" aria-label="दिन" required>…</select>
  <select id="dob-m" name="dob-m" aria-label="महीना" required>…</select>
  <select id="dob-y" name="dob-y" aria-label="साल" required>…</select>

  <label for="nid">नेशनल ID या इक़ामा नंबर</label>
  <input id="nid" name="nid" inputmode="numeric" aria-describedby="nid-hint" required>
  <p id="nid-hint">10 अंक, 1 (नेशनल ID) या 2 (इक़ामा) से शुरू</p>

  <button type="submit" aria-label="फ़ॉर्म सबमिट करें">आगे</button>
</form>
तारीख़ की हर सूची में value चुने जाने तक दिन, महीना या साल लिखा दिखता है।
फ़ॉर्म अपनी script से validate करता है (novalidate): फ़ील्ड से focus हटने पर
और "आगे" दबाने पर।

बाक़ी passes के notes (सिर्फ़ keyboard; Windows पर Chrome के साथ NVDA)

N1 चरण 1: code छह boxes में जाता है, जो एक <fieldset> के अंदर हैं जिसका <legend> है
   "SMS से भेजा गया 6 अंकों का code डालें"। हर box में maxlength="1" है और उनके
   नाम "अंक 1" से "अंक 6" तक हैं। एक अंक टाइप करने पर focus अगले box पर जाता है।
   SMS से code 482913 पहले box में paste करने पर उसमें 4 आता है; बाक़ी पाँच ख़ाली
   रहते हैं।
N2 चरण 1: छहों code boxes पर कोई autocomplete attribute नहीं है।
N3 चरण 2, सभी फ़ील्ड ख़ाली रखकर "आगे": हर फ़ील्ड पर लाल border आ जाता है।
   कहीं कोई टेक्स्ट नहीं दिखता, focus "आगे" पर ही रहता है और NVDA कुछ नहीं बोलता।
N4 चरण 2, 9 अंकों की नेशनल ID, फिर "आगे": फ़ील्ड के नीचे लाल टेक्स्ट "अमान्य इनपुट"
   दिखता है और focus फ़ील्ड पर चला जाता है।
N5 चरण 2, ऐसे पते के साथ ईमेल फ़ील्ड छोड़ना जिसका account पहले से है: फ़ील्ड के
   नीचे "यह ईमेल पहले से रजिस्टर्ड है। इसकी जगह साइन इन करें।" दिखता है, एक
   <div class="err"> में जिसे script उसी पल बनाती है, बिना role और बिना aria-live।
   NVDA कुछ नहीं बोलता।
N6 चरण 3: "इंस्टॉलेशन का समय" सूची (<select>) value बदलते ही चरण submit कर देती है।
   बंद सूची पर Down Arrow अगला slot चुनता है और चरण 4 तुरंत खुल जाता है।
N7 चरण 4: चरण 1 से 3 की हर value हर चरण के heading के नीचे दिखती है, और हर चरण का
   अपना edit link है जिस पर चरण का नाम है (जैसे "इंस्टॉलेशन बदलें")। ऑर्डर तभी
   होता है जब यूज़र "मैंने अपना ऑर्डर जाँच लिया है" चुनकर "299.00 SAR का भुगतान
   करें" दबाता है। भुगतान के बाद 24 घंटे तक ऑर्डर मुफ़्त रद्द किया जा सकता है।
चरण
  1. चरण 2 के markup पर structure pass करें: हर control का accessible name लिखें, उसका group, hint और required स्थिति कैसे expose होती है, और उसका autocomplete token। हर failure को उसके criterion के साथ चिह्नित करें।
  2. Notes N1 से N7 को वर्गीकृत करें: defect, success criterion के साथ, या defect नहीं, कारण के साथ।
  3. हर defect के लिए गाइड के पैटर्न में bug title लिखें (स्क्रीन, control, दिखने वाली failure, criterion), और उन defects को चिह्नित करें जो यूज़र्स के किसी समूह को ऑर्डर पूरा करने से रोक सकते हैं।
  4. हर defect को ठीक करने वाला markup या व्यवहार का बदलाव लिखें, फिर बताएँ कि fixes आने पर confirmation testing और regression testing में आप क्या जाँचेंगे।
मॉडल उत्तर दिखाएँ
मॉडल उत्तर

चरण 2 पर structure pass, एक-एक control। पूरा नाम: accessible name ख़ाली है, क्योंकि दिखने वाला टेक्स्ट <span> में है, input से जुड़े <label> में नहीं, इसलिए screen reader बिना नाम का edit फ़ील्ड बोलता है। यह 1.3.1 Info and Relationships (A) और 4.1.2 Name, Role, Value (A) में फ़ेल है; इसका autocomplete="name" और required सही हैं। ईमेल: नाम <label> से आता है, required स्थिति expose है, लेकिन यूज़र का अपना पता लेने वाले फ़ील्ड पर autocomplete="off" 1.3.5 Identify Input Purpose (AA) में फ़ेल है। मोबाइल फ़ील्ड (mobile): इसका अकेला label placeholder है, जो टाइप करते ही ग़ायब हो जाता है और भरोसेमंद रूप से नाम के रूप में expose नहीं होता, इसलिए यह checklist का नियम "placeholder कभी अकेला label न हो" तोड़ता है (3.3.2 Labels or Instructions, A); इसमें autocomplete="tel" भी नहीं है (1.3.5)। सबसे बड़ी बात, यह नंबर चरण 1 में डाला और verify किया जा चुका है, फिर भी न पहले से भरा है, न चुनने के लिए उपलब्ध: 3.3.7 Redundant Entry (A)। कोई अपवाद लागू नहीं होता: दोबारा डालना आवश्यक नहीं, सुरक्षा के लिए ज़रूरी नहीं, और नंबर अब भी मान्य है।

जन्म तिथि: हर सूची का नाम (दिन, महीना, साल) उसके दिखने वाले टेक्स्ट से मेल खाता है, लेकिन सवाल "जन्म तिथि" एक साधारण <p> है, इसलिए screen reader यूज़र "दिन, combo box" सुनता है और उसे पता नहीं चलता कि कौन-सी तारीख़ माँगी जा रही है। Group expose नहीं है: 1.3.1 (A)। तीनों सूचियों में autocomplete="bday-day", "bday-month" और "bday-year" भी नहीं हैं, जो WCAG की input-purpose सूची में हैं: 1.3.5 (AA) में दूसरी failure। नेशनल ID या इक़ामा नंबर: नाम <label> से आता है, format hint aria-describedby से focus पर पढ़ा जाता है, required स्थिति expose है — कोई defect नहीं। इसमें कोई autocomplete token नहीं है, और यह सही है: national ID, WCAG के input purposes में नहीं है। "आगे" बटन: इसका accessible name aria-label="फ़ॉर्म सबमिट करें" से आता है और उसमें दिखने वाला शब्द "आगे" नहीं है, इसलिए जो voice-control यूज़र दिखने वाला शब्द बोलकर बटन दबाना चाहता है, उसे कोई नतीजा नहीं मिलता: 2.5.3 Label in Name (A)। Page अपनी भाषा बताता है (lang="hi", 3.1.1 Language of Page), इसलिए screen reader सही आवाज़ इस्तेमाल करता है: कोई defect नहीं।

Notes। N1 — defect, 3.3.8 Accessible Authentication (Minimum) (AA)। चरण 1 साइन इन है, और SMS से code को टाइप करके उतारना वही transcription है जिसे Understanding दस्तावेज़ cognitive function test मानता है; paste, यानी वह mechanism जो criterion को पूरा करता, सिर्फ़ पहला box भरता है। N2 — defect नहीं: autocomplete="one-time-code" ब्राउज़र को code सुझाने में मदद करता है, लेकिन one-time code WCAG की input-purpose सूची में नहीं है, इसलिए इसका न होना 1.3.5 में फ़ेल नहीं; इसे N1 की रिपोर्ट में अच्छी practice के रूप में सुझाएँ। N3 — defect: errors सिर्फ़ रंग से दिखती हैं, जो 1.4.1 Use of Color (A) में फ़ेल है, और न कोई फ़ील्ड टेक्स्ट में पहचाना जाता है न कोई error बताई जाती है, जो 3.3.1 Error Identification (A) में फ़ेल है; screen reader यूज़र को यह भी पता नहीं चलता कि चरण reject हुआ। N4 — defect, 3.3.3 Error Suggestion (AA): सुधार ज्ञात है (10 अंक, 1 या 2 से शुरू) और संदेश उसे नहीं सुझाता।

N5 — defect, 4.1.3 Status Messages (AA): focus हटाए बिना दिखने वाली error को role या live region के ज़रिए assistive technology तक पहुँचना चाहिए, और उसी पल बना साधारण <div> NVDA को बोलने के लिए कुछ नहीं देता। N6 — defect, 3.2.2 On Input (A): सूची की value बदलने से संदर्भ में अप्रत्याशित बदलाव नहीं होना चाहिए, और यहाँ arrow keys से slots देखने वाला keyboard यूज़र पहली ही key दबाते ही चरण submit कर देता है। N7 — defect नहीं। भुगतान वित्तीय ट्रांज़ैक्शन है, इसलिए 3.3.4 Error Prevention (Legal, Financial, Data) (AA) लागू है, और यह दो तरह से पूरा होता है: यूज़र भुगतान से पहले सब कुछ review, सुधार और confirm कर सकता है, और ऑर्डर 24 घंटे तक रद्द हो सकता है; इनमें से एक ही काफ़ी होता। यह review स्क्रीन फिर भी आपके keyboard और screen-reader passes में शामिल रहती है।

Bug titles, पहले वे चार जो यूज़र्स के किसी समूह को रोक सकते हैं: (1) "चरण 1 OTP: SMS का 6 अंकों का code paste करने पर छह में से केवल पहला box भरता है (3.3.8)"। (2) "चरण 2: पूरा नाम फ़ील्ड का कोई accessible name नहीं — screen reader बिना नाम का edit फ़ील्ड बोलता है (1.3.1, 4.1.2)"। (3) "चरण 2: ख़ाली submit पर सिर्फ़ लाल borders — कोई error टेक्स्ट नहीं, कुछ announce नहीं होता (1.4.1, 3.3.1)"। (4) "चरण 3: इंस्टॉलेशन का समय सूची बदलते ही चरण submit कर देती है — keyboard यूज़र मनचाहा slot नहीं चुन पाते (3.2.2)"। फिर: (5) "चरण 2: ‘आगे’ बटन का नाम ‘फ़ॉर्म सबमिट करें’ है — दिखने वाला शब्द बोलने पर voice control बटन नहीं दबाता (2.5.3)"। (6) "चरण 2: चरण 1 में verify हुआ मोबाइल नंबर दोबारा टाइप करना पड़ता है, और उसका label सिर्फ़ placeholder है (3.3.7, 3.3.2)"। (7) "चरण 2: जन्म तिथि की सूचियाँ group नहीं — screen reader ‘जन्म तिथि’ के बिना ‘दिन’ बोलता है (1.3.1)"। (8) "चरण 2: ईमेल पर autocomplete="off", और मोबाइल फ़ील्ड व जन्म तिथि की सूचियों पर कोई autocomplete token नहीं (1.3.5)"। (9) "चरण 2: नेशनल ID की error सिर्फ़ ‘अमान्य इनपुट’ कहती है — अपेक्षित format नहीं सुझाती (3.3.3)"। (10) "चरण 2: ‘यह ईमेल पहले से रजिस्टर्ड है’ screen reader पर announce नहीं होता (4.1.3)"।

ये चार क्यों: N1 उन लोगों को पहले ही चरण पर रोक देता है जो code भरोसे से नहीं उतार सकते, इसलिए वे ऑर्डर के बाक़ी हिस्से तक पहुँचते ही नहीं। Screen reader यूज़र्स के लिए बिना नाम का पूरा नाम फ़ील्ड और सिर्फ़ रंग वाली errors मिलकर यह मतलब रखती हैं कि उन्हें न पता चलता है कि क्या टाइप करना है, न यह कि चरण क्यों reject हुआ। Windows पर keyboard यूज़र अगले slot के अलावा कोई slot नहीं चुन सकते, जब तक संयोग से वे पहले Alt+Down Arrow से सूची न खोल लें। बाक़ी छह ऑर्डर को धीमा या कठिन बनाते हैं, रोकते नहीं; जैसे voice-control यूज़र दूसरे, धीमे commands से बटन तक पहुँच सकता है। कारण दर्ज हो तो अलग बँटवारा भी ठीक है: कुछ टीमें Label in Name defect को voice-control यूज़र्स के लिए रुकावट मानती हैं।

Fixes। पूरा नाम: <span> की जगह <label for="name">पूरा नाम</label>। ईमेल: autocomplete="email"। मोबाइल: चरण 2 से फ़ील्ड हटाएँ और verify हुआ नंबर टेक्स्ट के रूप में दिखाएँ, चरण 1 पर लौटने के link के साथ; या उसे दिखने वाले <label> और autocomplete="tel" के साथ पहले से भरें। जन्म तिथि: तीनों सूचियों को <fieldset> और <legend>जन्म तिथि</legend> में रखें, और autocomplete="bday-day", "bday-month" व "bday-year" जोड़ें। आगे: aria-label हटाएँ, ताकि नाम दिखने वाला शब्द ही हो। चरण 1: दिखने वाले label, inputmode="numeric" और autocomplete="one-time-code" के साथ code का एक ही input, या ऐसा paste handler जो छहों अंक boxes में बाँट दे।

Errors: "आगे" दबाने पर हर invalid फ़ील्ड को ऐसा टेक्स्ट संदेश दें जो उसका नाम ले ("अपना पूरा नाम डालें"), उसे aria-describedby से जोड़ें और aria-invalid="true" सेट करें; फिर focus ऊपर के error summary पर ले जाएँ जिसमें हर फ़ील्ड का link हो, या पहले invalid फ़ील्ड पर। लाल border अतिरिक्त संकेत के रूप में रह सकता है। नेशनल ID का संदेश बनता है: "10 अंकों का नंबर डालें जो 1 (नेशनल ID) या 2 (इक़ामा) से शुरू हो"। ईमेल जाँच के लिए पेज load होते ही उसमें role="status" वाला ख़ाली container रखें (या role="alert", अगर टीम संदेश को ज़रूरी मानती है), टेक्स्ट उसी में डालें और aria-describedby से उसे फ़ील्ड से जोड़ें। इंस्टॉलेशन का समय: सूची बदलने से सिर्फ़ value बदले, और चरण अपने "आगे" बटन से submit हो। सूची से पहले यूज़र को यह व्यवहार बता देना 3.2.2 के शब्दों को पूरा कर देगा, लेकिन keyboard यूज़र की समस्या हल नहीं करेगा।

Fixed build पर confirmation testing हर फ़ेल हुई जाँच दोहराती है: accessibility pane में "पूरा नाम", group "जन्म तिथि" और बटन "आगे" दिखें; ब्राउज़र का autofill ईमेल और जन्म तिथि भर दे; चरण 2 में अब मोबाइल नंबर दोबारा टाइप न करना पड़े; पूरा 6 अंकों का code paste करने पर सारे अंक भर जाएँ और code स्वीकार हो; ख़ाली submit और 9 अंकों की नेशनल ID ऐसे टेक्स्ट संदेश दें जिन्हें NVDA बोले और जो रंग के बिना भी समझ आएँ; "पहले से रजिस्टर्ड" संदेश focus हटाए बिना एक बार announce हो; समय की सूची पर Down Arrow slot बदले और चरण 3 पर ही रहे। Regression testing: चारों चरणों में एक keyboard pass और एक screen-reader pass, क्योंकि labels, focus handling और validation बदले हैं, साथ में यह जाँच कि चरण 4 अब भी सही values दिखाता है।

अगर आपकी सूची अलग है, तो हर item को criterion के सटीक शब्दों और स्तर से मिलाएँ। Defect रिपोर्ट में control, दिखने वाली failure और criterion होते हैं; जो सिर्फ़ अच्छी practice है (N2) या पहले से conform करता है (बिना token वाली नेशनल ID, N7), वह recommendation या pass के रूप में दर्ज होता है, defect के रूप में नहीं।

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

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

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

HTML में आम एक्सेसिबिलिटी समस्याएँ जाँचें — ग़ायब alt text, बिना label के fields, बिना नाम के buttons और links, ARIA errors, headings, contrast — WCAG 2.2 से जुड़ी हुई।

वैलिडेशन नया

फ़ॉर्म फ़ील्ड के लिए validation टेस्ट केस बनाएँ: required, फ़ॉर्मेट, लंबाई, रेंज, pattern और cross-field नियम।

टेस्ट डिज़ाइन

फ़ॉर्म फ़ील्ड और API के लिए negative टेस्ट केस बनाएँ: खाली, null, ग़लत टाइप, बहुत लंबा, injection, अमान्य फ़ॉर्मेट।

टेस्ट डिज़ाइन

UI की एरर स्थितियाँ टेस्ट करने के लिए फ़ॉर्म और API हेतु फ़ील्ड-स्तरीय validation एरर पेलोड थोक में बनाएँ।

मॉकिंग

टेस्ट अकाउंट के लिए फ़ेक यूज़र रिकॉर्ड (नाम, username, ईमेल, पासवर्ड, avatar seed, role) जनरेट करें।

टेस्ट डेटा

अंग्रेज़ी, अरबी और हिंदी में रैंडम पहले और अंतिम नाम जनरेट करें, लिंग और फ़ॉर्मेट विकल्पों के साथ।

टेस्ट डेटा

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

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

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

बग विश्लेषण AI

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

और गाइड

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

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

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

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

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

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

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

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

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

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

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

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

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

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

WCAG 2.2 के अनुसार contrast, रंग का उपयोग, alt text, resize और reflow, text spacing, target size, motion और dark mode कैसे टेस्ट करें, checklists सहित।

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

अरबी इंटरफ़ेस की RTL टेस्टिंग

दाएँ-से-बाएँ अरबी इंटरफ़ेस कैसे टेस्ट करें: dir और lang, क्या mirror होता है और क्या नहीं, CSS logical properties, bidi टेक्स्ट, अरबी रेंडरिंग और फ़ॉर्म।

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