mirror of
https://github.com/anomalyco/opencode.git
synced 2026-07-23 18:55:37 -04:00
43 lines
1.5 KiB
TypeScript
43 lines
1.5 KiB
TypeScript
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 })
|
|
})
|