Просмотр исходного кода

test(interface): 接口冒烟闭环 2026-11-03 15:34 — 通过率 45% (fix=0 reg=0); 测试用例 361/386 完成(文档化219)

E2E Test Bot 1 неделя назад
Родитель
Сommit
a6a59b03c8
3 измененных файлов с 9 добавлено и 128 удалено
  1. 2 2
      INTERFACE_TEST_REPORT.md
  2. 6 125
      playwright_smoke.log
  3. 1 1
      playwright_smoke_report.md

+ 2 - 2
INTERFACE_TEST_REPORT.md

@@ -1,4 +1,4 @@
-# CFC 接口冒烟测试报告 (20261103_143836)
+# CFC 接口冒烟测试报告 (20261103_153112)
 
 - 目标: cfc.iwintrue.com  用例总数: **546**
 - 业务成功率(BIZ_OK): **249/546 = 45%**
@@ -19,7 +19,7 @@
 - 自动化用例总数(可执行 `test()`):**386**(api 层 55 / 角色分包 52 / DOM 层 279)
 - 文档化用例(设计层 TC-xxxx):**219**
 - 已完成(自动化且未被跳过):**361/386 = 93%**
-- 已实跑通过:接口冒烟 BIZ_OK **249** 端点 + API e2e 本轮 **43** 通过 / 7 failed / 3 skipped(来源 playwright_smoke.log)
+- 已实跑通过:接口冒烟 BIZ_OK **249** 端点 + API e2e 本轮 **51** 通过 / 3 failed / 3 skipped(来源 playwright_smoke.log)
 
 ### 未完成 / 未开始的原因(共 3 类)
 1. [279 项] DOM 型 E2E 无法执行(CFC-ENV-001):279 个用例已编写,但远程 cfc.iwintrue.com 为纯 Spring Boot API 后端、未部署 uni-app H5 / cfc-web 前端,浏览器型用例无法运行,未开始执行。

+ 6 - 125
playwright_smoke.log

@@ -29,127 +29,13 @@ Running 57 tests using 1 worker
 [26/57] [desktop] › e2e\api\family-member-api.spec.js:39:3 › 【API级】家庭成员管理全流程 › [场景1] 获取成员列表 - 期望返回成员数据
 [27/57] [desktop] › e2e\api\family-member-api.spec.js:46:3 › 【API级】家庭成员管理全流程 › [场景1b] 越权访问他人家庭 - 期望 403 拒绝
 [28/57] [desktop] › e2e\api\family-member-api.spec.js:54:3 › 【API级】家庭成员管理全流程 › [场景2] 添加新家庭成员 - 期望添加成功并返回完整信息
