perf: enforce journey budgets and reference traces
This commit is contained in:
30
tests/performance/aggregation.test.ts
Normal file
30
tests/performance/aggregation.test.ts
Normal file
@@ -0,0 +1,30 @@
|
||||
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);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user