# Test Coverage Plan (Română) 🌐 **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) · 🇮🇱 [he](../../../he/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) · 🇷🇺 [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) --- Ultima actualizare: 2026-06-28 > Stare măsurată la 2026-05-13: linii 82.58%, instrucțiuni 82.58%, funcții 84.23%, ramuri 75.22%. Fazele 1-5 sunt finalizate. Obiectivul actual este Faza 6 (>=85%) și Faza 7 (>=90%). ## Valori de referință Există mai multe valori pentru acoperire, în funcție de modul în care este calculat raportul. Pentru planificare, doar una dintre ele este utilă. | Metrică | Domeniu de aplicare | Instrucțiuni / Linii | Ramuri | Funcții | Note | | -------------------------------- | ----------------------------------------------------- | -------------------: | -----: | ------: | ---------------------------------------------------------------- | | Moștenită | Vechiul `npm run test:coverage` | 79.42% | 75.15% | 67.94% | Supraevaluată: numără fișierele de test și exclude `open-sse` | | Diagnostică | Doar surse, excluzând testele și `open-sse` | 68.16% | 63.55% | 64.06% | Utilă doar pentru izolarea `src/**` | | Valoare de referință recomandată | Doar surse, excluzând testele și incluzând `open-sse` | 82.58% | 75.22% | 84.23% | Aceasta este valoarea de referință de îmbunătățit pentru proiect | Valoarea de referință recomandată este cea în raport cu care trebuie efectuată optimizarea. ## Reguli - Obiectivele de acoperire se aplică fișierelor sursă, nu directoarelor `tests/**`. - `open-sse/**` face parte din produs și trebuie să rămână în domeniul de aplicare. - Codul nou nu ar trebui să reducă acoperirea în zonele modificate. - Se preferă testarea comportamentului și a rezultatelor ramurilor în locul detaliilor de implementare. - Pentru `src/lib/db/**`, se preferă baze de date SQLite temporare și fixture-uri mici în locul mock-urilor extinse. ## Setul actual de comenzi - `npm run test:coverage` - Verificarea principală a acoperirii surselor pentru suita de teste unitare - Generează `text-summary`, `html`, `json-summary` și `lcov` - `npm run coverage:report` - Raport detaliat, fișier cu fișier, din cea mai recentă rulare - `npm run test:coverage:legacy` - Numai pentru comparații istorice ## Etape | Fază | Obiectiv | Prioritate | Stare | | ------ | -----------------------: | ---------------------------------------------------------------- | -------------- | | Faza 1 | 60% instrucțiuni / linii | Câștiguri rapide și acoperirea utilitarelor cu risc redus | ✅ Finalizată | | Faza 2 | 65% instrucțiuni / linii | Fundamente pentru BD și rute | ✅ Finalizată | | Faza 3 | 70% instrucțiuni / linii | Validarea furnizorilor și analiza utilizării | ✅ Finalizată | | Faza 4 | 75% instrucțiuni / linii | Traductoare și funcții auxiliare `open-sse` | ✅ Finalizată | | Faza 5 | 80% instrucțiuni / linii | Handlere `open-sse` și ramuri ale executorului | ✅ Finalizată | | Faza 6 | 85% instrucțiuni / linii | Cazuri-limită mai dificile, deficit de ramuri, suite de regresie | În desfășurare | | Faza 7 | 90% instrucțiuni / linii | Verificare finală, eliminarea lacunelor, prag strict progresiv | În așteptare | Acoperirea ramurilor și a funcțiilor ar trebui să crească progresiv cu fiecare fază, însă obiectivul strict principal este acoperirea instrucțiunilor / liniilor. ## Puncte critice prioritare Aceste fișiere au în prezent cea mai scăzută acoperire a liniilor (< 60%) și oferă cel mai bun randament pentru Fazele 6-7. Date generate din `coverage/coverage-summary.json` la 2026-05-13: | # | Fișier | Linii % | | --- | ------------------------------------------------------------ | ------: | | 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% | Teme pentru Fazele 6-7: - `open-sse/services/compression/**` este cel mai dens grup de fișiere cu acoperire redusă și domină deficitul rămas. - Rutele API pentru loturi și rerank (`src/app/api/v1/batches/**`, `src/app/api/v1/rerank/route.ts`) necesită teste la nivel de handler. - Adaptoarele agenților cloud (`src/lib/cloudAgent/agents/jules.ts`, `codex.ts`) și `tierResolver.ts` necesită teste bazate pe scenarii. - Componentele UI pentru documentație și `src/mitm/systemCommands.ts` au o prioritate mai redusă, dar permit acoperirea cu efort minim a unor ramificații. ## Listă de verificare pentru execuție ### Faza 1: 56.95% -> 60% - [x] Corectarea metricii de acoperire astfel încât să reflecte codul-sursă în locul fișierelor de test - [x] Păstrarea unui script de acoperire vechi pentru comparație - [x] Înregistrarea valorii de referință și a punctelor critice în depozit - [ ] Adăugarea unor teste focalizate pentru utilitare cu risc redus: - `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` - [ ] Adăugarea testelor pentru rutele: - `src/app/api/settings/require-login/route.ts` - `src/app/api/providers/[id]/models/route.ts` ### Faza 2: 60% -> 65% - [ ] Adăugarea unor teste susținute de baza de date pentru: - `src/lib/db/modelComboMappings.ts` - `src/lib/db/settings.ts` - `src/lib/db/registeredKeys.ts` - [ ] Acoperirea comportamentului ramificațiilor din: - `src/lib/providers/validation.ts` - `src/app/api/v1/embeddings/route.ts` - `src/app/api/v1/moderations/route.ts` ### Faza 3: 65% -> 70% - [ ] Adăugarea unor teste pentru analiza utilizării pentru: - `src/lib/usage/usageHistory.ts` - `src/lib/usage/usageStats.ts` - `src/lib/usage/costCalculator.ts` - [ ] Extinderea acoperirii rutelor pentru gestionarea proxy-urilor și ramificațiile setărilor ### Faza 4: 70% -> 75% - [ ] Acoperirea funcțiilor auxiliare ale translatorului și a căilor centrale de traducere: - `open-sse/translator/index.ts` - `open-sse/translator/helpers/*` - `open-sse/translator/request/*` - `open-sse/translator/response/*` ### Faza 5: 75% -> 80% - [ ] Adăugarea unor teste la nivel de handler pentru: - `open-sse/handlers/chatCore.ts` - `open-sse/handlers/responsesHandler.js` - `open-sse/handlers/imageGeneration.js` - `open-sse/handlers/embeddings.js` - [ ] Adăugarea acoperirii ramificațiilor executorului pentru autentificarea specifică furnizorului, reîncercări și suprascrierea endpointurilor ### Faza 6: 80% -> 85% - [ ] Integrarea mai multor suite pentru cazuri-limită în fluxul principal de acoperire - [ ] Creșterea acoperirii funcțiilor pentru modulele bazei de date cu o acoperire slabă a constructorilor și funcțiilor auxiliare - [ ] Eliminarea lacunelor de acoperire a ramificațiilor din `settings.ts`, `registeredKeys.ts`, `validation.ts` și funcțiile auxiliare ale translatorului ### Faza 7: 85% -> 90% - [ ] Tratarea fișierelor rămase cu acoperire redusă drept blocaje - [ ] Adăugarea unor teste de regresie pentru fiecare eroare din codul de producție remediată în timpul efortului de atingere a pragului de 90% - [ ] Ridicarea pragului de acoperire în CI numai după ce valoarea de referință locală este stabilă pentru cel puțin două rulări consecutive ## Politica de creștere incrementală a pragurilor Actualizați pragurile pentru `npm run test:coverage` numai după ce proiectul depășește efectiv următoarea etapă cu o marjă confortabilă. **Pragul curent:** `npm run test:coverage` impune **60 instrucțiuni / 60 linii / 60 funcții / 60 ramuri** (metrica a fost recalibrată în Quality-Gates Faza 6A.1 — valoarea de referință anterioară de 82,58% era mărită artificial, deoarece număra fișierele de testare și excludea `open-sse`). Comanda `test:coverage:legacy` păstrează vechea metrică 50/50/50 pentru comparații istorice. Pentru verificări ad-hoc ale pragurilor pe baza celui mai recent raport, utilizați: ```bash node scripts/check/test-report-summary.mjs --threshold 75 ``` Secvența recomandată de creștere incrementală a pragurilor (ordinea este `instrucțiuni-linii / ramuri / funcții`): 1. 55/60/55 2. 60/62/58 3. 65/64/62 4. 70/66/66 5. 75/70/72 <-- pragul curent (75/70/75) 6. 80/75/78 7. 85/80/84 8. 90/85/88 Următoarea țintă de creștere a pragurilor este `80/75/78`, odată ce acoperirea ramurilor se menține peste 78% în două rulări consecutive. ## Lacună cunoscută Comanda actuală de acoperire măsoară suita principală de teste unitare Node și include codul sursă atins de aceasta, inclusiv `open-sse`. Aceasta nu combină încă acoperirea Vitest într-un singur raport unificat. Această combinare merită realizată ulterior, dar nu reprezintă un impediment pentru începerea creșterii de la 60% -> 80%.