اختبار الانحدار البصري: عملية آلية لاكتشاف التغييرات غير المقصودة في مظهر واجهة المستخدم، بالمقارنة بين حالة مرجعية (baseline) وحالة راهنة، تتيح تحديد انحدارات التخطيط والألوان والطباعة والتباعد قبل أن تبلغ الإنتاج.
BackstopJS من الأدوات التي صادفها كل من في عالم الاختبار البصري مرة واحدة على الأقل. مفتوح المصدر ومجاني ومبني على Puppeteer: يستوفي كثيرًا من الشروط على الورق. ولزمن طويل كان الجواب الافتراضي عن سؤال «كيف نجري اختبارًا بصريًا دون ميزانية؟».
لكن إليكم ما لا يقوله لكم أحد في ملف README الخاص بـ BackstopJS: مجاني لا يعني بلا كلفة. فالكلفة موجودة في الساعات المنقضية في كتابة ملفات إعداد JSON، وفي جلسات تصحيح الأخطاء عبر CLI حين يفشل اختبار دون تفسير واضح، وفي عشرات النتائج الإيجابية الخاطئة التي تولّدها المقارنة بكسلًا ببكسل، وفي حاجز الدخول الذي يقصي كل من لا يعيش داخل الطرفية.
تتناول Delta-QA المشكلة من الطرف الآخر. لا شيفرة برمجية، ولا JSON، ولا CLI: تسجلون مساراتكم بالتنقل، ويخبركم التقرير أي عنصر تغيّر بدل أن يريكم منطقة من البكسلات. وهذا يغير جوهريًا طبيعة النتائج التي تحصلون عليها.
لن تقول لكم هذه المقارنة إن أحدهما أفضل من الآخر على الإطلاق. بل ستقول لكم أيهما يناسب واقعكم.
جميع مقارناتنا، على معايير يمكن التحقق منها: البدائل والمقارنات.
BackstopJS مجاني، لكن عليكم كتابة JSON وإدارة CLI وفرز النتائج الإيجابية الخاطئة. تسجّل Delta-QA مساراتكم دون إعداد وتخبركم أي عنصر تغيّر، بحساب مجاني وبدون بطاقة مصرفية. جرّب Delta-QA مجانًا ←
ما هو BackstopJS، وما الذي يتطلبه منكم
BackstopJS أداة اختبار انحدار بصري مفتوحة المصدر (ترخيص MIT) أنشأها Garris Shipon. يستخدم Puppeteer أو Playwright بحسب المحرك المختار للتنقل في صفحاتكم والتقاط لقطات الشاشة ومقارنتها بكسلًا ببكسل بصور مرجعية.
الفكرة أنيقة. أما التنفيذ فأقل أناقة.
إعداد JSON: الحاجز الأول
لاستخدام BackstopJS، عليكم كتابة ملف إعداد JSON يصف كل سيناريو اختبار. كل صفحة مراد اختبارها هي كائن داخل مصفوفة، بعنوان URL وتسمية وأحجام عرض ومحددات وإجراءات تنقل، كل ذلك بصيغة JSON صارمة تُفسد فيها فاصلة زائدة كل شيء.
وبالنسبة إلى موقع من 50 صفحة، يصبح ملف الإعداد هذا وثيقة من عدة مئات من الأسطر. ويجب صيانته يدويًا مع كل إضافة صفحة أو حذفها. ويجب مزامنة محددات CSS حين تتطور الواجهة الأمامية. ويجب معالجة الحالات التي تتطلب فيها صفحة مصادقة أو تمريرًا أو تفاعلًا محددًا قبل الالتقاط.
هذا ليس لومًا: إنه طبيعة الأداة نفسها. BackstopJS أداة تقنية مصممة لأصحاب ملفات تقنية. فإذا كنتم مطور واجهات أمامية مرتاحًا مع Node.js وnpm وملفات الإعداد، فالأمر قابل للإدارة تمامًا. أما إن كنتم مختبر جودة يدويًا أو مالك منتج أو مصممًا، فإن ملف JSON هذا حاجز.
CLI: ضروري ومُقصٍ
يعمل BackstopJS كليًا عبر سطر الأوامر. تهيّئون مشروعًا بأمر، وتلتقطون المراجع بآخر، وتطلقون الاختبارات بثالث، وتعتمدون المراجع الجديدة برابع.
هو سير عمل منطقي تمامًا لمطور. وهو سير عمل معتم كليًا لشخص غير تقني. لا يمكنكم أن تطلبوا من مختبر جودة وظيفي «تشغيل الاختبارات البصرية» إن كان ذلك يعني فتح طرفية، والتنقل إلى المجلد الصحيح، وكتابة الأمر الصحيح بالوسائط الصحيحة.
المقارنة بكسلًا ببكسل: كعب أخيل
وهنا تظهر المشكلة الجوهرية في BackstopJS. تقارن الأداة صورًا (لقطات شاشة معروضة بكسلات) وتشير إلى أي اختلاف بوصفه انحدارًا محتملًا.
المشكلة أن بكسلًا تغيّر لا يعني بالضرورة أن إنسانًا سيرى فرقًا. فتنعيم حواف الخطوط (anti-aliasing) يتفاوت بين عرضين متتاليين. ويظهر مؤشر الإدراج في حقل نصي. ولا تُلتقط حركة في الإطار نفسه. وفرق بكسل جزئي في عرض حد. كلها نتائج إيجابية خاطئة عليكم فرزها يدويًا، واحدة واحدة، في كل تشغيل.
يقدم BackstopJS آليات تخفيف: عتبات تسامح (misMatchThreshold)، ومحددات لإخفاء العناصر الديناميكية، ومناطق استبعاد. لكن كل آلية منها تضيف تعقيدًا إلى إعدادكم، ولا تحل أي منها المشكلة الجوهرية: مقارنة البكسلات هي مقارنة للأعراض لا للأسباب.
ما هي Delta-QA، وما الذي تطلبه منكم
Delta-QA أداة اختبار انحدار بدون برمجة، كخدمة SaaS أو On-Premise. تنشئون حسابًا، وتفتحون موقعكم، وتجتازون سيناريوهاتكم، وتتولى الأداة الباقي.
بلا إعداد وبلا شيفرة برمجية
لا ملف JSON يجب كتابته. ولا أمر CLI يجب طباعته. ولا محددات CSS يجب صيانتها. تفتحون Delta-QA، وتدخلون عنوان URL لموقعكم، وتنقرون على الصفحات التي تريدون اختبارها. تلتقط الأداة حالة كل صفحة وتنشئ المراجع تلقائيًا.
وفي المرة القادمة التي تطلقون فيها الاختبار، تقارن Delta-QA الحالة الجديدة بالمرجع وتريكم ما تغيّر. إذا كان التغيير مقصودًا فتعتمدونه. وإذا كان انحدارًا فتبلّغون عنه. كل شيء يجري في واجهة رسومية مصممة لتكون مقروءة لأي شخص، لا لمن يعرفون ما هو الـ DOM وحدهم.
هذا خيار تصميم متعمد، لا تسوية. بُنيت Delta-QA للفرق الحقيقية، تلك التي يكون فيها الاختبار البصري مسؤولية مشتركة بين مختبري الجودة والمصممين وملّاك المنتج والمطورين، لا المطورين وحدهم.
مقارنة تحاكي العين البشرية: تغيير في النموذج
هذا هو الفارق الأعمق بين Delta-QA وBackstopJS، ويستحق التوقف عنده.
يلتقط BackstopJS لقطات شاشة ويقارن بكسلات. أما Delta-QA فتعيد تشغيل المسار في متصفح حقيقي وتقارن الصفحة بمرجعها كما تفعل العين البشرية، وتسمّي العناصر التي تغيّرت. وهو فارق غير شكلي: إنه يغيّر طبيعة النتائج ذاتها.
حين تخبركم Delta-QA بوجود تغيير، فهي لا تريكم مستطيلًا أحمر على صورة. بل تقول لكم بالضبط ما الذي تغيّر: «انتقل حجم الخط (font-size) في العنوان H1 من 32px إلى 28px»، «زاد الهامش الأيمن للحاوية الرئيسية من 16px إلى 24px»، «انتقل لون خلفية زر CTA من #2563EB إلى #1D4ED8».
هذه معلومات قابلة للتنفيذ. تعرفون ماذا تصححون، وأين تصححونه، وكيف تتحققون من فعالية التصحيح. أما مع BackstopJS، فتعرفون أن ثمة اختلافًا بصريًا في مكان ما من اللقطة: ومعرفة ماذا وراءه ولماذا بالضبط تتطلب فحصًا يدويًا.
وهذه المقاربة تحد أيضًا من النتائج الإيجابية الخاطئة المرتبطة بالعرض. فتفاوت تنعيم الحواف أو البكسل الجزئي لا يغير لون عنصر ولا حجمه ولا موضعه: فلا سبب للإشارة إليه. وما يبقى للحكم عليه هو التغييرات التي تمس الصفحة فعلًا.
فلسفتان وجمهوران
يوضح التباين بين BackstopJS وDelta-QA انقسامًا جوهريًا في عالم الاختبار البصري: مقاربة الأدوات للمطورين (tooling-for-developers) في مقابل مقاربة المنتج للفرق (product-for-teams).
BackstopJS: صندوق عدة المطور
BackstopJS أداة مطورين، ويتبنى ذلك. قوته في مرونته. يمكنكم برمجة أي سيناريو تنقل، واستهداف أي عنصر، وتخصيص كل معامل مقارنة. وإن احتجتم إلى التقاط لقطة بعد النقر على ثلاث قوائم منسدلة، والتمرير 400 بكسل، وانتظار انتهاء حركة (فبإمكان BackstopJS فعل ذلك، بشرط أن تعرفوا كتابته).
لهذه المرونة كلفة: منحنى التعلم. فكل سيناريو معقد يتطلب ساعات من الإعداد وتصحيح الأخطاء. وكل تعديل في الواجهة الأمامية قد يكسر سيناريوهات قائمة، مما يولّد كلفة صيانة مستمرة.
وBackstopJS أيضًا مجاني ومفتوح المصدر بالكامل. وهذه ميزة لا جدال فيها للمطورين الذين يفضلون استضافة أدواتهم وإعدادها بأنفسهم.
Delta-QA: المنتج للفريق كله
Delta-QA منتج لا أداة. والتمييز مهم. الأداة تمنحكم قدرات. والمنتج يمنحكم نتائج. لا تحتاجون إلى معرفة كيف تحاكي Delta-QA العين البشرية لاستخدامها: يكفي أن تنقروا على الصفحات التي تريدون اختبارها.
تعني هذه المقاربة المتمحورة حول المنتج أن الاختبار البصري لم يعد حكرًا على المطورين. يستطيع مختبر جودة وظيفي إعداد مجموعة اختبارات بصرية كاملة في ساعة. ويستطيع مصمم التحقق من احترام مواصفاته في الإنتاج. ويستطيع مالك منتج التحقق من نشر بصريًا قبل إعطاء الضوء الأخضر.
يُبدأ استخدام Delta-QA بحساب مجاني، بدون بطاقة مصرفية.
مقارنة البكسلات في BackstopJS تتطلب شيفرة برمجية وإعدادًا: Delta-QA لا. سجّلوا مساراتكم بدون برمجة واقرأوا تقريرًا يسمّي كل عنصر تغيّر، بحساب مجاني وبدون بطاقة مصرفية. جرّب Delta-QA مجانًا ←
مسألة النتائج الإيجابية الخاطئة: حيث يُحسم كل شيء
إذا سبق أن استخدمتم أداة اختبار بصري قائمة على مقارنة البكسلات، فأنتم تعرفون ألم النتائج الإيجابية الخاطئة. تلك اللحظة التي تبلغكم فيها مجموعة اختباراتكم بـ 47 «انحدارًا» بعد إعادة نشر بسيطة، فتقضون ساعتين في التحقق من كل منها لتكتشفوا أنها كلها تفاوتات في عرض الخطوط.
مشكلة المقارنة بكسلًا ببكسل
تعامل المقارنة بكسلًا ببكسل الصورة المعروضة كمصفوفة بكسلات وتحسب الفرق بين مصفوفتين. وهذا بسيط رياضيًا وبديهي مفاهيميًا. وهو أيضًا غير ملائم جوهريًا لواقع عرض الويب.
فعرض صفحة ويب ليس حتميًا على مستوى البكسل. إذ يمكن للـ HTML نفسه، والـ CSS نفسه، والمتصفح نفسه، على الجهاز نفسه، أن ينتجوا صورًا مختلفة قليلًا من عرض إلى آخر. فتُنعَّم الخطوط بشكل مختلف بحسب حالة ذاكرة العرض المؤقتة. وتُقرَّب البكسلات الجزئية بشكل مختلف. ولا تُلتقط حركات JavaScript في اللحظة نفسها من الثانية.
يعالج BackstopJS ذلك بعتبة تسامح: تقولون للأداة «تجاهل الفروق الأقل من X%». لكنها تسوية خطرة: عتبة منخفضة جدًا تغرق نتائجكم في النتائج الإيجابية الخاطئة؛ وعتبة مرتفعة جدًا تحجب الانحدارات الحقيقية. لا قيمة سحرية، والقيمة الصحيحة تتغير بحسب الصفحة والمحتوى واللحظة.
جواب Delta-QA
تتجاوز Delta-QA هذه المشكلة بعدم مقارنة البكسلات. إنها تقارن عناصر الصفحة: فإذا لم يتغير حجم عنوان أو لون زر أو هامش كتلة، فلا يُشار إلى شيء، أيًّا كانت حالة تنعيم الحواف أو ذاكرة العرض المؤقتة.
النتيجة الملموسة: حين تشير Delta-QA إلى تغيير، فإنها تربطه بعنصر وتصفه. لا تحتاجون إلى البحث في صورة فروق لمعرفة ما إذا كان أثرًا جانبيًا للعرض أم انحدارًا حقيقيًا. وتنتقل الثقة في نتائج اختباراتكم البصرية من «يجب التحقق» إلى «يمكن التصرف».
الصيانة على المدى الطويل: الكلفة الخفية لـ BackstopJS
مجانية BackstopJS مغرية. لكن في سياق فريق، الكلفة الحقيقية لأداة ليست سعر ترخيصها: بل الوقت المنفق في صيانتها.
دَين الإعداد
كل صفحة تُختبر في BackstopJS هي سيناريو في ملف الإعداد. وكل سيناريو يتضمن محددات وإجراءات وعتبات. وحين تتطور واجهتكم الأمامية (فئة CSS أعيدت تسميتها، أو عنصر نُقل، أو صفحة أعيدت هيكلتها)، يجب تحديث السيناريوهات المقابلة.
وفي موقع من 100 صفحة بعمليات نشر أسبوعية، تصبح صيانة الإعداد هذه بندًا قائمًا بذاته. وبما أنه JSON يُصان يدويًا، فالأخطاء متكررة وصامتة: سيناريو معدّ بشكل سيئ لا يولّد بالضرورة خطأ، بل يولّد ببساطة نتائج غير صحيحة.
دَين المراجع
يخزن BackstopJS المراجع على شكل صور في مشروعكم. وبالنسبة إلى 100 صفحة على 3 أحجام عرض، فهذه 300 ملف صورة. وكل تحديث لمرجع يتطلب التقاطًا جديدًا واعتمادًا يدويًا. وتشيخ المراجع، ولا أحد يعرف بالضبط متى اعتُمد آخر مرجع «جيد» ومن اعتمده.
تدير Delta-QA المراجع أصلًا بسجل كامل وسير عمل اعتماد مدمج وتتبع لكل تغيير. والفرق ليس تقنيًا: بل تنظيمي.
الكلفة البشرية
أكثر الكلفات إهمالًا هي الكلفة البشرية. يتطلب BackstopJS «بطلًا» في الفريق: شخصًا يفهم الأداة ويصون الإعداد ويحل المشكلات ويدرّب الجدد. وحين يغادر هذا الشخص الفريق، تموت الأداة معه غالبًا.
أما Delta-QA، بطبيعتها بدون برمجة، فتوزع مسؤولية الاختبار البصري على الفريق كله. يستطيع أي عضو إطلاق اختبار وقراءة النتائج واعتماد تغيير أو رفضه. وينتفي خطر الشخص الوحيد.
BackstopJS يفعل ذلك بشكل أفضل
تقتضي الشفافية الاعتراف بنقاط قوة BackstopJS.
المجانية الكاملة. BackstopJS مفتوح المصدر بترخيص MIT. لا طبقة مجانية بحدود، ولا نسخة مدفوعة بوظائف أكثر. كل شيء مجاني، دائمًا. وبالنسبة إلى مطور مستقل يختبر مشروعه الشخصي، لا مثيل لذلك.
مرونة البرمجة النصية. إذا احتجتم إلى سيناريوهات تنقل معقدة بتفاعلات محددة، فإن BackstopJS يمنحكم تحكمًا كاملًا عبر سكربتات Puppeteer. يمكنكم محاكاة أي سلوك مستخدم، بأي ترتيب، وبأي انتظار.
التكامل مع CI/CD. يندمج BackstopJS بشكل طبيعي في مسار CI/CD. استدعاء بسيط عبر سطر الأوامر في سكربت البناء، وتُنفَّذ اختباراتكم البصرية مع كل commit. وإذا كان سير عملكم متمحورًا بالكامل حول المسار، فهذه ميزة.
المجتمع. يوجد BackstopJS منذ سنوات ويستفيد من مجتمع نشط وأمثلة كثيرة وتوثيق متين. وحين تواجهون مشكلة، فاحتمال أن يكون أحدهم قد حلها على GitHub أو Stack Overflow كبير.
Delta-QA تفعل ذلك بشكل أفضل
إتاحة الأداة. لا شرط تقني لاستخدام Delta-QA. لا Node.js يجب تثبيته، ولا npm يجب فهمه، ولا JSON يجب كتابته. إذا كنتم تعرفون التنقل في موقع ويب فأنتم تعرفون استخدام Delta-QA.
جودة النتائج. يُربط كل اختلاف بعنصر من الصفحة ويوصف بوضوح. تعرفون ما الذي تغيّر دون أن تفسروا مستطيلات حمراء على صورة.
التغطية السريعة. إضافة 50 صفحة إلى مجموعة اختبارات Delta-QA تستغرق بضع دقائق من التنقل. وإضافة 50 صفحة إلى BackstopJS تستغرق ساعات من كتابة إعداد JSON وتصحيح الأخطاء.
العمل الجماعي. صُممت Delta-QA لفرق متعددة التخصصات. سير عمل الاعتماد، والواجهة البصرية، وغياب الشيفرة البرمجية: كل شيء مفكَّر فيه ليتعاون المصممون ومختبرو الجودة وملّاك المنتج والمطورون على الجودة البصرية.
On-Premise عند الطلب. مع عرض On-Premise، تعمل Delta-QA داخل شبكتكم ولا تخرج منها أي صفحة. ويُقيَّم عبر تجربة POC مجانية مدتها شهر. وهي ميزة بنيوية للشركات الخاضعة للائحة العامة لحماية البيانات أو لسياسات سيادة البيانات؛ أما BackstopJS، الذي يُنفَّذ لديكم، فيقدمها أيضًا بحكم بنيته.
الاختبار عبر المتصفحات: ما يغطيه كل منهما
يُعرض الموقع نفسه بشكل مختلف بحسب محركات العرض. افتراضيًا، يعتمد BackstopJS على Puppeteer، أي على Chromium. ويتيح محرك Playwright لديه استهداف Firefox وWebKit، مقابل إعداد إضافي.
الفروق حقيقية: gap في flexbox يُفسَّر بشكل مختلف، أو خط نظام غائب، أو backdrop-filter غير مدعوم. وهذا بالضبط ما يعالجه الاختبار عبر المتصفحات. وبإعداد افتراضي، تمر هذه الانحدارات الخاصة بـ Firefox أو Safari تحت الرادار.
تقارن Delta-QA حاليًا على Chromium؛ أما Firefox وWebKit فمخطط لهما. وإذا كان عرض Safari أو Firefox حاسمًا لجمهوركم، فهذه نقطة يجب أخذها في الحسبان في اختياركم، للأداتين معًا.
زمن الإعداد بالأرقام
يُقاس الفارق أيضًا عند التثبيت. مع Delta-QA، تنشئون حسابًا وتفتحون الواجهة: لحظات قليلة تكفي قبل تسجيل أول مسار لكم. ومع BackstopJS، يلزم npm install backstopjs، وكتابة ملف الإعداد، ثم توليد المراجع: احسبوا ربع ساعة على الأقل قبل أول اختبار قابل للاستخدام، وأكثر إذا تطلب موقعكم سيناريوهات تنقل مبرمجة.
الحكم: من يختار ماذا
لا يتوقف الاختيار بين BackstopJS وDelta-QA على جودة الأداتين: كلتاهما كفؤة في مجالها. بل يتوقف على سياقكم.
اختاروا BackstopJS إذا كنتم مطورًا أو فريقًا تقنيًا مرتاحًا مع Node.js وCLI وملفات إعداد JSON. وإذا كنتم بحاجة إلى سيناريوهات تنقل مبرمجة بتحكم دقيق. وإذا كان سير عملكم متمحورًا حول مسار CI/CD وتريدون أداة مجانية ومفتوحة المصدر مدمجة في البناء لديكم. وإذا كنتم مستعدين لاستثمار الوقت في الإعداد والصيانة للاستفادة من أقصى مرونة.
اختاروا Delta-QA إذا كان فريقكم يضم أصحاب ملفات غير تقنية يجب أن يشاركوا في الاختبار البصري. وإذا كنتم تريدون نتائج مقروءة مرتبطة بعناصر الصفحة. وإذا كنتم تفضلون إعدادًا في دقائق لا في ساعات. وإذا كانت سيادة البيانات معيارًا، مع عرض On-Premise. وإذا كنتم تريدون أن يكون الاختبار البصري مسؤولية مشتركة، لا إقطاعية مطور واحد.
ويمكن للأداتين أيضًا أن تتعايشا. BackstopJS في مسار CI/CD للاختبارات المبرمجة مع كل commit، وDelta-QA لمختبري الجودة والمصممين الذين يسجلون المسارات ويحكمون عليها قبل كل نشر في الإنتاج. وللمطورين الذين يكتبون اختباراتهم بـ Playwright، لدى Delta-QA الآن SDK هو Vision: سطر لكل صفحة يجب فحصها في اختبار قائم، وتعيش الاختبارات المكتوبة بالشيفرة البرمجية في المساحة نفسها مع السيناريوهات بدون برمجة.
هل أنتم مستعدون لاستبدال JSON وCLI ببضع نقرات؟ أطلقوا أول مقارنة لكم مع Delta-QA، مجانًا وبدون بطاقة مصرفية. جرّب Delta-QA مجانًا ←
أسئلة شائعة
BackstopJS مجاني، فلماذا اختيار Delta-QA؟
مجاني في الترخيص لا يعني مجانًا في الكلفة الإجمالية. يتطلب BackstopJS وقتًا للإعداد (ملفات JSON)، وللصيانة (تحديث السيناريوهات مع كل تغيير في الواجهة الأمامية)، ولفرز النتائج الإيجابية الخاطئة (مقارنة بكسلًا ببكسل). وتقلل Delta-QA هذا الوقت بفضل غياب البرمجة ومقارنةٍ تحاكي العين البشرية. ويُبدأ استخدامها بحساب مجاني، بدون بطاقة مصرفية.
هل تستطيع Delta-QA أن تحل محل BackstopJS في مسار CI/CD؟
نعم، عبر SDK. بالنسبة إلى الاختبارات المكتوبة بالشيفرة البرمجية، لدى Delta-QA الآن SDK هو Vision لـ Playwright (TypeScript/JavaScript). سطر لكل صفحة يجب فحصها: أي اختلاف لم يُحكَم عليه يُفشل الاختبار، ويعرض سجل CI رابط التقرير. وإذا كانت مجموعتكم تقوم على Puppeteer وملفات JSON الخاصة بـ BackstopJS، فسيلزم في المقابل المرور عبر Playwright.
ما الفرق الملموس بين مقارنة البكسلات والمقارنة كما تفعل العين البشرية؟
تقارن مقارنة البكسلات صورًا: تكتشف أن «شيئًا تغيّر بصريًا» دون أن تقول لكم ما هو. أما Delta-QA فتقارن الصفحة كما تفعل العين البشرية، وتسمّي العناصر التي تغيّرت وتعطيكم نتيجة مقروءة: «انتقل حجم الخط في H1 من 32px إلى 28px» أو «زاد هامش الحاوية 8px». الأولى تعطيكم إشارة، والثانية تعطيكم تشخيصًا.
BackstopJS يولّد كثيرًا من النتائج الإيجابية الخاطئة، فهل Delta-QA كذلك؟
أقل بكثير، لأنها لا تقارن بكسلات. فالنتائج الإيجابية الخاطئة في BackstopJS ناتجة عن المقارنة بكسلًا ببكسل: تنعيم حواف الخطوط، وتفاوت البكسلات الجزئية، والحركات غير المتزامنة. وتقارن Delta-QA عناصر الصفحة: فتفاوت في العرض لا يغير لون عنصر ولا حجمه ولا موضعه لا يُشار إليه.
هل يلزم امتلاك مهارات تقنية لاستخدام Delta-QA؟
لا. إذا كنتم تعرفون التنقل في موقع ويب فأنتم تعرفون استخدام Delta-QA. لا شيفرة برمجية، ولا طرفية، ولا ملف إعداد. الأداة مصممة ليستخدمها مختبرو الجودة الوظيفيون والمصممون وملّاك المنتج، لا المطورون وحدهم.
هل ما زال BackstopJS يُصان بنشاط؟
حتى 10/2026، مستودع BackstopJS على GitHub غير مؤرشف، لكن آخر إصدار منشور له على npm، وهو 6.3.25، يعود إلى سبتمبر 2024، وآخر commit (سبتمبر 2026) لا يمس سوى ملف README. تبقى الأداة قابلة للاستخدام، لكن التطويرات نادرة: نقطة ينبغي أخذها في الحسبان إن كنتم تعتمدون عليها لعدة سنوات.
هل يمكن استخدام BackstopJS وDelta-QA معًا؟
نعم. BackstopJS في مسار CI/CD لتغطية مبرمجة متواصلة، وDelta-QA لمختبري الجودة والمصممين الذين يسجلون المسارات ويحكمون عليها قبل النشر في الإنتاج. تكمل الأداتان إحداهما الأخرى بدل أن تتنافسا.
كيف ننتقل من BackstopJS إلى Delta-QA؟
لا توجد بيانات تُرحَّل بالمعنى الدقيق: فمراجع BackstopJS صور مرتبطة بمنطق البكسلات الخاص به، وتعيد Delta-QA إنشاء مراجعها الخاصة بتسجيل السيناريوهات عبر التنقل. عمليًا، تعيدون تشغيل مساراتكم الرئيسية في Delta-QA: وتكفي عادةً بضع ساعات لإعادة إنشاء مجموعة الاختبارات الأساسية، دون المساس بملف JSON واحد.
هل يدعم BackstopJS مسارات المستخدم؟
جزئيًا. يستطيع BackstopJS تنفيذ سكربتات Puppeteer قبل الالتقاط (نقر، وملء نموذج، وتمرير)، لكن يجب كتابتها بـ JavaScript وصيانتها يدويًا. وتسجّل Delta-QA هذه المسارات مباشرة عبر التنقل، دون شيفرة برمجية: تعيدون الإجراء مرة واحدة، فتعيد الأداة تشغيله في كل اختبار.