summaryrefslogtreecommitdiffhomepage
path: root/packages/app/e2e/session
diff options
context:
space:
mode:
authorShoubhit Dash <[email protected]>2026-04-01 15:47:15 +0530
committerGitHub <[email protected]>2026-04-01 15:47:15 +0530
commit47a676111a3532aebed01110494742e536b7e5b4 (patch)
tree0720ee8d01d1075116ce5b0b3cf55ef7b1b28d99 /packages/app/e2e/session
parent1df5ad470a49163ad623460b4e969da1b51cc404 (diff)
downloadopencode-47a676111a3532aebed01110494742e536b7e5b4.tar.gz
opencode-47a676111a3532aebed01110494742e536b7e5b4.zip
fix(session): add keyboard support to question dock (#20439)
Diffstat (limited to 'packages/app/e2e/session')
-rw-r--r--packages/app/e2e/session/session-composer-dock.spec.ts68
1 files changed, 68 insertions, 0 deletions
diff --git a/packages/app/e2e/session/session-composer-dock.spec.ts b/packages/app/e2e/session/session-composer-dock.spec.ts
index f083bf359..c56079337 100644
--- a/packages/app/e2e/session/session-composer-dock.spec.ts
+++ b/packages/app/e2e/session/session-composer-dock.spec.ts
@@ -13,6 +13,7 @@ import {
sessionComposerDockSelector,
sessionTodoToggleButtonSelector,
} from "../selectors"
+import { modKey } from "../utils"
type Sdk = Parameters<typeof clearSessionDockSeed>[0]
type PermissionRule = { permission: string; pattern: string; action: "allow" | "deny" | "ask" }
@@ -310,6 +311,73 @@ test("blocked question flow unblocks after submit", async ({ page, sdk, gotoSess
})
})
+test("blocked question flow supports keyboard shortcuts", async ({ page, sdk, gotoSession }) => {
+ await withDockSession(sdk, "e2e composer dock question keyboard", async (session) => {
+ await withDockSeed(sdk, session.id, async () => {
+ await gotoSession(session.id)
+
+ await seedSessionQuestion(sdk, {
+ sessionID: session.id,
+ questions: [
+ {
+ header: "Need input",
+ question: "Pick one option",
+ options: [
+ { label: "Continue", description: "Continue now" },
+ { label: "Stop", description: "Stop here" },
+ ],
+ },
+ ],
+ })
+
+ const dock = page.locator(questionDockSelector)
+ const first = dock.locator('[data-slot="question-option"]').first()
+ const second = dock.locator('[data-slot="question-option"]').nth(1)
+
+ await expectQuestionBlocked(page)
+ await expect(first).toBeFocused()
+
+ await page.keyboard.press("ArrowDown")
+ await expect(second).toBeFocused()
+
+ await page.keyboard.press("Space")
+ await page.keyboard.press(`${modKey}+Enter`)
+ await expectQuestionOpen(page)
+ })
+ })
+})
+
+test("blocked question flow supports escape dismiss", async ({ page, sdk, gotoSession }) => {
+ await withDockSession(sdk, "e2e composer dock question escape", async (session) => {
+ await withDockSeed(sdk, session.id, async () => {
+ await gotoSession(session.id)
+
+ await seedSessionQuestion(sdk, {
+ sessionID: session.id,
+ questions: [
+ {
+ header: "Need input",
+ question: "Pick one option",
+ options: [
+ { label: "Continue", description: "Continue now" },
+ { label: "Stop", description: "Stop here" },
+ ],
+ },
+ ],
+ })
+
+ const dock = page.locator(questionDockSelector)
+ const first = dock.locator('[data-slot="question-option"]').first()
+
+ await expectQuestionBlocked(page)
+ await expect(first).toBeFocused()
+
+ await page.keyboard.press("Escape")
+ await expectQuestionOpen(page)
+ })
+ })
+})
+
test("blocked permission flow supports allow once", async ({ page, sdk, gotoSession }) => {
await withDockSession(sdk, "e2e composer dock permission once", async (session) => {
await gotoSession(session.id)