diff options
| author | Filip <[email protected]> | 2026-02-17 15:42:50 +0100 |
|---|---|---|
| committer | GitHub <[email protected]> | 2026-02-17 08:42:50 -0600 |
| commit | 4d5e86d8a56f3aca4ef00eead34d33f3c6a41e07 (patch) | |
| tree | 3d2cfd53086d553f967ecbee0516068f623cf048 /packages/app/e2e/prompt | |
| parent | 222b6cda96895fb86cee12b2a692a016bb09d637 (diff) | |
| download | opencode-4d5e86d8a56f3aca4ef00eead34d33f3c6a41e07.tar.gz opencode-4d5e86d8a56f3aca4ef00eead34d33f3c6a41e07.zip | |
feat(desktop): more e2e tests (#13975)
Diffstat (limited to 'packages/app/e2e/prompt')
| -rw-r--r-- | packages/app/e2e/prompt/prompt-drop-file-uri.spec.ts | 22 | ||||
| -rw-r--r-- | packages/app/e2e/prompt/prompt-drop-file.spec.ts | 30 | ||||
| -rw-r--r-- | packages/app/e2e/prompt/prompt-multiline.spec.ts | 18 | ||||
| -rw-r--r-- | packages/app/e2e/prompt/prompt-slash-terminal.spec.ts | 23 |
4 files changed, 93 insertions, 0 deletions
diff --git a/packages/app/e2e/prompt/prompt-drop-file-uri.spec.ts b/packages/app/e2e/prompt/prompt-drop-file-uri.spec.ts new file mode 100644 index 000000000..add2d8d8b --- /dev/null +++ b/packages/app/e2e/prompt/prompt-drop-file-uri.spec.ts @@ -0,0 +1,22 @@ +import { test, expect } from "../fixtures" +import { promptSelector } from "../selectors" + +test("dropping text/plain file: uri inserts a file pill", async ({ page, gotoSession }) => { + await gotoSession() + + const prompt = page.locator(promptSelector) + await prompt.click() + + const path = process.platform === "win32" ? "C:\\opencode-e2e-drop.txt" : "/tmp/opencode-e2e-drop.txt" + const dt = await page.evaluateHandle((text) => { + const dt = new DataTransfer() + dt.setData("text/plain", text) + return dt + }, `file:${path}`) + + await page.dispatchEvent("body", "drop", { dataTransfer: dt }) + + const pill = page.locator(`${promptSelector} [data-type="file"]`).first() + await expect(pill).toBeVisible() + await expect(pill).toHaveAttribute("data-path", path) +}) diff --git a/packages/app/e2e/prompt/prompt-drop-file.spec.ts b/packages/app/e2e/prompt/prompt-drop-file.spec.ts new file mode 100644 index 000000000..0a138de99 --- /dev/null +++ b/packages/app/e2e/prompt/prompt-drop-file.spec.ts @@ -0,0 +1,30 @@ +import { test, expect } from "../fixtures" +import { promptSelector } from "../selectors" + +test("dropping an image file adds an attachment", async ({ page, gotoSession }) => { + await gotoSession() + + const prompt = page.locator(promptSelector) + await prompt.click() + + const png = "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAwMCAO3+4uQAAAAASUVORK5CYII=" + const dt = await page.evaluateHandle((b64) => { + const dt = new DataTransfer() + const bytes = Uint8Array.from(atob(b64), (c) => c.charCodeAt(0)) + const file = new File([bytes], "drop.png", { type: "image/png" }) + dt.items.add(file) + return dt + }, png) + + await page.dispatchEvent("body", "drop", { dataTransfer: dt }) + + const img = page.locator('img[alt="drop.png"]').first() + await expect(img).toBeVisible() + + const remove = page.getByRole("button", { name: "Remove attachment" }).first() + await expect(remove).toBeVisible() + + await img.hover() + await remove.click() + await expect(page.locator('img[alt="drop.png"]')).toHaveCount(0) +}) diff --git a/packages/app/e2e/prompt/prompt-multiline.spec.ts b/packages/app/e2e/prompt/prompt-multiline.spec.ts new file mode 100644 index 000000000..216aa3fda --- /dev/null +++ b/packages/app/e2e/prompt/prompt-multiline.spec.ts @@ -0,0 +1,18 @@ +import { test, expect } from "../fixtures" +import { promptSelector } from "../selectors" + +test("shift+enter inserts a newline without submitting", async ({ page, gotoSession }) => { + await gotoSession() + + await expect(page).toHaveURL(/\/session\/?$/) + + const prompt = page.locator(promptSelector) + await prompt.click() + await page.keyboard.type("line one") + await page.keyboard.press("Shift+Enter") + await page.keyboard.type("line two") + + await expect(page).toHaveURL(/\/session\/?$/) + await expect(prompt).toContainText("line one") + await expect(prompt).toContainText("line two") +}) diff --git a/packages/app/e2e/prompt/prompt-slash-terminal.spec.ts b/packages/app/e2e/prompt/prompt-slash-terminal.spec.ts new file mode 100644 index 000000000..eefce19dc --- /dev/null +++ b/packages/app/e2e/prompt/prompt-slash-terminal.spec.ts @@ -0,0 +1,23 @@ +import { test, expect } from "../fixtures" +import { promptSelector, terminalSelector } from "../selectors" + +test("/terminal toggles the terminal panel", async ({ page, gotoSession }) => { + await gotoSession() + + const prompt = page.locator(promptSelector) + const terminal = page.locator(terminalSelector) + + await expect(terminal).not.toBeVisible() + + await prompt.click() + await page.keyboard.type("/terminal") + await expect(page.locator('[data-slash-id="terminal.toggle"]').first()).toBeVisible() + await page.keyboard.press("Enter") + await expect(terminal).toBeVisible() + + await prompt.click() + await page.keyboard.type("/terminal") + await expect(page.locator('[data-slash-id="terminal.toggle"]').first()).toBeVisible() + await page.keyboard.press("Enter") + await expect(terminal).not.toBeVisible() +}) |
