EduFlow

الوحدة 5 · الاختبار وثقافة إمكانية الوصول

فحص صفحة وبناء فريق يراعي إمكانية الوصول

16 دقراءة 5 درتّب الخطوات

الدرس في لمحة

نفّذ تدقيقًا منظّمًا وفق WCAG 2.2 AA لصفحة أو مسار كامل، ورتّب ما تجده بحسب الأولوية، وأدمج إمكانية الوصول في التصميم والتطوير وضمان الجودة لتبقى مُصلَحة.

  1. 1تدقيق منظّم
  2. 2ترتيب ما تجده بحسب الأولوية
  3. 3دمجها في عمل الفريق
  4. 4أين انتهى Ticketly

لا فيديو هنا، بل الشيء الحقيقي: درس مكتوب وأمثلة قابلة للتشغيل واختبار وتدريب.

على مدى سبعة عشر درسًا أصلحت Ticketly شريحةً بعد شريحة. والتدقيق هو الطريقة التي تثبت بها أن الكل يعمل، وتجد بها ما انزلق بين الشرائح. ثم تأتي المشكلة الأصعب: أن يبقى كذلك حين يغيّره خمسة مطوّرين ومصمّمان وفريق تسويق كل أسبوع.

تدقيق منظّم

تعطي منهجية التقييم الصادرة عن W3C، WCAG-EM، الشكل العام. وهذا تطبيقها على Ticketly:

  1. النطاق والهدف. «تطبيق Ticketly على الويب، WCAG 2.2 بالمستوى AA، أحدث إصدارات Chrome وFirefox وSafari، وNVDA وVoiceOver.» كتابة ذلك تمنع التدقيق من التشعّب، أو من تخطّي الأجزاء الصعبة بصمت.
  2. الاستكشاف واختيار العيّنة. اسرد المسارات الأساسية: إيجاد فعالية، وحجز التذاكر، والدفع، وإدارة الحجز. اختر صفحات تمثيلية، وأدرج كل عملية كاملة من أولها إلى آخرها. يشمل التوافق مع WCAG العمليات كاملةً، وكثير من الإخفاقات، مثل ضياع التركيز بعد خطوة أو طلب البريد الإلكتروني مرة أخرى، لا تظهر إلا بين الصفحات.
  3. الفحص الآلي. شغّل axe على كل صفحة وحالة في العيّنة: نوافذ حوار مفتوحة، وقوائم موسَّعة، ونماذج تُظهر أخطاء، والسمة الداكنة مفعّلة. أصلح النتائج أو سجّلها؛ فهي الرخيصة.
  4. جولة لوحة المفاتيح. كل مسار، دون فأرة، باستخدام قائمة الفحص من درس الاختبار بلوحة المفاتيح وقارئات الشاشة.
  5. جولة قارئ الشاشة. المسارات نفسها مع NVDA وChrome، وVoiceOver وSafari، وVoiceOver على iOS للتخطيط الخاص بالهاتف.
  6. الفحوص البصرية وفحوص المحتوى. تكبير 400% وإعادة التدفّق عند 320px، والتباعد النصي، والتباين غير النصي، وتقليل الحركة، وجودة النص البديل، والعناوين، ونصوص الروابط، ولغة الأجزاء.
  7. التقرير وترتيب الأولويات. كل ملاحظة مع موقعها، وخطواتها، ومعيار WCAG، ودرجة الخطورة، واقتراح للإصلاح.
  8. الإصلاح وإعادة الاختبار للمسارات نفسها، ثم تحديث بيان إمكانية الوصول.
أربع مراحل في صفّ واحد: النطاق والعيّنة، ثم الفحص الآلي للصفحات والحالات، ثم الجولات اليدوية بلوحة المفاتيح وقارئات الشاشة والتكبير والمحتوى، ثم التقرير والإصلاح وإعادة الاختبار، مع سهم يعود من إعادة الاختبار إلى الجولات اليدوية. النطاق + العيّنة فحص آلي صفحات + حالات يدوي: مفاتيح، قارئ، تكبير، نص تقرير، إصلاح، إعادة اختبار أعِد اختبار المسارات نفسها
تدقيق Ticketly، من النطاق إلى إعادة الاختبار

