summaryrefslogtreecommitdiffhomepage
path: root/packages/app/e2e/projects/projects-close.spec.ts
diff options
context:
space:
mode:
authorFilip <[email protected]>2026-01-30 21:59:37 +0100
committeropencode <[email protected]>2026-01-30 21:06:48 +0000
commit77fa8ddc8828b5ebcc306621e6669c192d1492fe (patch)
tree000f7d4194a86e0198d0047e24c527fffda55ecb /packages/app/e2e/projects/projects-close.spec.ts
parent4a56491e42c07e30b95238a06c9b9175e4763444 (diff)
downloadopencode-77fa8ddc8828b5ebcc306621e6669c192d1492fe.tar.gz
opencode-77fa8ddc8828b5ebcc306621e6669c192d1492fe.zip
refactor(app): refactored tests + added project tests (#11349)
Diffstat (limited to 'packages/app/e2e/projects/projects-close.spec.ts')
-rw-r--r--packages/app/e2e/projects/projects-close.spec.ts77
1 files changed, 77 insertions, 0 deletions
diff --git a/packages/app/e2e/projects/projects-close.spec.ts b/packages/app/e2e/projects/projects-close.spec.ts
new file mode 100644
index 000000000..c3618740d
--- /dev/null
+++ b/packages/app/e2e/projects/projects-close.spec.ts
@@ -0,0 +1,77 @@
+import { test, expect } from "../fixtures"
+import { createTestProject, seedProjects, cleanupTestProject, openSidebar } from "../actions"
+import { projectCloseHoverSelector, projectCloseMenuSelector, projectSwitchSelector } from "../selectors"
+import { dirSlug } from "../utils"
+
+test("can close a project via hover card close button", async ({ page, directory, gotoSession }) => {
+ await page.setViewportSize({ width: 1400, height: 800 })
+
+ const other = await createTestProject()
+ const otherSlug = dirSlug(other)
+ await seedProjects(page, { directory, extra: [other] })
+
+ try {
+ await gotoSession()
+
+ await openSidebar(page)
+
+ const otherButton = page.locator(projectSwitchSelector(otherSlug)).first()
+ await expect(otherButton).toBeVisible()
+ await otherButton.hover()
+
+ const close = page.locator(projectCloseHoverSelector(otherSlug)).first()
+ await expect(close).toBeVisible()
+ await close.click()
+
+ await expect(otherButton).toHaveCount(0)
+ } finally {
+ await cleanupTestProject(other)
+ }
+})
+
+test("can close a project via project header more options menu", async ({ page, directory, gotoSession }) => {
+ await page.setViewportSize({ width: 1400, height: 800 })
+
+ const other = await createTestProject()
+ const otherName = other.split("/").pop()
+ const otherSlug = dirSlug(other)
+ await seedProjects(page, { directory, extra: [other] })
+
+ try {
+ await gotoSession()
+
+ await openSidebar(page)
+
+ const otherButton = page.locator(projectSwitchSelector(otherSlug)).first()
+ await expect(otherButton).toBeVisible()
+ await otherButton.click()
+
+ await expect(page).toHaveURL(new RegExp(`/${otherSlug}/session`))
+
+ const header = page
+ .locator(".group\\/project")
+ .filter({ has: page.locator(`[data-action="project-menu"][data-project="${otherSlug}"]`) })
+ .first()
+ await expect(header).toContainText(otherName)
+
+ const trigger = header.locator(`[data-action="project-menu"][data-project="${otherSlug}"]`).first()
+ await expect(trigger).toHaveCount(1)
+ await trigger.focus()
+ await page.keyboard.press("Enter")
+
+ const close = page
+ .locator(projectCloseMenuSelector(otherSlug))
+ .or(page.getByRole("menuitem", { name: "Close" }))
+ .or(
+ page
+ .locator('[data-component="dropdown-menu-content"] [data-slot="dropdown-menu-item"]')
+ .filter({ hasText: "Close" }),
+ )
+ .first()
+ await expect(close).toBeVisible({ timeout: 10_000 })
+ await close.click({ force: true })
+ await expect(otherButton).toHaveCount(0)
+ } finally {
+ await cleanupTestProject(other)
+ }
+})