import { APIRequestContext } from '@playwright/test' import { API_BASE, apiLogin, authHeaders } from './auth' export interface CreatedIssue { id: number issueNo: string title: string } export async function createIssueViaApi( request: APIRequestContext, overrides: Record = {}, ): Promise<{ issue: CreatedIssue; token: string }> { const token = (await apiLogin(request)).accessToken const payload = { title: `E2E-${Date.now()}-自动化测试`, description: 'Playwright 自动化测试创建的指摘', phase: '编码', subProject: '后端开发', category: '功能缺陷', impactLevel: '中', assigneeId: 2, reviewerId: 1, priority: 'medium', status: 'draft', departmentId: 2, ...overrides, } const res = await request.post(`${API_BASE}/issues`, { data: payload, headers: authHeaders(token), }) if (!res.ok()) { throw new Error(`create issue failed: ${res.status()} ${await res.text()}`) } const json = await res.json() return { issue: json.data, token } } export async function deleteIssueViaApi(request: APIRequestContext, issueId: number, token: string) { const res = await request.delete(`${API_BASE}/issues/${issueId}`, { headers: authHeaders(token) }) if (!res.ok()) { throw new Error(`delete issue failed: ${res.status()} ${await res.text()}`) } } export async function getIssueViaApi(request: APIRequestContext, issueId: number, token: string) { const res = await request.get(`${API_BASE}/issues/${issueId}`, { headers: authHeaders(token) }) return res.ok() ? (await res.json()).data : null } export async function changeStatusViaApi( request: APIRequestContext, issueId: number, token: string, status: string, remark = 'E2E 状态变更', ) { const res = await request.patch(`${API_BASE}/issues/${issueId}/status`, { data: { status, remark }, headers: authHeaders(token), }) return res } export async function getDashboardViaApi(request: APIRequestContext, token: string) { const res = await request.get(`${API_BASE}/dashboard/stats`, { headers: authHeaders(token) }) return res.ok() ? (await res.json()).data : null }