| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- import { benchmark, benchmarkDiagnostics, expect } from "../benchmark"
- import {
- buildInitialStreamEvent,
- buildStreamDeltaEvents,
- setupTimelineBenchmark,
- textPartID,
- } from "./session-timeline-benchmark.fixture"
- import { startTimelineProfile } from "./session-timeline-profile"
- import {
- collectTimelineStreamMetrics,
- installTimelineStreamProbe,
- startTimelineStreamProbe,
- } from "./session-timeline-stream-probe"
- benchmark.describe("performance: session timeline streaming", () => {
- benchmark("streams assistant text without remounting or oscillating", async ({ page, report }) => {
- benchmark.setTimeout(480_000)
- const cpuThrottle = Number(process.env.TIMELINE_CPU_THROTTLE ?? 30)
- const deltaCount = Number(process.env.TIMELINE_DELTA_COUNT ?? 160)
- const historyTurns = Number(process.env.TIMELINE_HISTORY_TURNS ?? 320)
- const eventBatch = Number(process.env.TIMELINE_EVENT_BATCH ?? 1)
- const minimal = process.env.TIMELINE_MINIMAL === "1"
- const profileCPU = process.env.TIMELINE_CPU_PROFILE === "1"
- const profileVisual = !minimal && profileCPU && process.env.TIMELINE_VISUAL_PROFILE !== "0"
- const fixture = await setupTimelineBenchmark(page, {
- historyTurns,
- eventBatch,
- })
- fixture.transport.enqueue(buildInitialStreamEvent(deltaCount))
- const contentStart = performance.now()
- await expect(fixture.text).toBeVisible()
- await expect(fixture.text).toContainText("Implementation plan")
- const initialContentObservedMs = performance.now() - contentStart
- await fixture.scrollToBottom()
- await fixture.waitForStableGeometry()
- const profile = await startTimelineProfile(page, { cpuThrottle, profileCPU })
- await installTimelineStreamProbe(page, { textPartID, finalIndex: deltaCount, profileVisual, minimal })
- const deltas = buildStreamDeltaEvents(deltaCount)
- await startTimelineStreamProbe(page)
- fixture.transport.enqueue(deltas)
- await page.waitForFunction(
- (finalIndex) =>
- (
- window as Window & {
- __timelineStreamBenchmark?: { applied: { index: number }[] }
- }
- ).__timelineStreamBenchmark?.applied.some((value) => value.index === finalIndex),
- deltaCount,
- { timeout: 420_000 },
- )
- await expect(fixture.text).toContainText("benchmark-complete")
- await expect(fixture.text).toContainText("Streaming")
- await fixture.waitForStableGeometry()
- const metrics = await collectTimelineStreamMetrics(page, {
- textPartID,
- finalIndex: deltaCount,
- navigations: benchmarkDiagnostics(page).navigations,
- })
- const delivered = deltas.length - fixture.transport.pendingCount()
- await profile.stop()
- report(
- {
- endToEndInitialContentObservedMs: initialContentObservedMs,
- ...metrics,
- deliveredDeltas: delivered,
- pendingDeltas: fixture.transport.pendingCount(),
- },
- {
- cpuThrottle,
- profileCPU,
- profileVisual,
- minimal,
- queuedDeltas: deltas.length,
- historyTurns,
- eventBatch,
- },
- )
- await profile.reset()
- })
- })
|