الاختبار البصري وDocker: بدون بيئة قابلة للاستنساخ، لقطات الشاشة لا قيمة لها
بيئة قابلة للاستنساخ: تكوين برمجي متطابق في كل تنفيذ — نفس نظام التشغيل، نفس المكتبات، نفس الخطوط، نفس محرك العرض — يضمن أن نتائج الاختبار لا تتغير حسب الجهاز الذي يُنفذ عليه.
أنشأت اختباراً بصرياً. تقارن لقطات الشاشة. اختباراتك تمر محلياً. وعندما تعمل على CI، تحصل على 47 فرقاً مُبلغاً عنه — لا شيء منها يتوافق مع خلل حقيقي.
هذا السيناريو عاشته الغالبية العظمى من الفرق. ومعظمها يستخلص الاستنتاج الخاطئ: «الاختبار البصري ضوضاء كثيرة، لا يعمل.»
الاختبار البصري يعمل جيداً تماماً. ما لا يعمل هو بيئتك.
لقطة شاشة على macOS مع خطوط Apple لن تكون أبداً متطابقة بالبكسل مع لقطة على Ubuntu مع خطوط FreeType. تنعيم الحواف وتلميح الخطوط وتنعيم البكسل الفرعي — كل شيء يختلف.
Docker يحل هذه المشكلة.
لماذا تختلف لقطات الشاشة بين الأجهزة
عرض الخطوط: المتهم الأول
كل نظام تشغيل يستخدم محرك عرض خطوط خاص. macOS يستخدم Core Text، Windows يستخدم DirectWrite، Linux يستخدم FreeType. نفس النص والخط والحجم ينتج بكسلات مختلفة.
محرك عرض المتصفح
Chrome 120 لا ينتج نفس عرض Chrome 122 لبعض خصائص CSS.
الدقة والتحجيم
DPI الشاشة يؤثر على العرض. خوادم CI تستخدم framebuffers افتراضية.
Docker: البيئة المتطابقة في كل مرة
Docker يغلف بيئة الاختبار كاملة في حاوية. نفس النظام والخطوط والمتصفح والإصدار.
ما يجب أن تحتويه الحاوية
خطوط (مُثبتة محلياً)، متصفح بإصدار ثابت، تكوين عرض صريح، تبعيات النظام للمتصفح بدون واجهة.
صورة الأساس
صور Playwright الرسمية نقطة انطلاق ممتازة.
خطوات Dockerization الرئيسية
- تثبيت الإصدارات — لا "latest" ولا نطاقات دلالية
- بناء الصورة — طبقات مستقرة فوق، كود متغير تحت
- التحقق من الاستنساخ — بناء مرتين، النتائج يجب أن تتطابق
- التكامل مع CI/CD — رفع إلى السجل مع tag دقيق
- إدارة التحديثات — إيقاع شهري، إعادة توليد baselines
فوائد تتجاوز الاستنساخ
التوازي
إطلاق 10-50 حاوية بالتوازي. اختبارات 30 دقيقة تتسلسل → 3 دقائق بالتوازي.
عزل الاختبارات
كل حاوية تبدأ من حالة نظيفة. بدون ذاكرة مخبئية متبقية.
موقع Delta-QA
التحليل الهيكلي لـ Delta-QA أقل حساسية بطبيعته لتباينات العرض بين البيئات. يحلل خصائص CSS المحسوبة — الهوامش والحشوات والأبعاد — المتطابقة بغض النظر عن البيئة.
Docker ليس ضرورياً مع Delta-QA لكن التسامح مع تباينات البيئة أعلى بما لا يُقارن.
أخطاء شائعة يجب تجنبها
- استخدام "latest" كـ tag — السبب الأول للاختبارات غير المستقرة
- نسيان الخطوط — ثبّتها محلياً في الحاوية
- تجاهل حجم viewport — هيّئه صراحة في الأداة
- عدم تعيين إصدار الصورة — ارفع إلى سجل بـ tag دقيق
الأسئلة الشائعة
هل Docker إلزامي؟
لا، لكن بدونه ستقضي وقتاً كبيراً في إدارة الإيجابيات الكاذبة.
أي صورة أساس تنصحون بها؟
صور Playwright الرسمية (mcr.microsoft.com/playwright).
هل Docker يبطئ الاختبارات؟
بدء التشغيل يضيف ثوانٍ، لكن التوازي يعوّض بأكثر من ذلك.
كيف أتعامل مع Google Fonts في Docker؟
حمّل ملفات الخطوط وثبّتها محلياً في الحاوية.
هل يحتاج Delta-QA إلى Docker؟
لا. يعمل بدون Docker بفضل التحليل الهيكلي.
لقطة شاشة تتغير من جهاز لآخر ليست اختباراً. إنها ضوضاء. Docker يحوّل التقاطاتك إلى أدلة موثوقة وقابلة للاستنساخ.