diff options
| author | Adam <[email protected]> | 2026-01-19 06:54:47 -0600 |
|---|---|---|
| committer | Adam <[email protected]> | 2026-01-19 09:03:52 -0600 |
| commit | 2b086f0584ad803f27bbf386b00b04ecdee204fe (patch) | |
| tree | a53d4b1312b338539bdf8df04e9f116d2909f3f2 | |
| parent | b90315bc7ee745f9afb81fb3cfab69b42980b79d (diff) | |
| download | opencode-2b086f0584ad803f27bbf386b00b04ecdee204fe.tar.gz opencode-2b086f0584ad803f27bbf386b00b04ecdee204fe.zip | |
test(app): more e2e tests
| -rw-r--r-- | packages/app/e2e/context.spec.ts | 28 | ||||
| -rw-r--r-- | packages/app/e2e/file-open.spec.ts | 24 | ||||
| -rw-r--r-- | packages/app/e2e/sidebar.spec.ts | 20 |
3 files changed, 72 insertions, 0 deletions
diff --git a/packages/app/e2e/context.spec.ts b/packages/app/e2e/context.spec.ts new file mode 100644 index 000000000..dbfeda8d8 --- /dev/null +++ b/packages/app/e2e/context.spec.ts @@ -0,0 +1,28 @@ +import { test, expect } from "./fixtures" +import { promptSelector } from "./utils" + +test("context panel can be opened from the prompt", async ({ page, sdk, gotoSession }) => { + const title = `e2e smoke context ${Date.now()}` + const created = await sdk.session.create({ title }).then((r) => r.data) + + if (!created?.id) throw new Error("Session create did not return an id") + const sessionID = created.id + + try { + await gotoSession(sessionID) + + const promptForm = page.locator("form").filter({ has: page.locator(promptSelector) }).first() + const contextButton = promptForm + .locator("button") + .filter({ has: promptForm.locator('[data-component="progress-circle"]').first() }) + .first() + + await expect(contextButton).toBeVisible() + await contextButton.click() + + const tabs = page.locator('[data-component="tabs"][data-variant="normal"]') + await expect(tabs.getByRole("tab", { name: "Context" })).toBeVisible() + } finally { + await sdk.session.delete({ sessionID }).catch(() => undefined) + } +}) diff --git a/packages/app/e2e/file-open.spec.ts b/packages/app/e2e/file-open.spec.ts new file mode 100644 index 000000000..673caf9dc --- /dev/null +++ b/packages/app/e2e/file-open.spec.ts @@ -0,0 +1,24 @@ +import { test, expect } from "./fixtures" +import { modKey } from "./utils" + +test("can open a file tab from the search palette", async ({ page, gotoSession }) => { + await gotoSession() + + await page.keyboard.press(`${modKey}+P`) + + const dialog = page.getByRole("dialog") + await expect(dialog).toBeVisible() + + const input = dialog.getByRole("textbox").first() + await input.fill("package.json") + + const firstItem = dialog.locator('[data-slot="list-item"]').first() + await expect(firstItem).toBeVisible() + await firstItem.click() + + await expect(dialog).toHaveCount(0) + + const tabs = page.locator('[data-component="tabs"][data-variant="normal"]') + await expect(tabs).toBeVisible() + await expect(tabs.getByRole("tab").first()).toBeVisible() +}) diff --git a/packages/app/e2e/sidebar.spec.ts b/packages/app/e2e/sidebar.spec.ts new file mode 100644 index 000000000..964b0a56c --- /dev/null +++ b/packages/app/e2e/sidebar.spec.ts @@ -0,0 +1,20 @@ +import { test, expect } from "./fixtures" +import { modKey } from "./utils" + +test("sidebar can be collapsed and expanded", async ({ page, gotoSession }) => { + await gotoSession() + + const createButton = page.getByRole("button", { name: /New (session|workspace)/ }).first() + const opened = (await createButton.count()) > 0 + + if (!opened) { + await page.keyboard.press(`${modKey}+B`) + await expect(createButton).toBeVisible() + } + + await page.keyboard.press(`${modKey}+B`) + await expect(createButton).toHaveCount(0) + + await page.keyboard.press(`${modKey}+B`) + await expect(createButton).toBeVisible() +}) |
