58 lines
1.4 KiB
TypeScript
58 lines
1.4 KiB
TypeScript
import { test as base, expect } from "@playwright/test"
|
|
import { seedProjects } from "./actions"
|
|
import { promptSelector } from "./selectors"
|
|
import { createSdk, dirSlug, getWorktree, sessionPath } from "./utils"
|
|
|
|
|
|
export const settingsKey = "settings.v3"
|
|
|
|
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) => {
|
|
await seedProjects(page, { directory })
|
|
await page.addInitScript(() => {
|
|
localStorage.setItem(
|
|
"opencode.global.dat:model",
|
|
JSON.stringify({
|
|
recent: [{ providerID: "opencode", modelID: "big-pickle" }],
|
|
user: [],
|
|
variant: {},
|
|
}),
|
|
)
|
|
})
|
|
|
|
const gotoSession = async (sessionID?: string) => {
|
|
await page.goto(sessionPath(directory, sessionID))
|
|
await expect(page.locator(promptSelector)).toBeVisible()
|
|
}
|
|
await use(gotoSession)
|
|
},
|
|
})
|
|
|
|
export { expect }
|