يوفر Discourse اختبارات واجهة أمامية شاملة للنواة والإضافات والقوالب. بمجرد أن يكون لديك بيئة تطوير محلية تعمل بشكل صحيح، يمكن تشغيل هذه الاختبارات محليًا بعدة طرق مختلفة.
تشغيل الاختبارات في المتصفح
النواة / الإضافات: انتقل إلى /tests في بيئة التطوير الخاصة بك
القوالب: انتقل إلى /theme-qunit في بيئة التطوير (أو الإنتاج) الخاصة بك، ثم اختر القالب
بشكل عام، عند العمل على اختبارات النواة، يجب عليك تمكين خيار “تخطي الإضافات” (Skip Plugins)، وعند العمل على الإضافات، يجب عليك اختيار الإضافة المحددة من القائمة المنسدلة (الذي سيؤدي تلقائيًا إلى “تخطي النواة” - Skip Core). لا يُتوقع أن تمر مجموعة اختبارات النواة عند تمكين الإضافات (لأن الإضافات غالبًا ما تغيّر سلوك النواة عمدًا)
للأسف، في وقت كتابة هذا التقرير، تعني تسريبات الذاكرة في اختباراتنا أن محاولة تشغيل المجموعة بأكملها في متصفح واحد تميل إلى الوصول إلى حد ذاكرة المتصفح. لتشغيل المجموعة بأكملها عبر متصفحات متعددة بالتوازي، راجع أمثلة سطر الأوامر أدناه.
تشغيل الاختبارات على سطر الأوامر
النواة
من المجلد الجذر لـ 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
# تشغيل مجموعة النواة بأكملها عبر 5 كائنات Chrome بلا واجهة بالتوازي:
bin/qunit --parallel 5
# تشغيل جميع الاختبارات التي يحتوي "اسم الوحدة: اسم الاختبار" على جزء نصي (بغض النظر عن حالة الأحرف):
bin/qunit --filter "Integration | Component | bookmark"
# تغليف القيمة بعلامات المائل (Slash-wrap) للمطابقة باستخدام تعبير نمطي (Regular Expression)، على سبيل المثال للبدائل:
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.