summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authoradamelmore <[email protected]>2026-01-26 14:32:49 -0600
committeradamelmore <[email protected]>2026-01-26 14:32:49 -0600
commitae815cca3a2f39fb21ed63c92c3ab78c42f53389 (patch)
tree738ce9856a1bdce134eea983bc1bebeb849bffec
parent5a16d99b601a08deedf8e687c7cb70b605a6b02c (diff)
downloadopencode-ae815cca3a2f39fb21ed63c92c3ab78c42f53389.tar.gz
opencode-ae815cca3a2f39fb21ed63c92c3ab78c42f53389.zip
test(app): fix e2e test
-rw-r--r--packages/app/e2e/fixtures.ts51
1 files changed, 50 insertions, 1 deletions
diff --git a/packages/app/e2e/fixtures.ts b/packages/app/e2e/fixtures.ts
index 721d60049..c5315ff19 100644
--- a/packages/app/e2e/fixtures.ts
+++ b/packages/app/e2e/fixtures.ts
@@ -1,5 +1,5 @@
import { test as base, expect } from "@playwright/test"
-import { createSdk, dirSlug, getWorktree, promptSelector, sessionPath } from "./utils"
+import { createSdk, dirSlug, getWorktree, promptSelector, serverUrl, sessionPath } from "./utils"
type TestFixtures = {
sdk: ReturnType<typeof createSdk>
@@ -29,6 +29,55 @@ export const test = base.extend<TestFixtures, WorkerFixtures>({
await use(createSdk(directory))
},
gotoSession: async ({ page, directory }, use) => {
+ await page.addInitScript(
+ (input: { directory: string; serverUrl: string }) => {
+ const key = "opencode.global.dat:server"
+ const raw = localStorage.getItem(key)
+ const parsed = (() => {
+ if (!raw) return undefined
+ try {
+ return JSON.parse(raw) as unknown
+ } catch {
+ return undefined
+ }
+ })()
+
+ const store = parsed && typeof parsed === "object" ? (parsed as Record<string, unknown>) : {}
+ const list = Array.isArray(store.list) ? store.list : []
+ const lastProject = store.lastProject && typeof store.lastProject === "object" ? store.lastProject : {}
+ const projects = store.projects && typeof store.projects === "object" ? store.projects : {}
+ const nextProjects = { ...(projects as Record<string, unknown>) }
+
+ const add = (origin: string) => {
+ const current = nextProjects[origin]
+ const items = Array.isArray(current) ? current : []
+ const existing = items.filter(
+ (p): p is { worktree: string; expanded?: boolean } =>
+ !!p &&
+ typeof p === "object" &&
+ "worktree" in p &&
+ typeof (p as { worktree?: unknown }).worktree === "string",
+ )
+
+ if (existing.some((p) => p.worktree === input.directory)) return
+ nextProjects[origin] = [{ worktree: input.directory, expanded: true }, ...existing]
+ }
+
+ add("local")
+ add(input.serverUrl)
+
+ localStorage.setItem(
+ key,
+ JSON.stringify({
+ list,
+ projects: nextProjects,
+ lastProject,
+ }),
+ )
+ },
+ { directory, serverUrl },
+ )
+
const gotoSession = async (sessionID?: string) => {
await page.goto(sessionPath(directory, sessionID))
await expect(page.locator(promptSelector)).toBeVisible()