summaryrefslogtreecommitdiffhomepage
path: root/packages/app/e2e/commands
diff options
context:
space:
mode:
authorFilip <[email protected]>2026-02-17 15:42:50 +0100
committerGitHub <[email protected]>2026-02-17 08:42:50 -0600
commit4d5e86d8a56f3aca4ef00eead34d33f3c6a41e07 (patch)
tree3d2cfd53086d553f967ecbee0516068f623cf048 /packages/app/e2e/commands
parent222b6cda96895fb86cee12b2a692a016bb09d637 (diff)
downloadopencode-4d5e86d8a56f3aca4ef00eead34d33f3c6a41e07.tar.gz
opencode-4d5e86d8a56f3aca4ef00eead34d33f3c6a41e07.zip
feat(desktop): more e2e tests (#13975)
Diffstat (limited to 'packages/app/e2e/commands')
-rw-r--r--packages/app/e2e/commands/input-focus.spec.ts15
-rw-r--r--packages/app/e2e/commands/panels.spec.ts31
-rw-r--r--packages/app/e2e/commands/tab-close.spec.ts32
3 files changed, 78 insertions, 0 deletions
diff --git a/packages/app/e2e/commands/input-focus.spec.ts b/packages/app/e2e/commands/input-focus.spec.ts
new file mode 100644
index 000000000..4ba1aa3e6
--- /dev/null
+++ b/packages/app/e2e/commands/input-focus.spec.ts
@@ -0,0 +1,15 @@
+import { test, expect } from "../fixtures"
+import { promptSelector } from "../selectors"
+
+test("ctrl+l focuses the prompt", async ({ page, gotoSession }) => {
+ await gotoSession()
+
+ const prompt = page.locator(promptSelector)
+ await expect(prompt).toBeVisible()
+
+ await page.locator("main").click({ position: { x: 5, y: 5 } })
+ await expect(prompt).not.toBeFocused()
+
+ await page.keyboard.press("Control+L")
+ await expect(prompt).toBeFocused()
+})
diff --git a/packages/app/e2e/commands/panels.spec.ts b/packages/app/e2e/commands/panels.spec.ts
new file mode 100644
index 000000000..0e25fe053
--- /dev/null
+++ b/packages/app/e2e/commands/panels.spec.ts
@@ -0,0 +1,31 @@
+import { test, expect } from "../fixtures"
+import { modKey } from "../utils"
+
+const expanded = async (el: { getAttribute: (name: string) => Promise<string | null> }) => {
+ const value = await el.getAttribute("aria-expanded")
+ if (value !== "true" && value !== "false") throw new Error(`Expected aria-expanded to be true|false, got: ${value}`)
+ return value === "true"
+}
+
+test("review panel can be toggled via keybind", async ({ page, gotoSession }) => {
+ await gotoSession()
+
+ const treeToggle = page.getByRole("button", { name: "Toggle file tree" }).first()
+ await expect(treeToggle).toBeVisible()
+ if (await expanded(treeToggle)) await treeToggle.click()
+ await expect(treeToggle).toHaveAttribute("aria-expanded", "false")
+
+ const reviewToggle = page.getByRole("button", { name: "Toggle review" }).first()
+ await expect(reviewToggle).toBeVisible()
+ if (await expanded(reviewToggle)) await reviewToggle.click()
+ await expect(reviewToggle).toHaveAttribute("aria-expanded", "false")
+ await expect(page.locator("#review-panel")).toHaveCount(0)
+
+ await page.keyboard.press(`${modKey}+Shift+R`)
+ await expect(reviewToggle).toHaveAttribute("aria-expanded", "true")
+ await expect(page.locator("#review-panel")).toBeVisible()
+
+ await page.keyboard.press(`${modKey}+Shift+R`)
+ await expect(reviewToggle).toHaveAttribute("aria-expanded", "false")
+ await expect(page.locator("#review-panel")).toHaveCount(0)
+}) \ No newline at end of file
diff --git a/packages/app/e2e/commands/tab-close.spec.ts b/packages/app/e2e/commands/tab-close.spec.ts
new file mode 100644
index 000000000..981ee561e
--- /dev/null
+++ b/packages/app/e2e/commands/tab-close.spec.ts
@@ -0,0 +1,32 @@
+import { test, expect } from "../fixtures"
+import { promptSelector } from "../selectors"
+import { modKey } from "../utils"
+
+test("mod+w closes the active file tab", async ({ page, gotoSession }) => {
+ await gotoSession()
+
+ await page.locator(promptSelector).click()
+ await page.keyboard.type("/open")
+ await expect(page.locator('[data-slash-id="file.open"]').first()).toBeVisible()
+ await page.keyboard.press("Enter")
+
+ const dialog = page
+ .getByRole("dialog")
+ .filter({ has: page.getByPlaceholder(/search files/i) })
+ .first()
+ await expect(dialog).toBeVisible()
+
+ await dialog.getByRole("textbox").first().fill("package.json")
+ const item = dialog.locator('[data-slot="list-item"][data-key^="file:"]').first()
+ await expect(item).toBeVisible({ timeout: 30_000 })
+ await item.click()
+ await expect(dialog).toHaveCount(0)
+
+ const tab = page.getByRole("tab", { name: "package.json" }).first()
+ await expect(tab).toBeVisible()
+ await tab.click()
+ await expect(tab).toHaveAttribute("aria-selected", "true")
+
+ await page.keyboard.press(`${modKey}+W`)
+ await expect(page.getByRole("tab", { name: "package.json" })).toHaveCount(0)
+})