diff options
| author | Adam <[email protected]> | 2026-02-04 10:10:16 -0600 |
|---|---|---|
| committer | Adam <[email protected]> | 2026-02-04 10:10:28 -0600 |
| commit | 93592702c33c5105b25f177c4db967a8db53cb69 (patch) | |
| tree | 81088ba38f38275f5f48c9db24e82bf7ba889c04 /packages/app/e2e/session | |
| parent | 61d3f788b847593a865d1aa8a9a112911f55d117 (diff) | |
| download | opencode-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.ts | 70 |
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) |
