تخيّل أنك توحّد CI لديك على واحدة من أدوات اختبار الانحدار البصري الثلاث مفتوحة المصدر التي يضعها الجميع في القائمة المختصرة (BackstopJS وArgos وLost Pixel)، ثم تكتشف، بعد أسبوع من بدء الدراسة، أن اثنتين من الثلاث ليستا كما بدتا من الخارج. لدى Argos شيفرة ممتازة على GitHub، لكن القائم على صيانتها يقول صراحةً إن الاستضافة الذاتية غير مدعومة ولا موثّقة. جرت أرشفة Lost Pixel في 22 أبريل 2026 حين انضم الفريق إلى Figma، ولم يترك أي مسار للترحيل للفرق التي كانت تشغّله بالفعل.
هذا يترك واحدة بالضبط من الثلاث قابلة للاستضافة الذاتية فعلاً وتحظى بالصيانة اليوم. وهو شيء غريب أن يُقال عن فئة بها هذا القدر الظاهري من الخيارات، لكن هذا هو واقع المشهد. الأدوات التي يعاملها الناس كثلاثة أنداد هي في الممارسة خيار استضافة ذاتية واحد يعمل، وأداة قوية واحدة تعيش على خوادم شخص آخر، وواحدة ينبغي أن تكون في طريقك بعيداً عنها.
هذه قراءة تضع الاستضافة الذاتية أولاً حول أدوات اختبار الانحدار البصري ذاتية الاستضافة التي تنجو من الاصطدام بالواقع: أيها يناسب أي قيد، وماذا تفعل إن كنت على Lost Pixel الآن.
النسخة المختصرة
- BackstopJS هي الخيار القابل للاستضافة الذاتية، المصان، المرخّص بـ MIT، وبتكلفة صفرية. Puppeteer افتراضياً مع دعم Playwright، ومقارنة بكسلية عبر Resemble.js، وواجهة مراجعة بصيغة HTML (مع تحفظات على العرض داخل Docker تحتاج إلى التخطيط لها).
- Argos هي الأداة الأقوى من حيث سير العمل (مراجعة PR، ومقارنة لقطات ARIA منذ أواخر 2025)، لكنها عملياً SaaS مُدار. لا يوفّر القائم على الصيانة دعماً ولا توثيقاً لتشغيلها بنفسك.
- Lost Pixel جرت أرشفتها في أبريل 2026. لا تعتمدها لعمل جديد، وإن كنت تستخدمها فخطّط لترحيلك الآن.
الحكم في سطر واحد: لخط أنابيب CI ذاتي الاستضافة بالكامل، BackstopJS هو الخيار العملي. إن أردت أفضل سير عمل للمراجعة وتقبل الاعتماد على SaaS، فإن Argos هو الأداة الأفضل.
(ما لا تغطيه هذه المقالة: الاختبار البصري القائم على Cypress، وسير عمل المكوّنات الخاص بـ Storybook، وأرقام الأداء المقيسة يدوياً. بُنيت هذه المقارنة على وقائع من مصادر أولية، لا على منصة اختبار شغّلتها بنفسي.)
لقد تغيّر مشهد اختبار الانحدار البصري ذاتي الاستضافة
أعاد حدثان محددان في العام الماضي تشكيل هذه القائمة المختصرة، وكلاهما يسهل تفويته إن كنت تعمل انطلاقاً من مقالة قائمة كُتبت قبل وقوعهما.
الأول: في نقاش على GitHub في سبتمبر 2025صرّح أحد القائمين على صيانة Argos بأن Argos لا يوفّر دعماً ولا توثيقاً لتشغيله خارج الخدمة المُدارة. الشيفرة مرخّصة بـ MIT وموجودة في العلن، لذا فإن "يمكنك استضافته ذاتياً" صحيح تقنياً، لكن لا يوجد مسار مدعوم، وهو تمييز يصبح بالغ الأهمية بمجرد أن تصبح أنت الشخص المناوب من أجله.
الثاني: جرت أرشفة مستودع Lost Pixel في 22 أبريل 2026، للقراءة فقط، حين أعلن الفريق أنهم ينضمون إلى Figma. لم يصاحب الإيقاف أي دليل ترحيل. أداة كانت حتى وقت قريب بديلاً مجانياً مشروعاً ذاتي الاستضافة لـ Percy وChromatic، صارت الآن اعتمادية بلا قائم على صيانتها.
كلا التغييرين يشيران إلى الاتجاه نفسه. السبب الذي يجعل الفرق تصل إلى هنا أصلاً، وهو تسعير SaaS الذي يتضخم مع المتصفحات في مساحات العرض في الصفحات، أو قاعدة امتثال تمنع رفع لقطات لواجهة غير منشورة إلى طرف ثالث، لم يختفِ. ما تغيّر هو أن قائمة الاستضافة الذاتية أقصر مما تبدو.
الخلاصة الأساسية للقسم: من بين الأدوات الثلاث التي يضعها الناس في القائمة المختصرة، واحدة فقط اليوم قابلة للاستضافة الذاتية فعلاً وتحظى بصيانة نشطة.

