35 lines
1.3 KiB
TypeScript
35 lines
1.3 KiB
TypeScript
import { expect, test } from "bun:test"
|
|
import { summarizeNavigationMilestones } from "../timeline/navigation-milestones"
|
|
|
|
test("reports first and stable paint for each navigation milestone", () => {
|
|
expect(
|
|
summarizeNavigationMilestones([
|
|
{ observedAtMs: 16, milestones: { content: false, tab: false } },
|
|
{ observedAtMs: 32, milestones: { content: true, tab: false } },
|
|
{ observedAtMs: 48, milestones: { content: true, tab: true } },
|
|
{ observedAtMs: 64, milestones: { content: true, tab: true } },
|
|
{ observedAtMs: 80, milestones: { content: true, tab: true } },
|
|
]),
|
|
).toEqual({
|
|
samples: 5,
|
|
milestones: {
|
|
content: { firstObservedMs: 32, stableObservedMs: 64 },
|
|
tab: { firstObservedMs: 48, stableObservedMs: 80 },
|
|
},
|
|
all: { firstObservedMs: 48, stableObservedMs: 80 },
|
|
})
|
|
})
|
|
|
|
test("reports missing stability when a milestone appears in the final samples", () => {
|
|
expect(
|
|
summarizeNavigationMilestones([
|
|
{ observedAtMs: 16, milestones: { content: false } },
|
|
{ observedAtMs: 32, milestones: { content: true } },
|
|
]),
|
|
).toEqual({
|
|
samples: 2,
|
|
milestones: { content: { firstObservedMs: 32, stableObservedMs: null } },
|
|
all: { firstObservedMs: 32, stableObservedMs: null },
|
|
})
|
|
})
|