أدوات من Chrome لإجراء اختبار تلقائي سلس

إجراء الاختبار مهم. إنها خطوة أساسية قبل تقديم ما قمت بإنشائه للمستخدمين - سواء كان موقعًا كاملاً أو تطبيقًا أو ميزة جديدة - للتحقق من أنه يعمل على النحو المتوقع. ومع ذلك، لا يزال يتم إجراء الكثير من الاختبارات يدويًا، مع طلب الزملاء أو مهندسي الاختبار التحقق من الميزة الجديدة والإبلاغ عن المشاكل.

Matthias Rohmer
Matthias Rohmer

يمكن أن يعرض هذا الاختبار اليدوي فئات معيّنة من المشاكل، إلا أنّه قد يفوته أنواع أخرى كثيرة. قد يفوت الأشخاص الذين يجرون الاختبار حالات قصوى أو يفشلون تمامًا في اختبار رحلة معينة من خلال التطبيق. كما أنه ليس لديهم جميع المعلومات التي كانت لديك عند كتابة الكود، ولا يعرفون المشكلات المحددة التي قمت بتضمين الكود لمنعها. ومع مرور الوقت وإضافة ميزات جديدة، هل سيعودون ويعيدون اختبار كل تلك الأشياء التي كانت تعمل سابقًا، للتأكد من أن التغييرات لم تعطلها؟

ومن هذا المنطلق، يعتقد فريق Chrome بأهمية الاختبار التلقائي. وباستخدام حزمة اختبار يختبر الميزة بشكل موثوق ومتكرر بحثًا عن أي تعطُّل، يمكنك التأكّد من اختبار كل التفاصيل الصغيرة، سواء في الوقت الحالي أو بعد أي تطوير مستقبلي. يتم تغليف معرفتك كمطور لميزة ما في اختبار.

ومع ذلك، نعلم أنّ الاختبار المبرمَج قد يمثّل تحديًا. وهذا هو السبب في أن فريق Chrome يوفر لك الأدوات والإرشادات التالية لجعل الأمر سلسًا قدر الإمكان.

محرك العرائس

Puppeteer هي مكتبة Node.js. ويتيح لك تشغيل Chrome وChromium وFirefox تلقائيًا من خلال واجهة برمجة تطبيقات عالية المستوى وسهلة الاستخدام.

استندت واجهة برمجة التطبيقات هذه في الأصل إلى بروتوكول أدوات مطوري البرامج في Chrome، والهدف من ذلك هو جعل بروتوكول WebDriver BiDi الجديد والمتقدّم هو أساس لنظام Puppeteer بحلول نهاية العام. إنّ WebDriver BiDi، الذي تم إنشاؤه بشكل مشترَك من قِبل جميع مورّدي المتصفحات الرئيسية، يبسّط الكثير من حالات استخدام التشغيل الآلي ويوفّر العديد من الحالات الجديدة ويتوافق مع مختلف المتصفحات.

ولكن ليست هناك حاجة للانتظار. تتيح واجهة برمجة التطبيقات Puppeteer حاليًا الكثير من حالات استخدام التشغيل الآلي، والتي لن يتم تحسينها إلا باستخدام WebDriver BiDi. يمكنك تنفيذ الكثير من المهام باستخدام ميزات مثل التفاعلات مع الصفحة واعتراض الطلبات ولقطات الشاشة، بدءًا من الاختبار وصولاً إلى الزحف إلى العناصر المرئية وبرمجة العمليات. يمكنك أيضًا استخدامه لاختبار نماذج الذكاء الاصطناعي على الويب في السحابة الإلكترونية باستخدام WebGPU وWebGPU.

ويُستخدَم تطبيق Puppeteer أيضًا من خلال أدوات مثل WebdriverIO، وهو إطار عمل كامل لاختبار المتصفحات، وأداة تحليل "مبادرة حماية الخصوصية"، ما يتيح لك فهم استخدام ملفات تعريف الارتباط وبيانات المستخدمين على موقعك الإلكتروني بشكل أفضل.

Chrome بلا واجهة مستخدم رسومية

إذا كنت قد أتمتة Chrome باستخدام Puppeteer، فربما اكتشفت أنه لا توجد نافذة متصفح معروضة أثناء إجراء الاختبارات. يشغِّل Puppeteer تلقائيًا متصفّح Chrome في وضع بدون واجهة مستخدم رسومية. وهذا يعني أنه لا توجد نافذة متصفح فعلية أثناء تشغيل الأتمتة.

