كيفية اختبار السمات أو مكونات السمة؟

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

يمكنك إضافتها إلى سمة قابلة للاختيار من قبل المستخدم أو استخدام رابط الاختبار الموجود في صفحة إدارة السمات.

عذراً، كنت أقصد الاختبار الآلي – سأعدّل منشوري السابق. كنت أفكر في شيء مثل QUnit الذي تستخدمه بعض الإضافات بالفعل.

لا، لا يمكن إضافة اختبارات QUnit إلى السمات/المكونات في الوقت الحالي…

@David، ما مدى إمكانية إضافة دعم لمجلد /test مثل الإضافات؟ سنحتاج أيضًا إلى تمكين السمة عند تشغيل الاختبارات، لأن اختبارات النواة تعمل دون أي سمة، أليس كذلك؟

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

الأمر الآخر الذي يجب مراعاته هو أننا لا نجعل مسار /qunit متاحًا على خوادم الإنتاج. نظرًا لأن القوالب غالبًا ما يتم تطويرها على خوادم الإنتاج، فقد نحتاج إلى إعادة التفكير في هذا الأمر :thinking:

هذا أحد العيوب الرئيسية لمكونات السمات في رأيي. فهي سهلة النشر للغاية وهو أمر رائع، لكن الاختبار غالبًا ما يُهمل.

إذا فهمتُ بشكل صحيح، فإن أي شيء يمكن إنجازه باستخدام مكون السمة يمكن إنجازه أيضًا باستخدام ملحق. الأول أسهل في النشر، بينما يتيح الثاني الاختبار.

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

أشعر أنه يجب علينا النظر في هذه القضية عند العمل على Ember CLI. لا يوجد شيء مستحيل في وجود نوع من أداة تشغيل الاختبارات للسمات، ويمكننا تضمين بعض الأساسيات في gem الخاص بـ discourse-theme لإعداد الاختبار المحلي باستخدام Ember CLI.

لكن هل يتطلب تشغيل اختبارات السمات تثبيتًا كاملًا لـ Discourse؟ هناك العديد من التبعيات المتبادلة، ولا أعتقد أنه يمكننا اختبار السمات بشكل مستقل :thinking:

ربما يمكن أن يحتوي theme-cli على بعض المنطق لسحب صورة discourse_dev الخاصة بـ docker وتشغيل اختبارات qunit داخلها؟

الفكرة الكاملة وراء Ember CLI هي أننا نقوم بفصل الخادم عن العميل بشكل نظيف. يمكننا توفير ما يكفي من جانب JavaScript لاختبار العميل دون تشغيل خادم Rails. ستظل بحاجة إلى تثبيت Node و Ember CLI بالتأكيد، لكن قد تتمكن من الاستغناء عن تثبيت مجموعة Discourse الكاملة بما في ذلك Redis و Postgres.

قد يكون الأمر صعبًا، لكنه شيء يمكننا بالتأكيد وضعه في اعتبارنا.

نحن ندعم الآن الاختبارات في السمات (تحديث متأخر، تمت إضافة دعم اختبارات السمات في منتصف عام 2021). يمكنك التوجه إلى /theme-qunit في بيئتك المحلية أو موقعك الإنتاجي، وسيتم إدراج أي سمات/مكونات مثبتة لديها اختبارات هناك. راجع Discourse Tab Bar for Mobile أو مكون أيقونات العلامات للحصول على أمثلة.

هذا رائع. هل سيمتد هذا إلى اختبار جافاسكريبت في الإضافات؟

هل تقصد القدرة على تشغيل الاختبارات في بيئة الإنتاج؟ هذا مخصص للقوالب فقط في هذه المرحلة.

(محليًا يمكنك تشغيل اختبارات JavaScript الخاصة بالمكونات الإضافية، بالطبع.)

أعتقد أن الهدف سيكون أن نكون قادرين على تشغيلها في CI على GitHub كما نفعل حاليًا مع المواصفات (كل من Theme و Plugin JS)؟

نعم، نجري اختبارات في CI لجميع الإضافات الرسمية.