-  1) [desktop] › e2e\api\family-member-api.spec.js:54:3 › 【API级】家庭成员管理全流程 › [场景2] 添加新家庭成员 - 期望添加成功并返回完整信息 
-
-    TimeoutError: apiRequestContext.post: Timeout 60000ms exceeded.
-    Call log:
-      - → POST http://cfc.iwintrue.com/api/family/member/add
-        - user-agent: Playwright/1.61.1 (x64; windows 10.0) node/22.22
-        - accept: */*
-        - accept-encoding: gzip,deflate,br
-        - Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoicGFyZW50Iiwicm9sZXMiOlsicGFyZW50Il0sInVzZXJJZCI6ODM4NDksInN1YiI6IjgzODQ5IiwiaWF0IjoxNzkzNjg4MDU0LCJleHAiOjE3OTYyODAwNTR9.xTMUtWwBmrEhJrWqJHOwT4QWBGnKAwyCidkQxePFPbU
-        - content-type: application/json
-        - content-length: 96
-
-
-       at helpers\api.js:57
-
-      55 |   const headers = {};
-      56 |   if (token) headers.Authorization = 'Bearer ' + token;
-    > 57 |   const res = await request.post(path, { data: body || {}, headers, timeout: API_TIMEOUT_MS });
-         |                             ^
-      58 |   const raw = await res.text();
-      59 |   let json = null;
-      60 |   try {
-        at apiPost (D:\cfc\tests\e2e\helpers\api.js:57:29)
-        at createManualChild (D:\cfc\tests\e2e\api\family-member-api.spec.js:26:21)
-        at D:\cfc\tests\e2e\api\family-member-api.spec.js:55:21
-
-    Error Context: .api-artifacts\api-family-member-api-【API-a369c-场景2-添加新家庭成员---期望添加成功并返回完整信息-desktop\error-context.md
-
-
 [29/57] [desktop] › e2e\api\family-member-api.spec.js:63:3 › 【API级】家庭成员管理全流程 › [场景2b] 添加成员时昵称为空 - 期望返回错误提示
 [30/57] [desktop] › e2e\api\family-member-api.spec.js:74:3 › 【API级】家庭成员管理全流程 › [场景2c] 添加成员时辈分等级为空 - 期望返回错误提示
 [31/57] [desktop] › e2e\api\family-member-api.spec.js:85:3 › 【API级】家庭成员管理全流程 › [场景2d] 添加成员时辈分等级非法 - 期望返回错误提示
 [32/57] [desktop] › e2e\api\family-member-api.spec.js:98:3 › 【API级】家庭成员管理全流程 › [场景3] 查看家庭成员列表 - 期望返回所有成员及关系信息
-  2) [desktop] › e2e\api\family-member-api.spec.js:98:3 › 【API级】家庭成员管理全流程 › [场景3] 查看家庭成员列表 - 期望返回所有成员及关系信息 
-
-    TimeoutError: apiRequestContext.post: Timeout 60000ms exceeded.
-    Call log:
-      - → POST http://cfc.iwintrue.com/api/family/member/add
-        - user-agent: Playwright/1.61.1 (x64; windows 10.0) node/22.22
-        - accept: */*
-        - accept-encoding: gzip,deflate,br
-        - Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoicGFyZW50Iiwicm9sZXMiOlsicGFyZW50Il0sInVzZXJJZCI6ODM4NTEsInN1YiI6IjgzODUxIiwiaWF0IjoxNzkzNjg4MTIxLCJleHAiOjE3OTYyODAxMjF9.4xoxuQ74CToR025qLIX8n7NGalsyqKj0J_SHKlQWt6U
-        - content-type: application/json
-        - content-length: 97
-
-
-       at helpers\api.js:57
-
-      55 |   const headers = {};
-      56 |   if (token) headers.Authorization = 'Bearer ' + token;
-    > 57 |   const res = await request.post(path, { data: body || {}, headers, timeout: API_TIMEOUT_MS });
-         |                             ^
-      58 |   const raw = await res.text();
-      59 |   let json = null;
-      60 |   try {
-        at apiPost (D:\cfc\tests\e2e\helpers\api.js:57:29)
-        at createManualChild (D:\cfc\tests\e2e\api\family-member-api.spec.js:26:21)
-        at D:\cfc\tests\e2e\api\family-member-api.spec.js:99:21
-
-    Error Context: .api-artifacts\api-family-member-api-【API-6b102-景3-查看家庭成员列表---期望返回所有成员及关系信息-desktop\error-context.md
-
-
 [33/57] [desktop] › e2e\api\family-member-api.spec.js:120:3 › 【API级】家庭成员管理全流程 › [场景4] 更新成员关系/昵称 - 期望更新成功并返回新信息
 [34/57] [desktop] › e2e\api\family-member-api.spec.js:138:3 › 【API级】家庭成员管理全流程 › [场景4c] 已知缺陷复现 - nickname 未生效但 gender/birthday 生效
-  3) [desktop] › e2e\api\family-member-api.spec.js:138:3 › 【API级】家庭成员管理全流程 › [场景4c] 已知缺陷复现 - nickname 未生效但 gender/birthday 生效 
-
-    TimeoutError: apiRequestContext.post: Timeout 60000ms exceeded.
-    Call log:
-      - → POST http://cfc.iwintrue.com/api/family/member/add
-        - user-agent: Playwright/1.61.1 (x64; windows 10.0) node/22.22
-        - accept: */*
-        - accept-encoding: gzip,deflate,br
-        - Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoicGFyZW50Iiwicm9sZXMiOlsicGFyZW50Il0sInVzZXJJZCI6ODM4NTMsInN1YiI6IjgzODUzIiwiaWF0IjoxNzkzNjg4MTg5LCJleHAiOjE3OTYyODAxODl9.XYb3xmgO6NcUt41FX7YhHoS5G4yqb9sh36vclFatUcE
-        - content-type: application/json
-        - content-length: 97
-
-
-       at helpers\api.js:57
-
-      55 |   const headers = {};
-      56 |   if (token) headers.Authorization = 'Bearer ' + token;
-    > 57 |   const res = await request.post(path, { data: body || {}, headers, timeout: API_TIMEOUT_MS });
-         |                             ^
-      58 |   const raw = await res.text();
-      59 |   let json = null;
-      60 |   try {
-        at apiPost (D:\cfc\tests\e2e\helpers\api.js:57:29)
-        at createManualChild (D:\cfc\tests\e2e\api\family-member-api.spec.js:26:21)
-        at D:\cfc\tests\e2e\api\family-member-api.spec.js:140:21
-
-    Error Context: .api-artifacts\api-family-member-api-【API-fbc18-ame-未生效但-gender-birthday-生效-desktop\error-context.md
-
-
 [35/57] [desktop] › e2e\api\family-member-api.spec.js:158:3 › 【API级】家庭成员管理全流程 › [场景5] 切换到成员视角 - 期望返回切换凭证
-  4) [desktop] › e2e\api\family-member-api.spec.js:158:3 › 【API级】家庭成员管理全流程 › [场景5] 切换到成员视角 - 期望返回切换凭证 
-
-    TimeoutError: apiRequestContext.post: Timeout 15000ms exceeded.
-    Call log:
-      - → POST http://cfc.iwintrue.com/api/auth/direct-register
-        - user-agent: Playwright/1.61.1 (x64; windows 10.0) node/22.22
-        - accept: */*
-        - accept-encoding: gzip,deflate,br
-        - content-type: application/json
-        - content-length: 62
-
-
-       at helpers\api.js:28
-
-      26 |  */
-      27 | async function registerRole(request, role, nickname) {
-    > 28 |   const res = await request.post('/api/auth/direct-register', {
-         |                             ^
-      29 |     data: { phone: randPhone(), role, nickname: nickname || 'QA-' + role },
-      30 |   });
-      31 |   const body = await res.json().catch(() => ({}));
-        at registerRole (D:\cfc\tests\e2e\helpers\api.js:28:29)
-        at D:\cfc\tests\e2e\api\family-member-api.spec.js:20:17
-
-    Error Context: .api-artifacts\api-family-member-api-【API级】家庭成员管理全流程-场景5-切换到成员视角---期望返回切换凭证-desktop\error-context.md
-
-
 [36/57] [desktop] › e2e\api\family-member-api.spec.js:167:3 › 【API级】家庭成员管理全流程 › [场景5b] 切换到本人视角 - 期望返回错误提示
 [37/57] [desktop] › e2e\api\family-member-api.spec.js:179:3 › 【API级】家庭成员管理全流程 › [场景6] 移除家庭成员 - 期望成员从家庭中移除
 [38/57] [desktop] › e2e\api\family-member-api.spec.js:192:3 › 【API级】家庭成员管理全流程 › [场景6b] 非管理员尝试踢人 - 期望权限不足拒绝
@@ -161,7 +47,7 @@ Running 57 tests using 1 worker
 [限流] 状态分布=[200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200] 其中429=0
 
 [43/57] [desktop] › e2e\api\nonfunc-perf-compat.spec.js:92:1 › [TC-P-N02/X-N01] 并发不串数据:并行 AI 请求各自独立响应
-  5) [desktop] › e2e\api\nonfunc-perf-compat.spec.js:92:1 › [TC-P-N02/X-N01] 并发不串数据:并行 AI 请求各自独立响应 ─
+  1) [desktop] › e2e\api\nonfunc-perf-compat.spec.js:92:1 › [TC-P-N02/X-N01] 并发不串数据:并行 AI 请求各自独立响应 ─
 
     Error: 第0个请求返回异常: {"code":46003,"message":"该功能为会员专享,请先开通会员","data":null}
 
