الانتقال إلى المحتوى الرئيسي
يحتوي failproofai على مجموعتي اختبار: اختبارات الوحدة (سريعة، مع محاكاة) واختبارات end-to-end (استدعاءات subprocess فعلية).

تشغيل الاختبارات


اختبارات الوحدة

تقع اختبارات الوحدة في __tests__/ وتستخدم Vitest مع jsdom.

كتابة اختبار وحدة للسياسة


اختبارات end-to-end

تستدعي اختبارات E2E الملف الثنائي الفعلي failproofai كـ subprocess، وترسل حمولة JSON إلى stdin، وتتحقق من مخرجات stdout وكود الخروج. يختبر هذا مسار التكامل الكامل الذي يستخدمه Claude Code.

الإعداد

تشغل اختبارات E2E الملف الثنائي مباشرة من مصدر المستودع. قبل التشغيل الأول، قم ببناء حزمة CJS التي تستخدمها ملفات الخطاف المخصصة عند استيرادها من 'failproofai':
ثم قم بتشغيل الاختبارات:
أعد بناء dist/ كلما غيرت واجهة برمجية عامة للخطاف (src/hooks/custom-hooks-registry.ts أو src/hooks/policy-helpers.ts أو src/hooks/policy-types.ts).

بنية اختبار E2E

استخدام مساعدات E2E

FixtureEnv - بيئة معزولة لكل اختبار:
يسجل createFixtureEnv() تنظيف afterEach تلقائيًا. runHook - استدعاء الملف الثنائي:
Payloads - مصانع حمول جاهزة:

كتابة اختبار E2E

أشكال استجابات E2E

إعداد Vitest

تستخدم اختبارات E2E vitest.config.e2e.mts مع:
  • environment: "node" - لا توجد متغيرات عامة للمتصفح المطلوبة
  • pool: "forks" - عزل عملية حقيقي (اختبارات توليد subprocesses)
  • testTimeout: 20_000 - 20 ثانية لكل اختبار (بدء الملف الثنائي + تقييم الخطاف)
تجمع forks مهمة: العمال المستندة إلى الخيط تشارك globalThis، مما قد يتداخل مع اختبارات التي تولد subprocesses. تتجنب forks القائمة على العملية هذا.

CI

يجب نجاح التشغيل الكامل لـ CI (bun run lint && bunx tsc --noEmit && bun run test:run && bun run build) قبل الدمج. تعمل مجموعة E2E كمهمة CI منفصلة بالتوازي. انظر المساهمة للحصول على قائمة التحقق الكاملة قبل الدمج.