import type { Page } from "@playwright/test"; import { apiEnvelope } from "../data/common"; import { emailLoginResponse, guestLoginResponse, refreshedEmailLoginResponse, refreshedGuestLoginResponse } from "../data/auth"; export interface AuthMockState { chatSendTokenRefreshFlow: boolean; isChatSendTokenExpired: () => boolean; } export async function registerAuthMocks(page: Page, state: AuthMockState) { await page.route("**/api/auth/guest", async (route) => { const response = state.chatSendTokenRefreshFlow && state.isChatSendTokenExpired() ? refreshedGuestLoginResponse : guestLoginResponse; await route.fulfill({ json: apiEnvelope(response) }); }); await page.route("**/api/auth/login", async (route) => { await route.fulfill({ json: apiEnvelope(emailLoginResponse) }); }); await page.route("**/api/auth/refresh", async (route) => { await route.fulfill({ json: apiEnvelope(refreshedEmailLoginResponse) }); }); await page.route("**/api/auth/logout", async (route) => { await route.fulfill({ json: apiEnvelope(null) }); }); }