في هذا المقال
إعلان إصدار
سبعة متصفحات حديثة في Docker، وحاوية لكل جلسة، وتسجيلات بالصوت. تعرّفوا كيف يواصل WebSummoner مسيرة Selenoid، المؤرشف منذ ديسمبر 2024، ولماذا يعمل في صميم البنية التحتية لاستضافتنا.
إن كان فريقكم يشغّل اختبارات Selenium، فالأرجح أنكم تعرفون Selenoid: برنامج Go الصغير الذي يُطلق متصفحًا جديدًا في حاوية Docker لكل جلسة اختبار ثم يتخلص منه بعدها. سريع وخفيف، وظل لسنوات أسهل طريقة لتشغيل شبكة متصفحات على عتادكم الخاص. وفي 17 ديسمبر 2024، أرشف مؤلفوه المستودع. لا إعلان ولا منشور وداع: مجرد الشريط الرمادي الذي يضعه GitHub على المشاريع المتاحة للقراءة فقط، وانتهى الأمر.
أغسطس 2016: أول إيداع لـ Selenoid لدى Aerokube
17 ديسمبر 2024: أرشفة المستودع، وإتاحته للقراءة فقط
سبتمبر 2026: WebSummoner 1.0.0، سبعة متصفحات حديثة وانتقال بسطر واحد
لم يتعطل شيء ذلك الصباح، وهنا تكمن المشكلة تحديدًا. فأداة الاختبار المؤرشفة تتقادم وفق جدول لا تتحكمون فيه: لا تصل إصدارات المتصفحات الجديدة أبدًا، وتنحرف برامج التشغيل، ويأتي يوم تبدأ فيه مجموعة اختبارات ظلت ناجحة لسنوات بالإخفاق لأسباب لا علاقة لها بتطبيقكم.
المصدر المفتوح لا ينتهي بانتهاء المستودع
أرشفة المستودع تنهي صيانته لا حياته. فـ Selenoid صادر بموجب ترخيص Apache 2.0، الذي يمنح كل من يستخدمه حقًا دائمًا في تعديله وإعادة توزيعه: فحين ينصرف مؤلفو مشروع ما إلى غيره، تبقى الشيفرة متاحة ويمكن لمشرف جديد أن يواصل حملها. لقد بنت Aerokube برنامج Selenoid وحملته ثماني سنوات، وكان قرار أرشفته قرارها، ويبقى الفضل فيما أصاب فيه Selenoid لها. وWebSummoner هو هذا الامتداد. ينطلق من آخر إيداع لـ Selenoid، ويحافظ على التصميم الذي جعله جيدًا، ويحمل اسمه ومؤسسته وصوره ونطاقه الخاص. وقد كنا نشغّل Selenoid في بيئة الإنتاج لدى RIADVICE، فكان الاستمرار فيه القرار السليم، لنا ولكل من يعتمد عليه.
صدر WebSummoner 1.0.0: محور Selenium سريع يستدعي أسطولًا من المتصفحات داخل حاويات Docker بوصفها بيئات مؤقتة مرتبطة بالجلسة.
لماذا اشتققنا Selenoid بدلًا من استبداله
اشتققناه لسببين.
-
بنيتنا التحتية: WebSummoner جزء من العمود الفقري للبنية التحتية لاستضافة RIADVICE. ولم يكن بوسعنا ترك تبعية إنتاجية مؤرشفة لم تعد تتلقى تحديثات المتصفحات ولا إصلاحات برامج التشغيل ولا التصحيحات الأمنية، وكان نقلها إلى بديل أثقل سيكلّف أكثر من صيانتها صيانة جيدة.
-
المجتمع: بنت فرق في جميع أنحاء العالم سنوات من مجموعات الاختبار على Selenoid، وكانت تستحق امتدادًا يحظى بالصيانة بدلًا من تدهور بطيء. وقد أصاب Selenoid في الأمور المهمة: ملف تنفيذي واحد بلغة Go بحجم 10 ميغابايت تقريبًا، ولا بيئة تشغيل Java، ولا قاعدة بيانات، ومتصفح يُطلق في ثانية تقريبًا، وحاوية لكل جلسة فلا يتسرب شيء بين الاختبارات.
حافظنا على ذلك كله وحدّثنا ما سواه: المتصفحات وبرامج التشغيل والصور الأساسية وسلسلة الأدوات، وكلها كانت مجمّدة منذ 2024. فـ Selenoid من البرمجيات التي يمكن وصفها بالمكتملة: لا يحتاج إلى أحدث الميزات، بل إلى متصفحات حديثة وبرامج تشغيل مطابقة وإصلاحات منتظمة، وهذا هو العمل الذي التزمنا به. وكان التوافق القرار الأول لا أمرًا ثانويًا. فكل ما يرسله عميل Selenoid لا يزال مقبولًا، وبصفة دائمة.
الجديد في الإصدار 1.0.0
سبعة متصفحات، كلها حديثة
| المتصفح | الإصدار |
|---|---|
| Chrome | 152 |
| Firefox | 155 |
| Edge | 152 |
| Opera (عاد) | 135 |
| Brave (جديد) | 1.94 |
| Yandex | 26.6 |
| Safari (WebKitGTK) (جديد) | 2.52.6 |
تجتاز كل صورة مجموعة اختبارات الحاويات نفسها، التي تُشغَّل بمعزل على الصور المنشورة. والحالتان اللتان تعجز عنهما برامج التشغيل ذاتها موثّقتان بوصفهما حالتَي تخطٍّ، لا مخفيّتين. وثلاثة من هذه المتصفحات خبر في حد ذاته. فـ Brave وSafari يُنشران لأول مرة: لم يصدر Selenoid قط صورة لـ Brave، ولم تُصدر مصادر Safari لديه في صورة قط. وOpera يعود من الموت: فآخر صورة له في Selenoid تعود إلى أبريل 2024، وقد تعذّر استخدامه مع Selenium 4 منذ أن أسقط المشروع دعم Opera.
Brave ينضم إلى القائمة
يُنشر Brave لأول مرة: لم يصدره Selenoid قط، وهو يقف اليوم إلى جانب المتصفحات الستة الأخرى بوصفه صورة من الدرجة الأولى. ويرقّم Brave إصداراته وفق نظامه الخاص، لذا تقرأ أداة البناء إصدار Chromium المضمّن في كل إصدار وتقرنه تلقائيًا ببرنامج التشغيل المطابق. وإن كان مستخدموكم يتصفحون بـ Brave، فبإمكانكم الاختبار عليه تمامًا كما تختبرون على Chrome: القدرات نفسها، والشاشة المباشرة نفسها، والتسجيلات نفسها، ومجموعة الاختبارات نفسها تُجتاز بالطريقة نفسها.
Opera يعمل مجددًا
أسقط Selenium دعم Opera في الإصدار 4.3.0، والحل البديل الذي يردده الجميع، أي تشغيل Opera ببرنامج chromedriver الخاص بـ Chrome for Testing، يبدأ الجلسات بنجاح ثم يُسقط محرك العرض كلما فتحت صفحة نافذة. وكان الحل في قراءة رسالة الخطأ قراءة صحيحة: فتحقق OperaDriver من الإصدار مجرد تحذير لا رفض. وبرنامج التشغيل الخاص بـ Opera يقوده على نحو صحيح، والمحور يطلب منه البروتوكول الحديث نيابة عنكم.
Safari هدف من الدرجة الأولى
يُنشر Safari أيضًا لأول مرة. والصورة مبنية على WebKitGTK، وهو المحرك نفسه الذي يعتمده Safari، ومبنية من المصدر: فقد احتوى Selenoid على ملفات البناء لكنه لم يصدر صورة قط، لذا فهذه أول صورة يمكنكم سحبها. وأمران لم يعملا معه قط، رفع الملفات وقدرة الوكيل (proxy)، يتولاهما الآن المحور نفسه، فيسري الإصلاح على أي صورة، قديمة كانت أو جديدة. أما الخلَلان الطفيفان المتبقيان فيتطلب كلٌّ منهما سطرًا واحدًا في اختباراتكم، ويبيّن التوثيق ماهية هذا السطر.
تسجيلات بالصوت على كل المتصفحات
باتت تسجيلات الجلسات تلتقط الصوت بموثوقية على المتصفحات السبعة كلها، فلم يعد اختبار الوسائط أو WebRTC الفاشل مقطع فيديو صامتًا. وإن لم تريدوا الصوت، فقدرة واحدة تكفي لإيقافه.
مصمَّم للتشغيل
نقطة نهاية /metrics لـ Prometheus، ومجسّات صحة تستجيب لطلبات HEAD، واستجابة 429 سليمة عند امتلاء قائمة الانتظار، ورفع ملفات يعمل على كل صورة، وصور إصدار موقّعة مع قائمة مكونات البرمجيات، وسياسة أمان تبيّن بوضوح ما يعنيه مقبس Docker.
واجهة مُعاد بناؤها
أُعيد بناء WebSummoner UI، العرض المباشر لشبكتكم مع شاشة المتصفح والسجلات وقائمة الانتظار، من الأساس: سمة داكنة مدروسة، وشعارات المتصفحات الرسمية، وإحصاءات مباشرة للجلسات وقائمة الانتظار، وإبلاغ صادق عن حالة الاتصال. ولا تحتاج أسطر الأوامر وملفات Compose الحالية إلى أي تغيير.
سلسلة أدوات حديثة
Go 1.27، وJava 25 لمجموعة الاختبارات، وReact 19 للواجهة، وUbuntu 26.04 لصور المتصفحات، وتحديثات التبعيات وفحوص الثغرات في CI، وموقع توثيق قابل للبحث. ولا يحتاج بناء أي جزء من المشروع إلا إلى Docker. كما تقدّم موازن الأحمال للعناقيد متعددة المحاور والمثبّت ذو الأمر الواحد جنبًا إلى جنب مع المحور.
إن كنتم تختارون اليوم
لا يوجد بديل مثالي لما كان يقدّمه Selenoid، لكن هناك خيارات مناسبة بصدق.
Selenium Grid: التطبيق المرجعي. الخيار الصحيح إن أردتم وضعه الموزّع ولم يزعجكم ثقل Java.
Moon: الخيار إن كنتم تعملون على Kubernetes وتقبلون ترخيصًا تجاريًا لما يتجاوز أربع جلسات متوازية.
WebSummoner: لأجهزة Docker المضيفة والأجهزة الافتراضية، حين يكون ما تريدونه محورًا صغيرًا وسريعًا ومتكاملًا.
ويتضمن التوثيق مقارنة مُتحقَّقًا منها بالرجوع إلى المصادر مع Selenoid وMoon وSelenium Grid وSelenide وPlaywright وPuppeteer، بما في ذلك متى يكون اختيارها هو الأنسب.
الانتقال من Selenoid
وجّهوا عملاءكم إلى المحور الجديد. فـ selenoid:options وترويسات X-Selenoid-* والمسار /aerokube/... والأمر cm selenoid start وخيار --selenoid-uri في الواجهة كلها لا تزال تعمل، وستظل تعمل.
التغيير الوحيد: داخل صورة Docker، انتقلت الإعدادات من /etc/selenoid إلى /etc/websummoner. حدّثوا نقطة التركيب هذه، وقد انتهيتم.
ما نلتزم به
- التوافق، بصفة دائمة. تُقبل أسماء قدرات Selenoid وترويساته ومساراته وأوامره بشكل نهائي، لا أن تُعلَن متقادمة مع مهلة زمنية. فالانتقال الذي يكلّف دورة عمل كاملة انتقال لا يقوم به أحد.
- متصفحات حديثة. تتبع الصور الإصدارات المستقرة لكل جهة مطوّرة، ولكل منها برنامج التشغيل المطابق له، ولا تُوسَم أي صورة قبل أن تجتاز مجموعة الاختبارات.
- أمان محدَّث باستمرار. تُحدَّث التبعيات أسبوعيًا، ويخضع كل بناء لفحص الثغرات، وصورة المحور موقّعة وتُرفق بها قائمة مكونات البرمجيات.
- الإنتاج أولًا. نشغّل WebSummoner بأنفسنا. وما نُصدره هو ما نعتمد عليه.
- توثيق يقول ما لا يعمل. الملاحظات الكاملة، بما فيها القيود، موجودة في الإعلان.
يسعى WebSummoner إلى منافسة أكبر الشبكات في الميدان الذي يتفوق فيه: السرعة والبساطة وتكلفة التشغيل. وكل تغيير يُقاس بهذا المعيار.
متاح الآن
websummoner \
-p 4444:4444 \
-v $PWD/browsers.json:/etc/websummoner/browsers.json:ro \
-v /var/run/docker.sock:/var/run/docker.sock \
websummoner/websummoner:latestوجّهوا اختباراتكم إلى http://localhost:4444/wd/hub. ملاحظات الإصدار الكاملة ودليل الانتقال والنقاش، كلها على بُعد نقرة واحدة:
📣 إعلان الإصدار 1.0.0: ملاحظات الإصدار الكاملة، والمكان المخصص لطرح الأسئلة 📖 التوثيق: الأدلة والمرجع ودليل الانتقال 💻 الشيفرة المصدرية: Apache-2.0 على GitHub
إن كنتم تستخدمون Selenoid وصادفتم في الانتقال ما لا يعمل كما ينبغي، فذلك خلل نعالجه، لا سؤال دعم. وإن كنتم تصونون شيئًا مبنيًا على Selenoid، فأخبرونا وسنحرص على أن يستمر في العمل.
استدعوا أسطولًا من المتصفحات داخل حاويات Docker.
محور Selenium سريع ببيئات مؤقتة مرتبطة بالجلسة.
هل تحتاجون إلى مساعدة في تشغيل WebSummoner داخل مؤسستكم؟
يطوّر WebSummoner ويصونه فريق RIADVICE بموجب ترخيص Apache-2.0. وهو مبني على Selenoid من Aerokube وIvan Krutov، وعلى الواجهة الأصلية التي طوّرها Kirill Merkushev.