BackstopJS: الخيار القابل فعلاً للاستضافة الذاتية
التثبيت هو npm install -g backstopjs (أو تثبيت محلي داخل المشروع)، وهذه الحقيقة وحدها تفسّر معظم سبب فوز BackstopJS على محور الاستضافة الذاتية: لا توجد خدمة يلزم عكس هندستها، ولا خلفية مُدارة يعتمد عليها سراً. يعمل كحزمة npm أو حاوية Docker على بنية تحتية تتحكم بها، تحت رخصة MIT، بتكلفة ترخيص صفرية. README يشير إلى أن السطر الحالي (6.3.x) يدعم Node 20.
تحت الغطاء، يقود Puppeteer افتراضياً (Chrome بلا واجهة)، ويدعم أيضاً Playwright عبر chromium وfirefox وwebkit. المقارنة بكسلية عبر Resemble.js، مع قيمة قابلة للضبط misMatchThreshold تتحكم في مقدار انحراف البكسل الذي يُحتسب فشلاً. تتم الموافقات عبر تقرير HTML بواجهة داخل المتصفح لقبول التغييرات.
القيود هي حيث يُتخذ القرار الاستراتيجي. لا يملك BackstopJS سير عمل مدمجاً لحجب PR: سيخبرك بوجود اختلاف، لكن ربط ذلك ببوابة "لا يمكن دمج هذا الـ PR" متروك لك. تعيش إعداداته في JSON، سيناريو واحد في كل مرة، وعند بضع مئات من حالات الاختبار يصبح ذلك الـ JSON نفسه سطحاً للصيانة. التطوير بطيء لا سريع: المشروع غير مؤرشف، والحزمة حالياً عند الإصدار 6.3.25، ويُظهر المستودع نحو 7,200 نجمة على GitHub و516 مشكلة مفتوحة. لذا تعامل مع BackstopJS كأداة ناضجة وقابلة للاستخدام، لا كمنصة اختبار بصري سريعة التطور.
أحد المخاطر التشغيلية بالغة الحدة هو العرض داخل Docker. مشكلتان، لقطات بيضاء أو مقتطعة في Docker (#1156) و نتائج غير متسقة بعد ترقية Docker إلى v5.3.0 (#1303)، بقيتا مفتوحتين لسنوات دون حل. وDocker في الوقت نفسه هو بالضبط ما تريده لـ CI، لأنه يُوحّد العرض عبر الأجهزة. وهكذا فإن الأداة التي تمنحك أكبر قدر من التحكم تسلّمك أيضاً صنفاً معروفاً وغير مُصلَح من عدم الاستقرار في الإعداد نفسه الذي ستشغّلها فيه. هذا خطر قابل للتخطيط، لا عيب قاتل، لكن يجب أن يكون على الطاولة قبل أن تلتزم.
نصيحة احترافية: فخ خطوط الأساس عبر أنظمة التشغيل. إن كان مطوروك يلتقطون خطوط الأساس على macOS ومشغّلات CI لديك على Linux، فستفشل اختباراتك لمجرد فروق تنعيم حواف الخطوط، حتى قبل وجود أي انحدار حقيقي. وكما وثّقأحد الممارسين، يختلف عرض الخطوط بين صورة Linux المستخدمة في خدمات CI وجهاز macOS محلي، بما يكفي لإفشال اختبار بصري من تلقاء نفسه. الحل هو توليد ومقارنة خطوط الأساس في بيئة واحدة (شغّل BackstopJS محلياً داخل صورة Docker نفسها التي تستخدمها في CI)، بحيث تأتي الصور المرجعية وصور المقارنة من عرض متطابق.
Argos: أفضل سير عمل، لكنه عملياً SaaS
يصيب Argos تجربة المراجعة بطريقة يعجز عنها BackstopJS، وهذا هو السبب الكامل لوجوده في هذه القائمة رغم تحفّظ الاستضافة الذاتية. يتكامل مع Playwright وCypress وStorybook وWebdriverIO وPuppeteer، ويتصل بـ GitHub Actions وGitLab CI وBitbucket وAzure DevOps. سير عمل مراجعة PR سطح منتج من الطراز الأول، وقد ظل يتقدم. تُضيف إدخالات سجل التغييرات الأخيرة مراجعات تعاونية مع تعليقات مثبتة (يونيو 2026) والتجاهل التلقائي للتغييرات غير المستقرة.
أكثر ما يميّزه تقنياً هو المقارنة. فوق المقارنة البكسلية الحتمية، أضاف Argos مقارنة لقطات ARIA لـ SDK الخاص بـ Playwright في 4 نوفمبر 2025. تقارن مقارنة لقطات ARIA شجرة إمكانية الوصول (الأدوار والتسميات والبنية) جنباً إلى جنب مع لقطة البكسل، مما يلتقط صنفاً من الانحدارات الدلالية وانحدارات إمكانية الوصول التي قد تفوتها مقارنة بكسلية بحتة (مثلاً زر لا يزال يبدو مطابقاً لكنه فقد تسميته القابلة للوصول). بالنسبة للفرق ذات الالتزامات تجاه إمكانية الوصول، هذه قدرة حقيقية لا توفّرها الأدوات البكسلية البحتة.
ثم يأتي القيد. الشيفرة MIT، لكن المنتج هو الخدمة المُدارة، وقد كان القائم على الصيانة صريحاً في أن الاستضافة الذاتية غير موثّقة وغير مدعومة. يمكنك إقامته من المصدر. أنت فقط تفعل ذلك وأنت تعلم أن أي تغيير من المنبع قد يكسر نشرك، ولا أحد ملزم بالمساعدة. ثمة عدم يقين ذو صلة يستحق الإشارة إليه لا الجزم به: تقارير المجتمع تشير إلى أن تكامل GitLab Self-Managed يتوقع خطة Enterprise (أعامل ذلك كإشارة مجتمع، لا كمواصفة مؤكدة، لذا تحقق منه على إعدادك الخاص قبل أن يقود قراراً).
هذا يُنتج فجوة غير مريحة. فريق ذو متطلبات خصوصية صارمة (وهو بالضبط الفريق الأكثر تحفيزاً للاستضافة الذاتية) يريد أيضاً تجربة مراجعة Argos، ليس أمامه مسار جيد. يمكنهم استخدام الخدمة المُدارة وقبول الاعتماد على طرف ثالث، أو الاستضافة الذاتية بلا دعم، أو اختيار أداة أخرى. لا يوجد باب رابع نظيف، والأمانة في تسمية ذلك أفضل من التظاهر بأن رخصة المصدر المفتوح تغلقه.
الخلاصة الأساسية للقسم: Argos هو الأداة الأقوى. استضافته ذاتياً غير مدعومة وهشة تشغيلياً.
Lost Pixel: مؤرشف، وماذا تفعل إن كنت تستخدمه
إن لافتة مستودع Lost Pixel نفسها هي القصة كلها في سطر واحد: أرشف المالك المستودع في 22 أبريل 2026، وهو الآن للقراءة فقط. انضم الفريق إلى Figma، وكان آخر إصدار v3.22.0 في نوفمبر 2024، ولم يُنشر أي دليل ترحيل.
حتى الأرشفة، كان Lost Pixel خياراً معقولاً (عرض قائم على Docker، ودعم Playwright وStorybook إضافة إلى Ladle وHistoire، واختبار بصري لكامل الصفحة وعلى مستوى المكوّن معاً). لم يتغير أي من ذلك تقنياً في 22 أبريل. ما تغيّر هو أنه بلا قائم على صيانته، وبلا رقع أمان، وبلا خريطة طريق، وهو ما يمثّل لاعتمادية CI استبعاداً للعمل الجديد مهما كان الإصدار الحالي يعمل جيداً.
إن كنت تستخدمه اليوم، ينقسم الترحيل بحسب كيفية استخدامك له. إن كنت تعتمد على اختباره على مستوى المكوّن، خاصة سير عمل Storybook أو Ladle، فأقرب بديل لك هو خدمة Argos المُدارة أو اختبار اللقطات الأصلي في Playwright. يستطيع BackstopJS التقاط المحددات أو روابط Storybook، لكنه لا يمنحك سير عمل المكوّنات المدمج نفسه الذي منحه Lost Pixel، لذا سيتعين عليك نمذجة حالات تلك المكوّنات بنفسك. إن كنت تستخدمه لانحدار بصري لكامل الصفحة، فإن BackstopJS هو الخَلَف المباشر ذاتي الاستضافة. في كل الأحوال، الانتقال ليس عاجلاً بمعنى "ستنكسر بناءاتك غداً"، لكن الساعة تدور: أداة اختبار غير مصانة تتعفّن بهدوء مع ابتعاد إصدارات متصفحك ونظام تشغيلك وإطار عملك عن تلك التي بُنيت آخر مرة تجاهها.
مقارنة في لمحة
إليك المعلومات نفسها جنباً إلى جنب، كي تتمكن من مسح المحاور المهمة لقرار CI قبل إسقاطها على قيودك الخاصة.
| المحور | BackstopJS | Argos | Lost Pixel |
|---|---|---|---|
| الرخصة | MIT | شيفرة MIT، منتج SaaS مُدار | MIT |
| واقع الاستضافة الذاتية | قابل للاستضافة الذاتية بالكامل بحكم التصميم | ممكن لكن بلا دعم وبلا توثيق | كان قابلاً للاستضافة الذاتية، والآن مؤرشف |
| حالة الصيانة | مُصان، بطيء التقدم وناضج | نشط (خدمة مُدارة) | مؤرشف في 22 أبريل 2026 |
| نهج المقارنة | مقارنة بكسلية (Resemble.js) | مقارنة بكسلية إضافةً إلى مقارنة لقطات ARIA | مقارنة بكسلية (غير مصانة) |
| دعم أطر العمل والمحركات | Puppeteer (افتراضي)، Playwright | Playwright, Cypress, Storybook, WebdriverIO, Puppeteer | Playwright، Storybook، Ladle، Histoire (وقت الأرشفة) |
| سير عمل المراجعة | تقرير HTML، موافقة يدوية، بلا بوابة PR | مراجعة PR، تعليقات تعاونية، بوابة PR | لا ينطبق (مؤرشف) |
| التكلفة | مجاني | تسعير SaaS (حسب اللقطة) | مجاني لكن غير مصان |

كيف تختار (إطار القرار)
ابدأ من أصعب قيد لديك، لا من قائمة ميزات. القيد يشطب معظم القائمة نيابةً عنك.
- استضافة ذاتية بالكامل، ميزانية صفرية، ويمكنك قبول اختبار لكامل الصفحة فقط مع مراجعة يدوية: BackstopJS. هو الخيار الوحيد الذي يحقق الاستضافة الذاتية والصيانة والمجانية في آن واحد، والمفاضلات (بلا بوابة PR، إعداد بـ JSON، عدم استقرار Docker) كميات معروفة يمكنك التصميم حولها.
- تريد أفضل تجربة مراجعة، وبوابة PR، ومقارنة ARIA، ويمكنك قبول الاعتماد على SaaS: خدمة Argos المُدارة. هذا هو المسار إلى نقاط قوة Argos دون خطر الاستضافة الذاتية غير المدعومة. إن كانت قاعدة امتثال تمنع رفع اللقطات إلى طرف ثالث، فهذا الباب مغلق وتعود إلى BackstopJS.
- مجموعة اختبار صغيرة أو Playwright أولاً: فكّر في عدم إضافة أي أداة مخصصة على الإطلاق. يأتي Playwright مع
toHaveScreenshot()بشكل أصلي، ولمجموعات دون نحو 100 اختبار قد يكون ذلك كل ما تحتاجه. يضع أحد أدلة الممارسين نقطة التحول التي تبدأ عندها أداة مخصصة في استحقاق ثمنها عند ذلك النطاق تقريباً (تعامل مع ذلك كملاحظة صناعية، لا كرقم رسمي من Playwright). عبء إدارة ملفات خط الأساس في git ينمو بعد تلك النقطة، وهناك تحديداً تسدّد الأداة المخصصة ثمن نفسها. - حالياً على Lost Pixel: رحّل الآن، وفق التقسيم في القسم السابق. لا تعتبر "لا يزال يعمل" سبباً للبقاء.
ثمة تحفّظ يسبق كل هذه الأدوات ويبقى بعدها: فريق Sparkbox، الذي كتب قبل سنوات، اختار خياراً مستضافاً تحديداً لأن جعل المهندسين يستخدمون الاختبارات فعلاً كان أصعب من الإعداد نفسه. أداة ذاتية الاستضافة بواجهة مراجعة أضعف قد تفوز في التكلفة وتخسر في التبنّي (إن كان فريقك يتجاهل تقرير BackstopJS الصاخب، فإن تكلفة ترخيصه الصفرية لم تجلب لك شيئاً). ضع تجربة المراجعة في الحسبان عند القرار، لا السعر وحده.
الخلاصة الأساسية للقسم: القيد يختار الأداة. الاستضافة الذاتية والمجانية تشير إلى BackstopJS، وأفضل سير عمل مع SaaS مقبول يشير إلى Argos، والصغير وPlaywright أولاً قد يشير إلى عدم استخدام أي أداة إطلاقاً.
تحديد حجم مشغّل CI لـ Chromium بلا واجهة
تقود الأدوات الثلاث جميعها Chromium بلا واجهة، والذي يحدّد حجم مشغّلك هو بصمة ذاكرة Chromium (لا CPU)، لأن كل عامل متصفح متزامن يريد بضعة غيغابايت من RAM خاصة به. صغّر حجم الجهاز أكثر مما ينبغي فلا تفشل اختباراتك البصرية بنظافة. تُقتَل بـ OOM في منتصف التشغيل ويُبلّغ عنها كضجيج بنية تحتية غير مستقر، وهو أسوأ أنواع الفشل في التنقيح.
كإرشاد تقريبي، محدّد بحسب التوازي لا كأرقام صارمة (الاستخدام الفعلي يعتمد على تعقيد الصفحة وعلى عدد العمّال الذين تشغّلهم بالتوازي):
- فريق صغير أو اختبارات تسلسلية: نحو 2 vCPU / 4 GB RAM يتعامل مع عامل Chromium بلا واجهة واحد إضافةً إلى عبء خفيّة CI.
- استخدام CI على مستوى الفريق: نحو 4 vCPU / 8 GB RAM يدعم نحو 2 إلى 4 عمّال متصفح بالتوازي، وهو ما تستقر عنده معظم الفرق.
- إنتاجية عالية أو مجموعات كبيرة: نحو 8 vCPU / 16 GB RAM للتوازي العالي، أو حين يتشارك تشغيل الانحدار البصري مشغّلاً مع عمل CI آخر.
التخزين هو البند الصامت. تتراكم مخرجات اللقطات وخطوط الأساس التاريخية تشغيلاً بعد تشغيل، لذا خطّط لذلك النمو: خصّص فسحة تخزين سخية إن كنت تحتفظ بخطوط الأساس محلياً، أو ادفع خطوط الأساس والمخرجات إلى تخزين كائني كي لا يكون قرص المشغّل هو القيد.
VPS هو المضيف الطبيعي لمشغّل CI ذاتي الاستضافة يقوم بهذا، لأنك تريد RAM متوقعة ومخصصة لعمّال Chromium، وجهاز مختبر منزلي لا معنى له إلا إذا كان العتاد موجوداً بالفعل. إن كنت تُقيم أيضاً حزمة CI المحيطة، فإن القطع حول أداة الاختبار البصري هي عمليات نشر بنقرة واحدة في سوق Cloudzy: Gitea وGitLab وJenkins وForgejo لمنصة CI، وDocker من أجل اتساق العرض الذي تحتاجه الأدوات. أما أداة الانحدار البصري نفسها فتُثبّت فوق ذلك عبر npm أو Docker، لذا شغّل Linux VPS محدّد الحجم من النطاقات أعلاه وشغّله هناك. إن كنت توصّل CI قائماً على Docker، فإن أدلة Cloudzy حول بدائل GitLab ذاتية الاستضافة و سرد حاويات Docker تغطّي الإعداد المجاور.

الأسئلة الشائعة
هل Argos قابل للاستضافة الذاتية؟
تقنياً نعم (الشيفرة مرخّصة بـ MIT)، لكن القائم على الصيانة صرّح في سبتمبر 2025 بأن Argos لا يوفّر دعماً ولا توثيقاً لتشغيله خارج الخدمة المُدارة. تعامل مع الاستضافة الذاتية كغير مدعومة وهشة تشغيلياً: قد تنكسر عند أي تغيير من المنبع دون أن يكون أي قائم على الصيانة ملزماً بالمساعدة. بالنسبة لمعظم الفرق، الخدمة المُدارة هي الطريقة العملية للحصول على مزايا Argos.
ماذا حدث لـ Lost Pixel؟
جرت أرشفة Lost Pixel في 22 أبريل 2026 حين انضم الفريق إلى Figma وأوقف المنتج. المستودع للقراءة فقط، وآخر إصدار كان v3.22.0 في نوفمبر 2024، ولم يُقدَّم أي دليل ترحيل. لا تعتمده لعمل جديد. إن كنت تستخدمه، فخطّط للترحيل إلى BackstopJS (اختبار كامل الصفحة) أو إلى Argos وPlaywright الأصلي (اختبار المكوّنات).
ما هي مقارنة لقطات ARIA؟
تقارن مقارنة لقطات ARIA شجرة إمكانية الوصول (الأدوار والتسميات والبنية) جنباً إلى جنب مع لقطة البكسل، وتلتقط انحدارات دلالية وانحدارات إمكانية وصول قد تفوتها مقارنة البكسل وحدها، مثل زر مطابق بصرياً لكنه فقد تسميته القابلة للوصول. أضاف Argos هذه الميزة في 4 نوفمبر 2025.
كم من RAM يحتاج Chromium بلا واجهة في CI؟
عامل تسلسلي واحد يعمل عادةً عند نحو 2 إلى 4 GB، والعمّال المتزامنون يوسّعون RAM من هناك بشكل خطي تقريباً. الاستخدام الفعلي يعتمد على تعقيد الصفحة وعلى عدد نسخ المتصفح التي تشغّلها بالتوازي، لذا تعامل مع هذه القيم كإرشادات لا كأرقام صارمة، واترك فسحة لتجنّب عمليات اختبار تُقتَل بـ OOM.
هل يدعم BackstopJS Playwright؟
نعم. Puppeteer هو المحرك الافتراضي (Chrome بلا واجهة)، وBackstopJS يدعم أيضاً Playwright عبر chromium وfirefox وwebkit. تختار المحرك في إعدادك.