diff options
| author | Adam <[email protected]> | 2026-02-11 09:11:41 -0600 |
|---|---|---|
| committer | opencode <[email protected]> | 2026-02-11 15:12:28 +0000 |
| commit | fc88dde63f1c4a7f547bbe0634c68c5ce9fc787c (patch) | |
| tree | 4e6aaad7afb646348c3b676a6269455dac63a7d8 /packages/app/e2e/projects/workspaces.spec.ts | |
| parent | 4619e9d183d036f2f7234046927ec2f72d426168 (diff) | |
| download | opencode-fc88dde63f1c4a7f547bbe0634c68c5ce9fc787c.tar.gz opencode-fc88dde63f1c4a7f547bbe0634c68c5ce9fc787c.zip | |
test(app): more e2e tests (#13162)
Diffstat (limited to 'packages/app/e2e/projects/workspaces.spec.ts')
| -rw-r--r-- | packages/app/e2e/projects/workspaces.spec.ts | 44 |
1 files changed, 43 insertions, 1 deletions
diff --git a/packages/app/e2e/projects/workspaces.spec.ts b/packages/app/e2e/projects/workspaces.spec.ts index 41a28e3e3..071c398b2 100644 --- a/packages/app/e2e/projects/workspaces.spec.ts +++ b/packages/app/e2e/projects/workspaces.spec.ts @@ -1,5 +1,6 @@ import { base64Decode } from "@opencode-ai/util/encode" import fs from "node:fs/promises" +import os from "node:os" import path from "node:path" import type { Page } from "@playwright/test" @@ -10,11 +11,18 @@ import { cleanupTestProject, clickMenuItem, confirmDialog, + openProjectMenu, openSidebar, openWorkspaceMenu, setWorkspacesEnabled, } from "../actions" -import { inlineInputSelector, workspaceItemSelector } from "../selectors" +import { + inlineInputSelector, + projectSwitchSelector, + projectWorkspacesToggleSelector, + workspaceItemSelector, +} from "../selectors" +import { dirSlug } from "../utils" function slugFromUrl(url: string) { return /\/([^/]+)\/session(?:\/|$)/.exec(url)?.[1] ?? "" @@ -126,6 +134,40 @@ test("can create a workspace", async ({ page, withProject }) => { }) }) +test("non-git projects keep workspace mode disabled", async ({ page, withProject }) => { + await page.setViewportSize({ width: 1400, height: 800 }) + + const nonGit = await fs.mkdtemp(path.join(os.tmpdir(), "opencode-e2e-project-nongit-")) + const nonGitSlug = dirSlug(nonGit) + + await fs.writeFile(path.join(nonGit, "README.md"), "# e2e nongit\n") + + try { + await withProject( + async () => { + await openSidebar(page) + + const nonGitButton = page.locator(projectSwitchSelector(nonGitSlug)).first() + await expect(nonGitButton).toBeVisible() + await nonGitButton.click() + await expect(page).toHaveURL(new RegExp(`/${nonGitSlug}/session`)) + + const menu = await openProjectMenu(page, nonGitSlug) + const toggle = menu.locator(projectWorkspacesToggleSelector(nonGitSlug)).first() + + await expect(toggle).toBeVisible() + await expect(toggle).toBeDisabled() + + await expect(menu.getByRole("menuitem", { name: "New workspace" })).toHaveCount(0) + await expect(page.getByRole("button", { name: "New workspace" })).toHaveCount(0) + }, + { extra: [nonGit] }, + ) + } finally { + await cleanupTestProject(nonGit) + } +}) + test("can rename a workspace", async ({ page, withProject }) => { await page.setViewportSize({ width: 1400, height: 800 }) |
