diff --git a/apps/mobile/src/features/threads/subagent-card-presentation.test.ts b/apps/mobile/src/features/threads/subagent-card-presentation.test.ts index e77e76472b34e..2b32f84fcb9cc 100644 --- a/apps/mobile/src/features/threads/subagent-card-presentation.test.ts +++ b/apps/mobile/src/features/threads/subagent-card-presentation.test.ts @@ -22,7 +22,7 @@ describe("subagent card", () => { expect(subagentCardElapsed([unfinished], DateTime.toEpochMillis(later))).toBeNull(); expect( subagentCardElapsed([{ ...unfinished, status: "running" }], DateTime.toEpochMillis(later)), - ).toBe("2m"); + ).toBe("2m 0s"); expect( subagentCardElapsed([{ ...unfinished, status: "idle" }], DateTime.toEpochMillis(later)), ).toBeNull(); diff --git a/packages/shared/src/orchestrationTiming.test.ts b/packages/shared/src/orchestrationTiming.test.ts index 9f75d70c37381..be3837d1fc4f3 100644 --- a/packages/shared/src/orchestrationTiming.test.ts +++ b/packages/shared/src/orchestrationTiming.test.ts @@ -1,6 +1,20 @@ import { describe, expect, it } from "vite-plus/test"; -import { deriveSubagentElapsedMs } from "./orchestrationTiming.ts"; +import { deriveSubagentElapsedMs, formatDuration } from "./orchestrationTiming.ts"; + +describe("formatDuration", () => { + it.each([ + [59_000, "59s"], + [59_500, "1m 0s"], + [60_000, "1m 0s"], + [720_000, "12m 0s"], + [736_000, "12m 16s"], + [3_600_000, "1h"], + [3_660_000, "1h 1m 0s"], + ])("formats %i milliseconds as %s", (durationMs, expected) => { + expect(formatDuration(durationMs)).toBe(expected); + }); +}); describe("deriveSubagentElapsedMs", () => { const startedAt = "2026-09-21T12:00:00.000Z"; diff --git a/packages/shared/src/orchestrationTiming.ts b/packages/shared/src/orchestrationTiming.ts index 1f43f99453456..f78c683931c2a 100644 --- a/packages/shared/src/orchestrationTiming.ts +++ b/packages/shared/src/orchestrationTiming.ts @@ -32,6 +32,6 @@ export function formatDuration(durationMs: number): string { const parts: string[] = []; if (hours > 0) parts.push(`${hours}h`); if (minutes > 0) parts.push(`${minutes}m`); - if (seconds > 0) parts.push(`${seconds}s`); + if (seconds > 0 || minutes > 0) parts.push(`${seconds}s`); return parts.join(" "); }