/** * API 级 e2e 冒烟(远程后端 cfc.iwintrue.com) * ================================================================ * 目的:一条命令自检「API 级 e2e 链路」是否健康: * 自注册拿 token → 调核心业务接口 → 断言 code=200。 * 运行:npx playwright test -c playwright.config.api.js --project=desktop */ const { test, expect } = require('@playwright/test'); const { registerRole, apiPost } = require('../helpers/api'); test.describe('API级冒烟(远程后端)', () => { let ctx; test.beforeAll(async ({ request }) => { ctx = await registerRole(request, 'parent', 'QA-SMOKE'); }); test('自注册链路可用(拿到有效 token)', async () => { expect(ctx.token.length).toBeGreaterThan(0); expect(ctx.userId).toBeTruthy(); expect(ctx.familyId).toBeTruthy(); }); test('家庭成员列表接口可调用 (code=200)', async ({ request }) => { const r = await apiPost(request, '/api/family/member/list', {}, ctx.token); expect(r.code).toBe(200); expect(Array.isArray(r.data)).toBeTruthy(); }); test('能量概览接口可调用 (code=200)', async ({ request }) => { const r = await apiPost(request, '/api/energy/overview', {}, ctx.token); expect(r.code).toBe(200); expect(r.data).toBeTruthy(); }); test('成员列表参数校验生效(越权家庭 → 403)', async ({ request }) => { const r = await apiPost(request, '/api/family/member/list', { familyId: 999999999 }, ctx.token); expect(r.code).toBe(403); expect(String(r.message)).toContain('无权访问'); }); });