بيان إمكانية الوصول
بُنيت لوحة تحكم نزال بحيث يمكن استخدامها دون فأرة ودون بصر. وكذلك مخرجات CLI والموقع العام. يبيّن هذا البيان ما يُفحص وكيف يُفحص. ويبيّن أيضًا ما لم يُنجز بعد. وهذا الجزء الأخير هو ما يجعل بقية البيان جديرة بالقراءة.
الهدف هو WCAG 2.2 المستوى AA. ولم يدقّق أي طرف ثالث نزال وفق هذا المعيار. لذلك فهذا بيان بما يفعله المنتج وبطريقة التحقق منه وليس إقرار مطابقة وقّع عليه طرف آخر.
ما يُفحص تلقائيًا
تُشغَّل هذه الفحوص مع كل تغيير. وأي إخفاق يوقف البناء.
- axe-core على الصفحات التي يعمل فيها المستخدمون فعلًا من تسجيل الدخول وقائمة البيئات إلى معالج البيئة الجديدة وتفاصيل البيئة وصولًا إلى صفحتي الترخيص والسياسات لدى المشرف بالإنجليزية والعربية. والعربية هنا ليست إجراءً شكليًا: ففي اتجاه RTL تختبئ هذه العيوب. ونجاح الصفحة بالإنجليزية لا يدل على شيء عن حالها حين تنعكس.
- axe-core على الموقع العام: الصفحة الرئيسية وصفحتا الخصوصية والشروط وصفحة 404 والوثائق المولَّدة. ويعمل هذا أيضًا باللغتين.
- إنشاء البيئة بلوحة المفاتيح لأنه المسار الذي ينفّذه المطوّر أكثر من غيره: كل موضع يتوقف عنده Tab عنصر تحكم حقيقي له اسم ويتقدم المعالج بلوحة المفاتيح وحدها.
- إدارة التركيز في مربعات الحوار: ينتقل التركيز إلى داخل مربع الحوار عند فتحه ولا يمكن إخراجه منه بـ Tab ما دام مفتوحًا. ويعود إلى العنصر الذي فتحه عند الضغط على Escape.
- نمط علامات التبويب: تتنقل مفاتيح الأسهم بين علامات التبويب ويقفز Home وEnd إلى الطرفين. ولا يدخل ترتيب Tab إلا علامة التبويب المحددة. فيتجاوز Tab الشريط كله بدل المرور عبر علاماته.
ما يفعله المنتج
- لكل عنصر تحكم في النماذج تسمية برمجية وليس تسمية مرئية مجاورة فقط. وتُربط التلميحات
ورسائل الخطأ بـ
aria-describedby. فيُقرأ النص الذي يشرح صيغة الحقل بصوت مسموع ولا يقتصر على من يستطيع رؤيته. - الحالة لا تُعرض باللون وحده أبدًا. تحمل كل حالة شكلًا وكلمة إلى جانب لونها. وهذا أيضًا سبب استخدام التصميم لونًا مميِّزًا واحدًا بدل مجموعة ألوان لكل منها معنى.
- اللغتان والاتجاهان. تنعكس الواجهة عبر خصائص CSS المنطقية (logical properties). وتبقى الأرقام والمعرّفات ومراجع الصور والمدد من اليسار إلى اليمين داخل النص العربي. فوسم صورة الحاوية (tag) إذا انعكس لم يعد يعمل.
- تركيز مرئي. حلقة التركيز جزء من متغيرات التصميم (design tokens) ولا تُزال أبدًا.
- العناوين تصف بنية الوثيقة. لا يُتخطّى أي مستوى من مستويات العناوين. فتطابق البنية التي يتنقل بها قارئ الشاشة الصفحة التي يراها المستخدم المبصر.
- الحركة في حدها الأدنى وما يوجد منها يحترم
prefers-reduced-motion.
ما لم يُغطَّ بعد
- يُتحقق من تباين الألوان على متغيرات التصميم وليس في التشغيل الآلي. فبيئة الاختبار لا تحسب ألوانًا حقيقية ولا تستطيع القاعدة أن تعطي فيها نتيجة ذات معنى. لذلك عُطّلت القاعدة في ذلك التشغيل تحديدًا وليس لأن التباين غير مهم.
- الطرفية عبر الويب لوحة رسم (canvas) من xterm.js. ولا يستطيع قارئ الشاشة قراءتها على نحو
مفيد. وهذا أمر ملازم لأي محاكي طرفية وليس تقصيرًا من نزال. ويؤدي
kubectl execفي طرفيتك الميسّرة المهمة نفسها. وCLI بديل كامل للوحة التحكم في المسارات الشائعة. - لم يُجرَ أي تدقيق من طرف ثالث.
- لا توجد مصفوفة رسمية لاختبار قارئات الشاشة. تغطي الفحوص الآلية الدلالات. لكنها لا تغني عن شخص يستخدم NVDA أو JAWS أو VoiceOver من البداية إلى النهاية.
الإبلاغ عن مشكلة
أبلغ عن أي خطأ هنا كما تبلغ عن أي عيب آخر. وينطبق الأمر نفسه على أي عائق لا يذكره هذا البيان. فبيان إمكانية الوصول الذي لا يُصحَّح أبدًا أسوأ من عدم وجود بيان أصلًا.