summaryrefslogtreecommitdiffhomepage
path: root/packages
diff options
context:
space:
mode:
authorAdam <[email protected]>2026-01-19 05:22:35 -0600
committerAdam <[email protected]>2026-01-19 09:03:52 -0600
commit182c43a78f55d4c22440c7256cbf4ff464e01c6e (patch)
treedc9e7ecfc0f15192a69fc18c0ae08af675d4bde0 /packages
parentf1daf3b4308cf85a3f61fb2f1d4b3f55316487b1 (diff)
downloadopencode-182c43a78f55d4c22440c7256cbf4ff464e01c6e.tar.gz
opencode-182c43a78f55d4c22440c7256cbf4ff464e01c6e.zip
chore: cleanup
Diffstat (limited to 'packages')
-rw-r--r--packages/app/e2e/fixtures.ts40
-rw-r--r--packages/app/e2e/home.spec.ts2
-rw-r--r--packages/app/e2e/navigation.spec.ts10
-rw-r--r--packages/app/e2e/palette.spec.ts9
-rw-r--r--packages/app/e2e/session.spec.ts12
-rw-r--r--packages/app/e2e/terminal.spec.ts9
-rw-r--r--packages/app/e2e/utils.ts7
7 files changed, 57 insertions, 32 deletions
diff --git a/packages/app/e2e/fixtures.ts b/packages/app/e2e/fixtures.ts
new file mode 100644
index 000000000..721d60049
--- /dev/null
+++ b/packages/app/e2e/fixtures.ts
@@ -0,0 +1,40 @@
+import { test as base, expect } from "@playwright/test"
+import { createSdk, dirSlug, getWorktree, promptSelector, sessionPath } from "./utils"
+
+type TestFixtures = {
+ sdk: ReturnType<typeof createSdk>
+ gotoSession: (sessionID?: string) => Promise<void>
+}
+
+type WorkerFixtures = {
+ directory: string
+ slug: string
+}
+
+export const test = base.extend<TestFixtures, WorkerFixtures>({
+ directory: [
+ async ({}, use) => {
+ const directory = await getWorktree()
+ await use(directory)
+ },
+ { scope: "worker" },
+ ],
+ slug: [
+ async ({ directory }, use) => {
+ await use(dirSlug(directory))
+ },
+ { scope: "worker" },
+ ],
+ sdk: async ({ directory }, use) => {
+ await use(createSdk(directory))
+ },
+ gotoSession: async ({ page, directory }, use) => {
+ const gotoSession = async (sessionID?: string) => {
+ await page.goto(sessionPath(directory, sessionID))
+ await expect(page.locator(promptSelector)).toBeVisible()
+ }
+ await use(gotoSession)
+ },
+})
+
+export { expect }
diff --git a/packages/app/e2e/home.spec.ts b/packages/app/e2e/home.spec.ts
index 5bb701076..c6fb0e3b0 100644
--- a/packages/app/e2e/home.spec.ts
+++ b/packages/app/e2e/home.spec.ts
@@ -1,4 +1,4 @@
-import { test, expect } from "@playwright/test"
+import { test, expect } from "./fixtures"
import { serverName } from "./utils"
test("home renders and shows core entrypoints", async ({ page }) => {
diff --git a/packages/app/e2e/navigation.spec.ts b/packages/app/e2e/navigation.spec.ts
index 4d0d3b2b9..76923af6e 100644
--- a/packages/app/e2e/navigation.spec.ts
+++ b/packages/app/e2e/navigation.spec.ts
@@ -1,11 +1,9 @@
-import { test, expect } from "@playwright/test"
-import { dirPath, dirSlug, getWorktree, promptSelector } from "./utils"
-
-test("project route redirects to /session", async ({ page }) => {
- const directory = await getWorktree()
- const slug = dirSlug(directory)
+import { test, expect } from "./fixtures"
+import { dirPath, promptSelector } from "./utils"
+test("project route redirects to /session", async ({ page, directory, slug }) => {
await page.goto(dirPath(directory))
+
await expect(page).toHaveURL(new RegExp(`/${slug}/session`))
await expect(page.locator(promptSelector)).toBeVisible()
})
diff --git a/packages/app/e2e/palette.spec.ts b/packages/app/e2e/palette.spec.ts
index bad09aab9..617c55ac1 100644
--- a/packages/app/e2e/palette.spec.ts
+++ b/packages/app/e2e/palette.spec.ts
@@ -1,9 +1,8 @@
-import { test, expect } from "@playwright/test"
-import { gotoSession, modKey, promptSelector } from "./utils"
+import { test, expect } from "./fixtures"
+import { modKey } from "./utils"
-test("search palette opens and closes", async ({ page }) => {
- await gotoSession(page)
- await expect(page.locator(promptSelector)).toBeVisible()
+test("search palette opens and closes", async ({ page, gotoSession }) => {
+ await gotoSession()
await page.keyboard.press(`${modKey}+P`)
diff --git a/packages/app/e2e/session.spec.ts b/packages/app/e2e/session.spec.ts
index d44736a4f..19e25a421 100644
--- a/packages/app/e2e/session.spec.ts
+++ b/packages/app/e2e/session.spec.ts
@@ -1,9 +1,7 @@
-import { test, expect } from "@playwright/test"
-import { createSdk, getWorktree, promptSelector, sessionPath } from "./utils"
+import { test, expect } from "./fixtures"
+import { promptSelector } from "./utils"
-test("can open an existing session and type into the prompt", async ({ page }) => {
- const directory = await getWorktree()
- const sdk = createSdk(directory)
+test("can open an existing session and type into the prompt", async ({ page, sdk, gotoSession }) => {
const title = `e2e smoke ${Date.now()}`
const created = await sdk.session.create({ title }).then((r) => r.data)
@@ -11,11 +9,9 @@ test("can open an existing session and type into the prompt", async ({ page }) =
const sessionID = created.id
try {
- await page.goto(sessionPath(directory, sessionID))
+ await gotoSession(sessionID)
const prompt = page.locator(promptSelector)
- await expect(prompt).toBeVisible()
-
await prompt.click()
await page.keyboard.type("hello from e2e")
await expect(prompt).toContainText("hello from e2e")
diff --git a/packages/app/e2e/terminal.spec.ts b/packages/app/e2e/terminal.spec.ts
index 8f90a3c0c..fc558b632 100644
--- a/packages/app/e2e/terminal.spec.ts
+++ b/packages/app/e2e/terminal.spec.ts
@@ -1,9 +1,8 @@
-import { test, expect } from "@playwright/test"
-import { gotoSession, promptSelector, terminalSelector, terminalToggleKey } from "./utils"
+import { test, expect } from "./fixtures"
+import { terminalSelector, terminalToggleKey } from "./utils"
-test("terminal panel can be toggled", async ({ page }) => {
- await gotoSession(page)
- await expect(page.locator(promptSelector)).toBeVisible()
+test("terminal panel can be toggled", async ({ page, gotoSession }) => {
+ await gotoSession()
const terminal = page.locator(terminalSelector)
const initiallyOpen = await terminal.isVisible()
diff --git a/packages/app/e2e/utils.ts b/packages/app/e2e/utils.ts
index c18b36802..eb0395950 100644
--- a/packages/app/e2e/utils.ts
+++ b/packages/app/e2e/utils.ts
@@ -1,6 +1,5 @@
import { createOpencodeClient } from "@opencode-ai/sdk/v2/client"
import { base64Encode } from "@opencode-ai/util/encode"
-import type { Page } from "@playwright/test"
export const serverHost = process.env.PLAYWRIGHT_SERVER_HOST ?? "localhost"
export const serverPort = process.env.PLAYWRIGHT_SERVER_PORT ?? "4096"
@@ -37,9 +36,3 @@ export function dirPath(directory: string) {
export function sessionPath(directory: string, sessionID?: string) {
return `${dirPath(directory)}/session${sessionID ? `/${sessionID}` : ""}`
}
-
-export async function gotoSession(page: Page, sessionID?: string) {
- const directory = await getWorktree()
- await page.goto(sessionPath(directory, sessionID))
- return { directory, slug: dirSlug(directory) }
-}