import type { Page } from "@playwright/test"; import { test as base } from "@playwright/test"; import prisma from "@calcom/prisma"; import type { ExpectedUrlDetails } from "../../../../playwright.config"; import { createBookingsFixture } from "../fixtures/bookings"; import { createEmbedsFixture, createGetActionFiredDetails } from "../fixtures/embeds"; import { createPaymentsFixture } from "../fixtures/payments"; import { createServersFixture } from "../fixtures/servers"; import { createUsersFixture } from "../fixtures/users"; export interface Fixtures { page: Page; users: ReturnType; bookings: ReturnType; payments: ReturnType; addEmbedListeners: ReturnType; getActionFiredDetails: ReturnType; servers: ReturnType; prisma: typeof prisma; } declare global { // eslint-disable-next-line @typescript-eslint/no-namespace namespace PlaywrightTest { //FIXME: how to restrict it to Frame only interface Matchers { toBeEmbedCalLink( calNamespace: string, // eslint-disable-next-line getActionFiredDetails: (a: { calNamespace: string; actionType: string }) => Promise, expectedUrlDetails?: ExpectedUrlDetails ): Promise; } } } /** * @see https://playwright.dev/docs/test-fixtures */ export const test = base.extend({ users: async ({ page }, use, workerInfo) => { const usersFixture = createUsersFixture(page, workerInfo); await use(usersFixture); }, bookings: async ({ page }, use) => { const bookingsFixture = createBookingsFixture(page); await use(bookingsFixture); }, payments: async ({ page }, use) => { const payemntsFixture = createPaymentsFixture(page); await use(payemntsFixture); }, addEmbedListeners: async ({ page }, use) => { const embedsFixture = createEmbedsFixture(page); await use(embedsFixture); }, getActionFiredDetails: async ({ page }, use) => { const getActionFiredDetailsFixture = createGetActionFiredDetails(page); await use(getActionFiredDetailsFixture); }, servers: async ({}, use) => { const servers = createServersFixture(); await use(servers); }, prisma: async ({}, use) => { await use(prisma); }, });