summaryrefslogtreecommitdiffhomepage
path: root/packages/app/e2e
diff options
context:
space:
mode:
authorShoubhit Dash <[email protected]>2026-04-03 18:46:26 +0530
committerGitHub <[email protected]>2026-04-03 13:16:26 +0000
commit2002f08f2ed564f1d0148101bfd8f261a216e20c (patch)
treec1cdcf21815b0463b7bb58f84b26b649f4e2ed8a /packages/app/e2e
parentc307505f8b3629a3ffda291fa8496f474c3e097d (diff)
downloadopencode-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.ts32
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)
+})