ترتيب ما تجده بحسب الأولوية

كثيرًا ما يسرد التدقيق الأول لمنتج حقيقي عشرات المشكلات أو مئاتها. رتّبها بحسب ما تفعله بالناس:

  • حرجة (Critical): تمنع بعض المستخدمين من إتمام مهمة أساسية. حقل رقم بطاقة بلا label، أو مصيدة لوحة مفاتيح في نافذة الدفع، أو CAPTCHA بلا بديل.
  • خطيرة (Serious): المهمة ممكنة لكنها صعبة جدًا. عناوين مفقودة في صفحة طويلة، أو أخطاء لا تُعلَن.
  • متوسطة (Moderate): احتكاك وارتباك. نصوص روابط مبهمة، أو تباين منخفض في النصوص الثانوية.
  • طفيفة (Minor): لمسات أخيرة. أيقونة زخرفية تُعلَن على أنها “graphic”.

ثم زِنها بحسب حجم الزيارات والمسار: مشكلة خطيرة في صفحة الدفع أهمّ من مشكلة متوسطة في صفحة الوظائف. وإصلاح عشر مشكلات حرجة في مسار الحجز يفعل للعملاء ذوي الإعاقة أكثر مما يفعله إصلاح مئة مشكلة طفيفة في أماكن أخرى.

دمجها في عمل الفريق

عمليات التدقيق تجد المشكلات بعد بنائها. أما إمكانية الوصول الدائمة فتأتي من التقاط المشكلات في كل مرحلة، عند النقطة التي يكون إصلاحها فيها أرخص.

التصميم. أرفِق بالتصاميم ملاحظات بالمعلومات التي لا يستطيع المطوّرون رؤيتها في صورة: بنية العناوين، والـ landmarks، وترتيب التركيز، والأسماء المتاحة لأزرار الأيقونات، ورسائل الخطأ، وما يتحرّك وبديله عند تقليل الحركة. تحقّق من tokens الألوان مقابل نسب التباين مرة واحدة، لترثها كل الشاشات. وصمّم حالات التركيز والخطأ، لا الحالة الافتراضية وحالة التمرير فقط.

الـ Components. مكتبة الـ components المشتركة أكبر رافعة لديك. إن كانت components مثل Dialog وTabs وButton وTextField سهلة الوصول، فكل ميزة تُبنى منها تبدأ سهلة الوصول، والإصلاح في مكان واحد يُصلح كل شيء.

التطوير. استخدم eslint-plugin-jsx-a11y للـ linting، وشغّل axe في اختبارات الـ components والاختبارات الشاملة، واجعل فحص لوحة المفاتيح لمدة دقيقتين جزءًا من كل pull request. وتحديد العناصر بالدور والاسم في الاختبارات، كما يشجّع Playwright وTesting Library، يُبقي الأسماء صادقة.

ضمان الجودة وتعريف الإنجاز. لا تكون القصة (story) منجزة حتى تعمل بلوحة المفاتيح وتُفحص بقارئ شاشة واحد على الأقل. وأخطاء إمكانية الوصول مكانها الـ backlog العادي بدرجات خطورة عادية؛ فالقائمة المنفصلة تميل إلى أن تصبح القائمة التي لا يجدولها أحد.

المحتوى والمشتريات. المحرّرون يكتبون النصوص البديلة والنصوص بلغة بسيطة؛ فدرّبهم، واجعل حقل alt إلزاميًا في نظام إدارة المحتوى (CMS). وحين تشتري widgets من أطراف ثالثة، مثل نموذج دفع أو أداة محادثة، فاطلب تقرير توافق إمكانية الوصول (Accessibility Conformance Report) واختبرها بنفسك، لأن عوائقها تصبح عوائقك.

أين انتهى Ticketly

