summaryrefslogtreecommitdiffhomepage
path: root/packages/app/e2e
diff options
context:
space:
mode:
authorAdam <[email protected]>2026-04-07 11:06:23 -0500
committerGitHub <[email protected]>2026-04-07 11:06:23 -0500
commitec8b9810b4231cd6a5c69ccd930b6c50999fc997 (patch)
tree562313d6dd3eda9891f3a4a3a2ef6ce3d36acd05 /packages/app/e2e
parent65318a80f7a3320ba77b749241f8de997dc65c82 (diff)
downloadopencode-ec8b9810b4231cd6a5c69ccd930b6c50999fc997.tar.gz
opencode-ec8b9810b4231cd6a5c69ccd930b6c50999fc997.zip
feat(app): better subagent experience (#20708)
Diffstat (limited to 'packages/app/e2e')
-rw-r--r--packages/app/e2e/session/session-child-navigation.spec.ts29
1 files changed, 23 insertions, 6 deletions
diff --git a/packages/app/e2e/session/session-child-navigation.spec.ts b/packages/app/e2e/session/session-child-navigation.spec.ts
index 34a1a9e2e..c9fad1af8 100644
--- a/packages/app/e2e/session/session-child-navigation.spec.ts
+++ b/packages/app/e2e/session/session-child-navigation.spec.ts
@@ -1,7 +1,6 @@
import { seedSessionTask, withSession } from "../actions"
import { test, expect } from "../fixtures"
import { inputMatch } from "../prompt/mock"
-import { promptSelector } from "../selectors"
test("task tool child-session link does not trigger stale show errors", async ({ page, llm, project }) => {
test.setTimeout(120_000)
@@ -30,15 +29,33 @@ test("task tool child-session link does not trigger stale show errors", async ({
await project.gotoSession(session.id)
- const link = page
- .locator("a.subagent-link")
+ const header = page.locator("[data-session-title]")
+ await expect(header.getByRole("button", { name: "More options" })).toBeVisible({ timeout: 30_000 })
+
+ const card = page
+ .locator('[data-component="task-tool-card"]')
.filter({ hasText: /open child session/i })
.first()
- await expect(link).toBeVisible({ timeout: 30_000 })
- await link.click()
+ await expect(card).toBeVisible({ timeout: 30_000 })
+ await card.click()
await expect(page).toHaveURL(new RegExp(`/session/${child.sessionID}(?:[/?#]|$)`), { timeout: 30_000 })
- await expect(page.locator(promptSelector)).toBeVisible({ timeout: 30_000 })
+ await expect(header.locator('[data-slot="session-title-parent"]')).toHaveText(session.title)
+ await expect(header.locator('[data-slot="session-title-child"]')).toHaveText(taskInput.description)
+ await expect(header.locator('[data-slot="session-title-separator"]')).toHaveText("/")
+ await expect
+ .poll(
+ () =>
+ header.locator('[data-slot="session-title-separator"]').evaluate((el) => ({
+ left: getComputedStyle(el).paddingLeft,
+ right: getComputedStyle(el).paddingRight,
+ })),
+ { timeout: 30_000 },
+ )
+ .toEqual({ left: "8px", right: "8px" })
+ await expect(header.getByRole("button", { name: "More options" })).toHaveCount(0)
+ await expect(page.getByText("Subagent sessions cannot be prompted.")).toBeVisible({ timeout: 30_000 })
+ await expect(page.getByRole("button", { name: "Back to main session." })).toBeVisible({ timeout: 30_000 })
await expect.poll(() => errs, { timeout: 5_000 }).toEqual([])
})
} finally {