import type { APIRequestContext } from "@playwright/test"; const FIXED_CAPTCHA = process.env.E2E_FIXED_CAPTCHA || "test1234"; export interface CaptchaChallenge { captchaId: string; imageSvg: string; } /** * 获取验证码 challenge — 调用公开 API */ export async function fetchCaptcha( request: APIRequestContext, baseURL: string, ): Promise { const res = await request.get(`${baseURL}/api/auth/captcha`); const json = await res.json(); return { captchaId: json.data.captchaId, imageSvg: json.data.imageSvg, }; } /** * 通过 API 登录,返回登录后的 request context(带 session cookie) */ export async function loginViaAPI( request: APIRequestContext, baseURL: string, username: string, password: string, ): Promise { const captcha = await fetchCaptcha(request, baseURL); await request.post(`${baseURL}/api/auth/login`, { data: { username, password, captchaId: captcha.captchaId, captchaAnswer: FIXED_CAPTCHA, }, }); } /** * 通过 API 注册 */ export async function registerViaAPI( request: APIRequestContext, baseURL: string, username: string, password: string, ): Promise { const captcha = await fetchCaptcha(request, baseURL); await request.post(`${baseURL}/api/auth/register`, { data: { username, password, captchaId: captcha.captchaId, captchaAnswer: FIXED_CAPTCHA, }, }); } export { FIXED_CAPTCHA };