Engineering managers and test infrastructure leads use this prompt to synthesize raw test suite signals into a structured, dashboard-ready JSON health summary. The primary job-to-be-done is converting disparate data points—flakiness rates, execution duration trends, coverage gaps, and failure hotspots—into a single, repeatable payload that can feed internal dashboards, weekly reliability reports, or automated alerting pipelines. This prompt assumes you have already collected the input data from CI systems, coverage tools, and test history databases. It does not perform root cause analysis or suggest specific fixes; pair it with the Flaky Test Root Cause Analysis or Test Gap Detection prompts for deeper investigation.
Prompt
Test Suite Health Dashboard Prompt Template

When to Use This Prompt
Define the job-to-be-done, required inputs, ideal user, and boundaries for the Test Suite Health Dashboard prompt.
The ideal user is someone who owns test infrastructure health and needs a consistent, machine-readable summary rather than ad-hoc manual analysis. Required inputs include aggregated test execution data (pass/fail/flaky counts, duration percentiles, historical trends), coverage metrics (line, branch, and function coverage with deltas), and failure hotspot identification (modules or test files with elevated failure rates). The prompt works best when these inputs are pre-computed and provided as structured context—it is a synthesis engine, not a raw log parser. Do not use this prompt when you need real-time incident response, root cause identification, or specific code-level fix recommendations; those workflows require different prompt designs with deeper diagnostic reasoning.
Before using this prompt, ensure your input data pipeline is stable and the metrics you feed in are accurate. The output JSON includes severity scores and trend indicators that downstream systems may treat as authoritative, so garbage in means garbage out. Validate the output schema against your dashboard's expected contract, and consider adding a lightweight eval step that checks for required fields, valid severity ranges, and trend direction consistency. If the health summary will trigger automated alerts or paging, route the output through a human review step or a confirmation threshold before acting on it. For teams just starting with test health dashboards, begin with a subset of metrics (flakiness rate and duration trend) before expanding to the full schema.
Use Case Fit
Where the Test Suite Health Dashboard prompt works well and where it introduces risk. Use these cards to decide if this prompt fits your pipeline before wiring it into a dashboard or CI notification system.
Good Fit: Aggregated CI Health Reporting
Use when: you need a structured, machine-readable summary of test suite health across multiple dimensions—flakiness, duration, coverage, and failure hotspots—for a dashboard or weekly engineering health report. Guardrail: validate that the output JSON conforms to the expected schema before ingestion; reject payloads with missing severity scores or trend indicators.
Bad Fit: Real-Time Incident Response
Avoid when: on-call engineers need immediate, actionable root cause for a single failing test or deployment block. This prompt synthesizes trends, not point-in-time failures. Guardrail: route single-failure diagnosis to a dedicated flaky-test root cause prompt; reserve this dashboard prompt for batched, non-urgent health summaries.
Required Inputs: Historical Test Data
What to watch: the prompt requires aggregated test execution history, coverage reports, and failure logs. Without sufficient history, severity scores and trend indicators will be unreliable. Guardrail: enforce a minimum data threshold—at least 7 days of CI runs or 50 test executions—before generating a dashboard payload. If data is insufficient, output a data_insufficient status instead of guessing.
Operational Risk: Stale or Incomplete Data
What to watch: if the input data excludes certain test suites, branches, or environments, the dashboard will present a misleadingly healthy or unhealthy picture. Guardrail: include a data_freshness field in the output that reports the time range and scope of input data. Downstream consumers should surface this alongside the health scores to prevent overconfidence.
Operational Risk: Severity Score Calibration Drift
What to watch: severity thresholds that made sense last quarter may become too sensitive or too lenient as the test suite grows. Guardrail: store severity score distributions over time and alert when the proportion of critical or healthy classifications shifts by more than 20% month-over-month, triggering a recalibration review.
Bad Fit: Teams Without Test Analytics Infrastructure
Avoid when: the team lacks a test analytics pipeline that can provide flakiness rates, duration trends, and coverage data in a structured format. The prompt cannot invent missing data. Guardrail: before deploying this prompt, verify that the upstream data pipeline can produce the required input fields. If not, invest in test analytics instrumentation first.
Copy-Ready Prompt Template
A reusable prompt template with square-bracket placeholders that synthesizes test suite signals into a structured health dashboard payload.
This template is designed to be copied directly into your prompt management system, IDE, or orchestration layer. It accepts raw test execution data, coverage reports, and historical flakiness records, then produces a dashboard-ready JSON payload with severity scores, trend indicators, and actionable hotspots. Every placeholder is enclosed in square brackets—replace them with your actual data sources, constraints, and output requirements before use.
textYou are a test suite health analyst. Your task is to synthesize the provided test execution data, coverage reports, and flakiness history into a structured health dashboard payload. ## INPUT - Test execution results (last [TIME_PERIOD]): [EXECUTION_DATA] - Coverage report: [COVERAGE_DATA] - Flakiness history (last [FLAKINESS_WINDOW]): [FLAKINESS_DATA] - Failure hotspot map: [HOTSPOT_DATA] - Execution duration trends: [DURATION_DATA] - Team ownership mapping: [OWNERSHIP_DATA] ## OUTPUT SCHEMA Return a single JSON object with this exact structure: { "dashboard_summary": { "overall_health_score": number (0-100), "health_trend": "improving" | "stable" | "degrading", "generated_at": "ISO 8601 timestamp", "data_window": { "start": "ISO 8601 timestamp", "end": "ISO 8601 timestamp" } }, "flakiness": { "current_rate": number (percentage), "trend": "improving" | "stable" | "degrading", "severity": "critical" | "warning" | "healthy", "top_flaky_tests": [ { "test_name": string, "failure_rate": number, "owner_team": string, "last_failure": "ISO 8601 timestamp" } ] }, "coverage": { "line_coverage_pct": number, "branch_coverage_pct": number, "trend": "improving" | "stable" | "degrading", "severity": "critical" | "warning" | "healthy", "largest_gaps": [ { "module": string, "uncovered_lines": number, "risk_level": "high" | "medium" | "low", "owner_team": string } ] }, "execution_duration": { "median_duration_seconds": number, "p95_duration_seconds": number, "trend": "improving" | "stable" | "degrading", "severity": "critical" | "warning" | "healthy", "slowest_suites": [ { "suite_name": string, "median_duration_seconds": number, "owner_team": string } ] }, "failure_hotspots": [ { "module_or_area": string, "failure_count": number, "associated_teams": [string], "dominant_failure_type": string, "recommended_action": string } ], "recommendations": [ { "priority": "P0" | "P1" | "P2", "category": "flakiness" | "coverage" | "duration" | "hotspot", "description": string, "owner_team": string, "expected_impact": string } ] } ## CONSTRAINTS - All severity scores must be data-driven: use thresholds from [SEVERITY_THRESHOLDS]. - Trend indicators must compare current window against the previous equivalent window. - If any data source is missing or incomplete, set the corresponding severity to "warning" and include a `data_quality_note` field in that section. - Do not fabricate numbers. If a metric cannot be computed, use null and add a `computation_note`. - Limit top_flaky_tests, largest_gaps, slowest_suites, and failure_hotspots to at most [MAX_ITEMS_PER_SECTION] entries each. - Recommendations must be actionable and tied to specific data signals, not generic advice. ## RISK LEVEL [RISK_LEVEL] ## EXAMPLES [EXAMPLES]
To adapt this template, start by replacing the data-source placeholders with your actual pipeline outputs—CI test result JSON, coverage XML or LCOV reports, and flakiness tracking database extracts. Set [SEVERITY_THRESHOLDS] to match your team's SLAs (for example, flakiness above 5% might be "critical" while below 1% is "healthy"). If you are integrating this into a production dashboard, wire the output JSON directly into your monitoring frontend and add a validation step that rejects malformed payloads before they reach the display layer. For high-risk environments where dashboard data drives on-call decisions, always include a human review gate before publishing severity scores that could trigger automated alerts or paging.
Prompt Variables
Required inputs for the Test Suite Health Dashboard prompt. Each placeholder must be populated with structured data from your CI/CD and test infrastructure systems before the prompt is executed. Missing or malformed inputs will degrade dashboard accuracy and severity scoring.
| Placeholder | Purpose | Example | Validation Notes |
|---|---|---|---|
[TEST_SUITE_NAME] | Identifies the test suite being analyzed for dashboard scoping | frontend-e2e-suite | Required. Must match a known suite identifier in your test infrastructure. Reject if empty or unrecognized. |
[TIME_RANGE] | Defines the observation window for trend calculation and flakiness detection | last_30_days | Required. Accept ISO 8601 duration or preset values: last_7_days, last_30_days, last_90_days. Reject if unparseable. |
[FLAKINESS_DATA] | Structured flakiness records with test name, failure rate, and pass/fail history per run | JSON array of flakiness records per test case | Required. Must contain test_name, failure_rate, total_runs, and last_n_results fields. Validate array length > 0. Reject if failure_rate outside 0.0-1.0 range. |
[DURATION_TRENDS] | Per-test execution duration history for trend analysis and regression detection | JSON array with test_name, durations[], timestamps[] | Required. Each record must have at least 5 data points for trend calculation. Validate timestamps are within [TIME_RANGE]. Warn if fewer than 5 points. |
[COVERAGE_GAPS] | Coverage gap records identifying untested modules, files, or code paths | JSON array with module, uncovered_lines, risk_level fields | Required. risk_level must be one of: critical, high, medium, low. Validate enum membership. Null allowed if coverage data unavailable but must be explicit. |
[FAILURE_HOTSPOTS] | Clustered failure data grouping related failures by module, error type, or root cause | JSON array with cluster_label, failure_count, affected_tests[], representative_error | Required. Each cluster must have failure_count > 0 and non-empty affected_tests. Validate cluster_label uniqueness. Reject duplicate clusters. |
[CI_ENVIRONMENT_CONTEXT] | Environment metadata for correlating failures with infrastructure state | JSON object with branch, commit_sha, runner_type, infra_version | Optional. If provided, validate commit_sha is 40-char hex. Used for environment contamination detection and trend correlation. Null allowed. |
Implementation Harness Notes
How to wire the Test Suite Health Dashboard prompt into a CI/CD pipeline or monitoring app with validation, retries, and safe output handling.
This prompt is designed to be called by an automated pipeline step or a monitoring service, not a one-off chat. The typical integration point is a scheduled job that collects raw test data from CI systems (e.g., JUnit XML, pytest JSON reports, or a test analytics API), assembles the [TEST_SUITE_DATA] payload, calls the model, validates the JSON output, and writes the result to a dashboard database or alerting system. The prompt expects aggregated statistics—flakiness rates, duration trends, coverage gaps, and failure hotspots—so the calling application must pre-compute these from raw test logs before invoking the model. Do not pass raw log lines directly; the model performs synthesis and severity scoring, not log parsing.
Wire the prompt into a function with the following guardrails. Input assembly: Build the [TEST_SUITE_DATA] object with required fields: suite_name, time_range, total_tests, flaky_test_rate, avg_duration_seconds, duration_trend (one of improving, stable, degrading), coverage_gap_modules (array of {module, uncovered_lines, risk}), and failure_hotspots (array of {test_file, failure_count, last_failure, error_signature}). Model choice: Use a model with strong JSON mode and structured output support (GPT-4o, Claude 3.5 Sonnet, or equivalent). Enable strict JSON mode or supply the output schema as a tool definition. Validation: After receiving the response, validate the JSON against the expected schema—check that severity_score is an integer 1–5, trend_indicators contains only allowed enum values (worsening, stable, improving), and all required fields are present. If validation fails, retry once with the validation errors appended to [CONSTRAINTS]. Logging: Log the input payload, model response, validation result, and any retries to your observability stack. This is critical for debugging drift when the model changes its output shape or when upstream test data quality degrades.
For production deployment, add two additional safeguards. First, implement a stale-data check before calling the model: if the input data is older than the configured freshness window (e.g., 24 hours for a daily dashboard), skip the model call and emit a data_stale status to the dashboard instead of synthesizing misleading health scores. Second, add a human-review gate if the severity score is 4 or 5 (critical or high risk). Rather than auto-publishing a red dashboard, route the output to a notification channel (Slack, PagerDuty) with the raw data and model-generated summary for a human to confirm before the dashboard updates. This prevents false alarms from data anomalies or model misinterpretation from triggering unnecessary incident response. Avoid wiring this prompt directly to an alerting system without these gates—the model can misjudge severity when input data contains outliers or when test suites undergo legitimate restructuring.
Expected Output Contract
Each field in the dashboard JSON payload must satisfy these validation rules before the output is accepted by downstream consumers. Use this contract to build a post-generation validator or schema check.
| Field or Element | Type or Format | Required | Validation Rule |
|---|---|---|---|
dashboard_title | string | Non-empty string; max 120 characters; must not contain unresolved placeholders | |
generated_at | ISO-8601 string | Parseable as UTC datetime; must be within the last 24 hours or match the provided [REFERENCE_TIMESTAMP] | |
summary_period | object | Must contain 'start' and 'end' as ISO-8601 strings; 'start' must be before 'end'; period must not exceed 90 days | |
suite_name | string | Must match one of the values provided in [SUITE_NAMES] input list; case-sensitive match required | |
flakiness_rate | number | Float between 0.0 and 1.0 inclusive; must be consistent with [FLAKY_COUNT] / [TOTAL_RUNS] if both inputs are provided | |
flakiness_trend | string | Must be one of: 'improving', 'degrading', 'stable', 'insufficient_data'; if fewer than 5 data points exist, must be 'insufficient_data' | |
duration_p50_ms | integer | Non-negative integer; must be >= duration_p5_ms and <= duration_p95_ms if those fields are present | |
duration_p95_ms | integer | Non-negative integer; must be >= duration_p50_ms; must not exceed [TIMEOUT_THRESHOLD_MS] if provided | |
duration_trend | string | Must be one of: 'improving', 'degrading', 'stable', 'insufficient_data'; trend direction must be derivable from [DURATION_HISTORY] if provided | |
coverage_pct | number | Float between 0.0 and 100.0 inclusive; if null, field must be omitted or explicitly null; must not exceed 100.0 | |
coverage_trend | string | Required only if coverage_pct is present; must be one of: 'improving', 'degrading', 'stable', 'insufficient_data' | |
failure_hotspots | array | Array of objects; each object must contain 'module' (string), 'failure_count' (integer >= 1), and 'severity' (one of: 'critical', 'high', 'medium', 'low'); array must not be empty if [TOTAL_FAILURES] > 0 | |
severity_score | integer | Integer between 1 and 5 inclusive; 1 = healthy, 5 = critical; must be consistent with hotspot severities and flakiness_rate thresholds defined in [SEVERITY_RULES] | |
recommendations | array | Array of strings; each string must be a complete sentence; max 5 items; each item must reference at least one specific hotspot module or trend from the payload |
Common Failure Modes
What breaks first when generating test suite health dashboards and how to guard against it.
Hallucinated Metrics from Sparse Data
What to watch: The model invents flakiness rates, duration percentiles, or coverage percentages when input data is missing or incomplete. This is especially dangerous because dashboard consumers treat numbers as authoritative. Guardrail: Require the model to mark any metric without direct source evidence as "value": null, "confidence": "insufficient_data". Validate that every numeric field in the output maps to an explicit input data point.
Severity Score Inflation
What to watch: The model over-assigns critical or high severity to every finding, making the dashboard useless for prioritization. This happens when the prompt lacks explicit severity calibration criteria tied to concrete thresholds. Guardrail: Define severity levels with quantitative anchors in the prompt (e.g., critical = flakiness > 20% AND blocking CI; low = flakiness < 2% with no recent failures). Include a post-generation check that severity distribution is not uniformly high.
Trend Direction Contradictions
What to watch: The model reports a trend as improving in one section and degrading in another for the same metric, or describes a trend verbally that contradicts the numeric delta. This erodes trust in the entire dashboard. Guardrail: Add a consistency validation step that extracts all trend claims and their associated metrics, then checks for contradictions. Require the model to reconcile any mismatch before final output.
Stale Baseline Comparison Drift
What to watch: The model compares current metrics against an incorrect or outdated baseline period, producing misleading trend indicators. This happens when the baseline window is ambiguous or the model defaults to an arbitrary comparison point. Guardrail: Explicitly require the baseline period as a required input field [BASELINE_WINDOW]. Include a validation rule that every trend comparison references this exact window and flags when baseline data is unavailable.
Missing Failure Hotspot Root Cause Attribution
What to watch: The model identifies a test file or module as a failure hotspot but fabricates a plausible-sounding root cause without evidence from logs, commits, or test history. This misdirects engineering effort. Guardrail: Require hotspot entries to include an evidence array with specific log excerpts, commit SHAs, or failure timestamps. If no evidence is available, the hotspot must be marked "root_cause": "unattributed" with a recommendation to investigate manually.
JSON Schema Drift Under Large Inputs
What to watch: When processing many test suites or long time windows, the model drops required fields, truncates arrays, or changes field types to fit token pressure. The output parses but fails downstream consumers expecting a strict schema. Guardrail: Implement a post-generation schema validator that checks every required field, array completeness, and type consistency. If validation fails, retry with a reduced input window or request the model to split output across multiple responses.
Evaluation Rubric
Use this rubric to evaluate the quality of the generated test suite health dashboard payload before integrating it into your monitoring pipeline. Each criterion should be checked programmatically or via human review.
| Criterion | Pass Standard | Failure Signal | Test Method |
|---|---|---|---|
Schema Validity | Output is valid JSON matching the [OUTPUT_SCHEMA] contract exactly | JSON parse error, missing required fields, or wrong field types | Automated schema validation against the expected JSON Schema definition |
Severity Score Calibration | Severity scores (0-100) are proportional to the evidence provided in [TEST_RUN_HISTORY] | Score of 95 for a single minor flake, or score of 5 when 40% of tests are failing | Correlation check between failure rate and severity score; flag if variance exceeds threshold |
Trend Direction Accuracy | Trend indicators (improving, stable, degrading) match the actual direction of the metric over [TIME_WINDOW] | Trend marked 'improving' when flakiness rate increased by 15% week-over-week | Calculate slope of the metric over the time window and compare to the stated trend |
Evidence Grounding | Every failure hotspot and coverage gap cites specific test names, file paths, or error signatures from [INPUT_DATA] | Vague claim like 'some tests are slow' without naming the test or providing duration data | Regex search for test identifiers in the output; verify each claim has a corresponding data point in the input |
Coverage Gap Completeness | All modules with coverage below the [COVERAGE_THRESHOLD] are listed with their actual coverage percentage | A known uncovered module from the coverage report is missing from the dashboard output | Diff the set of modules below threshold in the input coverage report against the modules listed in the output |
Failure Hotspot Prioritization | Hotspots are ordered by a combination of failure frequency and recency, not alphabetically | A test failing 50 times in the last day appears below a test that failed twice last month | Verify that the failure count and last failure timestamp sort order matches the hotspot list order |
Duration Anomaly Detection | Tests exceeding the [DURATION_THRESHOLD] percentile are flagged with their actual p95 or p99 duration | A test with p95 duration 10x the suite median is not mentioned in the duration section | Calculate p95 from input timing data and cross-reference with the duration anomalies list |
Actionable Summary Presence | The executive summary contains no more than 3 prioritized, specific recommendations tied to findings in the payload | Summary says 'improve tests' without linking to a specific hotspot, gap, or anomaly from the dashboard | Human review or LLM-as-judge check that each recommendation references a specific finding ID or test name |
Enabling Efficiency, Speed & Accuracy
Intelligent Analysis, Decision & Execution
We build AI systems for teams that need search across company data, workflow automation across tools, or AI features inside products and internal software.
Talk to Us
Search across company data
Give teams answers from docs, tickets, runbooks, and product data with sources and permissions.
Useful when people spend too long searching or get different answers from different systems.

