33 lines
1.2 KiB
TypeScript
33 lines
1.2 KiB
TypeScript
import { expect, test } from "bun:test"
|
|
import { summarizeFirstNavigation } from "../timeline/first-navigation-metrics"
|
|
|
|
test("reports blank frames before first destination and stable paint", () => {
|
|
expect(
|
|
summarizeFirstNavigation([
|
|
{ observedAtMs: 16, source: true, destination: false, content: true },
|
|
{ observedAtMs: 32, source: false, destination: false, content: false },
|
|
{ observedAtMs: 48, source: false, destination: true, content: true },
|
|
{ observedAtMs: 64, source: false, destination: true, content: true },
|
|
{ observedAtMs: 80, source: false, destination: true, content: true },
|
|
]),
|
|
).toEqual({
|
|
samples: 5,
|
|
firstDestinationObservedMs: 48,
|
|
stableDestinationObservedMs: 80,
|
|
sourceSamples: 1,
|
|
blankSamples: 1,
|
|
unknownSamples: 0,
|
|
destinationSamples: 3,
|
|
})
|
|
})
|
|
|
|
test("does not report stability for interrupted destination frames", () => {
|
|
expect(
|
|
summarizeFirstNavigation([
|
|
{ observedAtMs: 16, source: false, destination: true, content: true },
|
|
{ observedAtMs: 32, source: false, destination: false, content: true },
|
|
{ observedAtMs: 48, source: false, destination: true, content: true },
|
|
]).stableDestinationObservedMs,
|
|
).toBeNull()
|
|
})
|