صار لـ Ticketly الآن landmarks ومخطّط عناوين، وأزرار وروابط حقيقية، ونماذج لها labels وأخطاء تُعلَن، ونصوص بديلة مدروسة، وجدول أسعار سليم. يعمل من لوحة المفاتيح مع رابط تخطٍّ وتركيز مرئي، وفيه نافذة حجز أصلية، وتبويبات ARIA، ورسائل حالة حيّة، وينجح في التباين، ويُعاد تدفّقه عند تكبير 400%، ويحترم تقليل الحركة، ويسمّي كل عنصر تحكّم، وينطق محتواه العربي بشكل صحيح. والأهم من ذلك كله أن فيه axe ضمن الـ CI، وفريقًا يفحص بلوحة المفاتيح قبل الدمج.

حجز سمير تذاكره لمهرجان Harbour Lights بنفسه هذا العام، في أقل من دقيقتين، دون أن يتصل بأحد. وهذا هو المقصود من كل ما سبق.

أهم النقاط

  • للتدقيق نطاق وهدف محدّدان، وعيّنة تمثيلية تشمل مسارات كاملة، واختبار آلي ويدوي، وتقرير مرتّب بحسب الأولوية.
  • رتّب الأولويات بحسب الأثر في المهام الحقيقية؛ فعائق واحد في صفحة الدفع أهمّ من دزينة مشكلات صغيرة في صفحة «من نحن».
  • تدوم إمكانية الوصول حين تكون جزءًا من كل مرحلة، من ملاحظات التصميم والـ components سهلة الوصول إلى قواعد الـ lint وفحوص الـ CI وتعريف الإنجاز (definition of done).
  • أخطاء إمكانية الوصول أخطاء؛ أبقِها في الـ backlog العادي بدرجات خطورة عادية، لا في قائمة منفصلة لا تُجدوَل أبدًا.

قراءات إضافية

تحقّق من فهمك

3 أسئلة

السؤال 1 من 3

وجد تدقيقك لـ Ticketly ‏60 مشكلة ولديك sprint واحد. أيّها يجب أن يُصلَح أولًا؟

السؤال 2 من 3

لماذا يجب أن تشمل عيّنة التدقيق عمليات كاملة، مثل مسار الحجز كله، لا صفحات منفردة فقط؟

السؤال 3 من 3

أيّ ممارسة تفعل أكثر من غيرها لإبقاء Ticketly سهل الوصول مع إطلاق ميزات جديدة؟

تدريب

رتّب الخطوات

خطّط لتدقيق Ticketly

طُلب منك تدقيق Ticketly وفق WCAG 2.2 AA قبل إطلاق بيع تذاكر المهرجان. رتّب خطوات التدقيق بالترتيب الذي ستنفّذها به.

استخدم أزرار الأسهم لإعادة الترتيب.

  1. 1إصلاح المشكلات، وإعادة اختبار المسارات نفسها، وتحديث بيان إمكانية الوصول
  2. 2تكرار المسارات مع NVDA وChrome، وVoiceOver وSafari، وVoiceOver على iOS
  3. 3فحص تكبير 400%، والتباعد النصي، وتقليل الحركة، وجودة النص البديل، والعناوين، واللغة
  4. 4إجراء جولة بلوحة المفاتيح عبر كل مسار: الوصول، والرؤية، والتشغيل، والخروج
  5. 5اختيار عيّنة: الصفحة الرئيسية، وصفحة الفعالية، وصفحات الدفع والحساب، إضافةً إلى مسار الحجز كاملًا
  6. 6الاتفاق على النطاق والهدف: WCAG 2.2 AA، والمتصفّحات والتقنيات المساعدة، والمسارات الأساسية
  7. 7تشغيل axe على كل صفحة وحالة في العيّنة، بما فيها نوافذ الحوار المفتوحة وأخطاء النماذج
  8. 8كتابة الملاحظات مع الموقع ومعيار WCAG ودرجة الخطورة والإصلاح، وتقديم العوائق في المسارات الأساسية