اختبار إمكانية الوصول البصرية

يتحقق اختبار إمكانية الوصول البصرية (Visual accessibility testing) من أن ذوي ضعف البصر، أو قصور رؤية الألوان، أو اضطرابات الجهاز الدهليزي، أو حتى من يستخدم شاشة صغيرة تحت شمس ساطعة، يستطيعون إدراك الواجهة وتشغيلها. ويشمل التباين واللون والصور والتكبير والتباعد وحجم الهدف والحركة — وهو الجزء من WCAG 2.2 الذي يمكنك اختباره في الغالب بعينيك ومتصفح وبعض الإعدادات.

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

تباين النص: ماذا تعني النسبة وكيف تقيسها

يشترط 1.4.3 Contrast (Minimum) (AA) أن تكون نسبة التباين (Contrast ratio) للنص وصور النص 4.5:1 على الأقل مقابل خلفيته، أو 3:1 للنص كبير الحجم. وتعرّف WCAG النص كبير الحجم بأنه 18 نقطة على الأقل، أو 14 نقطة بخط عريض (بوحدات CSS: 18pt تساوي 24px، و14pt نحو 18.7px). ولا يوجد متطلب تباين للنص في العناصر غير النشطة، ولا للزخرفة البحتة، ولا للنص غير المرئي، ولا للنص الذي هو جزء من صورة تحتوي محتوى بصرياً مهماً آخر، ولا للشعارات. أما 1.4.6 Contrast (Enhanced) الأشد فهو من المستوى AAA بنسبتي 7:1 و4.5:1.

النسبة ليست رأياً تصميمياً. تعرّفها WCAG انطلاقاً من السطوع النسبي (Relative luminance) للونين — أي السطوع النسبي لكل لون على مقياس من 0 للأسود الأشد إلى 1 للأبيض الأفتح، محسوباً من قيم sRGB — وتتراوح النسبة الناتجة من 1:1 إلى 21:1. استخدم أداة فحص تباين تطبّق تعريف WCAG، ولا تقدّر بالعين.

على سبيل المثال: الرمادي #767676 على الأبيض نسبته 4.54:1 وينجح لنص المتن؛ و#777777 على الأبيض نسبته 4.48:1 ويُخفق للنص العادي (لا تقرّب للأعلى)، مع أنه ينجح للنص الكبير. قِس الألوان كما تُعرض فعلاً: النص فوق صورة أو تدرّج يُفحص عند أسوأ نقطة، وحالات المرور والتركيز والزيارة والتحديد والخطأ يحتاج كل منها قياساً خاصاً.

لا تنجح النسبة المقيسة إلا إذا بلغت الحدّ أو تجاوزته: #767676 على الأبيض (4.54:1) ينجح لنص المتن، أما #777777 (4.48:1) فيُخفق ولا يُقرَّب للأعلى.

نسبة التباين على الأبيض

المحور من 1:1 إلى 21:1

المحور مختصر بين 8 و20: ليس بمقياس الرسم

  • ≥ 3:1النص الكبير AA ‏(1.4.3) · مكونات الواجهة والرسومات (1.4.11)
  • ≥ 4.5:1النص العادي AA ‏(1.4.3) · النص الكبير AAA ‏(1.4.6)
  • ≥ 7:1النص العادي AAA ‏(1.4.6)
  1. 11.61:1 حدّ الحقل #CCCCCCأقل من 3:1 ‏(1.4.11): يصعب تمييز الحقل.فشل
  2. 22.85:1 نص تلميح #999999أقل من 4.5:1 للنص العادي (1.4.3).فشل
  3. 34.48:1 نص #777777يُخفق للنص العادي، وينجح للنص الكبير.فشل
  4. 44.54:1 نص #767676ينجح لنص المتن.نجاح

تكبير: من 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نجاح
  • التقط الألوان بمنتقي الألوان في أدوات المطوّر أو اقرأها من الأنماط المحسوبة، لا من ملف التصميم.
  • افحص نص المتن والنص الثانوي والروابط وتسميات الأزرار ونص الحقول والتلميحات ورؤوس الجداول والشارات ورسائل التنبيه العابرة.
  • افحص النص فوق الصور والطبقات شبه الشفافة عند أفتح منطقة خلف النص.
  • العناصر المعطّلة مستثناة، أما العنصر الذي يبدو معطّلاً وهو يعمل فعلاً فليس مستثنى.

جرّبها: محوّل الألوان جرّبها: محوّل HEX / RGB / HSL

تباين العناصر غير النصية: المكونات والحالات والرسومات

يشترط 1.4.11 Non-text Contrast (AA) نسبة 3:1 مقابل الألوان المجاورة للمعلومات البصرية اللازمة لتمييز مكونات الواجهة وحالاتها، ولأجزاء الرسومات اللازمة لفهم المحتوى. وتُستثنى المكونات غير النشطة وعناصر التحكم الافتراضية للمتصفح غير المعدّلة، وكذلك الرسومات التي يكون عرضها بطريقة معينة جوهرياً.

