summaryrefslogtreecommitdiffhomepage
path: root/packages/app/e2e/session
diff options
context:
space:
mode:
authorAdam <[email protected]>2026-02-04 10:10:16 -0600
committerAdam <[email protected]>2026-02-04 10:10:28 -0600
commit93592702c33c5105b25f177c4db967a8db53cb69 (patch)
tree81088ba38f38275f5f48c9db24e82bf7ba889c04 /packages/app/e2e/session
parent61d3f788b847593a865d1aa8a9a112911f55d117 (diff)
downloadopencode-93592702c33c5105b25f177c4db967a8db53cb69.tar.gz
opencode-93592702c33c5105b25f177c4db967a8db53cb69.zip
test(app): fix dated e2e tests
Diffstat (limited to 'packages/app/e2e/session')
-rw-r--r--packages/app/e2e/session/session.spec.ts70
1 files changed, 56 insertions, 14 deletions
diff --git a/packages/app/e2e/session/session.spec.ts b/packages/app/e2e/session/session.spec.ts
index 05984bbee..4610fb331 100644
--- a/packages/app/e2e/session/session.spec.ts
+++ b/packages/app/e2e/session/session.spec.ts
@@ -11,57 +11,98 @@ import { sessionItemSelector, inlineInputSelector } from "../selectors"
const shareDisabled = process.env.OPENCODE_DISABLE_SHARE === "true" || process.env.OPENCODE_DISABLE_SHARE === "1"
-test("sidebar session can be renamed", async ({ page, sdk, gotoSession }) => {
+type Sdk = Parameters<typeof withSession>[0]
+
+async function seedMessage(sdk: Sdk, sessionID: string) {
+ await sdk.session.promptAsync({
+ sessionID,
+ noReply: true,
+ parts: [{ type: "text", text: "e2e seed" }],
+ })
+
+ await expect
+ .poll(
+ async () => {
+ const messages = await sdk.session.messages({ sessionID, limit: 1 }).then((r) => r.data ?? [])
+ return messages.length
+ },
+ { timeout: 30_000 },
+ )
+ .toBeGreaterThan(0)
+}
+
+test("session can be renamed via header menu", async ({ page, sdk, gotoSession }) => {
const stamp = Date.now()
const originalTitle = `e2e rename test ${stamp}`
const newTitle = `e2e renamed ${stamp}`
await withSession(sdk, originalTitle, async (session) => {
+ await seedMessage(sdk, session.id)
await gotoSession(session.id)
- await openSidebar(page)
const menu = await openSessionMoreMenu(page, session.id)
await clickMenuItem(menu, /rename/i)
- const input = page.locator(sessionItemSelector(session.id)).locator(inlineInputSelector).first()
+ const input = page.locator(".session-scroller").locator(inlineInputSelector).first()
await expect(input).toBeVisible()
await input.fill(newTitle)
await input.press("Enter")
- await expect(page.locator(sessionItemSelector(session.id)).locator("a").first()).toContainText(newTitle)
+ await expect(page.getByRole("heading", { level: 1 }).first()).toContainText(newTitle)
})
})
-test("sidebar session can be archived", async ({ page, sdk, gotoSession }) => {
+test("session can be archived via header menu", async ({ page, sdk, gotoSession }) => {
const stamp = Date.now()
const title = `e2e archive test ${stamp}`
await withSession(sdk, title, async (session) => {
+ await seedMessage(sdk, session.id)
await gotoSession(session.id)
- await openSidebar(page)
-
- const sessionEl = page.locator(sessionItemSelector(session.id))
const menu = await openSessionMoreMenu(page, session.id)
await clickMenuItem(menu, /archive/i)
- await expect(sessionEl).not.toBeVisible()
+ await expect
+ .poll(
+ async () => {
+ const data = await sdk.session.get({ sessionID: session.id }).then((r) => r.data)
+ return data?.time?.archived
+ },
+ { timeout: 30_000 },
+ )
+ .not.toBeUndefined()
+
+ await openSidebar(page)
+ await expect(page.locator(sessionItemSelector(session.id))).toHaveCount(0)
})
})
-test("sidebar session can be deleted", async ({ page, sdk, gotoSession }) => {
+test("session can be deleted via header menu", async ({ page, sdk, gotoSession }) => {
const stamp = Date.now()
const title = `e2e delete test ${stamp}`
await withSession(sdk, title, async (session) => {
+ await seedMessage(sdk, session.id)
await gotoSession(session.id)
- await openSidebar(page)
-
- const sessionEl = page.locator(sessionItemSelector(session.id))
const menu = await openSessionMoreMenu(page, session.id)
await clickMenuItem(menu, /delete/i)
await confirmDialog(page, /delete/i)
- await expect(sessionEl).not.toBeVisible()
+ await expect
+ .poll(
+ async () => {
+ const data = await sdk.session
+ .get({ sessionID: session.id })
+ .then((r) => r.data)
+ .catch(() => undefined)
+ return data?.id
+ },
+ { timeout: 30_000 },
+ )
+ .toBeUndefined()
+
+ await openSidebar(page)
+ await expect(page.locator(sessionItemSelector(session.id))).toHaveCount(0)
})
})
@@ -72,6 +113,7 @@ test("session can be shared and unshared via header button", async ({ page, sdk,
const title = `e2e share test ${stamp}`
await withSession(sdk, title, async (session) => {
+ await seedMessage(sdk, session.id)
await gotoSession(session.id)
const { rightSection, popoverBody } = await openSharePopover(page)