Procházet zdrojové kódy

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

Luke Parker před 5 měsíci
rodič
revize
1d9c83b576

+ 11 - 3
packages/app/e2e/prompt/prompt-slash-terminal.spec.ts

@@ -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()
 })