mirror of
https://github.com/anomalyco/opencode.git
synced 2026-07-24 04:01:10 -04:00
50 lines
1.9 KiB
TypeScript
50 lines
1.9 KiB
TypeScript
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)
|
|
})
|