Skip to main content
Glama

Debugg AI MCP

Official
by debugg-ai
resultsFormatter.ts4.21 kB
import type { E2eRun } from "../services/types.js"; type StepStatus = 'pending' | 'success' | 'error' | 'failed' | 'skipped'; interface Step { label: string; status: StepStatus; } export class RunResultFormatter { public steps: Step[] = []; public passed(result: E2eRun): boolean { return result.status === "completed" && result.outcome === "pass"; } public formatFailures(result: E2eRun): string { if (this.passed(result) || !result.outcome) return ""; return "\n\n❌ Failures:" + "\n" + `> ${result.outcome}`; } public formatStepsAsMarkdown(): string { 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") ); } public updateStep(label: string, status: StepStatus): void { 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: E2eRun): string { 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: E2eRun): string { 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: E2eRun): string { 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: E2eRun): void { console.error(this.terminalSummary(result)); } }

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/debugg-ai/debugg-ai-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server