UNPKG

@debugg-ai/debugg-ai-mcp

Version:

Zero-Config, Fully AI-Managed End-to-End Testing for all code gen platforms.

103 lines (102 loc) 3.65 kB
export class RunResultFormatter { steps = []; passed(result) { return result.status === "completed" && result.outcome === "pass"; } formatFailures(result) { if (this.passed(result) || !result.outcome) return ""; return "\n\n❌ Failures:" + "\n" + `> ${result.outcome}`; } formatStepsAsMarkdown() { if (this.steps.length === 0) return ""; return ("\n\n" + this.steps .map((s, idx) => { const num = `Step ${idx + 1}:`; const label = s.label.padEnd(30); const icon = "✅ Success"; // s.status === "pending" // ? chalk.yellow("⏳ Pending") // : s.status === "success" // ? chalk.green("✅ Success") // : chalk.red("❌ Failed"); return `${num} ${label} ${icon}`; }) .join("\n\n")); } updateStep(label, status) { const existing = this.steps.find((s) => s.label === label); if (existing) { existing.status = status; } else { this.steps.push({ label, status }); } console.error('updating step. steps ->', this.steps); // Clear terminal and redraw console.error("\x1Bc"); // ANSI clear screen console.error("🧪 E2E Test Progress" + `\r\n${this.steps .map((s, i) => { const icon = s.status === "pending" ? "⏳" : s.status === "success" ? "✅" : "❌"; return `${`Step ${i + 1}:`} ${s.label.padEnd(30)} ${icon}`; }) .join("\r\n")}`); } formatTerminalBox(result) { const header = this.passed(result) ? "✅ Test Passed" : "❌ Test Failed"; const body = [ "Test: " + result.test?.name, "Description: " + (result.test?.description ?? "None"), "Duration: " + `${result.metrics?.executionTime ?? 0}s`, "Status: " + result.status, "Outcome: " + result.outcome, this.formatStepsAsMarkdown(), this.passed(result) ? "" : this.formatFailures(result), ] .filter(Boolean) .join("\n"); return `${header}\n${body}`; } formatMarkdownSummary(result) { return [ `🧪 **Test Name:** ${result.test?.name ?? "Unknown"}`, `📄 **Description:** ${result.test?.description ?? "None"}`, `⏱ **Duration:** ${result.metrics?.executionTime ?? 0}s`, `🔎 **Status:** ${result.status}`, `📊 **Outcome:** ${result.outcome}`, this.formatStepsAsMarkdown(), this.formatFailures(result), ] .filter(Boolean) .join("\n") .trim(); } /* Terminal uses different formatting than markdown. */ terminalSummary(result) { return [ `🧪 Test Name: ${result.test?.name ?? "Unknown"}`, `📄 Description: ${result.test?.description ?? "None"}`, `⏱ Duration: ${result.metrics?.executionTime ?? 0}s`, `🔎 Status: ${result.status}`, `📊 Outcome: ${result.outcome}`, this.formatFailures(result), ] .filter(Boolean) .join("\r\n") .trim(); } appendToTestRun(result) { console.error(this.terminalSummary(result)); } }