# Test Coverage Plan (עברית) 🌐 **Languages:** 🇺🇸 [English](../../../../ops/COVERAGE_PLAN.md) · 🇪🇹 [am](../../../am/docs/ops/COVERAGE_PLAN.md) · 🇸🇦 [ar](../../../ar/docs/ops/COVERAGE_PLAN.md) · 🇦🇿 [az](../../../az/docs/ops/COVERAGE_PLAN.md) · 🇧🇬 [bg](../../../bg/docs/ops/COVERAGE_PLAN.md) · 🇧🇩 [bn](../../../bn/docs/ops/COVERAGE_PLAN.md) · 🇧🇦 [bs](../../../bs/docs/ops/COVERAGE_PLAN.md) · 🇨🇿 [cs](../../../cs/docs/ops/COVERAGE_PLAN.md) · 🇩🇰 [da](../../../da/docs/ops/COVERAGE_PLAN.md) · 🇩🇪 [de](../../../de/docs/ops/COVERAGE_PLAN.md) · 🇬🇷 [el](../../../el/docs/ops/COVERAGE_PLAN.md) · 🇪🇸 [es](../../../es/docs/ops/COVERAGE_PLAN.md) · 🇪🇪 [et](../../../et/docs/ops/COVERAGE_PLAN.md) · 🇮🇷 [fa](../../../fa/docs/ops/COVERAGE_PLAN.md) · 🇫🇮 [fi](../../../fi/docs/ops/COVERAGE_PLAN.md) · 🇫🇷 [fr](../../../fr/docs/ops/COVERAGE_PLAN.md) · 🇮🇪 [ga](../../../ga/docs/ops/COVERAGE_PLAN.md) · 🇮🇳 [gu](../../../gu/docs/ops/COVERAGE_PLAN.md) · 🇳🇬 [ha](../../../ha/docs/ops/COVERAGE_PLAN.md) · 🇮🇳 [hi](../../../hi/docs/ops/COVERAGE_PLAN.md) · 🇭🇷 [hr](../../../hr/docs/ops/COVERAGE_PLAN.md) · 🇭🇺 [hu](../../../hu/docs/ops/COVERAGE_PLAN.md) · 🇦🇲 [hy](../../../hy/docs/ops/COVERAGE_PLAN.md) · 🇮🇩 [id](../../../id/docs/ops/COVERAGE_PLAN.md) · 🇳🇬 [ig](../../../ig/docs/ops/COVERAGE_PLAN.md) · 🇮🇹 [it](../../../it/docs/ops/COVERAGE_PLAN.md) · 🇯🇵 [ja](../../../ja/docs/ops/COVERAGE_PLAN.md) · 🇬🇪 [ka](../../../ka/docs/ops/COVERAGE_PLAN.md) · 🇰🇭 [km](../../../km/docs/ops/COVERAGE_PLAN.md) · 🇮🇳 [kn](../../../kn/docs/ops/COVERAGE_PLAN.md) · 🇰🇷 [ko](../../../ko/docs/ops/COVERAGE_PLAN.md) · 🇱🇹 [lt](../../../lt/docs/ops/COVERAGE_PLAN.md) · 🇱🇻 [lv](../../../lv/docs/ops/COVERAGE_PLAN.md) · 🇮🇳 [ml](../../../ml/docs/ops/COVERAGE_PLAN.md) · 🇮🇳 [mr](../../../mr/docs/ops/COVERAGE_PLAN.md) · 🇲🇾 [ms](../../../ms/docs/ops/COVERAGE_PLAN.md) · 🇲🇹 [mt](../../../mt/docs/ops/COVERAGE_PLAN.md) · 🇲🇲 [my](../../../my/docs/ops/COVERAGE_PLAN.md) · 🇳🇵 [ne](../../../ne/docs/ops/COVERAGE_PLAN.md) · 🇳🇱 [nl](../../../nl/docs/ops/COVERAGE_PLAN.md) · 🇳🇴 [no](../../../no/docs/ops/COVERAGE_PLAN.md) · 🇮🇳 [or](../../../or/docs/ops/COVERAGE_PLAN.md) · 🇮🇳 [pa](../../../pa/docs/ops/COVERAGE_PLAN.md) · 🇵🇭 [phi](../../../phi/docs/ops/COVERAGE_PLAN.md) · 🇵🇱 [pl](../../../pl/docs/ops/COVERAGE_PLAN.md) · 🇵🇹 [pt](../../../pt/docs/ops/COVERAGE_PLAN.md) · 🇧🇷 [pt-BR](../../../pt-BR/docs/ops/COVERAGE_PLAN.md) · 🇷🇴 [ro](../../../ro/docs/ops/COVERAGE_PLAN.md) · 🇷🇺 [ru](../../../ru/docs/ops/COVERAGE_PLAN.md) · 🇱🇰 [si](../../../si/docs/ops/COVERAGE_PLAN.md) · 🇸🇰 [sk](../../../sk/docs/ops/COVERAGE_PLAN.md) · 🇸🇮 [sl](../../../sl/docs/ops/COVERAGE_PLAN.md) · 🇷🇸 [sr](../../../sr/docs/ops/COVERAGE_PLAN.md) · 🇸🇪 [sv](../../../sv/docs/ops/COVERAGE_PLAN.md) · 🇰🇪 [sw](../../../sw/docs/ops/COVERAGE_PLAN.md) · 🇮🇳 [ta](../../../ta/docs/ops/COVERAGE_PLAN.md) · 🇮🇳 [te](../../../te/docs/ops/COVERAGE_PLAN.md) · 🇹🇭 [th](../../../th/docs/ops/COVERAGE_PLAN.md) · 🇹🇷 [tr](../../../tr/docs/ops/COVERAGE_PLAN.md) · 🇺🇦 [uk-UA](../../../uk-UA/docs/ops/COVERAGE_PLAN.md) · 🇵🇰 [ur](../../../ur/docs/ops/COVERAGE_PLAN.md) · 🇺🇿 [uz](../../../uz/docs/ops/COVERAGE_PLAN.md) · 🇻🇳 [vi](../../../vi/docs/ops/COVERAGE_PLAN.md) · 🇳🇬 [yo](../../../yo/docs/ops/COVERAGE_PLAN.md) · 🇨🇳 [zh-CN](../../../zh-CN/docs/ops/COVERAGE_PLAN.md) · 🇹🇼 [zh-TW](../../../zh-TW/docs/ops/COVERAGE_PLAN.md) --- עודכן לאחרונה: 2026-06-28 > סטטוס שנמדד ב-2026-05-13: שורות 82.58%, הצהרות 82.58%, פונקציות 84.23%, הסתעפויות 75.22%. שלבים 1-5 הושלמו. המיקוד הנוכחי הוא שלב 6 (>=85%) ושלב 7 (>=90%). ## קו בסיס ישנם מספר נתוני כיסוי, בהתאם לאופן חישוב הדוח. לצורכי תכנון, רק אחד מהם שימושי. | מדד | היקף | הצהרות / שורות | הסתעפויות | פונקציות | הערות | | ------------- | ------------------------------------------ | -------------: | --------: | -------: | ------------------------------------------------- | | מדור קודם | `npm run test:coverage` הישן | 79.42% | 75.15% | 67.94% | מנופח: סופר קובצי בדיקות ואינו כולל את `open-sse` | | אבחוני | קוד מקור בלבד, ללא בדיקות וללא `open-sse` | 68.16% | 63.55% | 64.06% | שימושי רק לבידוד `src/**` | | קו בסיס מומלץ | קוד מקור בלבד, ללא בדיקות וכולל `open-sse` | 82.58% | 75.22% | 84.23% | זהו קו הבסיס של הפרויקט כולו שאותו יש לשפר | קו הבסיס המומלץ הוא הנתון שלפיו יש לבצע אופטימיזציה. ## כללים - יעדי הכיסוי חלים על קובצי קוד מקור, לא על `tests/**`. - `open-sse/**` הוא חלק מהמוצר וחייב להישאר בהיקף. - קוד חדש אינו אמור להפחית את הכיסוי באזורים שבהם בוצעו שינויים. - יש להעדיף בדיקת התנהגות ותוצאות של הסתעפויות על פני פרטי מימוש. - עבור `src/lib/db/**`, יש להעדיף מסדי נתונים זמניים של SQLite ונתוני בדיקה קטנים על פני הדמיות נרחבות. ## קבוצת הפקודות הנוכחית - `npm run test:coverage` - שער הכיסוי הראשי של קוד המקור עבור חבילת בדיקות היחידה - מפיקה `text-summary`, `html`, `json-summary` ו-`lcov` - `npm run coverage:report` - דוח מפורט לפי קובץ מהריצה האחרונה - `npm run test:coverage:legacy` - להשוואה היסטורית בלבד ## אבני דרך | שלב | יעד | מיקוד | סטטוס | | ----- | -----------------: | ---------------------------------------------------------- | -------- | | שלב 1 | 60% הצהרות / שורות | הישגים מהירים וכיסוי כלי עזר בסיכון נמוך | ✅ הושלם | | שלב 2 | 65% הצהרות / שורות | תשתיות מסד נתונים ונתיבים | ✅ הושלם | | שלב 3 | 70% הצהרות / שורות | אימות ספקים וניתוח שימוש | ✅ הושלם | | שלב 4 | 75% הצהרות / שורות | מתרגמים וכלי עזר של `open-sse` | ✅ הושלם | | שלב 5 | 80% הצהרות / שורות | מטפלים והסתעפויות מבצע של `open-sse` | ✅ הושלם | | שלב 6 | 85% הצהרות / שורות | מקרי קצה מורכבים יותר, חוב הסתעפויות וחבילות בדיקות רגרסיה | בתהליך | | שלב 7 | 90% הצהרות / שורות | מעבר סופי, סגירת פערים והחמרה קשיחה | בהמתנה | כיסוי ההסתעפויות והפונקציות צריך לעלות בהדרגה בכל שלב, אך היעד הקשיח העיקרי הוא הצהרות / שורות. ## מוקדי עדיפות לקבצים אלה יש כיום את כיסוי השורות הנמוך ביותר (< 60%), והם מציעים את התשואה הטובה ביותר עבור שלבים 6–7. הופק מתוך `coverage/coverage-summary.json` בתאריך 2026-05-13: | # | קובץ | אחוז שורות | | --- | ------------------------------------------------------------ | ---------: | | 1 | `open-sse/services/compression/validation.ts` | 7.87% | | 2 | `src/app/api/v1/batches/route.ts` | 9.67% | | 3 | `src/app/docs/components/FeedbackWidget.tsx` | 9.80% | | 4 | `open-sse/services/compression/toolResultCompressor.ts` | 10.00% | | 5 | `src/app/docs/components/DocCodeBlocks.tsx` | 10.63% | | 6 | `open-sse/services/compression/engines/rtk/lineFilter.ts` | 10.96% | | 7 | `open-sse/services/specificityRules.ts` | 11.28% | | 8 | `src/mitm/systemCommands.ts` | 12.19% | | 9 | `open-sse/services/compression/aggressive.ts` | 12.77% | | 10 | `src/app/api/v1/batches/[id]/cancel/route.ts` | 12.98% | | 11 | `open-sse/services/compression/progressiveAging.ts` | 13.26% | | 12 | `open-sse/services/compression/engines/rtk/smartTruncate.ts` | 13.43% | | 13 | `open-sse/services/compression/engines/rtk/deduplicator.ts` | 13.51% | | 14 | `src/lib/cloudAgent/agents/jules.ts` | 13.52% | | 15 | `open-sse/services/compression/lite.ts` | 14.46% | | 16 | `src/app/api/v1/rerank/route.ts` | 14.94% | | 17 | `open-sse/services/compression/preservation.ts` | 15.07% | | 18 | `src/lib/cloudAgent/agents/codex.ts` | 15.54% | | 19 | `open-sse/services/tierResolver.ts` | 16.66% | | 20 | `src/app/docs/components/DocsLazyWrapper.tsx` | 16.66% | נושאים עבור שלבים 6–7: - `open-sse/services/compression/**` הוא הריכוז הצפוף ביותר של כיסוי נמוך ושולט בפער שנותר. - נתיבי ה-API לאצוות ולדירוג מחדש (`src/app/api/v1/batches/**`, `src/app/api/v1/rerank/route.ts`) זקוקים לבדיקות ברמת המטפל. - מתאמי סוכני הענן (`src/lib/cloudAgent/agents/jules.ts`, `codex.ts`) ו-`tierResolver.ts` זקוקים לבדיקות תרחישים. - רכיבי ממשק המשתמש של התיעוד ו-`src/mitm/systemCommands.ts` נמצאים בעדיפות נמוכה יותר, אך מאפשרים שיפורים מהירים וזולים בכיסוי הענפים. ## רשימת בדיקות לביצוע ### שלב 1: 56.95% -> 60% - [x] לתקן את מדד הכיסוי כך שישקף את קוד המקור במקום את קובצי הבדיקות - [x] לשמור סקריפט כיסוי מדור קודם לצורך השוואה - [x] לתעד במאגר את קו הבסיס ואת מוקדי העדיפות - [ ] להוסיף בדיקות ממוקדות עבור כלי עזר בסיכון נמוך: - `src/shared/utils/upstreamError.ts` - `src/shared/utils/fetchTimeout.ts` - `src/lib/api/errorResponse.ts` - `src/shared/utils/apiAuth.ts` - `src/lib/display/names.ts` - [ ] להוסיף בדיקות נתיבים עבור: - `src/app/api/settings/require-login/route.ts` - `src/app/api/providers/[id]/models/route.ts` ### שלב 2: 60% -> 65% - [ ] להוסיף בדיקות המבוססות על מסד נתונים עבור: - `src/lib/db/modelComboMappings.ts` - `src/lib/db/settings.ts` - `src/lib/db/registeredKeys.ts` - [ ] לכסות את התנהגות הענפים ב: - `src/lib/providers/validation.ts` - `src/app/api/v1/embeddings/route.ts` - `src/app/api/v1/moderations/route.ts` ### שלב 3: 65% -> 70% - [ ] להוסיף בדיקות לניתוח נתוני שימוש עבור: - `src/lib/usage/usageHistory.ts` - `src/lib/usage/usageStats.ts` - `src/lib/usage/costCalculator.ts` - [ ] להרחיב את כיסוי הנתיבים עבור ניהול ה-proxy וענפי ההגדרות ### שלב 4: 70% -> 75% - [ ] לכסות את כלי העזר של המתרגם ואת נתיבי התרגום המרכזיים: - `open-sse/translator/index.ts` - `open-sse/translator/helpers/*` - `open-sse/translator/request/*` - `open-sse/translator/response/*` ### שלב 5: 75% -> 80% - [ ] להוסיף בדיקות ברמת המטפל עבור: - `open-sse/handlers/chatCore.ts` - `open-sse/handlers/responsesHandler.js` - `open-sse/handlers/imageGeneration.js` - `open-sse/handlers/embeddings.js` - [ ] להוסיף כיסוי ענפים למבצע עבור אימות ייחודי לספק, ניסיונות חוזרים ודריסות של נקודות קצה ### שלב 6: 80% -> 85% - [ ] למזג חבילות בדיקות נוספות למקרי קצה לתוך נתיב הכיסוי הראשי - [ ] להגדיל את כיסוי הפונקציות עבור מודולי מסד נתונים שכיסוי הבנאים וכלי העזר שלהם חלש - [ ] לסגור פערי ענפים ב-`settings.ts`, ב-`registeredKeys.ts`, ב-`validation.ts` ובכלי העזר של המתרגם ### שלב 7: 85% -> 90% - [ ] להתייחס לקבצים הנותרים בעלי הכיסוי הנמוך כחסמים - [ ] להוסיף בדיקות רגרסיה עבור כל באג בייצור שאינו מכוסה ותוקן במהלך ההתקדמות ל-90% - [ ] להעלות את סף הכיסוי ב-CI רק לאחר שקו הבסיס המקומי יציב במשך שתי הרצות רצופות לפחות ## מדיניות Ratchet יש לעדכן את ערכי הסף של `npm run test:coverage` רק לאחר שהפרויקט חורג בפועל מאבן הדרך הבאה, עם מרווח ביטחון נוח. **שער נוכחי:** `npm run test:coverage` אוכף **60 הצהרות / 60 שורות / 60 פונקציות / 60 ענפים** (המדד חושב מחדש ב-Quality-Gates Fase 6A.1 — קו הבסיס הקודם של 82.58% היה מנופח משום שהוא כלל קובצי בדיקות ולא כלל את `open-sse`). הפקודה `test:coverage:legacy` משמרת את מדד 50/50/50 הישן לצורך השוואה היסטורית. לבדיקות סף נקודתיות מול הדוח העדכני ביותר, השתמשו ב: ```bash node scripts/check/test-report-summary.mjs --threshold 75 ``` רצף ה-Ratchet המומלץ (הסדר הוא `הצהרות-שורות / ענפים / פונקציות`): 1. 55/60/55 2. 60/62/58 3. 65/64/62 4. 70/66/66 5. 75/70/72 <-- שער נוכחי (75/70/75) 6. 80/75/78 7. 85/80/84 8. 90/85/88 יעד ה-Ratchet הבא הוא `80/75/78`, לאחר שכיסוי הענפים יישאר מעל 78% בשתי הרצות רצופות. ## פער ידוע פקודת הכיסוי הנוכחית מודדת את חבילת בדיקות היחידה הראשית של Node וכוללת קוד מקור שאליו היא מגיעה, לרבות `open-sse`. היא עדיין אינה ממזגת את הכיסוי של Vitest לדוח אחוד יחיד. כדאי לבצע את המיזוג הזה בהמשך, אך הוא אינו מהווה חסם להתחלת העלייה מ-60% ל-80%.