إمكانية الوصول للمؤشر والحركة
تتناول إمكانية الوصول للمؤشر والحركة الطريقةَ التي يشغّل بها الناس الصفحة: بالفأرة أو الإصبع أو القلم، أو بتحريك الجهاز نفسه. وتجمع WCAG 2.2 قواعدها تحت الإرشاد 2.5 Input Modalities، إضافةً إلى المعيار 1.3.4 Orientation. والفكرة واحدة في جميعها: الوظيفة التي تحتاج إلى قرص بإصبعين (Pinch) أو تمرير سريع (Swipe) أو سحب (Drag) أو هزّ للجهاز يجب أن تعمل أيضاً بلمسة أو نقرة بسيطة، واللمس العَرَضي يجب أن يكون قابلاً للإلغاء، والمحتوى يجب أن يعمل في الوضعين الرأسي (Portrait) والأفقي (Landscape).
مثال ملموس: تطبيق مهام لا يسمح بإعادة ترتيب المهام إلا بسحبها. فالشخص المصاب برعاش في اليد ويستخدم الفأرة، أو من يستخدم مؤشراً يُحرَّك بالرأس (Head pointer)، يستطيع النقر بثبات، لكنه قد يعجز عن إبقاء الزر مضغوطاً وهو يتحرك إلى موضع محدد. وزرّان صغيران، «نقل لأعلى» و«نقل لأسفل»، يجعلان الوظيفة نفسها متاحة بنقرات مفردة.
لماذا يهم
حين لا تتاح وظيفة إلا عبر إيماءة، يفقد من لا يستطيع أداءها الوظيفةَ كلها، لا مجرد وسيلة مريحة. ويشمل ذلك المصابين بالرعاش أو بضعف المهارة اليدوية، ومن يلمسون الشاشة بإصبع واحد أو بعصا فموية، ومن يستخدمون تتبّع العين أو مؤشراً يُحرَّك بالرأس، ومن ثُبّت جهازهم اللوحي على كرسي متحرك في اتجاه واحد. والتشغيل العَرَضي مؤذٍ كذلك: فإذا نُفّذ الحذف لحظة ملامسة الإصبع للشاشة، حذفت زلّةٌ واحدة البيانات.
وبالنسبة إلى المنتج، فهذه المعايير كلها مطلوبة للمطابقة للمستوى AA في WCAG 2.2، وهو المستوى الذي تستهدفه معظم المؤسسات والعقود، والمعيار 2.5.7 Dragging Movements جديد في الإصدار 2.2، لذلك فالتصاميم التي اعتُمدت وفق WCAG 2.1 ربما لم تُفحص على ضوئه أصلاً. وبالنسبة إلى المختبِر، يسهل أن تفوته هذه العيوب: فالإيماءة تعمل معك على الحاسوب المكتبي بالفأرة أو على هاتفك. لذلك عليك أن تختبر عمداً من أجل من لا يستطيع أداءها.
إيماءات المؤشر وإلغاء المؤشر (2.5.1 و2.5.2)
يغطي المعيار 2.5.1 Pointer Gestures (المستوى A) الإيماءات متعددة النقاط (Multipoint)، التي تحتاج إلى إصبعين أو أكثر في الوقت نفسه (القرص للتكبير، والتمرير بإصبعين)، والإيماءات القائمة على المسار (Path-based)، التي يهمّ فيها مسار الحركة لا بدايتها ونهايتها فقط (التمرير السريع في اتجاه معين، ورسم شكل). ويجب أن تعمل كل وظيفة من هذا النوع أيضاً بمؤشر واحد ومن دون مسار: لمسة أو نقرة أو لمسة مزدوجة أو ضغطة مطوّلة. فالخريطة التي تُكبَّر بالقرص تنجح إذا كان فيها أيضاً زرّا + و−، وشريط الشرائح الدوّار (Carousel) الذي لا يتنقل إلا بالتمرير السريع يُخفق. والاستثناء هو الإيماءة الجوهرية، مثل رسم توقيعك، حيث يكون المسار نفسه هو المُدخل؛ أما إذا كان الرسم لمجرد الإقرار بشيء فيكفي زر، فلا يكون جوهرياً. ولا يشمل المعيار إلا الإيماءات التي تفسّرها الصفحة نفسها: فتكبير المتصفح بالقرص وإيماءات قارئ الشاشة خارج نطاقه.
أما المعيار 2.5.2 Pointer Cancellation (المستوى A) فيحمي من التشغيل العَرَضي. فلكل وظيفة تُشغَّل بمؤشر واحد يجب أن يتحقق واحد على الأقل مما يلي: ألّا يُنفّذ حدث الضغط (Down-event)، أي لحظة نزول الزر أو الإصبع، أيَّ جزء من الوظيفة؛ أو أن تكتمل الوظيفة عند حدث الرفع (Up-event) مع وسيلة لإلغائها قبل اكتمالها أو التراجع عنها بعده؛ أو أن يعكس حدث الرفع كل ما أحدثه حدث الضغط؛ أو أن يكون الإكمال عند الضغط جوهرياً. والأزرار والروابط الأصلية تتصرف تصرفاً سليماً أصلاً: فالحدث click لا يقع إلا بعد الرفع، ولذلك فإن الضغط ثم الانزلاق خارج العنصر ثم الرفع لا يفعل شيئاً. ويظهر العيب حين يربط المطور الإجراء بالحدث pointerdown أو mousedown أو touchstart. ويُعدّ الضغط على مفتاح في لوحة مفاتيح أو لوحة أرقام على الشاشة حالة جوهرية.
- الإيماءات: اكتب قائمة بكل تفاعل في الميزة يعتمد على التمرير السريع أو القرص أو الإصبعين أو الرسم، ثم ابحث لكل منها عن الطريقة التي تعمل بمؤشر واحد واستخدمها فعلاً.
- الإلغاء: اضغط على كل عنصر ينفّذ إجراءً، ثم حرّك المؤشر أو الإصبع خارجه، ثم ارفع؛ يجب ألا يحدث شيء. وابدأ بإجراءات الحذف والدفع.
- السحب والإفلات (Drag and drop) مشمول أيضاً: لا بأس أن يُلتقط العنصر عند حدث الضغط، بشرط أن يؤدي إفلاته خارج أي منطقة إفلات إلى إلغاء النقل.
// Defect (2.5.2): the item is deleted the moment the pointer goes down
deleteButton.addEventListener('pointerdown', deleteItem);
// Expected: click fires after release, and not if the pointer slid off the button
deleteButton.addEventListener('click', deleteItem);حركات السحب وحجم الهدف (2.5.7 و2.5.8)
المعيار 2.5.7 Dragging Movements (المستوى AA) جديد في WCAG 2.2. وحركة السحب هي الضغط على عنصر ثم تحريك المؤشر ثم الرفع عند نقطة أخرى، حيث لا تهمّ إلا نقطتا البداية والنهاية: إعادة ترتيب قائمة، ونقل بطاقة بين الأعمدة، وتحريك مقبض المنزلق (Slider)، وتحريك الخريطة. وكل وظيفة من هذا النوع تحتاج إلى طريقة تعمل بإجراءات مؤشر مفردة ومن دون سحب، ما لم يكن السحب جوهرياً أو كان السلوك من المتصفح نفسه ولم يعدّله المؤلف.
وانتبه إلى ما لا يُحتسب: دعم لوحة المفاتيح. فالمنزلق الذي يستجيب لمفاتيح الأسهم يستوفي 2.1.1 Keyboard، لكن من يستخدم مؤشراً يُحرَّك بالرأس، أو فأرة مع رعاش، ما زال مستخدماً للمؤشر وقد يبقى عاجزاً عن السحب. ويجب أن تكون البدائل عناصر تحكم حقيقية تستوفي 2.5.8 Target Size (Minimum) (المستوى AA): 24 × 24 بكسل CSS على الأقل، أو تباعداً كافياً، مع الاستثناءات التي شرحها دليل اختبار إمكانية الوصول البصرية. فسهم «نقل لأعلى» بعرض 16 بكسل ملتصق بسهم «نقل لأسفل» يستبدل إخفاقاً بإخفاق آخر. أما 2.5.5 Target Size (Enhanced) في المستوى AAA فيطلب 44 × 44.
- القائمة القابلة لإعادة الترتيب: زرّا «نقل لأعلى» و«نقل لأسفل» في كل صف، أو قائمة «نقل إلى».
- لوحة كانبان (Kanban): حدّد البطاقة، ثم اختر العمود الهدف من قائمة أو المس العمود.
- المنزلق: لمسة أو نقرة على المسار تنقل المقبض إلى تلك القيمة، أو زرّا − و+، أو حقل رقمي بجانبه.
- الخريطة: أزرار أسهم للتحريك، وزرّا + و− للتكبير والتصغير.
قائمة لا يُعاد ترتيبها إلا بالسحبفشل
لا ينتقل الصف إلا بالضغط على مقبضه ثم التحريك ثم الرفع.
- المعيار:
- 2.5.7 Dragging Movements (AA)
- طريقة الفحص:
- بالفأرة والنقر فقط: لا يمكن نقل الصف
قائمة بزرّي «نقل لأعلى» و«نقل لأسفل»نجاح
السحب ما زال يعمل؛ وكل نقرة تنقل الصف موضعاً واحداً.
- المعيار:
- 2.5.7 Dragging Movements (AA)
- طريقة الفحص:
- انقر «نقل لأسفل»: ينتقل الصف موضعاً واحداً
منزلق بزرّي − و+نجاح
اسحب المقبض، أو المس المسار، أو انقر − و+.
- المعيار:
- 2.5.7 Dragging Movements (AA)
- طريقة الفحص:
- المس المسار أو انقر +: تتغير القيمة من دون سحب
رسوم توضيحية. ويجب أن تستوفي أزرار البدائل نفسها المعيار 2.5.8: 24 × 24 بكسل CSS على الأقل، أو تباعداً كافياً.
التشغيل بالحركة واتجاه العرض (2.5.4 و1.3.4)
ينطبق المعيار 2.5.4 Motion Actuation (المستوى A) حين يشغّل تحريكُ الجهاز وظيفةً (الهزّ للتراجع، والإمالة للتمرير)، أو حين تشغّلها حركة المستخدم أمام الكاميرا (التلويح للانتقال إلى الصفحة التالية). والمطلوب أمران: أن تتاح الوظيفة نفسها عبر عنصر تحكم عادي على الشاشة، وأن يمكن إيقاف الاستجابة للحركة حتى لا يشغّلها رعاش أو اهتزاز حافلة. والاستثناءان هما الحركة المستخدمة عبر واجهة مدعومة من إمكانية الوصول (Accessibility supported interface)، وهي تشمل الحركات العادية لتشغيل لوحة المفاتيح أو الفأرة أو الشاشة اللمسية أو تقنية مساعدة؛ والحركة الجوهرية للنشاط نفسه مثل عدّاد الخطوات. وهذه حركة بوصفها مُدخلاً؛ أما الرسوم المتحركة على الشاشة وتفضيل تقليل الحركة فقد تناولهما اختبار إمكانية الوصول البصرية.
وينص المعيار 1.3.4 Orientation (المستوى AA) على ألا يقيّد المحتوى عرضه وتشغيله باتجاه واحد، رأسي أو أفقي، ما لم يكن اتجاه معين جوهرياً؛ ومن الأمثلة التي تذكرها WCAG شيك مصرفي، وتطبيق بيانو، وشرائح عرض لجهاز إسقاط أو تلفاز، ومحتوى الواقع الافتراضي (Virtual reality). فمن ثُبّت جهازه اللوحي على كرسي متحرك لا يستطيع تدويره ليناسب صفحتك. والتخطيط الذي يتغير بين الاتجاهين سليم ومتوقع؛ أما الإخفاق فهو صفحة ترفض العمل، أو لا تعرض إلا رسالة «يُرجى تدوير جهازك»، أو تُدير محتواها جانبياً. وعند الاختبار أوقف قفل التدوير في الجهاز أولاً، وإلا فلا معنى للنجاح.
Where an orientation lock usually hides (search the code and config):
CSS @media (orientation: landscape) { main { display: none; } }
JS screen.orientation.lock('portrait')
Manifest "orientation": "portrait" (installed web app)
Android android:screenOrientation="portrait" (AndroidManifest.xml)
iOS UISupportedInterfaceOrientations (Info.plist, portrait only)الاختبار بالفأرة وبجهاز لمس وبمحاكاة الأجهزة
استخدم المُدخلات الثلاثة، لأن كلاً منها يكشف عيوباً مختلفة. ابدأ بالفأرة على الحاسوب المكتبي: فهي دقيقة، ولذلك تُظهر هل لكل وظيفة طريق بنقرات مفردة. ثم انتقل إلى هاتف أو جهاز لوحي حقيقي للإيماءات والحركة والتدوير. واستخدم محاكاة الأجهزة في المتصفح بينهما لفحص تخطيطات عرض الهاتف بسرعة، لكن لا تجعلها الحَكَم النهائي في اللمس أو المستشعرات.
- الفأرة: أكمل كل وظيفة سحب أو تمرير سريع أو قرص بنقرات مفردة فقط؛ واضغط ثم ابتعد ثم ارفع على كل عنصر ينفّذ إجراءً؛ وقِس الأهداف الصغيرة في أدوات المطوّر.
- جهاز اللمس: أدِّ كل إيماءة، ثم ابحث عن بديلها باللمس واستخدمه؛ والمس زراً ثم اسحب إصبعك خارجه وارفعه؛ وهزّ الجهاز وأمِله حيث تستجيب الميزة للحركة، ثم أوقف الاستجابة للحركة من الإعدادات؛ وأوقف قفل التدوير ودوّر الجهاز في كل شاشة، بما فيها نوافذ الحوار المفتوحة.
- محاكاة الأجهزة: في Chrome DevTools يضبط شريط أدوات الجهاز (
Ctrl+Shift+M، أوCmd+Shift+Mعلى Mac) منفذ عرض (Viewport) بحجم هاتف، ويحاكي اللمس بالفأرة، وفيه زر للتدوير؛ وتضبط لوحة Sensors قيم اتجاه الجهاز. ويوفّر وضع التصميم المتجاوب (Responsive Design Mode) في Firefox أيضاً منفذ عرض بحجم هاتف ومحاكاةً للّمس وزراً للتدوير. وراقب البدائل التي يخفيها تخطيط الهاتف، مثل أسهم شريط الشرائح التي تختفي تحت نقطة توقف (Breakpoint) معينة، أي العرض الذي يتبدّل عنده التخطيط. - حدود المحاكاة: تغيّر المحاكاة ما تراه الصفحة، مثل منفذ العرض وأحداث اللمس، وكذلك سلسلة User-Agent عند اختيار جهاز من القائمة الجاهزة (Device preset)، وهي النص الذي يذكر فيه المتصفح اسمه وإصداره ونظام التشغيل؛ لكنها لا تغيّر العتاد. فهي لا تستطيع هزّ الهاتف، ولا تُظهر كيف يغطي إصبع حقيقي هدفاً صغيراً، وقد يختلف سلوك التدوير في نظام التشغيل الحقيقي. والصق قيمة
navigator.userAgentمن وحدة التحكم في محلّل User-Agent، وسترى أن الجلسة تدّعي أنها هاتف وهي تعمل على عتاد مكتبي. وأكّد كل نجاح على جهاز حقيقي واحد على الأقل. - سجّل مع كل نتيجة: الجهاز ونظام التشغيل، والمتصفح، والمُدخل المستخدَم (فأرة أو إصبع أو قلم)، والاتجاه وحالة قفل التدوير. وتسجيل شاشة قصير يجعل عيوب الإيماءات قابلة لإعادة الإنتاج.
| المعيار | الفأرة على حاسوب مكتبي | جهاز لمس حقيقي | محاكاة الأجهزة في المتصفحفحص أولي فقط |
|---|---|---|---|
| 2.5.1 Pointer Gesturesالمستوى A | نفّذ كل وظيفة تمرير سريع أو قرص بالنقر فقط | أدِّ كل إيماءة، ثم بديلها باللمس | تحقق من أن البدائل ما زالت ظاهرة بعرض الهاتف |
| 2.5.2 Pointer Cancellationالمستوى A | اضغط، ثم ابتعد، ثم ارفع: لا يحدث شيء | المس، ثم اسحب إصبعك خارجاً، ثم ارفعه: لا يحدث شيء | كرّر الفحص بأحداث لمس محاكاة |
| 2.5.4 Motion Actuationالمستوى A | ابحث عن عنصر تحكم على الشاشة لكل ميزة حركة | هزّ الجهاز أو أمِله، ثم أوقف الاستجابة للحركة | لوحة Sensors تضبط قيم الإمالةالهزّ يحتاج إلى جهاز حقيقي |
| 2.5.7 Dragging Movementsالمستوى AA، جديد في 2.2 | أكمل كل سحب بنقرات مفردة | أكمل كل سحب بلمسات مفردة | تحقق من أن تخطيط الهاتف يُبقي أزرار النقل |
| 2.5.8 Target Size (Minimum)المستوى AA | قِس في أدوات المطوّر: 24 × 24 بكسل CSS أو تباعد كافٍ | المس العناصر المتقاربة وسجّل اللمسات الخاطئة | قِس مجدداً بعرض الهاتف |
| 1.3.4 Orientationالمستوى AA | لا فحص بهذا المُدخل | أوقف قفل التدوير، ودوّر الجهاز في كل شاشة | زر التدوير في شريط أدوات الجهاز |
مثال تطبيقي: اختبار لوحة مهام
يطلق فريق لوحة مهام تعمل على الهاتف. تنتقل البطاقات بين الأعمدة بالسحب، والتمرير السريع لليسار على بطاقة يؤرشفها، وهزّ الهاتف يتراجع عن آخر تغيير، وأيقونة الحذف على البطاقة تستجيب عند اللمس.
ينفّذ المختبِر جلسة القسم السابق، ويسجّل ما نجح أيضاً: فالتكبير في اللوحة يعمل بزرّي + و− إلى جانب القرص (2.5.1)، وأزرار رؤوس الأعمدة بحجم 32 × 32 بكسل CSS (2.5.8). ثم يكتب هذه العيوب، لكلٍّ منها المعيار والسلوك المتوقع:
- «لا يمكن نقل البطاقة بين الأعمدة إلا بالسحب، ولا طريقة بمؤشر واحد»: إخفاق في 2.5.7 (AA). المتوقع: قائمة «نقل إلى» في كل بطاقة، أو تحديد البطاقة ثم لمس العمود.
- «الأرشفة متاحة فقط بالتمرير السريع لليسار»: إخفاق في 2.5.1 (A)، لأن التمرير السريع إيماءة قائمة على المسار. المتوقع: عنصر «أرشفة» في قائمة البطاقة.
- «الهزّ للتراجع بلا زر تراجع على الشاشة ولا يمكن إيقافه»: إخفاق في شرطَي 2.5.4 (A) كليهما. المتوقع: زر «تراجع» بعد كل تغيير، وإعداد يعطّل الهزّ.
- «البطاقة تُحذف عند
touchstart، والانزلاق بالإصبع خارجها لا يلغي الحذف»: إخفاق في 2.5.2 (A). المتوقع: الحذف عند الرفع، ويُفضَّل مع إمكانية التراجع. - «اللوحة تعرض رسالة تطلب التدوير إلى الوضع الرأسي في الوضع الأفقي على الأجهزة اللوحية»: إخفاق في 1.3.4 (AA)، فلوحة المهام ليس لها اتجاه جوهري.
أخطاء شائعة
- قبول دعم لوحة المفاتيح بديلاً عن السحب أو التمرير السريع. فالمعياران 2.1.1 Keyboard و2.5.7 متطلبان منفصلان، ومستخدمو المؤشر يحتاجون إلى طريقة بالمؤشر.
- الاكتفاء بالمحاكاة على الحاسوب المكتبي ووضع علامة النجاح على اللمس والحركة والاتجاه. فالمحاكاة لا تهزّ جهازاً ولا تحاكي إصبعاً حقيقياً؛ أكّد النتيجة على هاتف أو جهاز لوحي حقيقي.
- الإبلاغ عن تكبير المتصفح بالقرص أو إيماءات قارئ الشاشة على أنها إخفاقات في 2.5.1. فمعايير المؤشر تغطي الإيماءات التي تفسّرها الصفحة نفسها.
- فحص إلغاء المؤشر بنقرة عادية. فالنقرة العادية تبدو سليمة دائماً؛ يجب أن تضغط ثم تنزلق خارج العنصر ثم ترفع.
- اختبار الاتجاه وقفل التدوير مفعّل، أو الإبلاغ عن تخطيط أفقي مختلف على أنه إخفاق. فالعيب صفحة تمنع اتجاهاً أو تفرضه، لا صفحة تتكيّف.
- نسيان فحص البدائل نفسها: زرّا «نقل لأعلى» و«نقل لأسفل» بعرض 16 بكسل متلاصقان بلا تباعد، أو لا يظهران إلا عند مرور المؤشر فوقهما (Hover)، وهو أمر غير موجود في الشاشات اللمسية.
من منظور ضمان الجودة
أرخص لحظة هي مراجعة التصميم. فلكل سحب أو تمرير سريع أو قرص أو هزّ أو قاعدة اتجاه في تصميم أو قصة مستخدم، اسأل سؤالاً واحداً: كيف ينجز شخص هذا بلمسة واحدة؟ واكتب الإجابة في معايير القبول، مثل «يمكن نقل البطاقة إلى عمود آخر من قائمتها»، حتى يُبنى البديل ويُختبر كأي متطلب آخر بدلاً من أن يُضاف بعد تدقيق.
وأثناء الاختبار احتفظ بقائمة صغيرة بكل وظيفة في المنتج تعتمد على إيماءة، وأعد تشغيلها في كل إصدار، لأن المكوّنات الجديدة تجلب إيماءات جديدة. وأبلغ عن كل عيب مع المعيار الدقيق ومستواه، والجهاز والمتصفح والمُدخل والاتجاه، وتسجيل شاشة قصير. وإذا ادّعى الفريق أن إيماءة ما جوهرية، فاسأل من قرر ذلك وسجّل المبررات: فكلمة «جوهري» في WCAG تعني أن إزالة الإيماءة ستغيّر الوظيفة تغييراً جذرياً، لا أن البديل يتطلب عملاً إضافياً.
تمرين عملي
دقّق شاشة قائمة تشغيل بحثاً عن عيوب المؤشر والحركة
شاشة قائمة التشغيل في نسخة الويب للهواتف من تطبيق موسيقى جاهزة للاختبار. اقرأ ملاحظات الميزة أدناه. ولكل سلوك مرقّم، سمِّ معيار WCAG 2.2 الذي يمسّه، وقل هل ينجح أم يُخفق كما هو موصوف، وصِف كيف ستفحصه (بالفأرة أو بجهاز لمس أو بالمحاكاة)، واكتب عنوان عيب لكل إخفاق.
شاشة قائمة التشغيل، الإصدار 3.2 (ويب للهواتف)
1. إعادة ترتيب الأغاني بسحب المقبض في كل صف.
2. منزلق الصوت: اسحب المقبض؛ لمس المسار لا يفعل شيئاً.
مفاتيح الأسهم تغيّر مستوى الصوت.
3. التمرير السريع لصف إلى اليسار يُظهر «إزالة».
4. هزّ الهاتف لخلط الترتيب. لا يوجد زر «خلط».
ولا يوجد إعداد يوقف الخلط بالهزّ.
5. «إزالة» تُنفَّذ عند touchstart.
6. في الوضع الأفقي تعرض الصفحة «دوّر هاتفك» وتخفي القائمة.
7. عارض صورة الألبوم: القرص للتكبير (يعالجه التطبيق)؛ واللمس المزدوج يكبّر أيضاً.- صنّف كل تفاعل: إيماءة متعددة النقاط أو قائمة على المسار، أو سحب، أو إجراء بمؤشر واحد، أو حركة الجهاز، أو اتجاه العرض.
- طابِقه مع 2.5.1 أو 2.5.2 أو 2.5.4 أو 2.5.7 أو 2.5.8 أو 1.3.4، وقرّر النجاح أو الإخفاق من الملاحظات.
- اختر المُدخل والجهاز اللذين ستؤكد بهما النتيجة.
- اكتب لكل إخفاق عنوان عيب مع السلوك المتوقع.
إظهار الإجابة النموذجية
1. سحب، 2.5.7 (AA): يُخفق، لأنه لا توجد طريقة بمؤشر واحد. افحصه بالفأرة بالنقر فقط. العيب: «لا يمكن إعادة ترتيب الأغاني إلا بالسحب». المتوقع: زرّا «نقل لأعلى» و«نقل لأسفل» أو قائمة «نقل إلى»؛ ثم قِس الأزرار الجديدة وفق 2.5.8.
2. سحب، 2.5.7 (AA): يُخفق. فدعم لوحة المفاتيح يستوفي 2.1.1 لا 2.5.7. افحصه بالفأرة بالنقر على المسار، وعلى جهاز لمس بلمس المسار. العيب: «لا يُضبط منزلق الصوت إلا بسحب المقبض، ولمس المسار بلا أثر». المتوقع: لمسة على المسار تضبط القيمة، أو زرّا − و+.
3. إيماءة قائمة على المسار، 2.5.1 (A): تُخفق، لأن التمرير السريع هو الطريق الوحيد إلى «إزالة». افحصها على جهاز لمس وبالفأرة. العيب: «لا يمكن الوصول إلى الإزالة إلا بالتمرير السريع للصف إلى اليسار». المتوقع: زر «إزالة» ظاهر أو قائمة للصف.
4. حركة الجهاز، 2.5.4 (A): تُخفق مرتين، فلا عنصر تحكم على الشاشة ولا طريقة لإيقاف الاستجابة. أكّد ذلك على هاتف حقيقي، فالمحاكاة لا تستطيع الهزّ. العيب: «خلط الترتيب لا يعمل إلا بهزّ الهاتف ولا يمكن تعطيله». المتوقع: زر «خلط»، وإعداد يوقف الخلط بالهزّ.
5. إلغاء المؤشر، 2.5.2 (A): يُخفق. على جهاز حقيقي، المس «إزالة» واسحب إصبعك خارجها ثم ارفعه. العيب: «تُزال الأغنية لحظة اللمس، وانزلاق الإصبع خارج الزر لا يلغي الإزالة». المتوقع: الإزالة عند الرفع، مع إمكانية التراجع.
6. الاتجاه، 1.3.4 (AA): يُخفق، فقائمة التشغيل ليس لها اتجاه جوهري. افحصه وقفل التدوير متوقف على هاتف، وبزر التدوير في المحاكاة. العيب: «قائمة التشغيل مخفية في الوضع الأفقي خلف رسالة تطلب تدوير الهاتف». المتوقع: تعمل قائمة التشغيل في الاتجاهين، ويجوز أن يتكيّف تخطيطها.
7. إيماءة متعددة النقاط، 2.5.1 (A): ينجح، لأن اللمس المزدوج إجراء بمؤشر واحد ومن دون مسار. افحصه على جهاز لمس: المس صورة الألبوم لمسة مزدوجة وتأكد من أنها تُكبَّر. وسجّل اقتراح تحسين: أزرار التكبير الظاهرة أسهل اكتشافاً من اللمس المزدوج.
أسئلة شائعة
هل يستوفي دعم لوحة المفاتيح المعيار 2.5.7 Dragging Movements؟
لا. يشترط 2.1.1 Keyboard التشغيل بلوحة المفاتيح، ويشترط 2.5.7 بشكل منفصل أن تُنجَز كل وظيفة سحب بإجراءات مؤشر مفردة ومن دون سحب. وتنص وثيقة Understanding 2.5.7 على ذلك صراحةً: لا يستوفي المكافئ بلوحة المفاتيح هذا المعيار إلا إذا وفّر أيضاً عناصر تحكم يمكن النقر عليها أو لمسها. ومن يستخدمون مؤشراً يُحرَّك بالرأس أو تتبّع العين أو فأرة مع رعاش هم مستخدمو مؤشر، فهم يحتاجون إلى نقرات أو لمسات، لا إلى مفاتيح الأسهم.
هل اللمس المزدوج أو الضغطة المطوّلة بديل مقبول للتمرير السريع؟
وفق 2.5.1 نعم: فكلاهما إجراء بمؤشر واحد ومن دون مسار. لكن اكتشافهما صعب، لذلك يكون الزر الظاهر عادةً هو التصميم الأفضل.
هل أستطيع اختبار هذه المعايير من دون هاتف حقيقي؟
جزئياً. يغطي الاختبار بالفأرة على الحاسوب المكتبي بدائل النقرة الواحدة وإلغاء المؤشر وحجم الهدف، وتغطي محاكاة الأجهزة تخطيطات عرض الهاتف وأحداث اللمس وزر التدوير. أما الهزّ وتلامس الإصبع الحقيقي وسلوك التدوير في نظام التشغيل فتحتاج إلى جهاز حقيقي، فخطّط لجهاز واحد على الأقل.
ما الفرق بين التشغيل بالحركة وتقليل الحركة؟
المعيار 2.5.4 Motion Actuation يتعلق بالحركة بوصفها مُدخلاً: تحريك الجهاز، أو جسمك، لتشغيل وظيفة. أما تقليل الحركة والمعيار 2.3.3 Animation from Interactions والإعداد prefers-reduced-motion فتتعلق بالحركة بوصفها مُخرجاً: الرسوم المتحركة التي تعرضها الصفحة. فميزة الهزّ للتراجع تقع تحت 2.5.4، وانتقال الصفحة بالانزلاق يقع تحت معايير الرسوم المتحركة.
المراجع
- Web Content Accessibility Guidelines (WCAG) 2.2توصية W3C التي تحدد معايير النجاح القابلة للاختبار لإتاحة محتوى الويب، مرتّبةً تحت أربعة مبادئ وثلاثة مستويات مطابقة (A وAA وAAA).
- Understanding WCAG 2.2الشرح التوضيحي لكل إرشاد ومعيار نجاح في WCAG 2.2: الغرض، ومن يستفيد، والأمثلة والتقنيات (غير إلزامي).
- How to Meet WCAG (Quick Reference)قائمة قابلة للتصفية بكل معايير نجاح WCAG 2.2 مع التقنيات الكافية وحالات الإخفاق الشائعة.
- What are browser developer tools? — MDNمقدمة لأدوات المطوّرين المدمجة في المتصفحات — المفتّش ووحدة تحكم JavaScript ومصحّح الأخطاء — لفحص الصفحة أثناء اختبارها.
تدرّب بأدوات متقن
ولّد حالات اختبار منظّمة (المعرّف والعنوان والشروط المسبقة والخطوات والنتيجة المتوقّعة والأولوية) من وصف الميزة وقائمة الحقول.
حوّل قائمة متطلبات مرقّمة إلى حالات اختبار قابلة للتتبّع مع مصفوفة تربط المتطلبات بالاختبارات.
تحليل سلاسل User-Agent إلى المتصفح والإصدار والمحرك ونظام التشغيل ونوع الجهاز مع كشف الروبوتات.
ولّد قائمة تحقق QA مخصّصة (وظيفية وواجهة مستخدم وAPI وأمان وأداء وإمكانية وصول وإصدار) لأي ميزة باستخدام الذكاء الاصطناعي من متقن.
ولّد عناوين أخطاء واضحة وقابلة للبحث من وصف غير مرتّب باستخدام الذكاء الاصطناعي من متقن.
للتعمّق أكثر
تقدّمك في هذا الموضوع
سجّل الدخول لتتابع تقدّمك
علّم الموضوعات مكتملة، وتابع من حيث توقفت، وافتح امتحانات التخصص.