اختبار وحدات CSS باستخدام Jest
اختبر مخرجات CSS-in-JS ولقطات المكوّنات المنسقة باستخدام Jest والمطابقات ذات الصلة.
اختبار وحدات CSS باستخدام Jest درس مجاني في CSS Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في CSS Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة CSS Academy 4 دروس في المجموع.
لماذا نختبر CSS باستخدام Jest؟
يتحقق اختبار الوحدات لـ CSS برمجيًا من الأنماط المحسوبة، وتطبيق الأصناف، وسلوك التخطيط. كما يكتشف تراجعات منطق CSS، مثل تطبيق الصنف الخطأ أو فقدان المُعدِّل، من دون الحاجة إلى لقطة شاشة من المتصفح أو فحص بصري يدوي.
دعم JSDOM وCSS
يستخدم Jest JSDOM افتراضيًا، وهو يوفر دعمًا محدودًا لـ CSS — إذ لا يحسب التخطيط ولا يقيّم المحددات المعقدة. ويكفي JSDOM لاختبار وجود الأصناف والأنماط المضمّنة، أما لاختبار الخصائص المحسوبة فاستخدم jest-environment-jsdom مع محاكيات وحدات CSS.
اختبار تطبيق الأصناف
اعرض مكونًا وتحقّق من تطبيق أصناف CSS الصحيحة بناءً على الخصائص أو الحالة. ويؤكد ذلك أن منطق الأصناف الشرطي (active وdisabled وerror variant) يعمل بصورة صحيحة من دون التحقق من قيم أنماط محددة.
<button class="btn-primary">Primary Button</button>
وحدات CSS في الاختبارات
يحوّل Jest عمليات استيراد وحدات CSS باستخدام identity-obj-proxy. يعيد هذا الوكيل سلسلة اسم الصنف لأي خاصية يتم الوصول إليها: تعيد styles.primary القيمة "primary". وتتحقق الاختبارات من أسماء الأصناف من دون الحاجة إلى تطبيق CSS حقيقي.
jest-styled-components
بالنسبة إلى مشاريع Styled Components، تضيف jest-styled-components مُطابِق toHaveStyleRule. اختبر أن المكون المنسّق يطبّق قيم خصائص CSS الصحيحة بناءً على الخصائص، من دون الحاجة إلى متصفح حقيقي لحساب الأنماط.
<button class="btn">Enabled</button>
<button class="btn" disabled>Disabled (0.5 opacity)</button>
@testing-library/jest-dom
يوسّع jest-dom Jest بمطابقات خاصة بـ DOM: toHaveStyle (يتحقق من النمط المضمّن أو المحسوب)، وtoHaveClass (يتحقق من قائمة الأصناف)، وtoBeVisible (يتحقق من display/visibility/opacity). وتجعل هذه المطابقات تأكيدات CSS واضحة وقابلة للتعبير.
اختبار اللقطات لأسماء الأصناف
تلتقط لقطات المكونات الترميز المعروض، بما في ذلك أسماء الأصناف. وتظهر عمليات إعادة تسمية وحدات CSS أو التغييرات في منطق الأصناف الشرطي على شكل فروقات في اللقطات. وهذا مفيد لاكتشاف تغييرات الأصناف غير المقصودة بسرعة، لكنه يتطلب انضباطًا دقيقًا في مراجعة اللقطات.
قيود اختبار CSS باستخدام Jest
لا يستطيع Jest حساب التخطيط (offsetWidth وgetBoundingClientRect)، أو تقييم استعلامات الوسائط، أو تشغيل حركات CSS. وتتطلب هذه المهام بيئة متصفح حقيقية عبر Playwright أو Cypress. وتُعد اختبارات CSS في Jest مكملة لا بديلة عن الاختبار المستند إلى المتصفح.
اختبار الخصائص المخصصة في CSS
اضبط الخصائص المخصصة في CSS على عنصر حاوية داخل الاختبارات: element.style.setProperty("--color-primary", "red"). واقرأ القيم المحسوبة باستخدام getComputedStyle(el).getPropertyValue("--color-primary"). يدعم JSDOM قراءة الخصائص المخصصة، لكنه لا يدعم التتالي.
اختبار أصناف الحركة
تحقّق من إضافة أصناف تشغيل الحركة وإزالتها في الأوقات الصحيحة: اختبر أن مكون النافذة المنبثقة يضيف الصنف animate-enter عند الفتح، والصنف animate-exit قبل إلغاء تركيبه. أما CSS الخاص بالحركة نفسها فيُختبر باستخدام VRT.
تغطية منطق CSS
يوجد منطق CSS في JavaScript، مثل سلاسل الأصناف الشرطية، وقيم موفّر السمات، وإنشاء كائنات الأنماط. وتغطي تغطية Jest (Istanbul) منطق CSS هذا المكتوب بـ JavaScript. اكتب اختبارات تغطي جميع الفروع، لضمان اختبار كل مجموعة من الأشكال والحالات.
اختبار المعرفة
ماذا تفعل identity-obj-proxy عند استخدامها مع وحدات CSS في Jest؟
الملخص
يتحقق اختبار وحدات CSS باستخدام Jest من منطق تطبيق الأصناف، والتنسيق الشرطي، وسلوك وحدات CSS من دون متصفح حقيقي. استخدم identity-obj-proxy لوحدات CSS، وjest-styled-components لـ Styled Components، ومطابقات jest-dom لكتابة تأكيدات واضحة. واجمع بينها وبين VRT لتغطية شاملة لجودة CSS.
الأسئلة الشائعة
هل درس «اختبار وحدات CSS باستخدام Jest» مجاني؟
نعم — نص درس «اختبار وحدات CSS باستخدام Jest» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة CSS Academy، انتقل إلى CoddyKit PRO. تتضمن دورة CSS Academy 4 دروس في المجموع.
ماذا ستتعلم في «اختبار وحدات CSS باستخدام Jest»؟
اختبر مخرجات CSS-in-JS ولقطات المكوّنات المنسقة باستخدام Jest والمطابقات ذات الصلة. تتمرن على CSS Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ CSS Academy؟
لا تُشترط خبرة سابقة. CSS Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «اختبار وحدات CSS باستخدام Jest»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس CSS Academy هذا؟
نعم. كل درس في CSS Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- مفاهيم اختبار الانحدار البصري
- Percy وChromatic لـ Storybook
- اختبار وحدات CSS باستخدام Jest
- اختبار إمكانية الوصول: color-contrast وfocus