export default function FailedBanner({ rerunTests, onDecision }) { if (!rerunTests || rerunTests.length === 0) return null const totalMinutes = rerunTests.reduce((sum, t) => sum + (t.estimated_minutes ?? 0), 0) const hours = Math.floor(totalMinutes / 60) const mins = totalMinutes % 60 const timeStr = hours > 0 ? `${hours}h ${mins}m` : `${mins}m` // Group test IDs by device const byDevice = rerunTests.reduce((acc, t) => { const device = t.device ?? 'Unknown' if (!acc[device]) acc[device] = [] acc[device].push(t.test_id) return acc }, {}) const deviceSummaries = Object.entries(byDevice) .sort(([a], [b]) => a.localeCompare(b)) .map(([device, ids]) => `${device}: ${ids.join(', ')}`) return (
{rerunTests.length} test{rerunTests.length !== 1 ? 's' : ''} {' '}require a rerun — not completed in last overnight window:
{deviceSummaries.map((summary) => ({summary}
))}