قائمة التحقق اليدوي لبرنامج WeChat المصغر
لاستخدامها من قبل المستخدمين (أو المشرفين) عند المراجعة في أدوات مطوّري WeChat. فاختبار الدخان البنيوي لا يضمن إلا صحة WXSS ونجاح التحويل البرمجي؛ أما صحة السلوك فلا بد من التحقق منها يدويًا — إذ تختبر vitest دلالات H5، ولا يمكن التقاط الفروق في الأحداث والعرض على طرف MP.
البناء:
pnpm dev:mp-weixin(أوpnpm build:mp-weixin)، والناتج فيdist/dev/mp-weixin(أوdist/build/mp-weixin)، افتح ذلك الدليل بأدوات مطوّري WeChat.المتطلبات المسبقة: المكتبة الأساسية لـ WeChat ≥ 2.25.2 (يعتمد عليها root-portal؛ وتستخدم الإصدارات الأقل فرع التخفيض إلى تموضع fixed داخل الصفحة، وإن أردت التحقق من مسار التخفيض خصيصًا فاضبط المكتبة الأساسية على أقل من 2.25.2 وأعد تشغيل عناصر «طبقات الحوار» الثلاثة).
خط الأساس العام (يُفحص في كل صفحة)
| # | العنصر | معيار النجاح |
|---|---|---|
| G1 | الفتح | لا تبياض الصفحة عند عرضها، ولا خطأ «المكوّن غير مُسجَّل» |
| G2 | الوضع الداكن | التبديل من المدخل يجعل جميع ألوان المكوّنات في الصفحة تتبعه (لا الخلفية فقط) |
| G3 | لغتان | التبديل من المدخل يجعل النصوص داخل المكوّنات (مثل رسائل التحقق في form، ونصوص الأزرار) تتبع اللغة |
| G4 | الطرفية | لا يوجد أي console.error طوال العملية (مع الانتباه ألا يظهر تحذير «نقطة التركيب غير الموجودة» الخاص بـ message/loading) |
قائمة المكوّنات
| مسار الصفحة | المكوّن | التفاعلات الرئيسية (بالإضافة إلى خط الأساس العام) |
|---|---|---|
pages/button/button | button | النقر له حالة ارتداد؛loading / disabled / plain / round / circle / block كلها تُعرَض؛ أيقونة iconfont في زر الأيقونة تظهر بشكل صحيح |
pages/icon/icon | icon | تظهر جميع الأيقونات الـ 37 (ليست مربعات فارغة)؛size / color ساريان؛أيقونة loading تدور |
pages/tag/tag | tag | ألوان كل type صحيحة؛تبديل round / hit؛closable يطلق الإغلاق عند النقر ويصل الاستدعاء |
pages/input/input | input | v-model في اتجاهين؛أنماط العنصر النائب سارية عبر placeholder-style (لا يُفحَص ::placeholder)؛textarea يتكيّف ارتفاعه؛عدّاد الأحرف؛clearable يفرّغ؛حالة error تجعل الحد أحمر |
pages/switch/switch | switch | للنقر حالة تبديل بحركة انزلاقية؛loading / disabled لا يستجيبان للنقر؛activeText/inactiveText يُعرضان |
pages/checkbox/checkbox | checkbox / checkbox-group | النقر الفردي يضع علامة؛التحديد المتعدد داخل group لا يتأثر كل منهما بالآخر؛العناصر المعطّلة لا تستجيب؛حالة نصف التحديد غير المحدد |
pages/radio/radio | radio / radio-group | الخيارات متنافية (اختيار أحدهما يلغي السابق)؛العناصر المعطّلة لا تستجيب |
pages/form/form | form / form-item | blur / input يطلقان التحقق؛نص الخطأ يُعرَض في <text> بشكل طبيعي؛validate() يُرجع Promise يُحلّ بشكل صحيح داخل زر «الإرسال»؛نجمة الحقل المطلوب ظاهرة |
pages/select/select | select | النقر يفتح listbox (root-portal، وترتيبه الطبقي فوق القناع)؛النقر على خيار يحدّده ويُغلق؛clearable يفرّغ؛حقل الإدخال داخل طبقة filterable قابل للاستخدام؛عدم وجود تنقل بلوحة المفاتيح أمر طبيعي (مُزال في MP) |
pages/tooltip/tooltip | tooltip | النقر على trigger يُظهر الفقاعة؛الموضع مطابق لـ placement (بعد القياس بإطارين، لا يجب رؤية وميض أو انحراف في الإطار الأول)؛النقر خارج المنطقة يُغلق؛أما trigger="hover" فعدم عمله في MP يُعتبر طبيعيًا |
pages/dialog/dialog | dialog | الفتح مع القناع والحركة؛النقر على القناع يُغلق وفق closeOnClick-modal؛في وضع bottom يسري safe-area-inset-bottom على الشاشات الكاملة؛عدم عمل Esc وlockScroll في MP أمر طبيعي؛وضع ملء الشاشة يغطي كل الشاشة |
pages/services/services | message / loading | انظر القسم التالي |
قسم message / loading
| # | العنصر | معيار النجاح |
|---|---|---|
| S1 | أنواع الرسائل | تظهر الأنواع الخمسة success / info / warning / danger / loading، بأيقونة ولون صحيحين |
| S2 | الإغلاق التلقائي | تختفي بعد 3 ثوانٍ افتراضيًا مع حركة انتقالية (وليس اختفاءً فوريًا) |
| S3 | الإغلاق اليدوي | لا يُغلق نوع loading تلقائيًا، بل بعد handle.close() |
| S4 | تكديس رسائل متعددة | عند استدعاء عدة رسائل متتالية تُكدَّس عموديًا دون تداخل؛وعند تجاوز عدد max تُستبعد الأقدم |
| S5 | القناع الشامل | يُظهر loading.show قناعًا شاملًا، ولا يمكن النقر على الطبقات السفلى أثناءه |
| S6 | استدعاء الإغلاق | يُطلَق استدعاء onClose عند اختفاء الرسالة |
| S7 | تحذير عدم التركيب | (للتحقق خصيصًا: احذف <lh-message /> من الصفحة ثم نادِ) يجب أن تُصدر الطرفية تحذيرًا صريحًا عبر console.error، بصمت لا |
«العيوب غير الحقيقية» المعروفة على طرف MP (لا تبلغ عنها كأخطاء)
- لا يوجد لـ select / dialog / tooltip تنقل بلوحة المفاتيح / Esc / focus-trap / lockScroll — مُزالة في وقت الترجمة، انظر دعم المنصات.
trigger="hover"الخاص بـ tooltip لا يُطلَق على طرف MP — لا توجد دلالة hover، استخدم click.- يجب وضع نقطة تركيب لـ message / loading أولًا، فهذا تصميم وليس خطأ.
- icon مرسوم بخط، فـ
fill/strokeفي CSS لا يعملان، فقطcolor.
تسجيل نتائج الانحدار
أضف عمودًا يمين الجدول بعنوان «نجاح / فشل (الأعراض)»، وعناصر الفشل الصق أولًا لقطات من لوحتي Console وWXML في أدوات المطوّر، ثم قارنها بمصفوفة قدرات المنصات في docs/uniapp/uniapp组件库计划.md للحكم عليها: هل هي «تخفيض متوقَّع» أم عيب حقيقي.