Automate internal workflows
Use AI to route work, draft outputs, trigger actions, and keep approvals and logs in place.
Useful when repetitive work moves across multiple tools and teams.

Add AI to products and internal tools
Build assistants, guided actions, or decision support into the software your team or customers already use.
Useful when AI needs to be part of the product, not a separate tool.
Adapt This Prompt
How to adapt
Start with the base prompt template and a single test suite's data. Replace [TEST_SUITE_DATA] with a flat JSON dump of recent test runs. Use a frontier model (GPT-4o, Claude 3.5 Sonnet) with default temperature. Skip strict schema validation initially—focus on whether the severity scores and trend indicators pass a manual sanity check.
Simplify the output schema to only summary, top_failure_hotspots (top 3), and overall_health_score. Remove coverage_gaps and trend_indicators until the core synthesis works.
Watch for
- The model inventing failure rates when data is sparse
- Trend indicators that don't match the raw execution duration data
- Severity inflation—every hotspot marked critical
- Missing null handling when a test suite has zero recent failures

About the author
Prasad Kumkar
CEO & MD, Inference Systems
Prasad Kumkar is the CEO & MD of Inference Systems and writes about AI systems architecture, LLM infrastructure, model serving, evaluation, and production deployment. Over 5+ years, he has worked across computer vision models, L5 autonomous vehicle systems, and LLM research, with a focus on taking complex AI ideas into real-world engineering systems.
His work and writing cover AI systems, large language models, AI agents, multimodal systems, autonomous systems, inference optimization, RAG, evaluation, and production AI engineering.
Partnered with leading AI, data, and software stack.
How We Work
Custom AI workflows for your Business
One-fit-all AI don't work for modern businesses. At Inferensys, we aim to understand your business & custom requirements; which we use to define most efficient agentic workflows, the data, and the tools for your business.
01
Review the use case
We understand the task, the users, and where AI can actually help.
Read more02
Pick the right approach
We define what needs search, automation, or product integration.
Read more03
Build the first useful version
We implement the part that proves the value first.
Read more04
Improve from there
We add the checks and visibility needed to keep it useful.
Read moreThe first call is a practical review of your use case and the right next step.
Talk to Us