تشغيل الاختبارات
اختبارات الوحدة
تقع اختبارات الوحدة في__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
تستخدم اختبارات E2Evitest.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 منفصلة بالتوازي.
انظر المساهمة للحصول على قائمة التحقق الكاملة قبل الدمج.
