summaryrefslogtreecommitdiffhomepage
path: root/packages/app/e2e/projects/projects-switch.spec.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/app/e2e/projects/projects-switch.spec.ts')
-rw-r--r--packages/app/e2e/projects/projects-switch.spec.ts46
1 files changed, 37 insertions, 9 deletions
diff --git a/packages/app/e2e/projects/projects-switch.spec.ts b/packages/app/e2e/projects/projects-switch.spec.ts
index 81cca6988..2725100f4 100644
--- a/packages/app/e2e/projects/projects-switch.spec.ts
+++ b/packages/app/e2e/projects/projects-switch.spec.ts
@@ -1,13 +1,7 @@
import { base64Decode } from "@opencode-ai/util/encode"
+import type { Page } from "@playwright/test"
import { test, expect } from "../fixtures"
-import {
- defocus,
- createTestProject,
- cleanupTestProject,
- openSidebar,
- setWorkspacesEnabled,
- sessionIDFromUrl,
-} from "../actions"
+import { defocus, createTestProject, cleanupTestProject, openSidebar, sessionIDFromUrl } from "../actions"
import { projectSwitchSelector, promptSelector, workspaceItemSelector, workspaceNewSessionSelector } from "../selectors"
import { createSdk, dirSlug, sessionPath } from "../utils"
@@ -15,6 +9,37 @@ function slugFromUrl(url: string) {
return /\/([^/]+)\/session(?:\/|$)/.exec(url)?.[1] ?? ""
}
+async function workspaces(page: Page, directory: string, enabled: boolean) {
+ await page.evaluate(
+ ({ directory, enabled }: { directory: string; enabled: boolean }) => {
+ const key = "opencode.global.dat:layout"
+ const raw = localStorage.getItem(key)
+ const data = raw ? JSON.parse(raw) : {}
+ const sidebar = data.sidebar && typeof data.sidebar === "object" ? data.sidebar : {}
+ const current =
+ sidebar.workspaces && typeof sidebar.workspaces === "object" && !Array.isArray(sidebar.workspaces)
+ ? sidebar.workspaces
+ : {}
+ const next = { ...current }
+
+ if (enabled) next[directory] = true
+ if (!enabled) delete next[directory]
+
+ localStorage.setItem(
+ key,
+ JSON.stringify({
+ ...data,
+ sidebar: {
+ ...sidebar,
+ workspaces: next,
+ },
+ }),
+ )
+ },
+ { directory, enabled },
+ )
+}
+
test("can switch between projects from sidebar", async ({ page, withProject }) => {
await page.setViewportSize({ width: 1400, height: 800 })
@@ -60,8 +85,11 @@ test("switching back to a project opens the latest workspace session", async ({
async ({ directory, slug }) => {
rootDir = directory
await defocus(page)
+ await workspaces(page, directory, true)
+ await page.reload()
+ await expect(page.locator(promptSelector)).toBeVisible()
await openSidebar(page)
- await setWorkspacesEnabled(page, slug, true)
+ await expect(page.getByRole("button", { name: "New workspace" }).first()).toBeVisible()
await page.getByRole("button", { name: "New workspace" }).first().click()