1. مبتدئ

    ما هي فلسفة React Testing Library (RTL) وكيف تختلف عن اختبارات الـ Enzyme القديمة؟

    فلسفة RTL تقوم على اختبار المكونات كما يتفاعل معها المستخدم الحقيقي (عبر النصوص والأزرار ودورات الوصول)، بدلاً من اختبار تفاصيل التنفيذ الداخلي (Internal Implementation Details) كالـ State والـ Class Methods.

    اقرأ الشرح الكامل
  2. مبتدئ

    ما الفرق بين getBy و queryBy و findBy في استعلامات React Testing Library؟

    دالة getBy تعيد العنصر فوراً أو تطلق خطأ إذا لم يوجد، و queryBy تعيد null عند عدم وجوده (مثالية لفحص الاختفاء)، بينما findBy غير متزامنة وتنتظر ظهور العنصر (مع معالجة الـ Promises والـ Animations).

    اقرأ الشرح الكامل
  3. متوسط

    لماذا يفضل استخدام userEvent بدلاً من fireEvent في اختبار تفاعلات المستخدم؟

    يقوم userEvent بمحاكاة السلسلة الكاملة من أحداث المتصفح الواقعية (مثل hover ثم focus ثم keydown ثم input)، بينما يطلق fireEvent الحدث المستهدف فقط بشكل جاف ومصطنع.

    اقرأ الشرح الكامل
  4. متوسط

    ما هو Mock Service Worker (MSW) ولماذا هو المعيار الذهبي لاختبار طلبات الـ API في ريأكت؟

    يقوم MSW باعتراض طلبات الشبكة على مستوى طبقة الشبكة (Network Layer) باستخدام Service Worker أو Node.js interceptors، دون تعديل كود استدعاءات الـ fetch الأصلية في التطبيق.

    اقرأ الشرح الكامل
  5. متقدم

    ما هو التحذير الشهير: "act(...) warning" ولماذا يظهر وكيف نعالجه بشكل صحيح؟

    يظهر عندما يتم تحديث حالة المكون (State update) خارج نطاق act()، وعادة ما يحدث بسبب انتهاء عملية غير متزامنة (Promise أو Timer) بعد أن انتهى الاختبار من التحقق.

    اقرأ الشرح الكامل
  6. متوسط

    كيف تختبر Custom Hook بشكل منفصل باستخدام renderHook من RTL؟

    باستخدام renderHook(() => useCustomHook()) التي تنشئ مكوناً وهمياً لتشغيل الـ Hook وإرجاع كائن result يحمل قيمته الحالية ودالة rerender لتحديثه.

    اقرأ الشرح الكامل
  7. متوسط

    ما الفرق بين اختبارات المكونات (Component Tests) واختبارات النهاية إلى النهاية (E2E) بواسطة Playwright؟

    اختبارات المكونات تفحص وحدة واجهة معزولة داخل بيئة DOM افتراضية (jsdom)، بينما اختبارات E2E تشغل متصفحاً حقيقياً وتختبر مسار المستخدم الكامل عبر السيرفر والواجهة الحقيقية.

    اقرأ الشرح الكامل
  8. مبتدئ

    كيف تختبر المكونات التي تعتمد على React Context دون الحاجة لتشغيل التطبيق كاملاً؟

    بتغليف المكون المستهدف بالـ Context.Provider المطلوب داخل دالة الـ render مع تزويده بالبيانات الوهمية المخصصة للاختبار.

    اقرأ الشرح الكامل
  9. مبتدئ

    ما هي اختبارات اللقطات (Snapshot Testing) وما هي محاذير الإفراط في استخدامها؟

    تقوم بمقارنة هيكل الـ DOM للمكون بنسخة نصية محفوظة مسبقاً، والإفراط فيها يؤدي لإنشاء اختبارات هشة يتم تحديثها عشوائياً عند أي تغيير بسيط دون قراءة الفروقات الحقيقية.

    اقرأ الشرح الكامل
  10. متوسط

    كيف تختبر إمكانية الوصول (Accessibility Testing) في مكونات ريأكت باستخدام axe-core؟

    بدمج أداة jest-axe داخل اختبارات المكونات لفحص عقد الـ DOM بعد تصييرها وتأكيد خلوها من أي انتهاكات لمعايير WCAG.

    اقرأ الشرح الكامل