דלג לתוכן הראשי
failproofai מכיל שתי חוקי בדיקות: בדיקות יחידה (מהירות, עם mocks) ובדיקות end-to-end (הפעלת תהליכי משנה אמיתיים).

הפעלת בדיקות


בדיקות יחידה

בדיקות היחידה נמצאות ב-__tests__/ ומשתמשות ב-Vitest עם jsdom.

כתיבת בדיקת יחידה של מדיניות


בדיקות end-to-end

בדיקות E2E משדרות את הקובץ failproofai האמיתי כתהליך משנה, חוצים עומס JSON ל-stdin, ובודקות את פלט stdout וקוד ההחروج. זה בודק את נתיב האינטגרציה המלא שבו Claude Code משתמש.

התקנה

בדיקות E2E משדרות את הקובץ הישירות מקוד המקור של הריפו. לפני ההרצה הראשונה, בנה את ערימת CJS שקובצי hook מותאמים משתמשים בהם בעת ייבוא מ-'failproofai':
לאחר מכן, הפעל את הבדיקות:
בנה מחדש את dist/ בכל פעם שאתה משנה את ממשק hook הציבורי (src/hooks/custom-hooks-registry.ts, src/hooks/policy-helpers.ts, או src/hooks/policy-types.ts).

מבנה בדיקת E2E

שימוש ב-E2E helpers

FixtureEnv - סביבה מבודדת לכל בדיקה:
createFixtureEnv() רושם afterEach ניקיון באופן אוטומטי. runHook - שדרות הקובץ:
Payloads - מפעלות עומס מוכנות:

כתיבת בדיקת E2E

צורות תגובה E2E

תצורת Vitest

בדיקות E2E משתמשות ב-vitest.config.e2e.mts עם:
  • environment: "node" - אין צורך בגלובלים של דפדפן
  • pool: "forks" - בידוד תהליך אמיתי (בדיקות שדרות תהליכי משנה)
  • testTimeout: 20_000 - 20 שניות לכל בדיקה (הפעלה של קובץ + הערכה של hook)
ערימת forks חשובה: עובדים מבוססי threads שיתופיים globalThis, מה שיכול להפריע לבדיקות שדרות תהליכי משנה. ערימות מבוססות תהליכים מונעות זאת.

CI

הריצה המלאה ב-CI (bun run lint && bunx tsc --noEmit && bun run test:run && bun run build) חייבת לעבור לפני המיזוג. ערימת E2E רצה כעבודת CI נפרדת במקביל. ראה Contributing לרשימת הבדיקה המלאה לפני מיזוג.