diff options
| author | Filip <[email protected]> | 2026-02-04 00:45:49 +0100 |
|---|---|---|
| committer | GitHub <[email protected]> | 2026-02-03 17:45:49 -0600 |
| commit | acac05f22eb3c23eebea3c13ed0a0f5495425384 (patch) | |
| tree | d189ec0c52436b3ed91b68f92f1a8365d4a43b7c /packages/app/e2e/fixtures.ts | |
| parent | b5a4671c648fd428425f759f9d487754b425dc75 (diff) | |
| download | opencode-acac05f22eb3c23eebea3c13ed0a0f5495425384.tar.gz opencode-acac05f22eb3c23eebea3c13ed0a0f5495425384.zip | |
refactor(e2e): faster tests (#12021)
Diffstat (limited to 'packages/app/e2e/fixtures.ts')
| -rw-r--r-- | packages/app/e2e/fixtures.ts | 57 |
1 files changed, 44 insertions, 13 deletions
diff --git a/packages/app/e2e/fixtures.ts b/packages/app/e2e/fixtures.ts index bace8cd59..ea41ed851 100644 --- a/packages/app/e2e/fixtures.ts +++ b/packages/app/e2e/fixtures.ts @@ -1,5 +1,5 @@ -import { test as base, expect } from "@playwright/test" -import { seedProjects } from "./actions" +import { test as base, expect, type Page } from "@playwright/test" +import { cleanupTestProject, createTestProject, seedProjects } from "./actions" import { promptSelector } from "./selectors" import { createSdk, dirSlug, getWorktree, sessionPath } from "./utils" @@ -8,6 +8,14 @@ export const settingsKey = "settings.v3" type TestFixtures = { sdk: ReturnType<typeof createSdk> gotoSession: (sessionID?: string) => Promise<void> + withProject: <T>( + callback: (project: { + directory: string + slug: string + gotoSession: (sessionID?: string) => Promise<void> + }) => Promise<T>, + options?: { extra?: string[] }, + ) => Promise<T> } type WorkerFixtures = { @@ -33,17 +41,7 @@ export const test = base.extend<TestFixtures, WorkerFixtures>({ await use(createSdk(directory)) }, gotoSession: async ({ page, directory }, use) => { - await seedProjects(page, { directory }) - await page.addInitScript(() => { - localStorage.setItem( - "opencode.global.dat:model", - JSON.stringify({ - recent: [{ providerID: "opencode", modelID: "big-pickle" }], - user: [], - variant: {}, - }), - ) - }) + await seedStorage(page, { directory }) const gotoSession = async (sessionID?: string) => { await page.goto(sessionPath(directory, sessionID)) @@ -51,6 +49,39 @@ export const test = base.extend<TestFixtures, WorkerFixtures>({ } await use(gotoSession) }, + withProject: async ({ page }, use) => { + await use(async (callback, options) => { + const directory = await createTestProject() + const slug = dirSlug(directory) + await seedStorage(page, { directory, extra: options?.extra }) + + const gotoSession = async (sessionID?: string) => { + await page.goto(sessionPath(directory, sessionID)) + await expect(page.locator(promptSelector)).toBeVisible() + } + + try { + await gotoSession() + return await callback({ directory, slug, gotoSession }) + } finally { + await cleanupTestProject(directory) + } + }) + }, }) +async function seedStorage(page: Page, input: { directory: string; extra?: string[] }) { + await seedProjects(page, input) + await page.addInitScript(() => { + localStorage.setItem( + "opencode.global.dat:model", + JSON.stringify({ + recent: [{ providerID: "opencode", modelID: "big-pickle" }], + user: [], + variant: {}, + }), + ) + }) +} + export { expect } |
