fixtures.ts 1020 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. import { test as base, expect } from "@playwright/test"
  2. import { createSdk, dirSlug, getWorktree, promptSelector, sessionPath } from "./utils"
  3. type TestFixtures = {
  4. sdk: ReturnType<typeof createSdk>
  5. gotoSession: (sessionID?: string) => Promise<void>
  6. }
  7. type WorkerFixtures = {
  8. directory: string
  9. slug: string
  10. }
  11. export const test = base.extend<TestFixtures, WorkerFixtures>({
  12. directory: [
  13. async ({}, use) => {
  14. const directory = await getWorktree()
  15. await use(directory)
  16. },
  17. { scope: "worker" },
  18. ],
  19. slug: [
  20. async ({ directory }, use) => {
  21. await use(dirSlug(directory))
  22. },
  23. { scope: "worker" },
  24. ],
  25. sdk: async ({ directory }, use) => {
  26. await use(createSdk(directory))
  27. },
  28. gotoSession: async ({ page, directory }, use) => {
  29. const gotoSession = async (sessionID?: string) => {
  30. await page.goto(sessionPath(directory, sessionID))
  31. await expect(page.locator(promptSelector)).toBeVisible()
  32. }
  33. await use(gotoSession)
  34. },
  35. })
  36. export { expect }