كيفية تشغيل مجموعات اختبارات QUnit الأساسية والإضافات والمواضيع في Discourse

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

تشغيل الاختبارات في المتصفح

النواة / الإضافات: قم بزيارة /tests في بيئة التطوير الخاصة بك

السمات: قم بزيارة /theme-qunit في بيئة التطوير (أو الإنتاج) الخاصة بك، ثم اختر السمة

بشكل عام، عند العمل على اختبارات النواة، يجب تفعيل خيار “تخطي الإضافات”، وعند العمل على الإضافات، يجب اختيار الإضافة المحددة من القائمة المنسدلة (وهو ما سيقوم تلقائياً بـ “تخطي النواة”). لا يتوقع أن تمر مجموعة اختبارات النواة بنجاح عند تفعيل الإضافات (لأن الإضافات غالباً ما تغير سلوك النواة عمداً)

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

تشغيل الاختبارات من سطر الأوامر (CLI)

النواة

من المجلد الجذر لـ Discourse، استخدم bin/qunit (تأكد من أنك قمت بتشغيل pnpm install منذ آخر مرة سحبْتَ فيها التغييرات من المصدر الرئيسي). إنها تغلف Ember Exam للتوليف العشوائي والتوازي، وتشغيلها افتراضياً ضد خادم Rails التشغيلي وأصول JS الموجودة. قم بتشغيل bin/qunit --help للحصول على قائمة كاملة بالخيارات.

إليك بعض الأمثلة المفيدة:

# تشغيل ملف اختبار واحد، أو كل الاختبارات في مجلد:
bin/qunit frontend/discourse/tests/integration/components/bookmark-test.gjs
bin/qunit frontend/discourse/tests/integration/components

# تشغيل مجموعة النواة الكاملة عبر 5Instances من Chrome بدون واجهة (headless) بالتوازي:
bin/qunit --parallel 5

# تشغيل جميع الاختبارات التي يحتوي فيها "وحدة: اسم الاختبار" على سلسلة فرعية (بغض النظر عن حالة الأحرف):
bin/qunit --filter "Integration | Component | bookmark"

# قم بتغليف القيمة بعلامات شرطة مائلة لمطابقته باستخدام تعبير منتظم، على سبيل المثال للتبديل:
bin/qunit --filter "/bookmark|reaction/i"

# تشغيل خادم معزول وتشغيل الاختبار في متصفح مرئي لتسهيل التصحيح:
bin/qunit --standalone --no-headless

:information_source: يتم تمرير --filter إلى QUnit: تطابق القيمة العادية كسلسلة فرعية بغض النظر عن حالة الأحرف، بينما تطابق القيمة المغلوفة بعلامات شرطة مائلة مثل /foo/i كتعبير منتظم. قم بتضمين علامة i لمطابقة التعبيرات المنتظمة بغض النظر عن حالة الأحرف.

الإضافات

من المجلد الجذر لـ Discourse:

bin/rake "plugin:qunit" # تشغيل جميع اختبارات qunit للإضافات
bin/rake "plugin:qunit[discourse-chat-integration]" # تشغيل اختبارات qunit لإضافة واحدة

السمات

من المجلد الجذر لـ Discourse:

bin/rake "themes:qunit[url,<theme_url>]"
bin/rake "themes:qunit[name,<theme_name>]"
bin/rake "themes:qunit[id,<theme_id>]"

هذا المستند يخضع للتحكم في الإصدارات - اقترح التغييرات على github.

19 إعجابًا