Skip to content

Commit 2e44dba

Browse files
Apply PR #11659: test(app): workspace tests
2 parents 28d9b3f + 448e02b commit 2e44dba

File tree

7 files changed

+517
-10
lines changed

7 files changed

+517
-10
lines changed

packages/app/e2e/actions.ts

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,15 @@ import {
88
sessionItemSelector,
99
dropdownMenuTriggerSelector,
1010
dropdownMenuContentSelector,
11+
projectMenuTriggerSelector,
12+
projectWorkspacesToggleSelector,
1113
titlebarRightSelector,
1214
popoverBodySelector,
1315
listItemSelector,
1416
listItemKeySelector,
1517
listItemKeyStartsWithSelector,
18+
workspaceItemSelector,
19+
workspaceMenuTriggerSelector,
1620
} from "./selectors"
1721
import type { createSdk } from "./utils"
1822

@@ -291,3 +295,69 @@ export async function openStatusPopover(page: Page) {
291295

292296
return { rightSection, popoverBody }
293297
}
298+
299+
export async function openProjectMenu(page: Page, projectSlug: string) {
300+
const trigger = page.locator(projectMenuTriggerSelector(projectSlug)).first()
301+
await expect(trigger).toHaveCount(1)
302+
303+
await trigger.focus()
304+
await page.keyboard.press("Enter")
305+
306+
const menu = page.locator(dropdownMenuContentSelector).first()
307+
const opened = await menu
308+
.waitFor({ state: "visible", timeout: 1500 })
309+
.then(() => true)
310+
.catch(() => false)
311+
312+
if (opened) {
313+
const viewport = page.viewportSize()
314+
const x = viewport ? Math.max(viewport.width - 5, 0) : 1200
315+
const y = viewport ? Math.max(viewport.height - 5, 0) : 800
316+
await page.mouse.move(x, y)
317+
return menu
318+
}
319+
320+
await trigger.click({ force: true })
321+
322+
await expect(menu).toBeVisible()
323+
324+
const viewport = page.viewportSize()
325+
const x = viewport ? Math.max(viewport.width - 5, 0) : 1200
326+
const y = viewport ? Math.max(viewport.height - 5, 0) : 800
327+
await page.mouse.move(x, y)
328+
return menu
329+
}
330+
331+
export async function setWorkspacesEnabled(page: Page, projectSlug: string, enabled: boolean) {
332+
const current = await page
333+
.getByRole("button", { name: "New workspace" })
334+
.first()
335+
.isVisible()
336+
.then((x) => x)
337+
.catch(() => false)
338+
339+
if (current === enabled) return
340+
341+
await openProjectMenu(page, projectSlug)
342+
343+
const toggle = page.locator(projectWorkspacesToggleSelector(projectSlug)).first()
344+
await expect(toggle).toBeVisible()
345+
await toggle.click({ force: true })
346+
347+
const expected = enabled ? "New workspace" : "New session"
348+
await expect(page.getByRole("button", { name: expected }).first()).toBeVisible()
349+
}
350+
351+
export async function openWorkspaceMenu(page: Page, workspaceSlug: string) {
352+
const item = page.locator(workspaceItemSelector(workspaceSlug)).first()
353+
await expect(item).toBeVisible()
354+
await item.hover()
355+
356+
const trigger = page.locator(workspaceMenuTriggerSelector(workspaceSlug)).first()
357+
await expect(trigger).toBeVisible()
358+
await trigger.click({ force: true })
359+
360+
const menu = page.locator(dropdownMenuContentSelector).first()
361+
await expect(menu).toBeVisible()
362+
return menu
363+
}

0 commit comments

Comments
 (0)