import { describe, expect, it } from 'vitest'; import { aggregateFiveDriveTraces } from '../../scripts/lib/performance-aggregation.mjs'; const run = (lcp: number, tbt: number, gatingReferenceResult = true) => ({ schema: 'drive-trace.v1', profile: 'desktop-high', gatingReferenceResult, validReferenceCadence: true, metrics: { lcp, tbt }, budgetResults: { cls: true, scene: true }, }); describe('five-run drive trace aggregation', () => { it('uses worst and median gates across exactly five reference runs', () => { expect(aggregateFiveDriveTraces([ run(2_000, 100), run(2_100, 110), run(2_500, 200), run(2_900, 250), run(3_000, 300), ])).toMatchObject({ runCount: 5, passes: true, summary: { lcpWorst: 3_000, lcpMedian: 2_500, tbtWorst: 300, tbtMedian: 200 }, }); }); it('rejects non-reference developer evidence and wrong run counts', () => { expect(aggregateFiveDriveTraces([ run(2_000, 100, false), run(2_000, 100), run(2_000, 100), run(2_000, 100), run(2_000, 100), ]).passes).toBe(false); expect(() => aggregateFiveDriveTraces([run(2_000, 100)])).toThrow(/five/u); }); });