diff options
| author | Adam <[email protected]> | 2026-01-18 05:43:34 -0600 |
|---|---|---|
| committer | Adam <[email protected]> | 2026-01-19 09:03:52 -0600 |
| commit | dd19c3d8f2cfbb7d1b157bbe6f5a9a969cb6c239 (patch) | |
| tree | c472127b923b308bae6619fde93e67210aaeb229 /packages/app/e2e/utils.ts | |
| parent | f5eb90514aca136e0aa2f48954f71d51b52e2b16 (diff) | |
| download | opencode-dd19c3d8f2cfbb7d1b157bbe6f5a9a969cb6c239.tar.gz opencode-dd19c3d8f2cfbb7d1b157bbe6f5a9a969cb6c239.zip | |
test(app): e2e utilities
Diffstat (limited to 'packages/app/e2e/utils.ts')
| -rw-r--r-- | packages/app/e2e/utils.ts | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/packages/app/e2e/utils.ts b/packages/app/e2e/utils.ts new file mode 100644 index 000000000..c18b36802 --- /dev/null +++ b/packages/app/e2e/utils.ts @@ -0,0 +1,45 @@ +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" + +export const serverUrl = `http://${serverHost}:${serverPort}` +export const serverName = `${serverHost}:${serverPort}` + +export const modKey = process.platform === "darwin" ? "Meta" : "Control" +export const terminalToggleKey = "Control+Backquote" + +export const promptSelector = '[data-component="prompt-input"]' +export const terminalSelector = '[data-component="terminal"]' + +export function createSdk(directory?: string) { + return createOpencodeClient({ baseUrl: serverUrl, directory, throwOnError: true }) +} + +export async function getWorktree() { + const sdk = createSdk() + const result = await sdk.path.get() + const data = result.data + if (!data?.worktree) throw new Error(`Failed to resolve a worktree from ${serverUrl}/path`) + return data.worktree +} + +export function dirSlug(directory: string) { + return base64Encode(directory) +} + +export function dirPath(directory: string) { + return `/${dirSlug(directory)}` +} + +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) } +} |
