summaryrefslogtreecommitdiffhomepage
path: root/packages/app/e2e/session
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/session
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/session')
-rw-r--r--packages/app/e2e/session/session-undo-redo.spec.ts32
-rw-r--r--packages/app/e2e/session/session.spec.ts45
2 files changed, 46 insertions, 31 deletions
diff --git a/packages/app/e2e/session/session-undo-redo.spec.ts b/packages/app/e2e/session/session-undo-redo.spec.ts
index 2a250dd86..c6ea2aea0 100644
--- a/packages/app/e2e/session/session-undo-redo.spec.ts
+++ b/packages/app/e2e/session/session-undo-redo.spec.ts
@@ -10,21 +10,26 @@ async function seedConversation(input: {
sessionID: string
token: string
}) {
+ const messages = async () =>
+ await input.sdk.session.messages({ sessionID: input.sessionID, limit: 100 }).then((r) => r.data ?? [])
+ const seeded = await messages()
+ const userIDs = new Set(seeded.filter((m) => m.info.role === "user").map((m) => m.info.id))
+
const prompt = input.page.locator(promptSelector)
await expect(prompt).toBeVisible()
- await prompt.click()
- await input.page.keyboard.type(`Reply with exactly: ${input.token}`)
- await input.page.keyboard.press("Enter")
+ await input.sdk.session.promptAsync({
+ sessionID: input.sessionID,
+ noReply: true,
+ parts: [{ type: "text", text: input.token }],
+ })
let userMessageID: string | undefined
await expect
.poll(
async () => {
- const messages = await input.sdk.session
- .messages({ sessionID: input.sessionID, limit: 50 })
- .then((r) => r.data ?? [])
- const users = messages.filter(
+ const users = (await messages()).filter(
(m) =>
+ !userIDs.has(m.info.id) &&
m.info.role === "user" &&
m.parts.filter((p) => p.type === "text").some((p) => p.text.includes(input.token)),
)
@@ -33,21 +38,14 @@ async function seedConversation(input: {
const user = users[users.length - 1]
if (!user) return false
userMessageID = user.info.id
-
- const assistantText = messages
- .filter((m) => m.info.role === "assistant")
- .flatMap((m) => m.parts)
- .filter((p) => p.type === "text")
- .map((p) => p.text)
- .join("\n")
-
- return assistantText.includes(input.token)
+ return true
},
- { timeout: 90_000 },
+ { timeout: 90_000, intervals: [250, 500, 1_000] },
)
.toBe(true)
if (!userMessageID) throw new Error("Expected a user message id")
+ await expect(input.page.locator(`[data-message-id="${userMessageID}"]`).first()).toBeVisible({ timeout: 30_000 })
return { prompt, userMessageID }
}
diff --git a/packages/app/e2e/session/session.spec.ts b/packages/app/e2e/session/session.spec.ts
index 4610fb331..93eaee5cb 100644
--- a/packages/app/e2e/session/session.spec.ts
+++ b/packages/app/e2e/session/session.spec.ts
@@ -34,21 +34,34 @@ async function seedMessage(sdk: Sdk, sessionID: string) {
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}`
+ const renamedTitle = `e2e renamed ${stamp}`
await withSession(sdk, originalTitle, async (session) => {
await seedMessage(sdk, session.id)
await gotoSession(session.id)
+ await expect(page.getByRole("heading", { level: 1 }).first()).toHaveText(originalTitle)
const menu = await openSessionMoreMenu(page, session.id)
await clickMenuItem(menu, /rename/i)
const input = page.locator(".session-scroller").locator(inlineInputSelector).first()
await expect(input).toBeVisible()
- await input.fill(newTitle)
+ await expect(input).toBeFocused()
+ await input.fill(renamedTitle)
+ await expect(input).toHaveValue(renamedTitle)
await input.press("Enter")
- await expect(page.getByRole("heading", { level: 1 }).first()).toContainText(newTitle)
+ await expect
+ .poll(
+ async () => {
+ const data = await sdk.session.get({ sessionID: session.id }).then((r) => r.data)
+ return data?.title
+ },
+ { timeout: 30_000 },
+ )
+ .toBe(renamedTitle)
+
+ await expect(page.getByRole("heading", { level: 1 }).first()).toHaveText(renamedTitle)
})
})
@@ -116,8 +129,14 @@ test("session can be shared and unshared via header button", async ({ page, sdk,
await seedMessage(sdk, session.id)
await gotoSession(session.id)
- const { rightSection, popoverBody } = await openSharePopover(page)
- await popoverBody.getByRole("button", { name: "Publish" }).first().click()
+ const shared = await openSharePopover(page)
+ const publish = shared.popoverBody.getByRole("button", { name: "Publish" }).first()
+ await expect(publish).toBeVisible({ timeout: 30_000 })
+ await publish.click()
+
+ await expect(shared.popoverBody.getByRole("button", { name: "Unpublish" }).first()).toBeVisible({
+ timeout: 30_000,
+ })
await expect
.poll(
@@ -129,14 +148,14 @@ test("session can be shared and unshared via header button", async ({ page, sdk,
)
.not.toBeUndefined()
- const copyButton = rightSection.locator('button[aria-label="Copy link"]').first()
- await expect(copyButton).toBeVisible({ timeout: 30_000 })
-
- const sharedPopover = await openSharePopover(page)
- const unpublish = sharedPopover.popoverBody.getByRole("button", { name: "Unpublish" }).first()
+ const unpublish = shared.popoverBody.getByRole("button", { name: "Unpublish" }).first()
await expect(unpublish).toBeVisible({ timeout: 30_000 })
await unpublish.click()
+ await expect(shared.popoverBody.getByRole("button", { name: "Publish" }).first()).toBeVisible({
+ timeout: 30_000,
+ })
+
await expect
.poll(
async () => {
@@ -147,10 +166,8 @@ test("session can be shared and unshared via header button", async ({ page, sdk,
)
.toBeUndefined()
- await expect(copyButton).not.toBeVisible({ timeout: 30_000 })
-
- const unsharedPopover = await openSharePopover(page)
- await expect(unsharedPopover.popoverBody.getByRole("button", { name: "Publish" }).first()).toBeVisible({
+ const unshared = await openSharePopover(page)
+ await expect(unshared.popoverBody.getByRole("button", { name: "Publish" }).first()).toBeVisible({
timeout: 30_000,
})
})