import { test as base, expect } from '@playwright/test'; import { createPlaykitRuntime, createMailInbox, type PlaykitFixtures, type MailInbox, } from '@levkin/playkit'; import { playkitEnvFromProcess } from './env-defaults'; import { LoginPage } from './pages/LoginPage'; import { AccountMenu } from './pages/AccountMenu'; import { RegisterPage } from './pages/RegisterPage'; const runtime = createPlaykitRuntime(playkitEnvFromProcess()); type PunimtagFixtures = PlaykitFixtures & { loginPage: LoginPage; accountMenu: AccountMenu; registerPage: RegisterPage; e2eCredentials: { email: string; password: string } | null; mail: MailInbox | null; }; export const test = base.extend({ playkitConfig: async ({}, use) => use(runtime.playkitConfig), playkitLog: async ({}, use) => use(runtime.playkitLog), api: async ({}, use) => use(runtime.api), timings: async ({}, use) => use(runtime.timings), loginPage: async ({ page, playkitConfig }, use) => use(new LoginPage(page, playkitConfig.baseUrl)), accountMenu: async ({ page, playkitConfig }, use) => use(new AccountMenu(page, playkitConfig.baseUrl)), registerPage: async ({ page, playkitConfig }, use) => use(new RegisterPage(page, playkitConfig.baseUrl)), e2eCredentials: async ({}, use) => { const email = process.env.E2E_ADMIN_EMAIL || process.env.E2E_EMAIL || ''; const password = process.env.E2E_ADMIN_PASSWORD || process.env.E2E_PASSWORD || ''; await use(email && password ? { email, password } : null); }, mail: async ({ playkitLog }, use) => { await use(createMailInbox(process.env, playkitLog.child({ component: 'mail' }))); }, }); export { expect };