@@ -184,7 +70,7 @@ Running 57 tests using 1 worker
 
 [44/57] [desktop] › e2e\api\nonfunc-perf-compat.spec.js:106:1 › [响应时间基线] 已登录家庭列表单请求耗时冒烟 ≤ 8s
 [desktop] › e2e\api\nonfunc-perf-compat.spec.js:106:1 › [响应时间基线] 已登录家庭列表单请求耗时冒烟 ≤ 8s
-[耗时] 家庭列表 65ms
+[耗时] 家庭列表 75ms
 
 [45/57] [desktop] › e2e\api\nonfunc-perf-compat.spec.js:117:6 › [TC-C-N01/X-N04] 任务打卡幂等:重复提交不重复计分(需任务流夹具)
 [46/57] [desktop] › e2e\api\nonfunc-perf-compat.spec.js:122:6 › [TC-X-N03] 活动名额并发不超卖:100 名额 / 瞬时 500 请求(需活动夹具 + 压测授权)
@@ -193,7 +79,7 @@ Running 57 tests using 1 worker
 [49/57] [desktop] › e2e\api\nonfunc-security.spec.js:60:3 › 非功能/安全接口冒烟 › [TC-G-N04] 未授权调用 AI 健康教练被拒(401/403)
 [50/57] [desktop] › e2e\api\nonfunc-security.spec.js:66:3 › 非功能/安全接口冒烟 › [TC-P-N09] IDOR:越权访问他人家庭成员列表 → 403
 [51/57] [desktop] › e2e\api\nonfunc-security.spec.js:75:3 › 非功能/安全接口冒烟 › [TC-A-N05] 非管理员访问后台接口被拒(401/403)
