diff options
| author | Luke Parker <[email protected]> | 2026-03-20 14:12:06 +1000 |
|---|---|---|
| committer | GitHub <[email protected]> | 2026-03-20 00:12:06 -0400 |
| commit | d460614cd7ad9e047a2792139ea67e16caa82ea7 (patch) | |
| tree | ff415e8719c7b6edd73bc824da379308e4e62589 /packages/app/e2e/session | |
| parent | 7866dbcfcc36a60d22ad466eddf54c54b21fabe3 (diff) | |
| download | opencode-d460614cd7ad9e047a2792139ea67e16caa82ea7.tar.gz opencode-d460614cd7ad9e047a2792139ea67e16caa82ea7.zip | |
fix: lots of desktop stability, better e2e error logging (#18300)
Diffstat (limited to 'packages/app/e2e/session')
| -rw-r--r-- | packages/app/e2e/session/session-model-persistence.spec.ts | 38 |
1 files changed, 13 insertions, 25 deletions
diff --git a/packages/app/e2e/session/session-model-persistence.spec.ts b/packages/app/e2e/session/session-model-persistence.spec.ts index 2c2e4e886..b758a3b3d 100644 --- a/packages/app/e2e/session/session-model-persistence.spec.ts +++ b/packages/app/e2e/session/session-model-persistence.spec.ts @@ -1,6 +1,14 @@ import type { Locator, Page } from "@playwright/test" import { test, expect } from "../fixtures" -import { openSidebar, resolveSlug, sessionIDFromUrl, setWorkspacesEnabled, waitSessionIdle, waitSlug } from "../actions" +import { + openSidebar, + resolveSlug, + sessionIDFromUrl, + setWorkspacesEnabled, + waitSession, + waitSessionIdle, + waitSlug, +} from "../actions" import { promptAgentSelector, promptModelSelector, @@ -29,8 +37,6 @@ const text = async (locator: Locator) => ((await locator.textContent()) ?? "").t const modelKey = (state: Probe | null) => (state?.model ? `${state.model.providerID}:${state.model.modelID}` : null) -const dirKey = (state: Probe | null) => state?.dir ?? "" - async function probe(page: Page): Promise<Probe | null> { return page.evaluate(() => { const win = window as Window & { @@ -44,21 +50,6 @@ async function probe(page: Page): Promise<Probe | null> { }) } -async function currentDir(page: Page) { - let hit = "" - await expect - .poll( - async () => { - const next = dirKey(await probe(page)) - if (next) hit = next - return next - }, - { timeout: 30_000 }, - ) - .not.toBe("") - return hit -} - async function read(page: Page): Promise<Footer> { return { agent: await text(page.locator(`${promptAgentSelector} [data-slot="select-select-trigger-value"]`).first()), @@ -187,8 +178,7 @@ async function chooseOtherModel(page: Page): Promise<Footer> { async function goto(page: Page, directory: string, sessionID?: string) { await page.goto(sessionPath(directory, sessionID)) - await expect(page.locator(promptSelector)).toBeVisible() - await expect.poll(async () => dirKey(await probe(page)), { timeout: 30_000 }).toBe(directory) + await waitSession(page, { directory, sessionID }) } async function submit(page: Page, value: string) { @@ -224,7 +214,7 @@ async function createWorkspace(page: Page, root: string, seen: string[]) { await page.getByRole("button", { name: "New workspace" }).first().click() const next = await resolveSlug(await waitSlug(page, [root, ...seen])) - await expect(page).toHaveURL(new RegExp(`/${next.slug}/session(?:[/?#]|$)`)) + await waitSession(page, { directory: next.directory }) return next } @@ -256,9 +246,7 @@ async function newWorkspaceSession(page: Page, slug: string) { await button.click({ force: true }) const next = await resolveSlug(await waitSlug(page)) - await expect(page).toHaveURL(new RegExp(`/${next.slug}/session(?:[/?#]|$)`)) - await expect(page.locator(promptSelector)).toBeVisible() - return currentDir(page) + return waitSession(page, { directory: next.directory }).then((item) => item.directory) } test("session model and variant restore per session without leaking into new sessions", async ({ @@ -277,7 +265,7 @@ test("session model and variant restore per session without leaking into new ses await waitUser(directory, first) await page.reload() - await expect(page.locator(promptSelector)).toBeVisible() + await waitSession(page, { directory, sessionID: first }) await waitFooter(page, firstState) await gotoSession() |
