Files
OmniRoute/scripts/homolog/lib/promptfooToCtrf.mjs
Diego Rodrigues de Sa e Souza c97d2a6ae2 feat(homolog): real-environment E2E homologation suite (npm run homolog) (#7133)
* feat(homolog): scaffolding da suíte de homologação E2E (deps + npm run homolog)

* feat(homolog): L0 avaliador de paridade de deploy (TDD)

* feat(homolog): L1a ciclo de vida de API key efêmera (login admin -> create -> revoke)

* feat(homolog): L1b suite httpYac de API (models, chat, auth de management, health)

* feat(homolog): L1c checker SSE de streaming real (TDD no parser)

* feat(homolog): L2 smoke de providers reais via promptfoo gerado do catálogo

* feat(homolog): L4a Playwright homolog config + login storageState

* feat(homolog): L4b smoke de todas as rotas do dashboard (descoberta via fs)

* feat(homolog): L4c fluxo criar/revogar API key pela UI

* fix(homolog): resiliencia real-environment — stream:false no smoke promptfoo, retry de socket keep-alive, key efemera com sufixo unico

* feat(homolog): L5 orquestrador npm run homolog + relatorio CTRF unificado

* docs(homolog): guia de operacao da suite + fragment de changelog + allowlist env-doc-sync

* fix(homolog): paraleliza o sweep de rotas do dashboard (fullyParallel + 8 workers)

* fix(homolog): isola outputs crus em homolog-report/raw para nao quebrar o ctrf merge

* fix(homolog): outputDir absoluto do reporter CTRF da UI (path relativo escapava do worktree)

* chore(quality): allowlist the 5 homolog-suite devDependencies (ctrf-io trio, httpyac, promptfoo) after registry verification

* chore(quality): register the homolog Playwright suite as a test-discovery collector (run.mjs -> tests/homolog/ui)
2026-07-14 16:24:11 -03:00

25 lines
687 B
JavaScript

export function promptfooToCtrf(output) {
const rows = output?.results?.results || [];
const tests = rows.map((r) => ({
name: `provider-smoke: ${r.provider?.label || r.provider?.id || "?"}`,
status: r.success ? "passed" : "failed",
duration: Math.round(r.latencyMs || 0),
...(r.error ? { message: String(r.error).slice(0, 300) } : {}),
}));
const passed = tests.filter((t) => t.status === "passed").length;
return {
results: {
tool: { name: "promptfoo" },
summary: {
tests: tests.length,
passed,
failed: tests.length - passed,
pending: 0,
skipped: 0,
other: 0,
},
tests,
},
};
}