diff --git a/src/infra/format-time/format-duration.ts b/src/infra/format-time/format-duration.ts index 4f486c38094..be706686f0e 100644 --- a/src/infra/format-time/format-duration.ts +++ b/src/infra/format-time/format-duration.ts @@ -32,7 +32,7 @@ export function formatDurationPrecise( return "unknown"; } if (ms < 1000) { - return `${ms}ms`; + return `${Math.max(0, Math.round(ms))}ms`; } return formatDurationSeconds(ms, { decimals: options.decimals ?? 2, diff --git a/src/infra/format-time/format-time.test.ts b/src/infra/format-time/format-time.test.ts index f3fddff7f6d..b30c2a43135 100644 --- a/src/infra/format-time/format-time.test.ts +++ b/src/infra/format-time/format-time.test.ts @@ -90,6 +90,12 @@ describe("format-duration", () => { expect(formatDurationPrecise(999)).toBe("999ms"); }); + it("clamps negative and fractional sub-second values to non-negative milliseconds", () => { + expect(formatDurationPrecise(-1)).toBe("0ms"); + expect(formatDurationPrecise(-500)).toBe("0ms"); + expect(formatDurationPrecise(999.6)).toBe("1000ms"); + }); + it("shows decimal seconds for >=1s", () => { expect(formatDurationPrecise(1000)).toBe("1s"); expect(formatDurationPrecise(1500)).toBe("1.5s");