summaryrefslogtreecommitdiffhomepage
path: root/packages/app/e2e/prompt
diff options
context:
space:
mode:
authorAdam <[email protected]>2026-02-12 09:49:14 -0600
committerGitHub <[email protected]>2026-02-12 09:49:14 -0600
commitff4414bb152acfddb5c0eb073c38bedc1df4ae14 (patch)
tree78381c67d21ef6f089647f6b19e7aa2976840dbc /packages/app/e2e/prompt
parent56ad2db02055955f926fda0e4a89055b22ead6f9 (diff)
downloadopencode-ff4414bb152acfddb5c0eb073c38bedc1df4ae14.tar.gz
opencode-ff4414bb152acfddb5c0eb073c38bedc1df4ae14.zip
chore: refactor packages/app files (#13236)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com> Co-authored-by: Frank <[email protected]>
Diffstat (limited to 'packages/app/e2e/prompt')
-rw-r--r--packages/app/e2e/prompt/context.spec.ts101
-rw-r--r--packages/app/e2e/prompt/prompt.spec.ts3
2 files changed, 78 insertions, 26 deletions
diff --git a/packages/app/e2e/prompt/context.spec.ts b/packages/app/e2e/prompt/context.spec.ts
index 80aa9ea33..366191fd7 100644
--- a/packages/app/e2e/prompt/context.spec.ts
+++ b/packages/app/e2e/prompt/context.spec.ts
@@ -1,40 +1,95 @@
import { test, expect } from "../fixtures"
+import type { Page } from "@playwright/test"
import { promptSelector } from "../selectors"
import { withSession } from "../actions"
+function contextButton(page: Page) {
+ return page
+ .locator('[data-component="button"]')
+ .filter({ has: page.locator('[data-component="progress-circle"]').first() })
+ .first()
+}
+
+async function seedContextSession(input: { sessionID: string; sdk: Parameters<typeof withSession>[0] }) {
+ await input.sdk.session.promptAsync({
+ sessionID: input.sessionID,
+ noReply: true,
+ parts: [
+ {
+ type: "text",
+ text: "seed context",
+ },
+ ],
+ })
+
+ await expect
+ .poll(async () => {
+ const messages = await input.sdk.session
+ .messages({ sessionID: input.sessionID, limit: 1 })
+ .then((r) => r.data ?? [])
+ return messages.length
+ })
+ .toBeGreaterThan(0)
+}
+
test("context panel can be opened from the prompt", async ({ page, sdk, gotoSession }) => {
const title = `e2e smoke context ${Date.now()}`
await withSession(sdk, title, async (session) => {
- await sdk.session.promptAsync({
- sessionID: session.id,
- noReply: true,
- parts: [
- {
- type: "text",
- text: "seed context",
- },
- ],
- })
+ await seedContextSession({ sessionID: session.id, sdk })
- await expect
- .poll(async () => {
- const messages = await sdk.session.messages({ sessionID: session.id, limit: 1 }).then((r) => r.data ?? [])
- return messages.length
- })
- .toBeGreaterThan(0)
+ await gotoSession(session.id)
+
+ const trigger = contextButton(page)
+ await expect(trigger).toBeVisible()
+ await trigger.click()
+
+ const tabs = page.locator('[data-component="tabs"][data-variant="normal"]')
+ await expect(tabs.getByRole("tab", { name: "Context" })).toBeVisible()
+ })
+})
+test("context panel can be closed from the context tab close action", async ({ page, sdk, gotoSession }) => {
+ await withSession(sdk, `e2e context toggle ${Date.now()}`, async (session) => {
+ await seedContextSession({ sessionID: session.id, sdk })
await gotoSession(session.id)
- const contextButton = page
- .locator('[data-component="button"]')
- .filter({ has: page.locator('[data-component="progress-circle"]').first() })
- .first()
+ await page.locator(promptSelector).click()
- await expect(contextButton).toBeVisible()
- await contextButton.click()
+ const trigger = contextButton(page)
+ await expect(trigger).toBeVisible()
+ await trigger.click()
const tabs = page.locator('[data-component="tabs"][data-variant="normal"]')
- await expect(tabs.getByRole("tab", { name: "Context" })).toBeVisible()
+ const context = tabs.getByRole("tab", { name: "Context" })
+ await expect(context).toBeVisible()
+
+ await page.getByRole("button", { name: "Close tab" }).first().click()
+ await expect(context).toHaveCount(0)
+ })
+})
+
+test("context panel can open file picker from context actions", async ({ page, sdk, gotoSession }) => {
+ await withSession(sdk, `e2e context tabs ${Date.now()}`, async (session) => {
+ await seedContextSession({ sessionID: session.id, sdk })
+ await gotoSession(session.id)
+
+ await page.locator(promptSelector).click()
+
+ const trigger = contextButton(page)
+ await expect(trigger).toBeVisible()
+ await trigger.click()
+
+ await expect(page.getByRole("tab", { name: "Context" })).toBeVisible()
+ await page.getByRole("button", { name: "Open file" }).first().click()
+
+ const dialog = page
+ .getByRole("dialog")
+ .filter({ has: page.getByPlaceholder(/search files/i) })
+ .first()
+ await expect(dialog).toBeVisible()
+
+ await page.keyboard.press("Escape")
+ await expect(dialog).toHaveCount(0)
})
})
diff --git a/packages/app/e2e/prompt/prompt.spec.ts b/packages/app/e2e/prompt/prompt.spec.ts
index 07d242c63..ff9f5daf0 100644
--- a/packages/app/e2e/prompt/prompt.spec.ts
+++ b/packages/app/e2e/prompt/prompt.spec.ts
@@ -44,9 +44,6 @@ test("can send a prompt and receive a reply", async ({ page, sdk, gotoSession })
)
.toContain(token)
-
- const reply = page.locator('[data-slot="session-turn-summary-section"]').filter({ hasText: token }).first()
- await expect(reply).toBeVisible({ timeout: 90_000 })
} finally {
page.off("pageerror", onPageError)
await sdk.session.delete({ sessionID }).catch(() => undefined)