punimtag/e2e/fixtures.ts
ilia 96351288f0
All checks were successful
CI / skip-ci-check (push) Successful in 4s
CI / docker-ci (push) Successful in 6s
CI / secret-scan (push) Successful in 11s
CI / admin-unit (push) Successful in 1m23s
CI / viewer-unit (push) Successful in 2m2s
CI / e2e (push) Successful in 2m43s
test: playkit v0.3.1 adoption, Zod widening, PROD smoke, NextAuth write gates (#68)
2026-07-14 22:24:07 -05:00

61 lines
2.3 KiB
TypeScript

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';
import { ManageUsersPanel } from './pages/ManageUsersPanel';
const runtime = createPlaykitRuntime(playkitEnvFromProcess());
type PunimtagFixtures = PlaykitFixtures & {
loginPage: LoginPage;
accountMenu: AccountMenu;
registerPage: RegisterPage;
manageUsersPanel: ManageUsersPanel;
e2eCredentials: { email: string; password: string } | null;
e2eViewerCredentials: { email: string; password: string } | null;
mail: MailInbox | null;
};
export const test = base.extend<PunimtagFixtures>({
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)),
manageUsersPanel: async ({ page, playkitConfig }, use) =>
use(new ManageUsersPanel(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);
},
// NextAuth auth-DB viewer (hasWriteAccess=false) — distinct from
// E2E_API_VIEWER_* (FastAPI bearer). See docs/hardening/SECRETS.md (ansible).
e2eViewerCredentials: async ({}, use) => {
const email = process.env.E2E_VIEWER_EMAIL || '';
const password = process.env.E2E_VIEWER_PASSWORD || '';
await use(email && password ? { email, password } : null);
},
mail: async ({ playkitLog }, use) => {
await use(createMailInbox(process.env, playkitLog.child({ component: 'mail' })));
},
});
export { expect };