يحتوي Discourse على اختبارات واجهة أمامية واسعة النطاق للنواة، والإضافات، والسمات. بمجرد إعداد بيئة تطوير محلية تعمل بشكل صحيح، يمكن تشغيل هذه الاختبارات محلياً بعدة طرق مختلفة.
تشغيل الاختبارات في المتصفح
النواة / الإضافات: قم بزيارة /tests في بيئة التطوير الخاصة بك
السمات: قم بزيارة /theme-qunit في بيئة التطوير (أو الإنتاج) الخاصة بك، ثم اختر السمة
بشكل عام، عند العمل على اختبارات النواة، يجب تفعيل خيار “تخطي الإضافات”، وعند العمل على الإضافات، يجب اختيار الإضافة المحددة من القائمة المنسدلة (وهو ما سيقوم تلقائياً بـ “تخطي النواة”). لا يتوقع أن تمر مجموعة اختبارات النواة بنجاح عند تفعيل الإضافات (لأن الإضافات غالباً ما تغير سلوك النواة عمداً)
للأسف، في وقت كتابة هذا النص، تسريبات الذاكرة في اختباراتنا تعني أن محاولة تشغيل المجموعة الكاملة في متصفح واحد تميل إلى تجاوز حد ذاكرة المتصفح. لتشغيل المجموعة الكاملة عبر متصفحات متعددة بالتوازي، راجع أمثلة سطر الأوامر أدناه.
تشغيل الاختبارات من سطر الأوامر (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
يتم تمرير
--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.