diff options
| author | Shoubhit Dash <[email protected]> | 2026-04-03 18:46:26 +0530 |
|---|---|---|
| committer | GitHub <[email protected]> | 2026-04-03 13:16:26 +0000 |
| commit | 2002f08f2ed564f1d0148101bfd8f261a216e20c (patch) | |
| tree | c1cdcf21815b0463b7bb58f84b26b649f4e2ed8a /packages/app/e2e | |
| parent | c307505f8b3629a3ffda291fa8496f474c3e097d (diff) | |
| download | opencode-2002f08f2ed564f1d0148101bfd8f261a216e20c.tar.gz opencode-2002f08f2ed564f1d0148101bfd8f261a216e20c.zip | |
fix(prompt): unmount model controls in shell mode (#20886)
Diffstat (limited to 'packages/app/e2e')
| -rw-r--r-- | packages/app/e2e/prompt/prompt-shell.spec.ts | 32 |
1 files changed, 22 insertions, 10 deletions
diff --git a/packages/app/e2e/prompt/prompt-shell.spec.ts b/packages/app/e2e/prompt/prompt-shell.spec.ts index d81f1d4c4..28fa02dcd 100644 --- a/packages/app/e2e/prompt/prompt-shell.spec.ts +++ b/packages/app/e2e/prompt/prompt-shell.spec.ts @@ -1,6 +1,7 @@ import type { ToolPart } from "@opencode-ai/sdk/v2/client" import { test, expect } from "../fixtures" import { withSession } from "../actions" +import { promptModelSelector, promptSelector, promptVariantSelector } from "../selectors" const isBash = (part: unknown): part is ToolPart => { if (!part || typeof part !== "object") return false @@ -9,15 +10,6 @@ const isBash = (part: unknown): part is ToolPart => { return "state" in part } -async function setAutoAccept(page: Parameters<typeof test>[0]["page"], enabled: boolean) { - const button = page.locator('[data-action="prompt-permissions"]').first() - await expect(button).toBeVisible() - const pressed = (await button.getAttribute("aria-pressed")) === "true" - if (pressed === enabled) return - await button.click() - await expect(button).toHaveAttribute("aria-pressed", enabled ? "true" : "false") -} - test("shell mode runs a command in the project directory", async ({ page, project }) => { test.setTimeout(120_000) @@ -27,7 +19,12 @@ test("shell mode runs a command in the project directory", async ({ page, projec await withSession(project.sdk, `e2e shell ${Date.now()}`, async (session) => { project.trackSession(session.id) await project.gotoSession(session.id) - await setAutoAccept(page, true) + const button = page.locator('[data-action="prompt-permissions"]').first() + await expect(button).toBeVisible() + if ((await button.getAttribute("aria-pressed")) !== "true") { + await button.click() + await expect(button).toHaveAttribute("aria-pressed", "true") + } await project.shell(cmd) await expect @@ -57,3 +54,18 @@ test("shell mode runs a command in the project directory", async ({ page, projec .toEqual(expect.objectContaining({ cwd: project.directory, output: expect.stringContaining("README.md") })) }) }) + +test("shell mode unmounts model and variant controls", async ({ page, project }) => { + await project.open() + + const prompt = page.locator(promptSelector).first() + await expect(page.locator(promptModelSelector)).toHaveCount(1) + await expect(page.locator(promptVariantSelector)).toHaveCount(1) + + await prompt.click() + await page.keyboard.type("!") + + await expect(prompt).toHaveAttribute("aria-label", /enter shell command/i) + await expect(page.locator(promptModelSelector)).toHaveCount(0) + await expect(page.locator(promptVariantSelector)).toHaveCount(0) +}) |
