()
| 593 | } |
| 594 | |
| 595 | function renderEmptyState() { |
| 596 | elements.runTitle.textContent = "No load test selected"; |
| 597 | elements.runKind.textContent = "Waiting"; |
| 598 | elements.runMeta.textContent = "Choose a discovered run or upload a load test file."; |
| 599 | elements.summaryGrid.innerHTML = ""; |
| 600 | elements.summaryGrid.appendChild(elements.emptyStateTemplate.content.cloneNode(true)); |
| 601 | elements.throughputChart.innerHTML = emptyBlock("Run or upload a load test file to see throughput."); |
| 602 | elements.latencyChart.innerHTML = emptyBlock("Latency appears here once a run is selected."); |
| 603 | elements.reliabilityChart.innerHTML = emptyBlock("Reliability appears here once a run is selected."); |
| 604 | elements.thresholdHead.innerHTML = `<tr><th>Signal</th><th>Status</th></tr>`; |
| 605 | elements.thresholdTable.innerHTML = `<tr><td colspan="2" class="empty-table-cell">Threshold results will appear here.</td></tr>`; |
| 606 | elements.checksHead.innerHTML = `<tr><th>Check</th><th>Passes</th><th>Fails</th><th>Rate</th></tr>`; |
| 607 | elements.checksTable.innerHTML = `<tr><td colspan="4" class="empty-table-cell">No checks available.</td></tr>`; |
| 608 | elements.metricsHead.innerHTML = `<tr><th>Metric</th><th>Value</th></tr>`; |
| 609 | elements.metricsTable.innerHTML = `<tr><td colspan="2" class="empty-table-cell">No metrics available.</td></tr>`; |
| 610 | } |
| 611 | |
| 612 | function renderSummaryGrid(overview, series, durationMs) { |
| 613 | const cards = [ |
no test coverage detected