summaryrefslogtreecommitdiffhomepage
path: root/packages/app/e2e/projects/workspaces.spec.ts
diff options
context:
space:
mode:
authorLuke Parker <[email protected]>2026-03-07 17:48:30 +1000
committerGitHub <[email protected]>2026-03-07 07:48:30 +0000
commitb7e208b4f1e6641a1cbb1e13f59789c7b7f4c60a (patch)
tree44a08ed1524957a5d59bf5a03ce46fe61b53f5b7 /packages/app/e2e/projects/workspaces.spec.ts
parentbe9b4d1bcde39341c7813b66c5c19150a01bb8c2 (diff)
downloadopencode-b7e208b4f1e6641a1cbb1e13f59789c7b7f4c60a.tar.gz
opencode-b7e208b4f1e6641a1cbb1e13f59789c7b7f4c60a.zip
test(app): share workspace slug wait helper across e2e specs (#16446)
Diffstat (limited to 'packages/app/e2e/projects/workspaces.spec.ts')
-rw-r--r--packages/app/e2e/projects/workspaces.spec.ts38
1 files changed, 3 insertions, 35 deletions
diff --git a/packages/app/e2e/projects/workspaces.spec.ts b/packages/app/e2e/projects/workspaces.spec.ts
index 805b45e98..aeeccb9bb 100644
--- a/packages/app/e2e/projects/workspaces.spec.ts
+++ b/packages/app/e2e/projects/workspaces.spec.ts
@@ -14,34 +14,12 @@ import {
openSidebar,
openWorkspaceMenu,
setWorkspacesEnabled,
+ slugFromUrl,
+ waitSlug,
} from "../actions"
import { dropdownMenuContentSelector, inlineInputSelector, workspaceItemSelector } from "../selectors"
import { createSdk, dirSlug } from "../utils"
-function slugFromUrl(url: string) {
- return /\/([^/]+)\/session(?:\/|$)/.exec(url)?.[1] ?? ""
-}
-
-async function waitSlug(page: Page, skip: string[] = []) {
- let prev = ""
- await expect
- .poll(
- () => {
- const slug = slugFromUrl(page.url())
- if (!slug) return ""
- if (skip.includes(slug)) return ""
- if (slug !== prev) {
- prev = slug
- return ""
- }
- return slug
- },
- { timeout: 45_000 },
- )
- .not.toBe("")
- return slugFromUrl(page.url())
-}
-
async function setupWorkspaceTest(page: Page, project: { slug: string }) {
const rootSlug = project.slug
await openSidebar(page)
@@ -353,17 +331,7 @@ test("can reorder workspaces by drag and drop", async ({ page, withProject }) =>
for (const _ of [0, 1]) {
const prev = slugFromUrl(page.url())
await page.getByRole("button", { name: "New workspace" }).first().click()
- await expect
- .poll(
- () => {
- const slug = slugFromUrl(page.url())
- return slug.length > 0 && slug !== rootSlug && slug !== prev
- },
- { timeout: 45_000 },
- )
- .toBe(true)
-
- const slug = slugFromUrl(page.url())
+ const slug = await waitSlug(page, [rootSlug, prev])
const dir = base64Decode(slug)
workspaces.push({ slug, directory: dir })