mirror of
https://github.com/anomalyco/opencode.git
synced 2026-07-22 18:25:32 -04:00
47 lines
1.4 KiB
TypeScript
47 lines
1.4 KiB
TypeScript
import { expect, test } from "bun:test"
|
|
import type { Page, Route } from "@playwright/test"
|
|
import { mockOpenCodeServer } from "../../utils/mock-server"
|
|
|
|
test("applies message latency after a list response gate is released", async () => {
|
|
const events: string[] = []
|
|
const gate = Promise.withResolvers<void>()
|
|
let handler: ((route: Route) => Promise<void>) | undefined
|
|
const page = {
|
|
route: (_url: string, callback: (route: Route) => Promise<void>) => {
|
|
handler = callback
|
|
return Promise.resolve()
|
|
},
|
|
} as unknown as Page
|
|
await mockOpenCodeServer(page, {
|
|
provider: {},
|
|
directory: "C:/OpenCode",
|
|
project: {},
|
|
sessions: [{ id: "session" }],
|
|
messageDelay: 25,
|
|
beforeMessagesResponse: () => {
|
|
events.push("before")
|
|
return gate.promise
|
|
},
|
|
onMessages: (request) => events.push(request.phase),
|
|
pageMessages: () => {
|
|
events.push("page")
|
|
return { items: [] }
|
|
},
|
|
})
|
|
|
|
const response = handler!({
|
|
request: () => ({ url: () => "http://127.0.0.1:4096/session/session/message" }),
|
|
fulfill: () => {
|
|
events.push("fulfill")
|
|
return Promise.resolve()
|
|
},
|
|
} as unknown as Route)
|
|
expect(events).toEqual(["start", "before"])
|
|
|
|
const released = performance.now()
|
|
gate.resolve()
|
|
await response
|
|
expect(performance.now() - released).toBeGreaterThanOrEqual(20)
|
|
expect(events).toEqual(["start", "before", "page", "end", "fulfill"])
|
|
})
|