ولكن هل تعلم أن "وضع التشغيل بلا واجهة مستخدم رسومية" في Chrome لم يكن يقتصر على استخدام متصفّح Chrome بدون نافذة، بل هو إصدار من Chrome تمت صيانته بشكلٍ منفصل تمامًا؟ لفترة طويلة أدت إلى الارتباك وصعوبة تعقب الأخطاء والمشكلات.

وبدءًا من الإصدار 112 من Chrome، طرحنا وضعًا جديدًا بلا واجهة مستخدم رسومية، الذي يعتمد الآن على قاعدة الرموز نفسها المُستخدَمة في Chrome العادي. ولا يؤدي هذا إلى تقليل الالتباس السابق فحسب، ولكنه يجلب أيضًا وظائف لم تكن ممكنة من قبل، مثل استخدام الإضافات أثناء التشغيل الآلي.

يستخدم Puppeteer هذا الوضع الجديد بلا واجهة مستخدم رسومية كوضع تلقائي منذ الإصدار 22. في حال استخدام Chrome بلا واجهة مستخدم رسومية من خلال حلول التشغيل الآلي الأخرى، يمكنك فرض "وضع التشغيل بلا واجهة مستخدم رسومية" الجديد باستخدام مفتاح سطر الأوامر --headless=new.

في حين أنّ وضع "بلا واجهة مستخدم رسومية" جديد في Chrome أكثر فعالية، إلا أنّه ليس خفيفًا مثل وضع "بدون واجهة مستخدم رسومية" القديم. إذا كنت تستخدم موارد محدودة بشكل كبير أو لا تحتاج إلى جميع ميزات Chrome، يمكنك استخدام الوضع القديم بلا واجهة مستخدم رسومية كـ chrome-headless-shell.

الإصدار Chrome for Testing

أثناء الاختبار، تحتاج إلى التحكم بشكل دقيق في بيئة الاختبار: نظام التشغيل والمتصفّح وإصدار المتصفح. قد يكون ذلك صعبًا من خلال التحديث التلقائي لكروم.

ولذلك أنشأنا Chrome for Testing، وهو إصدار من Chrome بدون تحديث تلقائي، وقد تم إطلاقه مع كل إصدار من إصدارات Chrome لكل نظام تشغيل رئيسي، ويمكن الوصول إليه من أرشيف أحد الإصدارات. ويتيح لك ذلك تنفيذ مهام سير عمل التشغيل الآلي على إصدار معيّن من Chrome بدون أي عناء.

يمكنك الوصول إلى برامج ثنائية في Chrome for Testing من خلال لوحة بيانات مدى توفّر Chrome for Testing أو JSON API أو أداة سطر الأوامر Puppeteer.


يُعد Puppeteer ووضع "بدون واجهة مستخدم رسومية" المحدَّث من Chrome وChrome for Testing جزءًا فقط من العمل الذي يبذله فريقنا حاليًا لجعل التشغيل التلقائي للمتصفِّح وإجراء الاختبارات سلسًا قدر الإمكان. وتساعد الأدوات ذات الصلة، مثل DevTools Recorder، في إنشاء الاختبارات: تسجيل تدفق المستخدم في Chrome وإعادة تشغيله في Puppeteer.

تعلُّم الاختبار على web.dev

ستساعدك الأدوات التي تتناولها هذه المشاركة على تحسين الاختبار المبرمَج. ولكن، إذا كنت قد بدأت للتو، فقد يبدو الأمر صعبًا لفهمه والتعلمه. لهذا السبب، أنشأنا دورة تدريبية جديدة مكوّنة من 10 وحدات، وهي تعلُّم الاختبارات على web.dev. تتناول هذه الدورة التدريبية المتعمّقة المفاهيم الأساسية للاختبار، ومكان وكيفية إجراء الاختبارات، وأنواع الاختبارات، والعناصر التي يجب اختبارها فعليًا. إنها نقطة انطلاق رائعة لرحلة الاختبار. بعد حصولك على الأساسيات، انتقِل إلى مجموعة أنظمة التشغيل الآلي التي تتضمّن شرحًا مفصّلاً ونصائح عملية بشأن أسئلة الاختبار الأكثر تحديدًا.