test(app): stabilize golden e2e prompt helper

pull/20593/head
Kit Langton 2026-04-01 23:05:35 -04:00
parent ca3ccbab8d
commit 2089e5e0d6
1 changed files with 21 additions and 6 deletions

View File

@ -83,6 +83,10 @@ const seedModel = (() => {
}
})()
function clean(value: string | null) {
return (value ?? "").replace(/\u200B/g, "").trim()
}
type ProjectHandle = {
directory: string
slug: string
@ -341,7 +345,7 @@ function makeProject(
await seedStorage(page, {
directory,
extra: options?.extra,
model: options?.model,
model: options?.model ?? openaiModel,
serverUrl: backend.url,
})
state = {
@ -365,10 +369,21 @@ function makeProject(
const prompt = page.locator(promptSelector).first()
await expect(prompt).toBeVisible()
await prompt.click()
await prompt.fill(text)
await prompt.press("Enter")
await page.keyboard.type(text)
await expect.poll(async () => clean(await prompt.textContent())).toBe(text)
await page.keyboard.press("Enter")
const sent = await expect
.poll(() => sessionIDFromUrl(page.url()) ?? "", { timeout: 5_000 })
.not.toBe("")
.then(() => true)
.catch(() => false)
if (!sent) {
const send = page.getByRole("button", { name: "Send" }).first()
await expect(send).toBeEnabled()
await send.click()
}
await expect(page).toHaveURL(/\/session\/[^/?#]+/, { timeout: 30_000 })
await expect(page).toHaveURL(/\/session\/[^/?#]+/, { timeout: 90_000 })
const sessionID = sessionIDFromUrl(page.url())
if (!sessionID) throw new Error(`Failed to parse session id from url: ${page.url()}`)
@ -385,8 +400,8 @@ function makeProject(
: cur.directory
trackSession(sessionID, directory)
await waitSessionSaved(directory, sessionID, 30_000, backend.url)
await waitSessionIdle(backend.sdk(directory), sessionID, 30_000).catch(() => undefined)
await waitSessionSaved(directory, sessionID, 90_000, backend.url)
await waitSessionIdle(backend.sdk(directory), sessionID, 90_000).catch(() => undefined)
return sessionID
}