fix(e2e): re-focus prompt after terminal opens in slash-terminal test (#17113)

This commit is contained in:
Luke Parker 2026-03-12 12:03:38 +10:00 committed by GitHub
parent 2c825c3223
commit 1d9c83b576
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -6,16 +6,24 @@ test("/terminal toggles the terminal panel", async ({ page, gotoSession }) => {
const prompt = page.locator(promptSelector)
const terminal = page.locator(terminalSelector)
const slash = page.locator('[data-slash-id="terminal.toggle"]').first()
await expect(terminal).not.toBeVisible()
await prompt.fill("/terminal")
await expect(page.locator('[data-slash-id="terminal.toggle"]').first()).toBeVisible()
await expect(slash).toBeVisible()
await page.keyboard.press("Enter")
await expect(terminal).toBeVisible()
await prompt.fill("/terminal")
await expect(page.locator('[data-slash-id="terminal.toggle"]').first()).toBeVisible()
// Terminal panel retries focus (immediate, RAF, 120ms, 240ms) after opening,
// which can steal focus from the prompt and prevent fill() from triggering
// the slash popover. Re-attempt click+fill until all retries are exhausted
// and the popover appears.
await expect.poll(async () => {
await prompt.click().catch(() => false)
await prompt.fill("/terminal").catch(() => false)
return slash.isVisible().catch(() => false)
}, { timeout: 10_000 }).toBe(true)
await page.keyboard.press("Enter")
await expect(terminal).not.toBeVisible()
})