الإخفاقات المعتادة: حدود حقول باهتة (حدّ #CCCCCC على الأبيض نسبته 1.61:1)، ومربع تحديد لا تختلف حالته المحددة إلا بصبغة خفيفة، وأزرار أيقونات فقط بلون رمادي فاتح، ومؤشرات تركيز لا تكاد تختلف عن الخلفية، وخطوط الرسوم البيانية أو قطاعاتها المميّزة بألوان باستيل متقاربة فقط. وإذا لم يكن للحقل حد مرئي أصلاً، فتحقق من أن شيئاً آخر يدل على أنه حقل — تعبئة خلفية أو خط سفلي يستوفي 3:1.

استخدام اللون

ينص 1.4.1 Use of Color (A) على ألا يكون اللون الوسيلة البصرية الوحيدة لنقل المعلومات، أو الإشارة إلى إجراء، أو طلب استجابة، أو تمييز عنصر. وهذا منفصل عن التباين: فقد ينجح لونان في التباين ويبقيان غير قابلين للتمييز لمن لديه قصور في تمييز الأحمر والأخضر.

اختبر بتحويل الصفحة إلى تدرّج رمادي (مرشّح ألوان في نظام التشغيل أو محاكاة قصور الرؤية في المتصفح) واسأل: هل ما زلت أعرف أي حقل فيه خطأ، وأي رابط هو رابط، وأي خط في الرسم البياني هو أيّها، وأي حالة هي «فشل»؟ الروابط داخل نص المتن التي لا تختلف عن النص المحيط إلا باللون تحتاج إلى خط سفلي أو إشارة أخرى غير اللون.

البدائل النصية: كيف تقرّر النص البديل

يشترط 1.1.1 Non-text Content (A) بديلاً نصياً (Text alternative) يؤدي الغرض المكافئ. تستطيع الأدوات إخبارك بوجود السمة alt؛ أما صحتها فلا يقرّرها إلا إنسان. صنّف كل صورة أولاً ثم احكم على النص.

  • صورة معلوماتية — ينقل alt المعلومة التي تضيفها الصورة في سياقها باختصار: «مخطط أعمدة: انخفضت المبالغ المستردة من 9% إلى 4% بعد صفحة الدفع الجديدة» بدلاً من «chart.png».
  • صورة زخرفية — alt فارغ (alt="") أو خلفية CSS، ليتجاوزها قارئ الشاشة. صورة زخرفية بقيمة alt="زخرفة دائرية" مجرد ضجيج.
  • صورة وظيفية — صورة هي رابط أو زر: يصف alt الإجراء أو الوجهة («بحث»، «تنزيل الفاتورة PDF») لا الصورة («عدسة مكبّرة»).
  • صورة معقّدة — المخططات والرسوم التوضيحية والخرائط: alt قصير يعرّفها، مع وصف أطول أو جدول بيانات قريب يحمل التفاصيل.
  • صور النص — يشترط 1.4.5 Images of Text (AA) استخدام النص الحقيقي بدلاً من صور النص حين تستطيع التقنية تحقيق العرض البصري نفسه؛ وتُستثنى الصور القابلة للتخصيص والحالات الجوهرية كالشعارات.
  • alt مكرّر — إذا كان النص المجاور يقول الشيء نفسه فيمكن أن تكون الصورة زخرفية؛ تكرار التعليق يضاعف ما يسمعه مستخدم قارئ الشاشة.

تكبير النص وإعادة التدفق عند 320 CSS px وتباعد النص

1.4.4 Resize Text (AA): يمكن تكبير النص حتى 200 بالمئة دون تقنية مساعدة ودون فقدان محتوى أو وظيفة. اختبر بتكبير المتصفح إلى 200% وبحجم خط افتراضي أكبر، وابحث عن نص مقصوص وعناصر متداخلة وعناصر تحكم تخرج من الشاشة.

1.4.10 Reflow (AA): يعمل المحتوى دون تمرير في بُعدين عند عرض يعادل 320 CSS pixels (للمحتوى الذي يُمرَّر عمودياً) أو ارتفاع 256 CSS pixels (للمحتوى الذي يُمرَّر أفقياً). وتشير WCAG إلى أن 320 CSS pixels تعادل نافذة عرضها 1280 px عند تكبير 400%، وهذا هو الاختبار العملي: اضبط نافذة المتصفح على 1280 px، وكبّر إلى 400%، واقرأ الصفحة كاملة بالتمرير العمودي فقط. ويجوز أن تحتفظ الخرائط والمخططات والفيديو والألعاب والعروض التقديمية وجداول البيانات بالتمرير في بُعدين لتلك الأجزاء.

1.4.12 Text Spacing (AA): لا يُفقد محتوى أو وظيفة حين يضبط المستخدم ارتفاع السطر على 1.5 ضعف حجم الخط، والمسافة بعد الفقرات على ضعفين، وتباعد الأحرف على 0.12 ضعف، وتباعد الكلمات على 0.16 ضعف. طبّق التجاوز أدناه عبر Bookmarklet أو إضافة أنماط المستخدم وابحث عن تسميات مقطوعة ونص متداخل وأزرار انقطع نصها. وتتضمن WCAG استثناءً للغات والكتابات التي لا تستخدم إحدى هذه الخصائص — وهذا مهم للعربية، إذ يتعارض تباعد الأحرف مع الحروف المتصلة؛ فاتفق مع فريقك على طريقة تطبيقه.

/* 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;
}

حجم الهدف

يشترط 2.5.8 Target Size (Minimum) (AA)، الجديد في WCAG 2.2، أن تكون أهداف المؤشر (Pointer targets) بحجم 24 × 24 CSS pixels على الأقل، مع استثناءات. فالهدف الأصغر ينجح إذا كانت دائرة قطرها 24 CSS px متمركزة عليه لا تتقاطع مع هدف آخر أو مع دائرة هدف صغير آخر؛ وينجح أيضاً حين يوجد في الصفحة نفسها عنصر مكافئ يستوفي الحجم، أو حين يكون ضمن جملة، أو حين يحدد وكيل المستخدم حجمه دون تعديل من المؤلف، أو حين يكون عرضه جوهرياً أو مطلوباً قانونياً.

قِس في أدوات المطوّر (صندوق العنصر، بما في ذلك الحشو الذي هو جزء من مساحة النقر). الإخفاقات المعتادة: أيقونات الإغلاق «×» في نوافذ الحوار والرقائق، وأرقام ترقيم الصفحات المتلاصقة، ومربعات التحديد الصغيرة، وصفوف الأيقونات داخل خلايا الجداول. وتوصي إرشادات منصتي Apple وGoogle بأهداف لمس أكبر من هذا الحد الأدنى؛ فعند اختبار التطبيقات الأصلية استخدم إرشادات المنصة أيضاً.

الحركة والرسوم المتحركة وتفضيل تقليل الحركة

ثلاثة معايير مهمة. 2.2.2 Pause, Stop, Hide (A): المحتوى المتحرك أو الوامض أو المتمرّر الذي يبدأ تلقائياً ويستمر أكثر من خمس ثوانٍ ويُعرض بجوار محتوى آخر يحتاج إلى وسيلة لإيقافه مؤقتاً أو إيقافه أو إخفائه — وشرائح العرض الدوّارة وأشرطة الإعلانات المتحركة هي المشتبه المعتاد. 2.3.1 Three Flashes or Below Threshold (A): لا شيء يومض أكثر من ثلاث مرات في أي ثانية واحدة، ما لم يكن الوميض تحت عتبتي الوميض العام والأحمر. 2.3.3 Animation from Interactions (AAA): يمكن تعطيل الحركة الناتجة عن التفاعل ما لم تكن جوهرية.

وحتى حين يستهدف المشروع المستوى AA، فإن احترام إعداد «تقليل الحركة» في نظام التشغيل رخيص ومتوقَّع. تعرضه المتصفحات عبر ميزة الوسائط prefers-reduced-motion. فعّل تقليل الحركة في النظام (أو حاكِه في أدوات المطوّر) وتحقق من أن تأثير المنظور (Parallax) وانتقالات الصفحات بالتكبير والفيديو الخلفي التلقائي والانزلاقات الكبيرة أُزيلت أو استُبدلت بتلاشٍ بسيط.

@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) عرض بصري ثانٍ، وكل فحوص التباين تنطبق عليها بشكل مستقل. عيوب الوضع الداكن الشائعة: ألوان العلامة التجارية التي تنجح على الأبيض وتُخفق على شبه الأسود، وشعارات PNG الشفافة وأيقونات بحدود داكنة تختفي، وحلقات تركيز صُمّمت لخلفية فاتحة، ومخططات تحتفظ بألوان السمة الفاتحة، وظلال تُستخدم حدّاً وحيداً لبطاقة أو حقل. بدّل السمة من إعداد النظام أو من محاكاة prefers-color-scheme في أدوات المطوّر وأعد جولة التباين.

واختبر كذلك مع وضع الألوان المفروضة أو التباين العالي (مثل سمات التباين في Windows). يستبدل المتصفح ألوان المؤلف، فقد تختفي المعلومات المحمولة بلون الخلفية أو صور الخلفية وحدها: مربعات تحديد مخصّصة مرسومة بالخلفيات، وأيقونات منفّذة كخلفيات CSS، وأنماط تركيز تعتمد على box-shadow وحده.

قائمة فحص: حالات اختبار إمكانية الوصول البصرية

القائمة أدناه بالإنجليزية لتُنسخ كما هي إلى أداة إدارة الاختبار، وهذه بنودها بالعربية:

  • التباين — نص المتن والنص الثانوي والروابط والأزرار والحقول والتلميحات 4.5:1 على الأقل (والنص الكبير 3:1) (1.4.3)؛ والنص فوق الصور والتدرجات يُقاس عند أسوأ نقطة؛ وتُقاس حالات التمرير والتركيز والتحديد والزيارة والخطأ؛ وحدود الحقول والأيقونات وحالات مربعات التحديد وأزرار الاختيار ومؤشر التركيز 3:1 على الأقل (1.4.11)؛ وعناصر المخططات اللازمة للفهم 3:1 على الأقل مقابل ما يجاورها (1.4.11).
  • اللون — بالتدرج الرمادي تبقى الأخطاء والروابط والحالات وسلاسل المخططات قابلة للتمييز (1.4.1).
  • الصور — كل صورة مصنّفة: معلوماتية أو زخرفية أو وظيفية أو معقدة (1.1.1)؛ والصور الوظيفية تصف الإجراء، والزخرفية لها ⁦alt=""⁩؛ ولا صور نصوص إلا الشعارات (1.4.5).
  • التكبير والتخطيط — عند تكبير 200% لا نص مقصوص أو متراكب وكل الوظائف متاحة (1.4.4)؛ وعند عرض 1280px بتكبير 400% (أي 320 CSS px) يكون التمرير عمودياً فقط، باستثناء المحتوى ثنائي الأبعاد (1.4.10)؛ ومع تجاوز تباعد النص لا شيء مقطوع أو متراكب (1.4.12).
  • الأهداف والحركة — أهداف المؤشر 24×24 CSS px على الأقل أو تستوفي أحد الاستثناءات (2.5.8)؛ والمحتوى المتحرك تلقائياً أكثر من 5 ثوانٍ يمكن إيقافه مؤقتاً أو إيقافه أو إخفاؤه (2.2.2)؛ ولا وميض أكثر من 3 مرات في الثانية (2.3.1)؛ وإعداد تقليل الحركة يزيل الحركة غير الضرورية.
  • السمات — تُعاد جولة التباين كاملة في السمة الداكنة؛ وفي وضع الألوان المفروضة أو التباين العالي تبقى عناصر التحكم والأيقونات والتركيز مرئية.
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

جرّبها: مولّد قوائم تحقق QA بالذكاء الاصطناعي

عيوب نموذجية مكتوبة كعناوين تقارير أخطاء

اذكر الألوان المقيسة والنسبة في التقرير، وأرفق لقطة شاشة، وسمِّ المعيار. عيب تباين يقول «#9E9E9E على #FFFFFF = 2.68:1، والمطلوب 4.5:1» يُصلَح دون جدال.

  • «تسجيل الدخول: نص التلميح #999999 على الأبيض نسبته 2.85:1، أقل من 4.5:1 (1.4.3)»
  • «نموذج الملف الشخصي: حدود الحقول #CCCCCC على الأبيض نسبتها 1.61:1، والحقول غير قابلة للتمييز (1.4.11)»
  • «جدول الطلبات: حالتا ‹فشل› و‹مدفوع› تظهران بنقطة حمراء/خضراء فقط (1.4.1)»
  • «زر البحث في الترويسة: alt الصورة ‹أيقونة عدسة› بدلاً من الإجراء ‹بحث› (1.1.1)»
  • «صفحة الأسعار عند 1280px وتكبير 400%: بطاقات المقارنة تتطلب تمريراً أفقياً (1.4.10)»
  • «أزرار إغلاق الرقائق بحجم 16×16 CSS px ومتلاصقة (2.5.8)»
  • «الشريط الدوّار في الرئيسية ينتقل كل 4 ثوانٍ دون زر إيقاف (2.2.2)»
  • «السمة الداكنة: نص الزر الأساسي 3.1:1 على أزرق العلامة (1.4.3)»

جرّبها: مولّد عناوين الأخطاء بالذكاء الاصطناعي

الأسئلة الشائعة

هل 4.49:1 قريبة بما يكفي من 4.5:1؟

لا. العتبة حد أدنى، وأي قيمة دونها إخفاق. أبلغ عن النسبة المقيسة كما تحسبها أداة الفحص تماماً.

هل تحتاج الأزرار المعطّلة إلى استيفاء التباين؟

لا — النص في مكونات الواجهة غير النشطة مستثنى من 1.4.3، والمكونات غير النشطة مستثناة من 1.4.11. ولا يشمل الاستثناء عناصر تبدو معطّلة وهي تعمل.

كيف أختبر إعادة التدفق دون هاتف؟

اضبط نافذة متصفح سطح المكتب على عرض 1280 CSS px وكبّر إلى 400%؛ تشير WCAG إلى أن هذا يعادل 320 CSS px. ووضع التصميم المتجاوب في أدوات المطوّر بعرض 320 px فحص مساند مفيد.

هل تشترط WCAG وضعاً داكناً أو دعم تقليل الحركة؟

لا يوجد معيار نجاح يشترط سمة داكنة؛ فإن وفّرتها فاختبرها كأي عرض آخر. وتعطيل الحركة الناتجة عن التفاعل هو 2.3.3 من المستوى AAA؛ ودعم prefers-reduced-motion طريقة شائعة لاستيفائه وممارسة جيدة في أي مستوى.

هل 24×24 CSS px كافية لتطبيقات الجوال؟

إنها الحد الأدنى في WCAG 2.2 للمستوى AA لمحتوى الويب. وتنشر Apple وGoogle في إرشادات منصتيهما أحجاماً موصى بها أكبر لأهداف اللمس، وتعتمدها الفرق عادةً للتطبيقات الأصلية.

ماذا تحمل الصور الزخرفية: alt="" أم لا سمة alt؟

سمة alt فارغة. ومع غياب السمة قد تنطق بعض قارئات الشاشة اسم الملف بدلاً منها، وهذا أسوأ من الصمت.

المراجع

  • Web Content Accessibility Guidelines (WCAG) 2.2W3C · 2024توصية W3C التي تحدد معايير النجاح القابلة للاختبار لإتاحة محتوى الويب، مرتّبةً تحت أربعة مبادئ وثلاثة مستويات مطابقة (A وAA وAAA).
  • Understanding WCAG 2.2W3C Web Accessibility Initiative (WAI)الشرح التوضيحي لكل إرشاد ومعيار نجاح في WCAG 2.2: الغرض، ومن يستفيد، والأمثلة والتقنيات (غير إلزامي).
  • How to Meet WCAG (Quick Reference)W3C Web Accessibility Initiative (WAI)قائمة قابلة للتصفية بكل معايير نجاح WCAG 2.2 مع التقنيات الكافية وحالات الإخفاق الشائعة.
  • Easy Checks – A First Review of Web AccessibilityW3C Web Accessibility Initiative (WAI)فحوص أولية بسيطة يستطيع أي شخص إجراؤها — عنوان الصفحة والبدائل النصية والعناوين والتباين وتكبير النص والوصول بلوحة المفاتيح — قبل التقييم الكامل.
  • Accessibility — MDNMDN Web Docs (Mozilla)أدلة عملية لبناء صفحات ويب ميسّرة وفحصها: HTML الدلالي وARIA ودعم لوحة المفاتيح والاختبار.
  • Accessibility — Human Interface GuidelinesAppleإرشادات Apple لتصميم إمكانية الوصول في iOS وغيره: VoiceOver والنص الديناميكي والتباين وأهداف اللمس والحركة.
  • Test your app's accessibilityAndroid Developers (Google)كيف تُختبر إمكانية الوصول في تطبيق Android يدوياً باستخدام TalkBack وغيره، وآلياً بأدوات الاختبار في المنصة.

تمرين عملي

راجع نتائج اختبار إمكانية الوصول البصرية لصفحة حجز مواعيد

المطلوب

أنت تختبر تطبيق ويب لسلسلة مراكز طبية (مثال خيالي) يحجز فيه المرضى مواعيدهم. يأتي البناء ⁦4.8.0-rc1⁩ بصفحة حجز أُعيد تصميمها، ويشترط العقد WCAG 2.2 بالمستوى AA. وللتطبيق واجهة إنجليزية وأخرى عربية. بدأت جولة اختبار إمكانية الوصول البصرية (Visual accessibility testing) على الواجهة الإنجليزية، ودوّنت أربع عشرة ملاحظة أولية مع الألوان والنسب والأحجام التي قستها؛ وتُقتبس نصوص الواجهة بالإنجليزية في كل نسخ هذا التمرين لأنها الواجهة المختبَرة. وقبل تسجيل أي شيء، حوّل الملاحظات إلى أحكام وعيوب.

اعمل على الورق مستعيناً بمعايير النجاح في الدليل وبقائمة الفحص فيه. النسب مقيسة مسبقاً فلا حاجة إلى حساب السطوع النسبي، وأهداف المؤشر تحتاج إلى حساب بسيط. ليست كل ملاحظة إخفاقاً، وليست كل مشكلة إخفاقاً في المستوى AA: بيّن أيها هو وأيها ليس كذلك، ولماذا. خصّص لذلك ⁦25–30⁩ دقيقة.

المادة
حجز المواعيد لسلسلة مراكز طبية (مثال خيالي) - تطبيق ويب بواجهة إنجليزية وأخرى عربية
البناء ⁦4.8.0-rc1⁩: صفحة «Book an appointment» بتصميم جديد، أربع خطوات في صفحة واحدة.
العقد: WCAG 2.2 بالمستوى AA.
ما أُنجز حتى الآن: الواجهة الإنجليزية، السمة الفاتحة، Chrome على Windows، ونافذة متصفح
بعرض 1280 px، مع فحص سريع واحد في السمة الداكنة. النسب كما تعرضها أداة فحص التباين
في أدوات المطوّر. الأحجام بوحدة CSS px ومقيسة في أدوات المطوّر. النصوص بين «» هي
نصوص الواجهة الإنجليزية كما تظهر.

1   عنوان الخطوة «Choose a doctor»: حجم 24px بوزن عادي.
    ⁦#8A8A8A⁩ على ⁦#FFFFFF⁩ = 3.45:1
2   بطاقة الطبيب، سطر «Next free slot: Tue 10:30»: حجم 14px بوزن عادي.
    كما يُعرض فعلاً: ⁦#767676⁩ على خلفية البطاقة ⁦#F5F5F5⁩ = 4.17:1.
    ملف التصميم يُظهر بطاقة بيضاء: ⁦#767676⁩ على ⁦#FFFFFF⁩ = 4.54:1.
3   التلميح تحت حقل رقم الجوال «Example: 0501234567»: حجم 13px بوزن عادي.
    ⁦#777777⁩ على ⁦#FFFFFF⁩ = 4.48:1
    تعليق المطوّر: «4.48 تُقرَّب إلى 4.5، إذن ينجح».
4   زر «Pay at the clinic»: حجم 16px بوزن عادي، ⁦#9E9E9E⁩ على ⁦#EEEEEE⁩ = 2.31:1.
    يبدو معطّلاً لكنه يعمل: نقرة واحدة تحجز الزيارة دون دفع إلكتروني.
5   زر «Next» في الخطوة 1 قبل اختيار طبيب: يحمل السمة disabled ولا يفعل شيئاً عند
    النقر. ⁦#BDBDBD⁩ على ⁦#F5F5F5⁩ = 1.72:1.
6   حقول النص (الاسم، رقم الجوال، الهوية الوطنية): حدّ 1px بلون ⁦#D6D6D6⁩ على ⁦#FFFFFF⁩
    = 1.45:1. لا تعبئة ولا خط سفلي: الحد هو العلامة الوحيدة على مكان الحقل.
7   المواعيد: للمواعيد المتاحة خلفية خضراء فاتحة (⁦#C8E6C9⁩)، وللمحجوزة خلفية حمراء
    فاتحة (⁦#FFCDD2⁩). نص الوقت، مثل «10:30»، بلون ⁦#212121⁩ على كلتيهما (11.98:1
    و11.44:1). لا فرق آخر بينهما. ولا يمكن اختيار المواعيد المحجوزة.
8   زر بأيقونة فقط يفتح منتقي التاريخ:
    <button type="button"><img src="calendar.svg" alt="calendar icon"></button>
9   شريط فوق النموذج: صورة JPG لنص أبيض عادي على خلفية خضراء مسطّحة،
    «Free check-up for over-60s every Sunday»، ونصها البديل الجملة نفسها.
    لا صورة فوتوغرافية ولا رسم آخر في الشريط.
10  نافذة المتصفح بعرض 1280 px والتكبير 400%:
    أ) يحتفظ النموذج بعرض ثابت قدره 600 px. زر «Next» مقطوع من اليمين،
       ولا يُوصل إليه إلا بالتمرير الأفقي.
    ب) جدول الرسوم (جدول بيانات من 6 أعمدة) يُمرَّر أفقياً داخل إطاره.
       وبقية الصفحة تُمرَّر عمودياً فقط.
11  أهداف المؤشر (الصندوق مع الحشو):
    أ) كل خدمة مختارة رقاقة، والرقائق مرتّبة واحدة تحت الأخرى. في كل رقاقة زر حذف «×»
       بحجم 16×16 px. والمسافة بين مركزي زرّي «×» في رقاقتين متجاورتين 20 px.
       ولا شيء آخر في هذه الخطوة يحذف خدمة.
    ب) أيقونة المعلومات «i» بجانب الرسوم: 18×18 px. وأقرب هدف آخر يبعد 30 px عن حافتها.
12  شريط «Health tips» الدوّار فوق النموذج: يبدأ عند تحميل الصفحة، وينتقل إلى النصيحة
    التالية كل 6 ثوانٍ، ويدور بلا نهاية. لا زر للإيقاف المؤقت أو الإيقاف أو الإخفاء.
13  مع محاكاة prefers-reduced-motion: reduce في أدوات المطوّر، ما زال الانتقال من خطوة
    إلى التي تليها يُدخل النموذج كله منزلقاً من الجانب (نحو 0.4 ثانية).
14  فحص سريع في السمة الداكنة: رابط «Change doctor»، حجم 16px بوزن عادي، ⁦#1565C0⁩
    على خلفية الصفحة ⁦#121212⁩ = 3.26:1. ولون الرابط نفسه على الأبيض نسبته 5.75:1.
الخطوات
  1. أعطِ كل ملاحظة حكماً — «ناجح» أو «فشل» أو «مستثنى» (لا متطلب ينطبق) أو «ليس إخفاقاً في AA» — وسمِّ معيار النجاح برقمه ومستواه (A أو AA أو AAA). واحكم على البندين (أ) و(ب) في الملاحظتين ⁦10⁩ و⁦11⁩ كلٍّ على حدة.
  2. في كل ملاحظة عن الألوان، اكتب أولاً العتبة التي تنطبق ولماذا — 4.5:1 للنص العادي، أو 3:1 للنص كبير الحجم، أو 3:1 للعناصر غير النصية، أو لا شيء — ثم قارنها بعد ذلك بالنسبة المقيسة.
  3. اكتب لكل إخفاق عنوان تقرير خطأ (Bug title) بأسلوب الدليل: الشاشة والعنصر، والقيم المقيسة مقابل القيمة المطلوبة، والمعيار.
  4. قارن ملاحظاتك بقائمة الفحص في الدليل. اذكر الفحوص التي ما زالت ناقصة قبل أن تُعدّ هذه الجولة البصرية مكتملة، وبيّن أي الملاحظات تُعاد في أي وضع أو إعداد.
إظهار الإجابة النموذجية
الإجابة النموذجية

تباين النص: العتبة أولاً ثم النسبة. الملاحظة ⁦1⁩، عنوان الخطوة: «ناجح»، والمعيار 1.4.3 Contrast (Minimum) (AA). فحجم 24px يساوي 18pt، فالعنوان نص كبير الحجم حتى بالوزن العادي ويحتاج إلى 3:1، ونسبته 3.45:1 تنجح. ولو صُغّر العنوان إلى أقل من 24px بوزن عادي، أو أقل من نحو 18.7px بخط عريض، لاحتاج الرمادي نفسه إلى 4.5:1 ولأخفق. الملاحظة ⁦2⁩، بطاقة الطبيب: «فشل»، والمعيار 1.4.3. فحجم 14px بوزن عادي نص عادي يحتاج إلى 4.5:1، والعبرة باللون كما يُعرض فعلاً: ⁦#767676⁩ على ⁦#F5F5F5⁩ نسبته 4.17:1، ولا أثر للبطاقة البيضاء في ملف التصميم. العنوان: «الحجز، بطاقة الطبيب: نص ‹Next free slot› بلون ⁦#767676⁩ على ⁦#F5F5F5⁩ نسبته 4.17:1، أقل من 4.5:1 (1.4.3)». الملاحظة ⁦3⁩، تلميح رقم الجوال: «فشل»، والمعيار 1.4.3. فنسبة 4.48:1 أقل من الحد الأدنى 4.5:1، ولا تُقرَّب النسب للأعلى أبداً؛ فأجب المطوّر بالقاعدة وبالقيمة المقيسة لا برأي. العنوان: «نموذج الحجز: تلميح رقم الجوال ⁦#777777⁩ على الأبيض نسبته 4.48:1، أقل من 4.5:1 (1.4.3)».

الملاحظة ⁦4⁩، زر «Pay at the clinic»: «فشل»، والمعيار 1.4.3. فاستثناء التباين يشمل العناصر غير النشطة وحدها، وهذا الزر يعمل، فيحتاج نصه إلى 4.5:1 ونسبته 2.31:1. وهو مضلِّل أيضاً: قد يفهم المرضى أن الخيار غير متاح، فاطلب أن يُنسَّق زراً نشطاً كما هو فعلاً. العنوان: «الحجز: نص الزر النشط ‹Pay at the clinic› بلون ⁦#9E9E9E⁩ على ⁦#EEEEEE⁩ نسبته 2.31:1، أقل من 4.5:1، ويبدو معطّلاً (1.4.3)». الملاحظة ⁦5⁩، زر «Next» المعطّل: «مستثنى». فالزر يحمل السمة disabled ولا يفعل شيئاً، فهو مكوّن غير نشط: لا متطلب على نصه في 1.4.3، والمكوّن نفسه مستثنى من 1.4.11. ليس عيباً. الملاحظة ⁦6⁩، حقول النص: «فشل»، والمعيار 1.4.11 Non-text Contrast (AA). فالحد هو المعلومة البصرية الوحيدة التي تميّز الحقل، فيحتاج إلى 3:1 مقابل الخلفية البيضاء، ونسبته 1.45:1 تُخفق. ويُصلَح بحدّ أغمق، أو بتعبئة أو خط سفلي يبلغ 3:1. العنوان: «نموذج الحجز: حدود الحقول ⁦#D6D6D6⁩ على الأبيض نسبتها 1.45:1، أقل من 3:1، والحقول غير قابلة للتمييز (1.4.11)». الملاحظة ⁦14⁩، الرابط في السمة الداكنة: «فشل»، والمعيار 1.4.3. فحجم 16px بوزن عادي يحتاج إلى 4.5:1، و⁦#1565C0⁩ على ⁦#121212⁩ نسبته 3.26:1. واللون نفسه ينجح على الأبيض بنسبة 5.75:1، ولهذا بالضبط تحتاج السمة الداكنة إلى جولة تباين خاصة بها. العنوان: «السمة الداكنة، صفحة الحجز: رابط ‹Change doctor› بلون ⁦#1565C0⁩ على ⁦#121212⁩ نسبته 3.26:1، أقل من 4.5:1 (1.4.3)».

اللون والصور. الملاحظة ⁦7⁩، المواعيد: «فشل»، والمعيار 1.4.1 Use of Color (A). فنص الوقت ينجح في 1.4.3 على الخلفيتين أياً كان حجمه، لأن 11.98:1 و11.44:1 أعلى من 4.5:1، لكن المواعيد المتاحة والمحجوزة لا تختلف إلا باللون، والخلفيتان متقاربتان جداً في السطوع (نحو 1.05:1 إحداهما مقابل الأخرى)، فتبدوان متماثلتين بالتدرّج الرمادي أو لمن لديه قصور في تمييز الأحمر والأخضر. ونسبة التباين الجيدة لا تستوفي 1.4.1. ويُصلَح بإشارة غير اللون: كلمة «Booked»، أو أيقونة، أو خط يشطب الوقت، أو إخفاء المواعيد المحجوزة. العنوان: «الحجز، المواعيد: المحجوز والمتاح يُميَّزان بخلفية حمراء/خضراء فقط (1.4.1)». الملاحظة ⁦8⁩، زر منتقي التاريخ: «فشل»، والمعيار 1.1.1 Non-text Content (A). فالصورة هي المحتوى الوحيد للزر، فهي صورة وظيفية، ويجب أن يقول نصها البديل ما يفعله الزر — «Choose a date» — لا ما تُظهره الصورة. العنوان: «نموذج الحجز: alt صورة زر منتقي التاريخ ‹calendar icon› بدلاً من الإجراء ‹Choose a date› (1.1.1)». الملاحظة ⁦9⁩، الشريط: «فشل» في 1.4.5 Images of Text (AA)، مع أنه ينجح في 1.1.1 لأن alt يحمل النص نفسه. فنص عادي على خلفية مسطّحة يمكن إنتاجه بنص حقيقي وCSS، والشريط ليس شعاراً ولا قابلاً للتخصيص ولا جوهرياً. ونصه، لكونه صورة، يصبح ضبابياً عند التكبير ولا يتأثر بتجاوز تباعد النص ولا بالسمة الداكنة. العنوان: «صفحة الحجز: شريط ‹Free check-up for over-60s every Sunday› صورة نص (1.4.5)».

التخطيط والأهداف. الملاحظة ⁦10⁩ (أ)، النموذج ثابت العرض: «فشل»، والمعيار 1.4.10 Reflow (AA). فنافذة بعرض 1280 px مع تكبير 400% تعادل عرضاً قدره 320 CSS px، والنموذج ليس محتوى يحتاج إلى تخطيط ثنائي الأبعاد، فزر «Next» الذي لا يُوصل إليه إلا بالتمرير الأفقي إخفاق. العنوان: «نموذج الحجز عند ⁦1280px/400%⁩: عرض ثابت 600 px، و‹Next› لا يُوصل إليه إلا بالتمرير الأفقي (1.4.10)». الملاحظة ⁦10⁩ (ب)، جدول الرسوم: «ناجح». فجداول البيانات يجوز أن تحتفظ بالتمرير في بُعدين لذلك الجزء وحده، وبقية الصفحة يُعاد تدفقها. الملاحظة ⁦11⁩ (أ)، أزرار «×» في الرقائق: «فشل»، والمعيار 2.5.8 Target Size (Minimum) (AA). فحجم 16×16 أقل من 24×24، واستثناء التباعد لا ينقذها: دائرتان قطر كل منهما 24 px ومركزاهما على بعد 20 px تتقاطعان، لأن 20 أقل من 24. ولا يوجد عنصر مكافئ في الخطوة، والأزرار ليست ضمن جملة، وحجمها يحدده المؤلف لا وكيل المستخدم. والإصلاح: أهداف بحجم 24×24، أو مراكز تتباعد 24 px على الأقل دون هدف آخر داخل الدوائر. العنوان: «الحجز، الخدمات المختارة: أزرار الحذف ‹×› في الرقائق بحجم 16×16 CSS px، أقل من 24×24، ومراكزها على بعد 20 px (2.5.8)». الملاحظة ⁦11⁩ (ب)، أيقونة المعلومات: «ناجح» عبر استثناء التباعد. فدائرة قطرها 24 px متمركزة على الأيقونة ذات 18 px لا تتجاوز حافتها إلا بـ 3 px (⁦12 − 9⁩)؛ وحتى لو كان أقرب هدف صغيراً أيضاً، فدائرته لا تتجاوز حافته بأكثر من 12 px، و⁦3 + 12⁩ أقل بكثير من 30.

الحركة. الملاحظة ⁦12⁩، الشريط الدوّار: «فشل»، والمعيار 2.2.2 Pause, Stop, Hide (A). فهو يبدأ تلقائياً، ويُعرض بجوار النموذج، ويستمر في الحركة أكثر من خمس ثوانٍ بكثير في مجموعها. والثواني الخمس تتعلق بمدة استمرار الحركة، لا بالثواني الست بين شريحة وأخرى. العنوان: «صفحة الحجز: شريط ‹Health tips› ينتقل تلقائياً كل 6 ثوانٍ ويدور بلا نهاية، دون وسيلة إيقاف مؤقت أو إيقاف أو إخفاء (2.2.2)». الملاحظة ⁦13⁩، الانتقال بين الخطوات مع تقليل الحركة: «ليس إخفاقاً في AA». فإمكان تعطيل الحركة الناتجة عن التفاعل هو المعيار 2.3.3 Animation from Interactions من المستوى AAA، ولا ينطبق 2.2.2 على انتقال مدته 0.4 ثانية يبدؤه المستخدم. سجّله تحسيناً — فاحترام إعداد تقليل الحركة رخيص ومتوقَّع — وبيّن بوضوح أنه لا يعيق الوفاء بعقد المستوى AA.

ما لم تغطّه الجولة بعد، وفق قائمة الفحص في الدليل: حالات المرور والتركيز والتحديد والزيارة والخطأ، مثل الموعد المحدد وحالة الخطأ في حقل رقم الجوال (1.4.3 لنصها، و1.4.11 لمؤشرات الحالة)؛ ومؤشر التركيز الذي يحتاج إلى 3:1 (1.4.11)؛ والأيقونات والأجزاء غير النصية الأخرى، مثل أيقونتي التقويم و«i» وأي حالات لمربعات التحديد أو أزرار الاختيار (1.4.11)؛ وفحص الصفحة كلها بالتدرّج الرمادي — رسائل الخطأ والروابط داخل النص والحالات — لا المواعيد وحدها (1.4.1)؛ والتكبير 200% وحجم خط افتراضي أكبر (1.4.4)؛ وتجاوز تباعد النص (1.4.12)؛ والوميض في الشريط الدوّار (2.3.1)؛ وجولة تباين كاملة، للنص وللعناصر غير النصية، في السمة الداكنة بدلاً من فحص سريع واحد؛ ووضع الألوان المفروضة أو سمة تباين عالٍ، حيث تُستبدل خلفيات المواعيد في الملاحظة ⁦7⁩ بألوان النظام، فقد تتطابق المواعيد المتاحة والمحجوزة، وقد تختفي أنماط التركيز التي تعتمد على box-shadow وحده؛ والجولة نفسها على الواجهة العربية، حيث يختلف الخط وأطوال النصوص، ويجب أن يتفق الفريق على طريقة تطبيق استثناء تباعد الأحرف في 1.4.12. وقِس كذلك تباين نص الشريط في الملاحظة ⁦9⁩ على خلفيته الخضراء: فالمعيار 1.4.3 يشمل صور النص أيضاً، ويُعاد القياس حين يصبح الشريط نصاً حقيقياً. أما ترتيب تركيز لوحة المفاتيح ومخرجات قارئ الشاشة فجولتان منفصلتان لكل منهما دليلها، وليستا نقصاً في هذه الجولة.

التسجيل والتحقق من إجابتك. يحمل كل عيب البناء (⁦4.8.0-rc1⁩) والمتصفح وعرض النافذة والتكبير والسمة، ولقطة شاشة والألوان المقيسة، حتى يكرر اختبار التأكيد (Confirmation testing) بعد الإصلاح القياس نفسه. الحصيلة: ⁦11⁩ حكماً «فشل» (⁦2⁩، ⁦3⁩، ⁦4⁩، ⁦6⁩، ⁦7⁩، ⁦8⁩، ⁦9⁩، ⁦10⁩ (أ)، ⁦11⁩ (أ)، ⁦12⁩، ⁦14⁩)، و⁦3⁩ أحكام «ناجح» (⁦1⁩، ⁦10⁩ (ب)، ⁦11⁩ (ب))، وحكم واحد «مستثنى» (⁦5⁩)، وحكم واحد «ليس إخفاقاً في AA» (⁦13⁩). وإن اختلفت أحكامك فراجع الفخاخ المعتادة: العتبة تتبع حجم النص ووزنه؛ والنسب لا تُقرَّب للأعلى أبداً؛ والألوان تُقاس كما تُعرض؛ ولا يُستثنى إلا المكوّن غير النشط فعلاً؛ واستخدام اللون يُحكم عليه منفصلاً عن التباين؛ و1.1.1 و1.4.5 معياران مختلفان؛ واستثناء البعدين يشمل ذلك الجزء من الصفحة وحده؛ ومعيار من المستوى AAA لا يُعدّ إخفاقاً في AA.

تقدّمك في هذا الموضوع

جزء من مسار تعلم ضمان الجودة

الأدوات المذكورة في هذا الدليل

تحويل الألوان بين HEX وRGB(A) وHSL(A) وHSB/HSV وCMYK وألوان CSS المسمّاة مع معاينة مباشرة.

أدوات مساعدة

ولّد قائمة تحقق QA مخصّصة (وظيفية وواجهة مستخدم وAPI وأمان وأداء وإمكانية وصول وإصدار) لأي ميزة باستخدام الذكاء الاصطناعي من متقن.

توليد الاختبارات ذكاء اصطناعي

كيف تساعدك متقن سوفت

أدلة أخرى

أدلة أخرى
تصميم الاختبارات

اختبار إمكانية الوصول

اختبار إمكانية الوصول وفق WCAG 2.2: مبادئ POUR، والمستويات A وAA وAAA، ومنهجية WCAG-EM، واليدوي مقابل الآلي، والممارسة في السبرنت وCI، والعيوب الشائعة.

وقت القراءة 14 دقائق
تصميم الاختبارات

اختبار إمكانية الوصول في النماذج

كيف تختبر إمكانية الوصول في نماذج الويب وفق WCAG 2.2: التسميات، والحقول الإلزامية، والتجميع، والأخطاء، والإكمال التلقائي، والدخول الميسّر.

وقت القراءة 12 دقائق
الأتمتة

الاختبار الآلي لإمكانية الوصول

ما الذي تستطيع فحوص إمكانية الوصول الآلية حسمه وما لا تستطيع، وقواعد ACT، والمحركات الشائعة، والتشغيل في اختبارات الوحدة وE2E وCI، والفرز، وWCAG-EM.

وقت القراءة 8 دقائق
تصميم الاختبارات

سيناريوهات اختبار تطبيقات الجوال

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

وقت القراءة 10 دقائق
تصميم الاختبارات

اختبار الوصول بلوحة المفاتيح

كيف تختبر الوصول بلوحة المفاتيح: معايير WCAG 2.2، وترتيب التركيز وظهوره، وفخاخ لوحة المفاتيح، وروابط التخطي، وأنماط APG، والنوافذ، وحالات اختبار وعيوب.

وقت القراءة 11 دقائق
تصميم الاختبارات

اختبار قارئات الشاشة

اختبار قارئات الشاشة: الدلالات، والأسماء القابلة للوصول، والعناوين والمعالم، وقواعد ARIA، والمناطق الحية، وروتين NVDA وVoiceOver وTalkBack، والعيوب.

وقت القراءة 11 دقائق