Skip to main content
failproofai के दो टेस्ट सुइट हैं: यूनिट टेस्ट (तेज़, मॉक किए गए) और एंड-टू-एंड टेस्ट (वास्तविक सबप्रोसेस आह्वान)।

टेस्ट चलाना


यूनिट टेस्ट

यूनिट टेस्ट __tests__/ में रहते हैं और Vitest को jsdom के साथ उपयोग करते हैं।

नीति यूनिट टेस्ट लिखना


एंड-टू-एंड टेस्ट

E2E टेस्ट वास्तविक failproofai बाइनरी को सबप्रोसेस के रूप में आह्वान करते हैं, stdin में JSON पेलोड पाइप करते हैं, और stdout आउटपुट और एक्जिट कोड पर दावे करते हैं। यह उस संपूर्ण एकीकरण पथ का परीक्षण करता है जो Claude Code उपयोग करता है।

सेटअप

E2E टेस्ट रेपो स्रोत से सीधे बाइनरी चलाते हैं। पहली बार चलाने से पहले, CJS बंडल बनाएँ जो कस्टम हुक फ़ाइलें 'failproofai' से आयात करने के समय उपयोग करती हैं:
फिर टेस्ट चलाएँ:
जब भी आप सार्वजनिक हुक API को बदलें (src/hooks/custom-hooks-registry.ts, src/hooks/policy-helpers.ts, या src/hooks/policy-types.ts), तो dist/ को पुनः बनाएँ।

E2E टेस्ट संरचना

E2E हेल्पर्स का उपयोग करना

FixtureEnv - प्रति-टेस्ट अलग-थलग वातावरण:
createFixtureEnv() स्वचालित रूप से afterEach क्लीनअप रजिस्टर करता है। runHook - बाइनरी को आह्वान करें:
Payloads - तैयार पेलोड फैक्ट्रीज़:

E2E टेस्ट लिखना

E2E प्रतिक्रिया आकार

Vitest कॉन्फ़िग

E2E टेस्ट vitest.config.e2e.mts के साथ उपयोग करते हैं:
  • environment: "node" - कोई ब्राउज़र ग्लोबल्स की आवश्यकता नहीं
  • pool: "forks" - वास्तविक प्रक्रिया अलगाव (टेस्ट सबप्रोसेस स्पॉन करते हैं)
  • testTimeout: 20_000 - प्रति टेस्ट 20s (बाइनरी स्टार्टअप + हुक eval)
forks पूल महत्वपूर्ण है: थ्रेड-आधारित वर्कर्स globalThis साझा करते हैं, जो सबप्रोसेस-स्पॉनिंग टेस्ट में हस्तक्षेप कर सकता है। प्रक्रिया-आधारित फोर्क्स इससे बचते हैं।

CI

पूर्ण CI रन (bun run lint && bunx tsc --noEmit && bun run test:run && bun run build) को मर्ज करने से पहले पास होना आवश्यक है। E2E सुइट समानांतर में एक अलग CI जॉब के रूप में चलता है। पूर्ण प्री-मर्ज चेकलिस्ट के लिए योगदान देना देखें।