diff options
| author | Filip <[email protected]> | 2026-01-30 21:59:37 +0100 |
|---|---|---|
| committer | opencode <[email protected]> | 2026-01-30 21:06:48 +0000 |
| commit | 77fa8ddc8828b5ebcc306621e6669c192d1492fe (patch) | |
| tree | 000f7d4194a86e0198d0047e24c527fffda55ecb /packages/app/e2e/projects/projects-close.spec.ts | |
| parent | 4a56491e42c07e30b95238a06c9b9175e4763444 (diff) | |
| download | opencode-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.ts | 77 |
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) + } +}) |
