navigation-milestones.test.ts 1.3 KB

12345678910111213141516171819202122232425262728293031323334
  1. import { expect, test } from "bun:test"
  2. import { summarizeNavigationMilestones } from "../timeline/navigation-milestones"
  3. test("reports first and stable paint for each navigation milestone", () => {
  4. expect(
  5. summarizeNavigationMilestones([
  6. { observedAtMs: 16, milestones: { content: false, tab: false } },
  7. { observedAtMs: 32, milestones: { content: true, tab: false } },
  8. { observedAtMs: 48, milestones: { content: true, tab: true } },
  9. { observedAtMs: 64, milestones: { content: true, tab: true } },
  10. { observedAtMs: 80, milestones: { content: true, tab: true } },
  11. ]),
  12. ).toEqual({
  13. samples: 5,
  14. milestones: {
  15. content: { firstObservedMs: 32, stableObservedMs: 64 },
  16. tab: { firstObservedMs: 48, stableObservedMs: 80 },
  17. },
  18. all: { firstObservedMs: 48, stableObservedMs: 80 },
  19. })
  20. })
  21. test("reports missing stability when a milestone appears in the final samples", () => {
  22. expect(
  23. summarizeNavigationMilestones([
  24. { observedAtMs: 16, milestones: { content: false } },
  25. { observedAtMs: 32, milestones: { content: true } },
  26. ]),
  27. ).toEqual({
  28. samples: 2,
  29. milestones: { content: { firstObservedMs: 32, stableObservedMs: null } },
  30. all: { firstObservedMs: 32, stableObservedMs: null },
  31. })
  32. })