| 123456789101112131415161718192021222324252627282930313233343536373839404142 |
- import { expect, test } from "bun:test"
- import { compressCachedRepaintTrace, layoutShiftSample } from "../timeline/session-tab-repaint-probe"
- test("compresses repeated repaint states without losing frame samples", () => {
- const state = {
- root: 1,
- scrollTop: 10,
- scrollHeight: 20,
- bottomErrorPx: 0,
- last: true,
- rows: [{ key: "row", node: 2, top: 0, bottom: 10 }],
- mounted: 1,
- center: "content",
- }
- const trace = {
- timeOriginEpochMs: 1_000,
- startedAtPerformanceMs: 100,
- samples: [
- { observedAtMs: 16, ...state, destination: ["target"], source: [] },
- { observedAtMs: 32, ...state, destination: ["target"], source: [] },
- { observedAtMs: 48, ...state, scrollTop: 11, destination: ["target"], source: [] },
- ],
- mutations: [{ observedAtMs: 20, changed: [{ type: "add", node: 2 }] }],
- shifts: [{ occurredAtMs: 24, value: 0.1 }],
- windowMs: 1_000,
- running: false,
- stop() {},
- }
- const compressed = compressCachedRepaintTrace(trace)
- const samples = compressed.samples.flatMap((group) =>
- group.observedAtMs.map((observedAtMs) => ({ observedAtMs, ...group.state })),
- )
- expect(samples).toEqual(trace.samples)
- expect(compressed.mutations).toEqual(trace.mutations)
- expect(compressed.shifts).toEqual(trace.shifts)
- })
- test("records layout shifts at occurrence time within the probe window", () => {
- expect(layoutShiftSample({ startTime: 99, value: 0.1 }, 100)).toBeUndefined()
- expect(layoutShiftSample({ startTime: 124, value: 0.2 }, 100)).toEqual({ occurredAtMs: 24, value: 0.2 })
- })
|