-  6) [desktop] › e2e\api\nonfunc-security.spec.js:75:3 › 非功能/安全接口冒烟 › [TC-A-N05] 非管理员访问后台接口被拒(401/403) 
+  2) [desktop] › e2e\api\nonfunc-security.spec.js:75:3 › 非功能/安全接口冒烟 › [TC-A-N05] 非管理员访问后台接口被拒(401/403) 
 
     Error: 后台接口未授权应 401/403,实际 code=500 msg=手机号和验证码不能为空
 
@@ -219,7 +105,7 @@ Running 57 tests using 1 worker
 [55/57] [desktop] › e2e\api\nonfunc-security.spec.js:101:3 › 非功能/安全接口冒烟 › [TC-P-N10] AI 健康教练 XSS:query 注入脚本不回显原始脚本且不错 500
 [56/57] [desktop] › e2e\api\nonfunc-security.spec.js:109:3 › 非功能/安全接口冒烟 › [TC-A-N06] 活动反馈存储型 XSS:提交含脚本 comment,列表不回显原始脚本
 [57/57] [desktop] › e2e\api\nonfunc-security.spec.js:121:3 › 非功能/安全接口冒烟 › [TC-P-N11] 报告上传非 PDF/恶意内容被拒(非 200)
-  7) [desktop] › e2e\api\nonfunc-security.spec.js:121:3 › 非功能/安全接口冒烟 › [TC-P-N11] 报告上传非 PDF/恶意内容被拒(非 200) 
+  3) [desktop] › e2e\api\nonfunc-security.spec.js:121:3 › 非功能/安全接口冒烟 › [TC-P-N11] 报告上传非 PDF/恶意内容被拒(非 200) 
 
     Error: expect(received).toBeTruthy()
 
@@ -237,14 +123,9 @@ Running 57 tests using 1 worker
     Error Context: .api-artifacts\api-nonfunc-security-非功能-安-18c8a-N11-报告上传非-PDF-恶意内容被拒-非-200--desktop\error-context.md
 
 
-  7 failed
-    [desktop] › e2e\api\family-member-api.spec.js:54:3 › 【API级】家庭成员管理全流程 › [场景2] 添加新家庭成员 - 期望添加成功并返回完整信息 
-    [desktop] › e2e\api\family-member-api.spec.js:98:3 › 【API级】家庭成员管理全流程 › [场景3] 查看家庭成员列表 - 期望返回所有成员及关系信息 
-    [desktop] › e2e\api\family-member-api.spec.js:138:3 › 【API级】家庭成员管理全流程 › [场景4c] 已知缺陷复现 - nickname 未生效但 gender/birthday 生效 
-    [desktop] › e2e\api\family-member-api.spec.js:158:3 › 【API级】家庭成员管理全流程 › [场景5] 切换到成员视角 - 期望返回切换凭证 
+  3 failed
     [desktop] › e2e\api\nonfunc-perf-compat.spec.js:92:1 › [TC-P-N02/X-N01] 并发不串数据:并行 AI 请求各自独立响应 ──
     [desktop] › e2e\api\nonfunc-security.spec.js:75:3 › 非功能/安全接口冒烟 › [TC-A-N05] 非管理员访问后台接口被拒(401/403) 
     [desktop] › e2e\api\nonfunc-security.spec.js:121:3 › 非功能/安全接口冒烟 › [TC-P-N11] 报告上传非 PDF/恶意内容被拒(非 200) 
   3 skipped
-  4 did not run
-  43 passed (4.6m)
+  51 passed (55.9s)

+ 1 - 1
playwright_smoke_report.md

@@ -1,7 +1,7 @@
 
 ## Playwright E2E 冒烟(api 层,独立,不阻断主闭环)
 - 执行器: /d/cfc/tests/node_modules/.bin/playwright test -c playwright.config.api.js --project=desktop
-- 结果: **43 passed / 7 failed / 3 skipped**
+- 结果: **51 passed / 3 failed / 3 skipped**
 - 覆盖: tests/e2e/api/*.spec.js(含 nonfunc-security 安全契约、nonfunc-perf-compat 性能兼容)
 - 说明: 红用例=已知后端缺口(权限提升/开放端点/上传未校验/缺鉴权过滤器),作持续告警;失败不阻断本闭环。
 - 明细: /d/cfc/playwright_smoke.log