مُنشئ الاختبارات
تركيب اختبار في المُنشئ المرئي: لوحة الإجراءات، وترتيب الخطوات، وحقل المُحدِّد، والتشغيل مع تقدُّم حيّ لكل خطوة، وإيقاف التشغيل.
المُنشئ هو المكان الذي يُركَّب فيه الاختبار ويُحرَّر، أيًّا كان مصدره: المُسجِّل، أو المولِّد بالذكاء الاصطناعي، أو أحد المستوردين، أو صفحة فارغة. وفيه ثلاث لوحات: تختار إجراءً، وترتِّب الخطوات، وتحرِّر الخطوة المحدَّدة.
إضافة الخطوات
تعرض لوحة الإجراءات كل ما تستطيع الخطوة فعله، مقسَّمًا في فئات حتى لا تمرّ على خمسة وعشرين إدخالًا بحثًا عن تحقُّق واحد:
- التفاعلات —
click،fill،select،check،uncheck،hover،press،drag،upload-file،tap،swipe،launchApp - التنقُّل والانتظار —
goto،go-back،go-forward،reload،switch-tab،wait،waitForLoadingComplete - التحقُّق —
assert، وقوالب الإشعار المنبثق والنافذة الحوارية وخطأ التحقُّق من الحقل، وassert-console، وassert-request، وa11yAudit - الالتقاط —
extract،api-request،wait-for-email،screenshot - الشبكة والوقت والحوارات —
mock-route،unmock-route،set-clock،handle-dialog - التدفُّقات —
use-flow - التحكُّم في التدفُّق —
if،else،end-if،loop،end-loop
والنقر على أيٍّ منها يُلحق خطوة في آخر الاختبار. وانظر مرجع الإجراءات لما يفعله كلٌّ منها.
ترتيب الخطوات
الخطوات قائمة واحدة مسطَّحة مرتَّبة، وتعيد ترتيبها بالسحب.
وخطوات التحكُّم في التدفُّق علاماتٌ لا حاويات (انظر
التحكُّم في التدفُّق)، ولذلك يُزيح المُنشئ الخطوات
الواقعة بين if وend-if المقابلة لها، وبين loop وend-loop المقابلة لها.
وهذه الإزاحة هي العلامة المرئية الوحيدة على موضع بداية الكتلة ونهايتها — فحين
تسحب خطوة عبر علامة من هذه العلامات فإنك تغيِّر كونها مشروطة أو غير مشروطة،
فراقب الإزاحة وهي تتبدَّل عند الإفلات.
تحرير خطوة
تحديد خطوة يفتح محرِّرها، والحقول الظاهرة فيه هي الحقول التي يأخذها ذلك الإجراء
فعلًا — فخطوة press تطلب مفتاحًا، وخطوة assert تطلب نوع التحقُّق ثم الحقول
التي يحتاجها ذلك النوع. فلن تُعطى نموذجًا من عشرين حقلًا لا يعنيك منها إلا
ثلاثة.
حقل المُحدِّد
كل خطوة تستهدف عنصرًا تحصل على حقل المُحدِّد، وهو يدعك تختار كيف تطابق العنصر لا
ماذا تطابق فحسب: معرِّف الاختبار (test id)، أو دور ARIA، أو الوسم (label)، أو
النص البديل (placeholder)، أو النص، أو CSS خام. والأفضل معرِّف الاختبار والدور؛
أما text فأهشُّ الأنماط الستة. وانظر المُحدِّدات.
وقيم المُحدِّدات تُعرض بخط ثابت العرض في كل مكان من Vera — وكذلك العناوين والمدد والمعرِّفات. فكل قيمة تقرؤها الآلة تظهر بخط ثابت العرض، فلا تختلط بالنص العادي.
التشغيل من المُنشئ
شغِّل الاختبار فتُنفَّذ الخطوات أمامك، وتُظهر كل خطوة حالتها أولًا بأول: في الانتظار، قيد التشغيل، نجحت، فشلت. والخطوة الفاشلة تحتفظ برسالة خطئها، والخطوة التي أصلحها الإصلاح الذاتي تُظهر ما كان عليه المُحدِّد وما صار إليه.
ويُحفَظ الاختبار قبل أن يُشغَّل، فما نُفِّذ هو ما خُزِّن — ولا يعكس تشغيلٌ أبدًا تعديلًا لم يُحفظ ثم عدلتَ عنه. وتُعلَّم التغييرات غير المحفوظة، فتعرف دائمًا أما تنظر إليه هو ما سيُشغَّل أم لا.
ويسجِّل كل تشغيل مقطع فيديو، ولقطة شاشة عند الفشل، ونتائج كل خطوة. وتقارن خطوة
screenshot فوق ذلك بخط الأساس الخاص بها — انظر
الانحدار البصري.
إيقاف التشغيل أو إلغاؤه
يوجد زر إيقاف على كل واجهة تعرض تشغيلًا جاريًا، ولا يظهر إلا ما دام التشغيل جاريًا فعلًا — فزرٌّ لا يعطي إلا 404 أسوأ من غيابه. وتلك الواجهات هي: المُنشئ، وقائمة تشغيلات المشروع، وصف الاختبار في قائمة الاختبارات، وصفحة تشغيل السلسلة، وسجلّ تشغيلات مجموعة الاختبارات و سيناريوهات الأدوار (Actor Scenarios).
الإيقاف تعاونيّ لا قسريّ. الضغط عليه يسجِّل الطلب؛ ويلاحظه المنفِّذ عند
حدّ الخطوة التالية، فيُغلق المتصفح، ويسجِّل الخطوات الباقية skipped مع
السبب، ويكتب التشغيل cancelled. فالكلفة الحقيقية للإيقاف هي الخطوة الجارية
لحظتها — فالتشغيل الواقف عند wait مدته 45 ثانية يتوقف حين ينتهي ذلك الانتظار،
ولا شيء هناك لتضبطه. وإن كان اختبارٌ يفعل شيئًا لا تحتمل وقوعه مرة أخرى بعد أن
تضغط إيقاف، فالخطوة التي عليك النظر فيها هي الجارية لحظة الضغط.
والجواب الذي تتلقّاه يخبرك بما جرى:
| الجواب | معناه |
|---|---|
| أُوقف | لم يبدأ التشغيل قطّ (كان لا يزال في قائمة الانتظار) أو كان قد أُلغي من قبل. لم يُنفَّذ شيء. |
| طُلب الإيقاف | التشغيل يُنفَّذ في مكان ما. تابع المشاهدة — فالسجلّ النهائي يكتبه من يمسك بالمتصفح. |
| رُفض | كان التشغيل قد نجح أو فشل بالفعل. والحكم دليل، ولا يُعاد كتابته أبدًا. |
والضغط على إيقاف مرتين آمن؛ فالثانية نجاح لا يفعل شيئًا.
cancelled نهاية حقيقية، لا فشل. يُحتسب التشغيل في الاستهلاك كأي تشغيل آخر —
فقد استهلك ثواني متصفح حقيقية — لكنه يُستثنى من حساب التقلّب (فضغط شخصٍ
على إيقاف لا يقول شيئًا عن ثبات الاختبار)، ولا يُرسل أي إشعار: فقد فعلتَ هذا
قاصدًا، وتنبيه الفريق إليه ضجيج لا أكثر. ولا يُحسب كذلك أول تشغيل ناجح.
والإيقاف لا تحكمه الخطة أبدًا. فالاستحقاق يقرِّر هل يحق لك أن تبدأ عملًا، لا هل يحق لك أن توقفه.
وحالتان لهما شكل خاص:
- تشغيل يُنفَّذ على جهازك عبر الوكيل المحلي لا تبلغه الخدمة السحابية، فيسافر طلب الإيقاف مع النبضة التالية للوكيل. وذلك الدليل يذكر الحدّ الأقصى للتأخير.
- تشغيلات الحمل وفحوص الأمان تتوقف بإنهاء العملية الخارجية، لا عند حدّ خطوة — انظر اختبار الحمل وفحص الأمان.
التشغيل القائم على البيانات
يمكن أن يُعطى الاختبار مُعاملات من مجموعة بيانات: اختبار واحد، وN صفًّا، ويُشغَّل مرة لكل صف. وهذا هو الشكل الذي تستعمله Vera للحالات الحدِّية — فاختبار واحد بمُعاملات واثنا عشر صفًّا تمكن صيانته على نحو لا تمكن به صيانة اثني عشر اختبارًا متشابهًا مكتوبًا باليد.
وتشغيل مجموعة البيانات هو N تشغيلًا مستقلًّا، فلا يوجد صف واحد تُوقفه: فإيقافها إيقاف جماعي، يُخاطَب بمعرِّف الدفعة (group id) الذي يُسلِّمه بثّ التشغيل، ويخبرك بما بلغه. والنجاح الجزئي هو الجواب المعتاد — فالصفوف التي انتهت تحتفظ بأحكامها، والصفوف الجارية تتوقف عند خطوتها التالية، والصفوف التي لم تبدأ لا تبدأ.
انظر أيضًا
- مرجع إجراءات الخطوات — كل إجراء وحقوله
- التحكُّم في التدفُّق — قواعد الإزاحة بالتفصيل
- المتغيرات — استعمال
{{tokens}}في أي حقل - التسجيل — التقاط الخطوات بدل إضافتها
- التدفُّقات القابلة لإعادة الاستعمال — استخراج الخطوات المتكرِّرة