diff options
| author | Shoubhit Dash <[email protected]> | 2026-04-01 15:47:15 +0530 |
|---|---|---|
| committer | GitHub <[email protected]> | 2026-04-01 15:47:15 +0530 |
| commit | 47a676111a3532aebed01110494742e536b7e5b4 (patch) | |
| tree | 0720ee8d01d1075116ce5b0b3cf55ef7b1b28d99 /packages/app/e2e/session | |
| parent | 1df5ad470a49163ad623460b4e969da1b51cc404 (diff) | |
| download | opencode-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.ts | 68 |
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) |
