| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- import { benchmark, expect } from "../benchmark"
- import { expectSessionTitle } from "../../utils/waits"
- import { fixture } from "./session-timeline-stress.fixture"
- import {
- collectCachedRepaintTrace,
- compressCachedRepaintTrace,
- installCachedRepaintProbe,
- waitForCachedRepaintWindow,
- } from "./session-tab-repaint-probe"
- import { waitForStableTimeline } from "./session-tab-switch-probe"
- import {
- installStressSessionTabs,
- installTimelineSettings,
- mockStressTimeline,
- stressSessionHref,
- } from "./timeline-test-helpers"
- benchmark("samples cached session repaint after the click", async ({ page, report }) => {
- benchmark.setTimeout(120_000)
- await mockStressTimeline(page)
- await installStressSessionTabs(page)
- await installTimelineSettings(page)
- await page.goto(stressSessionHref(fixture.targetID))
- await expectSessionTitle(page, fixture.expected.targetTitle)
- await waitForStableTimeline(page, fixture.expected.targetMessageIDs.at(-1)!)
- await page
- .locator(`[data-slot="titlebar-tabs"] a[href="${stressSessionHref(fixture.sourceID)}"]`)
- .first()
- .click()
- await expectSessionTitle(page, fixture.expected.sourceTitle)
- await waitForStableTimeline(page, fixture.expected.sourceMessageIDs.at(-1)!)
- await installCachedRepaintProbe(page, {
- targetHref: stressSessionHref(fixture.targetID),
- destination: fixture.messages[fixture.targetID].map((message) => message.info.id),
- source: fixture.messages[fixture.sourceID].map((message) => message.info.id),
- last: fixture.expected.targetMessageIDs.at(-1)!,
- windowMs: 1_000,
- })
- await page
- .locator(`[data-slot="titlebar-tabs"] a[href="${stressSessionHref(fixture.targetID)}"]`)
- .first()
- .click()
- await Promise.all([expectSessionTitle(page, fixture.expected.targetTitle), waitForCachedRepaintWindow(page, 1_000)])
- const result = await collectCachedRepaintTrace(page)
- report(compressCachedRepaintTrace(result))
- expect(result.samples.length).toBeGreaterThan(0)
- })
- benchmark("prefetches every open session tab", async ({ page, report }) => {
- const prefetched = new Set<string>()
- await mockStressTimeline(page, {
- onMessages: (input) => {
- if (!input.before && input.phase === "start") prefetched.add(input.sessionID)
- },
- })
- await installStressSessionTabs(page, {
- sessionIDs: [fixture.sourceID, fixture.targetID, fixture.childID],
- })
- await installTimelineSettings(page)
- await page.goto(stressSessionHref(fixture.sourceID))
- await expectSessionTitle(page, fixture.expected.sourceTitle)
- await expect.poll(() => prefetched.has(fixture.childID)).toBe(true)
- report({ prefetched: [...prefetched] })
- })
|