═══════════════════════════════════════════════ [2026-03-03 10:20:50] ▶ 阶段 0 — 基线确认(运行回归测试,记录当前失败情况) ═══════════════════════════════════════════════ Running 10 tests using 1 worker ✘ 1 [mobile-chrome] › tests/e2e/bug-regression.spec.ts:114:5 › TC-B01a 未登录点击打卡跳转登录页 (400ms) ✘ 2 [mobile-chrome] › tests/e2e/bug-regression.spec.ts:114:5 › TC-B01a 未登录点击打卡跳转登录页 (retry #1) (357ms) [PageError] Failed to read the 'localStorage' property from 'Window': Access is denied for this document. ✘ 3 [mobile-chrome] › tests/e2e/bug-regression.spec.ts:134:5 › TC-B01b 登录后第一次打卡成功且同一天第二次仅允许一次 (381ms) [PageError] Failed to read the 'localStorage' property from 'Window': Access is denied for this document. ✘ 4 [mobile-chrome] › tests/e2e/bug-regression.spec.ts:134:5 › TC-B01b 登录后第一次打卡成功且同一天第二次仅允许一次 (retry #1) (318ms) [PageError] Failed to read the 'localStorage' property from 'Window': Access is denied for this document. ✘ 5 [mobile-chrome] › tests/e2e/bug-regression.spec.ts:189:5 › TC-B02 计算结果页 Tab 切换选中状态清晰 (369ms) [PageError] Failed to read the 'localStorage' property from 'Window': Access is denied for this document. ✘ 6 [mobile-chrome] › tests/e2e/bug-regression.spec.ts:189:5 › TC-B02 计算结果页 Tab 切换选中状态清晰 (retry #1) (402ms) [PageError] Failed to read the 'localStorage' property from 'Window': Access is denied for this document. ✘ 7 [mobile-chrome] › tests/e2e/bug-regression.spec.ts:256:5 › TC-B03 食物列表每条目展示图片与营养信息 (397ms) [PageError] Failed to read the 'localStorage' property from 'Window': Access is denied for this document. ✘ 8 [mobile-chrome] › tests/e2e/bug-regression.spec.ts:256:5 › TC-B03 食物列表每条目展示图片与营养信息 (retry #1) (389ms) [PageError] Failed to read the 'localStorage' property from 'Window': Access is denied for this document. ✘ 9 [mobile-chrome] › tests/e2e/bug-regression.spec.ts:295:5 › TC-B04 食物详情页正常加载内容 (382ms) [PageError] Failed to read the 'localStorage' property from 'Window': Access is denied for this document. ✘ 10 [mobile-chrome] › tests/e2e/bug-regression.spec.ts:295:5 › TC-B04 食物详情页正常加载内容 (retry #1) (377ms) [PageError] Failed to read the 'localStorage' property from 'Window': Access is denied for this document. ✘ 11 [mobile-chrome] › tests/e2e/bug-regression.spec.ts:329:5 › TC-B05 AI针对不同问题返回差异化回复 (387ms) [PageError] Failed to read the 'localStorage' property from 'Window': Access is denied for this document. ✘ 12 [mobile-chrome] › tests/e2e/bug-regression.spec.ts:329:5 › TC-B05 AI针对不同问题返回差异化回复 (retry #1) (381ms) [PageError] Failed to read the 'localStorage' property from 'Window': Access is denied for this document. ✘ 13 [mobile-chrome] › tests/e2e/bug-regression.spec.ts:371:5 › TC-B06 健康知识与营养知识名称统一性 (316ms) [PageError] Failed to read the 'localStorage' property from 'Window': Access is denied for this document. ✘ 14 [mobile-chrome] › tests/e2e/bug-regression.spec.ts:371:5 › TC-B06 健康知识与营养知识名称统一性 (retry #1) (397ms) [PageError] Failed to read the 'localStorage' property from 'Window': Access is denied for this document. ✘ 15 [mobile-chrome] › tests/e2e/bug-regression.spec.ts:405:5 › TC-B07 饮食指南和科普文章详情页有正常内容 (386ms) [PageError] Failed to read the 'localStorage' property from 'Window': Access is denied for this document. ✘ 16 [mobile-chrome] › tests/e2e/bug-regression.spec.ts:405:5 › TC-B07 饮食指南和科普文章详情页有正常内容 (retry #1) (388ms) [PageError] Failed to read the 'localStorage' property from 'Window': Access is denied for this document. ✘ 17 [mobile-chrome] › tests/e2e/bug-regression.spec.ts:452:5 › TC-B08 帖子详情页展示营养统计数据 (375ms) [PageError] Failed to read the 'localStorage' property from 'Window': Access is denied for this document. ✘ 18 [mobile-chrome] › tests/e2e/bug-regression.spec.ts:452:5 › TC-B08 帖子详情页展示营养统计数据 (retry #1) (389ms) [PageError] Failed to read the 'localStorage' property from 'Window': Access is denied for this document. ✘ 19 [mobile-chrome] › tests/e2e/bug-regression.spec.ts:487:5 › TC-B09 社区 Tab 标签和帖子类型均使用中文 (407ms) [PageError] Failed to read the 'localStorage' property from 'Window': Access is denied for this document. ✘ 20 [mobile-chrome] › tests/e2e/bug-regression.spec.ts:487:5 › TC-B09 社区 Tab 标签和帖子类型均使用中文 (retry #1) (350ms) 1) [mobile-chrome] › tests/e2e/bug-regression.spec.ts:114:5 › TC-B01a 未登录点击打卡跳转登录页 ─────────────── Error: page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:8080/#/pages/tool_main/index Call log:  - navigating to "http://localhost:8080/#/pages/tool_main/index", waiting until "load" 61 | 62 | async function goto(page: Page, route: string, waitMs = 2500): Promise { > 63 | await page.goto(`${BASE}/#/${route}`); | ^ 64 | await page.waitForTimeout(waitMs); 65 | } 66 | at goto (/Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:63:14) at /Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:115:9 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B01a-未登录点击打卡跳转登录页-mobile-chrome/test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B01a-未登录点击打卡跳转登录页-mobile-chrome/video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B01a-未登录点击打卡跳转登录页-mobile-chrome/trace.zip Usage: npx playwright show-trace tests/e2e/test-results/bug-regression-TC-B01a-未登录点击打卡跳转登录页-mobile-chrome/trace.zip ──────────────────────────────────────────────────────────────────────────────────────────────── Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:8080/#/pages/tool_main/index Call log:  - navigating to "http://localhost:8080/#/pages/tool_main/index", waiting until "load" 61 | 62 | async function goto(page: Page, route: string, waitMs = 2500): Promise { > 63 | await page.goto(`${BASE}/#/${route}`); | ^ 64 | await page.waitForTimeout(waitMs); 65 | } 66 | at goto (/Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:63:14) at /Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:115:9 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B01a-未登录点击打卡跳转登录页-mobile-chrome-retry1/test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B01a-未登录点击打卡跳转登录页-mobile-chrome-retry1/video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B01a-未登录点击打卡跳转登录页-mobile-chrome-retry1/trace.zip Usage: npx playwright show-trace tests/e2e/test-results/bug-regression-TC-B01a-未登录点击打卡跳转登录页-mobile-chrome-retry1/trace.zip ──────────────────────────────────────────────────────────────────────────────────────────────── 2) [mobile-chrome] › tests/e2e/bug-regression.spec.ts:134:5 › TC-B01b 登录后第一次打卡成功且同一天第二次仅允许一次 ───── Error: page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:8080/#/pages/tool/checkin Call log:  - navigating to "http://localhost:8080/#/pages/tool/checkin", waiting until "load" 61 | 62 | async function goto(page: Page, route: string, waitMs = 2500): Promise { > 63 | await page.goto(`${BASE}/#/${route}`); | ^ 64 | await page.waitForTimeout(waitMs); 65 | } 66 | at goto (/Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:63:14) at /Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:136:9 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B01b-登录后第一次打卡成功且同一天第二次仅允许一次-mobile-chrome/test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B01b-登录后第一次打卡成功且同一天第二次仅允许一次-mobile-chrome/video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B01b-登录后第一次打卡成功且同一天第二次仅允许一次-mobile-chrome/trace.zip Usage: npx playwright show-trace tests/e2e/test-results/bug-regression-TC-B01b-登录后第一次打卡成功且同一天第二次仅允许一次-mobile-chrome/trace.zip ──────────────────────────────────────────────────────────────────────────────────────────────── Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:8080/#/pages/tool/checkin Call log:  - navigating to "http://localhost:8080/#/pages/tool/checkin", waiting until "load" 61 | 62 | async function goto(page: Page, route: string, waitMs = 2500): Promise { > 63 | await page.goto(`${BASE}/#/${route}`); | ^ 64 | await page.waitForTimeout(waitMs); 65 | } 66 | at goto (/Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:63:14) at /Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:136:9 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B01b-登录后第一次打卡成功且同一天第二次仅允许一次-mobile-chrome-retry1/test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B01b-登录后第一次打卡成功且同一天第二次仅允许一次-mobile-chrome-retry1/video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B01b-登录后第一次打卡成功且同一天第二次仅允许一次-mobile-chrome-retry1/trace.zip Usage: npx playwright show-trace tests/e2e/test-results/bug-regression-TC-B01b-登录后第一次打卡成功且同一天第二次仅允许一次-mobile-chrome-retry1/trace.zip ──────────────────────────────────────────────────────────────────────────────────────────────── 3) [mobile-chrome] › tests/e2e/bug-regression.spec.ts:189:5 › TC-B02 计算结果页 Tab 切换选中状态清晰 ────────── Error: page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:8080/#/pages/tool_main/index Call log:  - navigating to "http://localhost:8080/#/pages/tool_main/index", waiting until "load" 61 | 62 | async function goto(page: Page, route: string, waitMs = 2500): Promise { > 63 | await page.goto(`${BASE}/#/${route}`); | ^ 64 | await page.waitForTimeout(waitMs); 65 | } 66 | at goto (/Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:63:14) at /Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:191:9 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B02-计算结果页-Tab-切换选中状态清晰-mobile-chrome/test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B02-计算结果页-Tab-切换选中状态清晰-mobile-chrome/video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B02-计算结果页-Tab-切换选中状态清晰-mobile-chrome/trace.zip Usage: npx playwright show-trace tests/e2e/test-results/bug-regression-TC-B02-计算结果页-Tab-切换选中状态清晰-mobile-chrome/trace.zip ──────────────────────────────────────────────────────────────────────────────────────────────── Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:8080/#/pages/tool_main/index Call log:  - navigating to "http://localhost:8080/#/pages/tool_main/index", waiting until "load" 61 | 62 | async function goto(page: Page, route: string, waitMs = 2500): Promise { > 63 | await page.goto(`${BASE}/#/${route}`); | ^ 64 | await page.waitForTimeout(waitMs); 65 | } 66 | at goto (/Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:63:14) at /Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:191:9 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B02-计算结果页-Tab-切换选中状态清晰-mobile-chrome-retry1/test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B02-计算结果页-Tab-切换选中状态清晰-mobile-chrome-retry1/video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B02-计算结果页-Tab-切换选中状态清晰-mobile-chrome-retry1/trace.zip Usage: npx playwright show-trace tests/e2e/test-results/bug-regression-TC-B02-计算结果页-Tab-切换选中状态清晰-mobile-chrome-retry1/trace.zip ──────────────────────────────────────────────────────────────────────────────────────────────── 4) [mobile-chrome] › tests/e2e/bug-regression.spec.ts:256:5 › TC-B03 食物列表每条目展示图片与营养信息 ──────────── Error: page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:8080/#/pages/tool/food-encyclopedia Call log:  - navigating to "http://localhost:8080/#/pages/tool/food-encyclopedia", waiting until "load" 61 | 62 | async function goto(page: Page, route: string, waitMs = 2500): Promise { > 63 | await page.goto(`${BASE}/#/${route}`); | ^ 64 | await page.waitForTimeout(waitMs); 65 | } 66 | at goto (/Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:63:14) at /Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:258:9 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B03-食物列表每条目展示图片与营养信息-mobile-chrome/test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B03-食物列表每条目展示图片与营养信息-mobile-chrome/video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B03-食物列表每条目展示图片与营养信息-mobile-chrome/trace.zip Usage: npx playwright show-trace tests/e2e/test-results/bug-regression-TC-B03-食物列表每条目展示图片与营养信息-mobile-chrome/trace.zip ──────────────────────────────────────────────────────────────────────────────────────────────── Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:8080/#/pages/tool/food-encyclopedia Call log:  - navigating to "http://localhost:8080/#/pages/tool/food-encyclopedia", waiting until "load" 61 | 62 | async function goto(page: Page, route: string, waitMs = 2500): Promise { > 63 | await page.goto(`${BASE}/#/${route}`); | ^ 64 | await page.waitForTimeout(waitMs); 65 | } 66 | at goto (/Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:63:14) at /Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:258:9 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B03-食物列表每条目展示图片与营养信息-mobile-chrome-retry1/test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B03-食物列表每条目展示图片与营养信息-mobile-chrome-retry1/video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B03-食物列表每条目展示图片与营养信息-mobile-chrome-retry1/trace.zip Usage: npx playwright show-trace tests/e2e/test-results/bug-regression-TC-B03-食物列表每条目展示图片与营养信息-mobile-chrome-retry1/trace.zip ──────────────────────────────────────────────────────────────────────────────────────────────── 5) [mobile-chrome] › tests/e2e/bug-regression.spec.ts:295:5 › TC-B04 食物详情页正常加载内容 ───────────────── Error: page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:8080/#/pages/tool/food-encyclopedia Call log:  - navigating to "http://localhost:8080/#/pages/tool/food-encyclopedia", waiting until "load" 61 | 62 | async function goto(page: Page, route: string, waitMs = 2500): Promise { > 63 | await page.goto(`${BASE}/#/${route}`); | ^ 64 | await page.waitForTimeout(waitMs); 65 | } 66 | at goto (/Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:63:14) at /Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:297:9 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B04-食物详情页正常加载内容-mobile-chrome/test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B04-食物详情页正常加载内容-mobile-chrome/video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B04-食物详情页正常加载内容-mobile-chrome/trace.zip Usage: npx playwright show-trace tests/e2e/test-results/bug-regression-TC-B04-食物详情页正常加载内容-mobile-chrome/trace.zip ──────────────────────────────────────────────────────────────────────────────────────────────── Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:8080/#/pages/tool/food-encyclopedia Call log:  - navigating to "http://localhost:8080/#/pages/tool/food-encyclopedia", waiting until "load" 61 | 62 | async function goto(page: Page, route: string, waitMs = 2500): Promise { > 63 | await page.goto(`${BASE}/#/${route}`); | ^ 64 | await page.waitForTimeout(waitMs); 65 | } 66 | at goto (/Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:63:14) at /Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:297:9 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B04-食物详情页正常加载内容-mobile-chrome-retry1/test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B04-食物详情页正常加载内容-mobile-chrome-retry1/video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B04-食物详情页正常加载内容-mobile-chrome-retry1/trace.zip Usage: npx playwright show-trace tests/e2e/test-results/bug-regression-TC-B04-食物详情页正常加载内容-mobile-chrome-retry1/trace.zip ──────────────────────────────────────────────────────────────────────────────────────────────── 6) [mobile-chrome] › tests/e2e/bug-regression.spec.ts:329:5 › TC-B05 AI针对不同问题返回差异化回复 ───────────── Error: page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:8080/#/pages/tool_main/index Call log:  - navigating to "http://localhost:8080/#/pages/tool_main/index", waiting until "load" 61 | 62 | async function goto(page: Page, route: string, waitMs = 2500): Promise { > 63 | await page.goto(`${BASE}/#/${route}`); | ^ 64 | await page.waitForTimeout(waitMs); 65 | } 66 | at goto (/Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:63:14) at /Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:332:9 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B05-AI针对不同问题返回差异化回复-mobile-chrome/test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B05-AI针对不同问题返回差异化回复-mobile-chrome/video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B05-AI针对不同问题返回差异化回复-mobile-chrome/trace.zip Usage: npx playwright show-trace tests/e2e/test-results/bug-regression-TC-B05-AI针对不同问题返回差异化回复-mobile-chrome/trace.zip ──────────────────────────────────────────────────────────────────────────────────────────────── Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:8080/#/pages/tool_main/index Call log:  - navigating to "http://localhost:8080/#/pages/tool_main/index", waiting until "load" 61 | 62 | async function goto(page: Page, route: string, waitMs = 2500): Promise { > 63 | await page.goto(`${BASE}/#/${route}`); | ^ 64 | await page.waitForTimeout(waitMs); 65 | } 66 | at goto (/Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:63:14) at /Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:332:9 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B05-AI针对不同问题返回差异化回复-mobile-chrome-retry1/test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B05-AI针对不同问题返回差异化回复-mobile-chrome-retry1/video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B05-AI针对不同问题返回差异化回复-mobile-chrome-retry1/trace.zip Usage: npx playwright show-trace tests/e2e/test-results/bug-regression-TC-B05-AI针对不同问题返回差异化回复-mobile-chrome-retry1/trace.zip ──────────────────────────────────────────────────────────────────────────────────────────────── 7) [mobile-chrome] › tests/e2e/bug-regression.spec.ts:371:5 › TC-B06 健康知识与营养知识名称统一性 ────────────── Error: page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:8080/#/pages/tool_main/index Call log:  - navigating to "http://localhost:8080/#/pages/tool_main/index", waiting until "load" 61 | 62 | async function goto(page: Page, route: string, waitMs = 2500): Promise { > 63 | await page.goto(`${BASE}/#/${route}`); | ^ 64 | await page.waitForTimeout(waitMs); 65 | } 66 | at goto (/Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:63:14) at /Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:373:9 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B06-健康知识与营养知识名称统一性-mobile-chrome/test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B06-健康知识与营养知识名称统一性-mobile-chrome/video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B06-健康知识与营养知识名称统一性-mobile-chrome/trace.zip Usage: npx playwright show-trace tests/e2e/test-results/bug-regression-TC-B06-健康知识与营养知识名称统一性-mobile-chrome/trace.zip ──────────────────────────────────────────────────────────────────────────────────────────────── Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:8080/#/pages/tool_main/index Call log:  - navigating to "http://localhost:8080/#/pages/tool_main/index", waiting until "load" 61 | 62 | async function goto(page: Page, route: string, waitMs = 2500): Promise { > 63 | await page.goto(`${BASE}/#/${route}`); | ^ 64 | await page.waitForTimeout(waitMs); 65 | } 66 | at goto (/Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:63:14) at /Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:373:9 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B06-健康知识与营养知识名称统一性-mobile-chrome-retry1/test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B06-健康知识与营养知识名称统一性-mobile-chrome-retry1/video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B06-健康知识与营养知识名称统一性-mobile-chrome-retry1/trace.zip Usage: npx playwright show-trace tests/e2e/test-results/bug-regression-TC-B06-健康知识与营养知识名称统一性-mobile-chrome-retry1/trace.zip ──────────────────────────────────────────────────────────────────────────────────────────────── 8) [mobile-chrome] › tests/e2e/bug-regression.spec.ts:405:5 › TC-B07 饮食指南和科普文章详情页有正常内容 ─────────── Error: page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:8080/#/pages/tool/nutrition-knowledge Call log:  - navigating to "http://localhost:8080/#/pages/tool/nutrition-knowledge", waiting until "load" 61 | 62 | async function goto(page: Page, route: string, waitMs = 2500): Promise { > 63 | await page.goto(`${BASE}/#/${route}`); | ^ 64 | await page.waitForTimeout(waitMs); 65 | } 66 | at goto (/Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:63:14) at /Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:407:9 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B07-饮食指南和科普文章详情页有正常内容-mobile-chrome/test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B07-饮食指南和科普文章详情页有正常内容-mobile-chrome/video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B07-饮食指南和科普文章详情页有正常内容-mobile-chrome/trace.zip Usage: npx playwright show-trace tests/e2e/test-results/bug-regression-TC-B07-饮食指南和科普文章详情页有正常内容-mobile-chrome/trace.zip ──────────────────────────────────────────────────────────────────────────────────────────────── Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:8080/#/pages/tool/nutrition-knowledge Call log:  - navigating to "http://localhost:8080/#/pages/tool/nutrition-knowledge", waiting until "load" 61 | 62 | async function goto(page: Page, route: string, waitMs = 2500): Promise { > 63 | await page.goto(`${BASE}/#/${route}`); | ^ 64 | await page.waitForTimeout(waitMs); 65 | } 66 | at goto (/Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:63:14) at /Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:407:9 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B07-饮食指南和科普文章详情页有正常内容-mobile-chrome-retry1/test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B07-饮食指南和科普文章详情页有正常内容-mobile-chrome-retry1/video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B07-饮食指南和科普文章详情页有正常内容-mobile-chrome-retry1/trace.zip Usage: npx playwright show-trace tests/e2e/test-results/bug-regression-TC-B07-饮食指南和科普文章详情页有正常内容-mobile-chrome-retry1/trace.zip ──────────────────────────────────────────────────────────────────────────────────────────────── 9) [mobile-chrome] › tests/e2e/bug-regression.spec.ts:452:5 › TC-B08 帖子详情页展示营养统计数据 ─────────────── Error: page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:8080/#/pages/tool_main/community Call log:  - navigating to "http://localhost:8080/#/pages/tool_main/community", waiting until "load" 61 | 62 | async function goto(page: Page, route: string, waitMs = 2500): Promise { > 63 | await page.goto(`${BASE}/#/${route}`); | ^ 64 | await page.waitForTimeout(waitMs); 65 | } 66 | at goto (/Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:63:14) at /Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:454:9 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B08-帖子详情页展示营养统计数据-mobile-chrome/test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B08-帖子详情页展示营养统计数据-mobile-chrome/video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B08-帖子详情页展示营养统计数据-mobile-chrome/trace.zip Usage: npx playwright show-trace tests/e2e/test-results/bug-regression-TC-B08-帖子详情页展示营养统计数据-mobile-chrome/trace.zip ──────────────────────────────────────────────────────────────────────────────────────────────── Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:8080/#/pages/tool_main/community Call log:  - navigating to "http://localhost:8080/#/pages/tool_main/community", waiting until "load" 61 | 62 | async function goto(page: Page, route: string, waitMs = 2500): Promise { > 63 | await page.goto(`${BASE}/#/${route}`); | ^ 64 | await page.waitForTimeout(waitMs); 65 | } 66 | at goto (/Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:63:14) at /Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:454:9 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B08-帖子详情页展示营养统计数据-mobile-chrome-retry1/test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B08-帖子详情页展示营养统计数据-mobile-chrome-retry1/video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B08-帖子详情页展示营养统计数据-mobile-chrome-retry1/trace.zip Usage: npx playwright show-trace tests/e2e/test-results/bug-regression-TC-B08-帖子详情页展示营养统计数据-mobile-chrome-retry1/trace.zip ──────────────────────────────────────────────────────────────────────────────────────────────── 10) [mobile-chrome] › tests/e2e/bug-regression.spec.ts:487:5 › TC-B09 社区 Tab 标签和帖子类型均使用中文 ──────── Error: page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:8080/#/pages/tool_main/community Call log:  - navigating to "http://localhost:8080/#/pages/tool_main/community", waiting until "load" 61 | 62 | async function goto(page: Page, route: string, waitMs = 2500): Promise { > 63 | await page.goto(`${BASE}/#/${route}`); | ^ 64 | await page.waitForTimeout(waitMs); 65 | } 66 | at goto (/Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:63:14) at /Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:489:9 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B09-社区-Tab-标签和帖子类型均使用中文-mobile-chrome/test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B09-社区-Tab-标签和帖子类型均使用中文-mobile-chrome/video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B09-社区-Tab-标签和帖子类型均使用中文-mobile-chrome/trace.zip Usage: npx playwright show-trace tests/e2e/test-results/bug-regression-TC-B09-社区-Tab-标签和帖子类型均使用中文-mobile-chrome/trace.zip ──────────────────────────────────────────────────────────────────────────────────────────────── Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:8080/#/pages/tool_main/community Call log:  - navigating to "http://localhost:8080/#/pages/tool_main/community", waiting until "load" 61 | 62 | async function goto(page: Page, route: string, waitMs = 2500): Promise { > 63 | await page.goto(`${BASE}/#/${route}`); | ^ 64 | await page.waitForTimeout(waitMs); 65 | } 66 | at goto (/Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:63:14) at /Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:489:9 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B09-社区-Tab-标签和帖子类型均使用中文-mobile-chrome-retry1/test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B09-社区-Tab-标签和帖子类型均使用中文-mobile-chrome-retry1/video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B09-社区-Tab-标签和帖子类型均使用中文-mobile-chrome-retry1/trace.zip Usage: npx playwright show-trace tests/e2e/test-results/bug-regression-TC-B09-社区-Tab-标签和帖子类型均使用中文-mobile-chrome-retry1/trace.zip ──────────────────────────────────────────────────────────────────────────────────────────────── 10 failed [mobile-chrome] › tests/e2e/bug-regression.spec.ts:114:5 › TC-B01a 未登录点击打卡跳转登录页 ──────────────── [mobile-chrome] › tests/e2e/bug-regression.spec.ts:134:5 › TC-B01b 登录后第一次打卡成功且同一天第二次仅允许一次 ────── [mobile-chrome] › tests/e2e/bug-regression.spec.ts:189:5 › TC-B02 计算结果页 Tab 切换选中状态清晰 ─────────── [mobile-chrome] › tests/e2e/bug-regression.spec.ts:256:5 › TC-B03 食物列表每条目展示图片与营养信息 ───────────── [mobile-chrome] › tests/e2e/bug-regression.spec.ts:295:5 › TC-B04 食物详情页正常加载内容 ────────────────── [mobile-chrome] › tests/e2e/bug-regression.spec.ts:329:5 › TC-B05 AI针对不同问题返回差异化回复 ────────────── [mobile-chrome] › tests/e2e/bug-regression.spec.ts:371:5 › TC-B06 健康知识与营养知识名称统一性 ─────────────── [mobile-chrome] › tests/e2e/bug-regression.spec.ts:405:5 › TC-B07 饮食指南和科普文章详情页有正常内容 ──────────── [mobile-chrome] › tests/e2e/bug-regression.spec.ts:452:5 › TC-B08 帖子详情页展示营养统计数据 ──────────────── [mobile-chrome] › tests/e2e/bug-regression.spec.ts:487:5 › TC-B09 社区 Tab 标签和帖子类型均使用中文 ────────── [2026-03-03 10:21:56] 基线记录完成 ═══════════════════════════════════════════════ [2026-03-03 10:21:56] ▶ 阶段 1 — 快速修复(BUG-002, BUG-006, BUG-009) ═══════════════════════════════════════════════ [2026-03-03 10:21:56] [BUG-002] 启动 Cursor Agent 修复... Connection lost, reconnecting... Retry attempt 1... 已按 BUG-002 要求只改了 CSS,未动任何 JS,修改如下: **1. 未激活 Tab(`.tab-item`)** - 在根级增加 `color: #9ca3af`,保证整项为灰色。 - 下划线保持 `border-bottom: 3px solid transparent`,无可见下划线。 **2. 激活 Tab(`.tab-item.active`)** - `border-bottom: 3px solid #f97316`,橙色底线下划线(由原 6rpx 改为 3px)。 - `color: #f97316`,主色字色。 - `font-weight: 700`,加粗。 - 保留内部 `.tab-text`、`.tab-icon` 的 `#f97316` 与 `.tab-text` 的 `font-weight: 700`。 这样「健康概览」和「营养配餐」切换时,激活项为橙色加粗+橙色下划线,未激活为灰色且无下划线,对比更清晰。 [2026-03-03 10:22:42] [BUG-002] Agent 执行完成 → /Users/apple/scott2026/msh-system/scripts/logs/agent-BUG-002-102156.log [2026-03-03 10:22:42] [BUG-006] 启动 Cursor Agent 修复... 检查结果如下: **1. `msh_single_uniapp/pages/tool_main/index.vue`** - 第 66 行功能入口标题:`健康知识` → 已是「健康知识」 - 第 126 行区块标题:`健康知识` → 已是「健康知识」 **2. `msh_single_uniapp/pages/tool/nutrition-knowledge.vue`** - 页面内没有设置导航栏标题的文案(没有「营养知识」或「健康知识」字符串) - 该页导航栏标题由 `pages.json` 配置 **3. `pages.json`(nutrition-knowledge 页配置)** - 第 1018 行:`"navigationBarTitleText": "健康知识"` → 已是「健康知识」 因此,当前代码里: - 主页「健康知识」区块和功能入口均为「健康知识」 - 营养知识页的导航栏标题在 `pages.json` 中也是「健康知识」 两处命名已统一为「健康知识」,**无需再改任何文件**。若你本地或某次构建里仍看到「营养知识」,请说明是在哪个页面、哪一行或哪个配置(例如是否改过 `pages.json`),我可以按那个位置再帮你对一下。 [2026-03-03 10:23:38] [BUG-006] Agent 执行完成 → /Users/apple/scott2026/msh-system/scripts/logs/agent-BUG-006-102242.log [2026-03-03 10:23:38] [BUG-009] 启动 Cursor Agent 修复... 已按 BUG-009 要求处理,修改总结如下。 **1. Template 中的 Tab 与类型标签** - **Tab 文案**:四个 Tab 的展示文字已是中文(推荐、最新、关注、热门),无需改。 - **Tab 内部值**:`currentTab` 仍为 `recommend` / `latest` / `follow` / `hot`,用于 `switchTab` 和接口参数 `tab: this.currentTab`。按要求不改动接口逻辑,因此这些值保持英文,仅界面显示为中文。 - **帖子类型标签**:`.type-tag` 和 `.meal-tag` 的文案都来自 `getMealTypeLabel(item.mealType)`,没有在模板里写死英文。 **2. 数据中的类型字段与 label 映射** - `getMealTypeLabel` 中已有英文 → 中文映射:breakfast→早餐、lunch→午餐、dinner→晚餐、snack→加餐、share→分享、checkin→打卡。 - 原先在未知类型时会 `return mealType`,可能把后端英文直接展示出来。 - **修改**:未知类型时的 fallback 从 `mealType` 改为 `'分享'`,保证所有展示的 label 都是中文。 **具体改动(仅一处)** - 在 `getMealTypeLabel` 中,将 `return map[lower] != null ? map[lower] : mealType` 改为 `return map[lower] != null ? map[lower] : '分享'` 这样任意未在 map 中的 `mealType`(包括英文或其它值)在界面上都会显示为「分享」,不会出现英文。 路由与接口调用未做任何修改。 [2026-03-03 10:24:23] [BUG-009] Agent 执行完成 → /Users/apple/scott2026/msh-system/scripts/logs/agent-BUG-009-102338.log [2026-03-03 10:24:23] [阶段1] 阶段1修复完成,进行局部验证... [2026-03-03 10:24:23] [TEST] 验证: TC-B02|TC-B06|TC-B09 Running 3 tests using 1 worker [PageError] Failed to read the 'localStorage' property from 'Window': Access is denied for this document. ✘ 1 [mobile-chrome] › tests/e2e/bug-regression.spec.ts:189:5 › TC-B02 计算结果页 Tab 切换选中状态清晰 (340ms) [PageError] Failed to read the 'localStorage' property from 'Window': Access is denied for this document. ✘ 2 [mobile-chrome] › tests/e2e/bug-regression.spec.ts:189:5 › TC-B02 计算结果页 Tab 切换选中状态清晰 (retry #1) (349ms) [PageError] Failed to read the 'localStorage' property from 'Window': Access is denied for this document. ✘ 3 [mobile-chrome] › tests/e2e/bug-regression.spec.ts:371:5 › TC-B06 健康知识与营养知识名称统一性 (438ms) [PageError] Failed to read the 'localStorage' property from 'Window': Access is denied for this document. ✘ 4 [mobile-chrome] › tests/e2e/bug-regression.spec.ts:371:5 › TC-B06 健康知识与营养知识名称统一性 (retry #1) (477ms) [PageError] Failed to read the 'localStorage' property from 'Window': Access is denied for this document. ✘ 5 [mobile-chrome] › tests/e2e/bug-regression.spec.ts:487:5 › TC-B09 社区 Tab 标签和帖子类型均使用中文 (553ms) [PageError] Failed to read the 'localStorage' property from 'Window': Access is denied for this document. ✘ 6 [mobile-chrome] › tests/e2e/bug-regression.spec.ts:487:5 › TC-B09 社区 Tab 标签和帖子类型均使用中文 (retry #1) (514ms) 1) [mobile-chrome] › tests/e2e/bug-regression.spec.ts:189:5 › TC-B02 计算结果页 Tab 切换选中状态清晰 ────────── Error: page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:8080/#/pages/tool_main/index Call log:  - navigating to "http://localhost:8080/#/pages/tool_main/index", waiting until "load" 61 | 62 | async function goto(page: Page, route: string, waitMs = 2500): Promise { > 63 | await page.goto(`${BASE}/#/${route}`); | ^ 64 | await page.waitForTimeout(waitMs); 65 | } 66 | at goto (/Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:63:14) at /Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:191:9 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B02-计算结果页-Tab-切换选中状态清晰-mobile-chrome/test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B02-计算结果页-Tab-切换选中状态清晰-mobile-chrome/video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B02-计算结果页-Tab-切换选中状态清晰-mobile-chrome/trace.zip Usage: npx playwright show-trace tests/e2e/test-results/bug-regression-TC-B02-计算结果页-Tab-切换选中状态清晰-mobile-chrome/trace.zip ──────────────────────────────────────────────────────────────────────────────────────────────── Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:8080/#/pages/tool_main/index Call log:  - navigating to "http://localhost:8080/#/pages/tool_main/index", waiting until "load" 61 | 62 | async function goto(page: Page, route: string, waitMs = 2500): Promise { > 63 | await page.goto(`${BASE}/#/${route}`); | ^ 64 | await page.waitForTimeout(waitMs); 65 | } 66 | at goto (/Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:63:14) at /Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:191:9 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B02-计算结果页-Tab-切换选中状态清晰-mobile-chrome-retry1/test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B02-计算结果页-Tab-切换选中状态清晰-mobile-chrome-retry1/video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B02-计算结果页-Tab-切换选中状态清晰-mobile-chrome-retry1/trace.zip Usage: npx playwright show-trace tests/e2e/test-results/bug-regression-TC-B02-计算结果页-Tab-切换选中状态清晰-mobile-chrome-retry1/trace.zip ──────────────────────────────────────────────────────────────────────────────────────────────── 2) [mobile-chrome] › tests/e2e/bug-regression.spec.ts:371:5 › TC-B06 健康知识与营养知识名称统一性 ────────────── Error: page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:8080/#/pages/tool_main/index Call log:  - navigating to "http://localhost:8080/#/pages/tool_main/index", waiting until "load" 61 | 62 | async function goto(page: Page, route: string, waitMs = 2500): Promise { > 63 | await page.goto(`${BASE}/#/${route}`); | ^ 64 | await page.waitForTimeout(waitMs); 65 | } 66 | at goto (/Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:63:14) at /Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:373:9 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B06-健康知识与营养知识名称统一性-mobile-chrome/test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B06-健康知识与营养知识名称统一性-mobile-chrome/video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B06-健康知识与营养知识名称统一性-mobile-chrome/trace.zip Usage: npx playwright show-trace tests/e2e/test-results/bug-regression-TC-B06-健康知识与营养知识名称统一性-mobile-chrome/trace.zip ──────────────────────────────────────────────────────────────────────────────────────────────── Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:8080/#/pages/tool_main/index Call log:  - navigating to "http://localhost:8080/#/pages/tool_main/index", waiting until "load" 61 | 62 | async function goto(page: Page, route: string, waitMs = 2500): Promise { > 63 | await page.goto(`${BASE}/#/${route}`); | ^ 64 | await page.waitForTimeout(waitMs); 65 | } 66 | at goto (/Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:63:14) at /Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:373:9 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B06-健康知识与营养知识名称统一性-mobile-chrome-retry1/test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B06-健康知识与营养知识名称统一性-mobile-chrome-retry1/video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B06-健康知识与营养知识名称统一性-mobile-chrome-retry1/trace.zip Usage: npx playwright show-trace tests/e2e/test-results/bug-regression-TC-B06-健康知识与营养知识名称统一性-mobile-chrome-retry1/trace.zip ──────────────────────────────────────────────────────────────────────────────────────────────── 3) [mobile-chrome] › tests/e2e/bug-regression.spec.ts:487:5 › TC-B09 社区 Tab 标签和帖子类型均使用中文 ───────── Error: page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:8080/#/pages/tool_main/community Call log:  - navigating to "http://localhost:8080/#/pages/tool_main/community", waiting until "load" 61 | 62 | async function goto(page: Page, route: string, waitMs = 2500): Promise { > 63 | await page.goto(`${BASE}/#/${route}`); | ^ 64 | await page.waitForTimeout(waitMs); 65 | } 66 | at goto (/Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:63:14) at /Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:489:9 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B09-社区-Tab-标签和帖子类型均使用中文-mobile-chrome/test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B09-社区-Tab-标签和帖子类型均使用中文-mobile-chrome/video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B09-社区-Tab-标签和帖子类型均使用中文-mobile-chrome/trace.zip Usage: npx playwright show-trace tests/e2e/test-results/bug-regression-TC-B09-社区-Tab-标签和帖子类型均使用中文-mobile-chrome/trace.zip ──────────────────────────────────────────────────────────────────────────────────────────────── Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:8080/#/pages/tool_main/community Call log:  - navigating to "http://localhost:8080/#/pages/tool_main/community", waiting until "load" 61 | 62 | async function goto(page: Page, route: string, waitMs = 2500): Promise { > 63 | await page.goto(`${BASE}/#/${route}`); | ^ 64 | await page.waitForTimeout(waitMs); 65 | } 66 | at goto (/Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:63:14) at /Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:489:9 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B09-社区-Tab-标签和帖子类型均使用中文-mobile-chrome-retry1/test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B09-社区-Tab-标签和帖子类型均使用中文-mobile-chrome-retry1/video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B09-社区-Tab-标签和帖子类型均使用中文-mobile-chrome-retry1/trace.zip Usage: npx playwright show-trace tests/e2e/test-results/bug-regression-TC-B09-社区-Tab-标签和帖子类型均使用中文-mobile-chrome-retry1/trace.zip ──────────────────────────────────────────────────────────────────────────────────────────────── 3 failed [mobile-chrome] › tests/e2e/bug-regression.spec.ts:189:5 › TC-B02 计算结果页 Tab 切换选中状态清晰 ─────────── [mobile-chrome] › tests/e2e/bug-regression.spec.ts:371:5 › TC-B06 健康知识与营养知识名称统一性 ─────────────── [mobile-chrome] › tests/e2e/bug-regression.spec.ts:487:5 › TC-B09 社区 Tab 标签和帖子类型均使用中文 ────────── ═══════════════════════════════════════════════ [2026-03-03 10:24:47] ▶ 阶段 2 — 中等修复(BUG-001, BUG-007) ═══════════════════════════════════════════════ [2026-03-03 10:24:47] [BUG-001] 启动 Cursor Agent 修复... 已按 BUG-001 的两个子问题改好,修改总结如下。 --- **子问题 A — 打卡前积分不提前跳变** - **逻辑**:在 `handleCheckin` 里,**只有**在 `setSignIntegral()` 成功返回之后才更新状态和积分。 - **具体**: - 先 `await setSignIntegral()`,不成功会进 `catch`,不会改 `currentPoints`。 - 成功后再 `this.todaySigned = true`,然后再用服务端数据更新 `currentPoints`。 - 全程没有在接口成功前修改 `currentPoints`,也没有任何前端本地 `+30`。 --- **子问题 B — 打卡成功后用服务端积分刷新** - **接口确认**:打卡接口仍是 `setSignIntegral()`(`user/sign/integral`),对应后端 `/api/front/user/sign/integral`,即签到/打卡接口。 - **刷新积分**:打卡成功后用「用户信息」接口刷新积分: - 先调 `getUserInfo()`(即 GET `/api/front/user`,即 user info 接口)。 - 从返回里取 `integral` 或 `points`,赋给 `currentPoints`(优先 `integral`)。 - 若 user info 里没有积分字段,再请求 `getUserPoints()`(`tool/points/info`),用其返回的 `totalPoints` / `points` / `availablePoints` 更新 `currentPoints`。 - **禁止硬编码**:积分只来自上述两个接口的返回值,没有写死 `+30`。 --- **代码改动要点** 1. 引入并调用 `getUserInfo`。 2. 在 `await setSignIntegral()` 成功后,先 `getUserInfo()`,用 `userRes.data.integral ?? userRes.data.points` 更新 `currentPoints`。 3. 仅当 user info 无积分时,再 `getUserPoints()` 并以其结果更新 `currentPoints`。 4. 注释中写明:不在 API 成功前改 `currentPoints`,且用 GET user info 刷新积分、禁止前端本地 +30。 [2026-03-03 10:26:27] [BUG-001] Agent 执行完成 → /Users/apple/scott2026/msh-system/scripts/logs/agent-BUG-001-102447.log [2026-03-03 10:26:27] [BUG-007] 启动 Cursor Agent 修复... BUG-007 已按你的要求改完,修改总结如下: ### 1. **`loadKnowledgeList` 与 API 调用** - **根因**:在 `rawList.map` 里用了 `formatKnowledgeTime(...)` 未加 `this.`,在 API 有数据时会报错(如 "formatKnowledgeTime is not a function"),进入 catch,列表不会被赋值,所以一直为空。 - **修改**:改为 `this.formatKnowledgeTime(...)`,确保在 map 里正确调用组件方法。 ### 2. **请求参数 type** - type 已与后端一致:`guide` / `article`(注释里也写明了)。 ### 3. **API 失败时的处理** - catch 里已有 `uni.showToast` 提示。 - 在 catch 中保证不把列表置为 undefined: `this.guideList = this.guideList ?? []`、`this.articleList = this.articleList ?? []`,出错时仍保持为数组。 ### 4. **响应数据结构兼容** - 增加对两种返回形式的兼容: - `result.data.list` 为数组时用 `result.data.list`; - 若 `result.data` 本身是数组则用 `result.data`。 这样无论后端用分页对象还是直接数组,都能正确取到列表。 ### 5. **onLoad 无 id 时的逻辑** - 有 `id`:调用 `switchTab('articles')`,会触发 `loadKnowledgeList` 拉取科普文章列表。 - 无 `id`:显式保持 `currentTab = 'nutrients'`;用户切到「饮食指南」或「科普文章」时由 `switchTab` 触发 `loadKnowledgeList`,与需求一致。 ### 6. **详情页跳转 `goToDetail`** - 已有「无 id 不跳转」的逻辑,本次只做了小加固: - 若 `!item` 也先提示「暂无详情」再 return; - 仅当 `knowledgeId` 或 `id` 存在且有效时才 `navigateTo`,否则一律提示「暂无详情」。 当前无新的 lint 报错。若后端库里没有 type 为 `guide` / `article` 的数据,列表仍会为空,但会正常显示「暂无饮食指南数据」/「暂无科普文章数据」;若详情页打开仍空白,需要再确认详情页是否应调 `tool/knowledge/detail/:id` 而不是文章接口。 [2026-03-03 10:28:16] [BUG-007] Agent 执行完成 → /Users/apple/scott2026/msh-system/scripts/logs/agent-BUG-007-102627.log [2026-03-03 10:28:16] [阶段2] 阶段2修复完成,进行局部验证... [2026-03-03 10:28:16] [TEST] 验证: TC-B01|TC-B07 Running 3 tests using 1 worker ✘ 1 [mobile-chrome] › tests/e2e/bug-regression.spec.ts:114:5 › TC-B01a 未登录点击打卡跳转登录页 (665ms) ✘ 2 [mobile-chrome] › tests/e2e/bug-regression.spec.ts:114:5 › TC-B01a 未登录点击打卡跳转登录页 (retry #1) (504ms) [PageError] Failed to read the 'localStorage' property from 'Window': Access is denied for this document. ✘ 3 [mobile-chrome] › tests/e2e/bug-regression.spec.ts:134:5 › TC-B01b 登录后第一次打卡成功且同一天第二次仅允许一次 (492ms) [PageError] Failed to read the 'localStorage' property from 'Window': Access is denied for this document. ✘ 4 [mobile-chrome] › tests/e2e/bug-regression.spec.ts:134:5 › TC-B01b 登录后第一次打卡成功且同一天第二次仅允许一次 (retry #1) (551ms) [PageError] Failed to read the 'localStorage' property from 'Window': Access is denied for this document. ✘ 5 [mobile-chrome] › tests/e2e/bug-regression.spec.ts:405:5 › TC-B07 饮食指南和科普文章详情页有正常内容 (538ms) [PageError] Failed to read the 'localStorage' property from 'Window': Access is denied for this document. ✘ 6 [mobile-chrome] › tests/e2e/bug-regression.spec.ts:405:5 › TC-B07 饮食指南和科普文章详情页有正常内容 (retry #1) (534ms) 1) [mobile-chrome] › tests/e2e/bug-regression.spec.ts:114:5 › TC-B01a 未登录点击打卡跳转登录页 ─────────────── Error: page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:8080/#/pages/tool_main/index Call log:  - navigating to "http://localhost:8080/#/pages/tool_main/index", waiting until "load" 61 | 62 | async function goto(page: Page, route: string, waitMs = 2500): Promise { > 63 | await page.goto(`${BASE}/#/${route}`); | ^ 64 | await page.waitForTimeout(waitMs); 65 | } 66 | at goto (/Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:63:14) at /Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:115:9 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B01a-未登录点击打卡跳转登录页-mobile-chrome/test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B01a-未登录点击打卡跳转登录页-mobile-chrome/video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B01a-未登录点击打卡跳转登录页-mobile-chrome/trace.zip Usage: npx playwright show-trace tests/e2e/test-results/bug-regression-TC-B01a-未登录点击打卡跳转登录页-mobile-chrome/trace.zip ──────────────────────────────────────────────────────────────────────────────────────────────── Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:8080/#/pages/tool_main/index Call log:  - navigating to "http://localhost:8080/#/pages/tool_main/index", waiting until "load" 61 | 62 | async function goto(page: Page, route: string, waitMs = 2500): Promise { > 63 | await page.goto(`${BASE}/#/${route}`); | ^ 64 | await page.waitForTimeout(waitMs); 65 | } 66 | at goto (/Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:63:14) at /Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:115:9 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B01a-未登录点击打卡跳转登录页-mobile-chrome-retry1/test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B01a-未登录点击打卡跳转登录页-mobile-chrome-retry1/video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B01a-未登录点击打卡跳转登录页-mobile-chrome-retry1/trace.zip Usage: npx playwright show-trace tests/e2e/test-results/bug-regression-TC-B01a-未登录点击打卡跳转登录页-mobile-chrome-retry1/trace.zip ──────────────────────────────────────────────────────────────────────────────────────────────── 2) [mobile-chrome] › tests/e2e/bug-regression.spec.ts:134:5 › TC-B01b 登录后第一次打卡成功且同一天第二次仅允许一次 ───── Error: page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:8080/#/pages/tool/checkin Call log:  - navigating to "http://localhost:8080/#/pages/tool/checkin", waiting until "load" 61 | 62 | async function goto(page: Page, route: string, waitMs = 2500): Promise { > 63 | await page.goto(`${BASE}/#/${route}`); | ^ 64 | await page.waitForTimeout(waitMs); 65 | } 66 | at goto (/Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:63:14) at /Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:136:9 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B01b-登录后第一次打卡成功且同一天第二次仅允许一次-mobile-chrome/test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B01b-登录后第一次打卡成功且同一天第二次仅允许一次-mobile-chrome/video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B01b-登录后第一次打卡成功且同一天第二次仅允许一次-mobile-chrome/trace.zip Usage: npx playwright show-trace tests/e2e/test-results/bug-regression-TC-B01b-登录后第一次打卡成功且同一天第二次仅允许一次-mobile-chrome/trace.zip ──────────────────────────────────────────────────────────────────────────────────────────────── Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:8080/#/pages/tool/checkin Call log:  - navigating to "http://localhost:8080/#/pages/tool/checkin", waiting until "load" 61 | 62 | async function goto(page: Page, route: string, waitMs = 2500): Promise { > 63 | await page.goto(`${BASE}/#/${route}`); | ^ 64 | await page.waitForTimeout(waitMs); 65 | } 66 | at goto (/Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:63:14) at /Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:136:9 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B01b-登录后第一次打卡成功且同一天第二次仅允许一次-mobile-chrome-retry1/test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B01b-登录后第一次打卡成功且同一天第二次仅允许一次-mobile-chrome-retry1/video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B01b-登录后第一次打卡成功且同一天第二次仅允许一次-mobile-chrome-retry1/trace.zip Usage: npx playwright show-trace tests/e2e/test-results/bug-regression-TC-B01b-登录后第一次打卡成功且同一天第二次仅允许一次-mobile-chrome-retry1/trace.zip ──────────────────────────────────────────────────────────────────────────────────────────────── 3) [mobile-chrome] › tests/e2e/bug-regression.spec.ts:405:5 › TC-B07 饮食指南和科普文章详情页有正常内容 ─────────── Error: page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:8080/#/pages/tool/nutrition-knowledge Call log:  - navigating to "http://localhost:8080/#/pages/tool/nutrition-knowledge", waiting until "load" 61 | 62 | async function goto(page: Page, route: string, waitMs = 2500): Promise { > 63 | await page.goto(`${BASE}/#/${route}`); | ^ 64 | await page.waitForTimeout(waitMs); 65 | } 66 | at goto (/Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:63:14) at /Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:407:9 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B07-饮食指南和科普文章详情页有正常内容-mobile-chrome/test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B07-饮食指南和科普文章详情页有正常内容-mobile-chrome/video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B07-饮食指南和科普文章详情页有正常内容-mobile-chrome/trace.zip Usage: npx playwright show-trace tests/e2e/test-results/bug-regression-TC-B07-饮食指南和科普文章详情页有正常内容-mobile-chrome/trace.zip ──────────────────────────────────────────────────────────────────────────────────────────────── Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:8080/#/pages/tool/nutrition-knowledge Call log:  - navigating to "http://localhost:8080/#/pages/tool/nutrition-knowledge", waiting until "load" 61 | 62 | async function goto(page: Page, route: string, waitMs = 2500): Promise { > 63 | await page.goto(`${BASE}/#/${route}`); | ^ 64 | await page.waitForTimeout(waitMs); 65 | } 66 | at goto (/Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:63:14) at /Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:407:9 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B07-饮食指南和科普文章详情页有正常内容-mobile-chrome-retry1/test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B07-饮食指南和科普文章详情页有正常内容-mobile-chrome-retry1/video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B07-饮食指南和科普文章详情页有正常内容-mobile-chrome-retry1/trace.zip Usage: npx playwright show-trace tests/e2e/test-results/bug-regression-TC-B07-饮食指南和科普文章详情页有正常内容-mobile-chrome-retry1/trace.zip ──────────────────────────────────────────────────────────────────────────────────────────────── 3 failed [mobile-chrome] › tests/e2e/bug-regression.spec.ts:114:5 › TC-B01a 未登录点击打卡跳转登录页 ──────────────── [mobile-chrome] › tests/e2e/bug-regression.spec.ts:134:5 › TC-B01b 登录后第一次打卡成功且同一天第二次仅允许一次 ────── [mobile-chrome] › tests/e2e/bug-regression.spec.ts:405:5 › TC-B07 饮食指南和科普文章详情页有正常内容 ──────────── ═══════════════════════════════════════════════ [2026-03-03 10:28:46] ▶ 阶段 3 — 数据展示修复(BUG-003, BUG-008) ═══════════════════════════════════════════════ [2026-03-03 10:28:46] [BUG-003] 启动 Cursor Agent 修复... BUG-003 已按你的要求修好,修改总结如下。 ## 1. Template 与数据来源(确认) - **`.food-image` 的 `:src`**:绑定为 `getFoodImage(item)`,由该方法统一取图并处理占位。 - **`.nutrition-item` 的 v-for**:遍历 `(item.nutrition || [])`,数据在 `normalizeFoodItem` 里统一整理成 `nutrition` 数组。 ## 2. 后端数据结构(api/tool.js + ToolFoodServiceImpl) - **列表/搜索** 返回每条为:`id`, `name`, `image`, `category`, `energy`, `protein`, `potassium`, `phosphorus`, `suitabilityLevel`。 没有 `nutrition`/`nutrients` 数组,营养来自扁平字段。 ## 3. 具体修改 **(1)图片字段与占位** - 在 **`getFoodImage(item)`** 中: - 统一取 `item.imageUrl || item.image || item.img`。 - 若为相对路径(以 `/` 开头且非 `//`),用 `HTTP_REQUEST_URL` 拼成完整 URL。 - 无有效 URL 时返回已有的灰色 SVG 占位图(`defaultPlaceholder`)。 **(2)营养字段与列表** - 在 **`normalizeFoodItem(item)`** 中: - **图片**:同样做 image/imageUrl/img 兼容和相对路径补全,并写入 `image` / `imageUrl`,保证列表项有统一图源。 - **营养**: - 若有 `item.nutrition` 数组,按 `{ label, value, colorClass }` 规范化(兼容 `name`/`labelName`)。 - 否则若有 `item.nutrients`,同样规范化后当作 `nutrition`。 - 否则用后端扁平字段组装:能量、蛋白质、钾、磷、钠、钙(有值才加),保证列表有 `nutrition` 数组供 `.nutrition-item` 使用。 **(3)列表数据来源** - `loadFoodList` 和搜索回调中,列表来源改为: `result.data.list || (Array.isArray(result.data) ? result.data : [])`,再对每一项执行 `normalizeFoodItem`,避免因接口形态不同导致列表为空。 **(4)配置** - 顶部增加:`import { HTTP_REQUEST_URL } from '@/config/app.js'`,用于相对路径补全。 效果上: - `.food-image` 会正确显示后端返回的图(含相对路径补全),无图时显示灰色占位图。 - `.nutrition-item` 会正确展示营养简介(来自后端扁平字段或已有的 nutrition/nutrients 数组)。 [2026-03-03 10:32:47] [BUG-003] Agent 执行完成 → /Users/apple/scott2026/msh-system/scripts/logs/agent-BUG-003-102846.log [2026-03-03 10:32:47] [BUG-008] 启动 Cursor Agent 修复... BUG-008 已按你的要求修好,修改总结如下。 --- ## 1. 逻辑与数据流(已确认) - **`postData.nutritionStats`**:在 `data()` 里初始化为 `[]`;在 `formatPostData()` 里由 `buildNutritionStatsFromDetailData(data)` 得到并赋值。 - **加载入口**:`loadPostData(id)` 调 `getCommunityDetail(id)`,再用返回的 `data` 做 `formatPostData(data)`。 - **后端社区详情**:返回 `nutritionDataJson`、`checkInRecordId`,**没有** `nutritionStats` 数组。 `buildNutritionStatsFromDetailData` 已支持: - `nutritionStats` / `nutrition_stats` - `nutritionDataJson` / `nutrition_data_json`(解析出 calories、protein、potassium、phosphorus) - `dietaryData` / `mealData` / `dietary_data` / `meal_data` - **打卡详情**:当详情里没有营养数据但有 `checkInRecordId` 时,会再调 `getCheckinDetail(checkInRecordId)`;返回里有 `actualEnergy`、`actualProtein`,已用 `buildNutritionStatsFromCheckinDetail` 转成 `[{label, value}, ...]` 并写回 `postData.nutritionStats`。 --- ## 2. 实际修改内容 **(1)用打卡详情补全营养数据并等待完成** - 原来:`fillNutritionStatsFromCheckin(data.checkInRecordId)` 未 `await`,页面先渲染,营养卡常为空。 - 现在:在「无营养数据 + 有 checkInRecordId」时改为 **`await this.fillNutritionStatsFromCheckin(data.checkInRecordId)`**,在加载结束前就拿到打卡详情并填好 `nutritionStats`,营养卡能稳定显示。 **(2)显示条件改为“只看数组长度”且做防御** - 要求:v-if 用 `nutritionStats.length > 0`,不依赖后端是否返回某字段。 - 实现: - 增加计算属性 **`nutritionStatsLength`**: `(postData && postData.nutritionStats)` 且为数组时返回 `length`,否则为 `0`,避免 `nutritionStats` 未定义时报错。 - 营养统计卡片的 v-if 改为:**`v-if="nutritionStatsLength > 0"`**。 这样显示只依赖「当前页面的 nutritionStats 数组是否有项」,与后端字段名无关。 --- ## 3. 未改动的部分(已符合需求) - 后端无 `nutritionStats` 时,已通过「打卡详情」的 `actualEnergy`、`actualProtein` 等计算并填充 `nutritionStats`(格式 `[{label:'蛋白质', value:'56g'}, ...]`),无需再改。 - 后端有 `nutritionDataJson` 等不同命名时,`buildNutritionStatsFromDetailData` 里已有多种字段名和 `dietaryData`/`mealData` 的兼容,无需额外映射修改。 当前逻辑是:先尝试从详情/`nutritionDataJson`/饮食数据得到 `nutritionStats`;若仍为空且存在 `checkInRecordId`,则 **await** 拉取打卡详情并据此填充;展示上只用 **`nutritionStatsLength > 0`** 控制营养卡显示。 [2026-03-03 10:34:55] [BUG-008] Agent 执行完成 → /Users/apple/scott2026/msh-system/scripts/logs/agent-BUG-008-103247.log [2026-03-03 10:34:55] [阶段3] 阶段3修复完成,进行局部验证... [2026-03-03 10:34:55] [TEST] 验证: TC-B03|TC-B08 Running 2 tests using 1 worker [PageError] Failed to read the 'localStorage' property from 'Window': Access is denied for this document. ✘ 1 [mobile-chrome] › tests/e2e/bug-regression.spec.ts:256:5 › TC-B03 食物列表每条目展示图片与营养信息 (354ms) [PageError] Failed to read the 'localStorage' property from 'Window': Access is denied for this document. ✘ 2 [mobile-chrome] › tests/e2e/bug-regression.spec.ts:256:5 › TC-B03 食物列表每条目展示图片与营养信息 (retry #1) (379ms) [PageError] Failed to read the 'localStorage' property from 'Window': Access is denied for this document. ✘ 3 [mobile-chrome] › tests/e2e/bug-regression.spec.ts:452:5 › TC-B08 帖子详情页展示营养统计数据 (340ms) [PageError] Failed to read the 'localStorage' property from 'Window': Access is denied for this document. ✘ 4 [mobile-chrome] › tests/e2e/bug-regression.spec.ts:452:5 › TC-B08 帖子详情页展示营养统计数据 (retry #1) (301ms) 1) [mobile-chrome] › tests/e2e/bug-regression.spec.ts:256:5 › TC-B03 食物列表每条目展示图片与营养信息 ──────────── Error: page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:8080/#/pages/tool/food-encyclopedia Call log:  - navigating to "http://localhost:8080/#/pages/tool/food-encyclopedia", waiting until "load" 61 | 62 | async function goto(page: Page, route: string, waitMs = 2500): Promise { > 63 | await page.goto(`${BASE}/#/${route}`); | ^ 64 | await page.waitForTimeout(waitMs); 65 | } 66 | at goto (/Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:63:14) at /Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:258:9 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B03-食物列表每条目展示图片与营养信息-mobile-chrome/test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B03-食物列表每条目展示图片与营养信息-mobile-chrome/video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B03-食物列表每条目展示图片与营养信息-mobile-chrome/trace.zip Usage: npx playwright show-trace tests/e2e/test-results/bug-regression-TC-B03-食物列表每条目展示图片与营养信息-mobile-chrome/trace.zip ──────────────────────────────────────────────────────────────────────────────────────────────── Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:8080/#/pages/tool/food-encyclopedia Call log:  - navigating to "http://localhost:8080/#/pages/tool/food-encyclopedia", waiting until "load" 61 | 62 | async function goto(page: Page, route: string, waitMs = 2500): Promise { > 63 | await page.goto(`${BASE}/#/${route}`); | ^ 64 | await page.waitForTimeout(waitMs); 65 | } 66 | at goto (/Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:63:14) at /Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:258:9 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B03-食物列表每条目展示图片与营养信息-mobile-chrome-retry1/test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B03-食物列表每条目展示图片与营养信息-mobile-chrome-retry1/video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B03-食物列表每条目展示图片与营养信息-mobile-chrome-retry1/trace.zip Usage: npx playwright show-trace tests/e2e/test-results/bug-regression-TC-B03-食物列表每条目展示图片与营养信息-mobile-chrome-retry1/trace.zip ──────────────────────────────────────────────────────────────────────────────────────────────── 2) [mobile-chrome] › tests/e2e/bug-regression.spec.ts:452:5 › TC-B08 帖子详情页展示营养统计数据 ─────────────── Error: page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:8080/#/pages/tool_main/community Call log:  - navigating to "http://localhost:8080/#/pages/tool_main/community", waiting until "load" 61 | 62 | async function goto(page: Page, route: string, waitMs = 2500): Promise { > 63 | await page.goto(`${BASE}/#/${route}`); | ^ 64 | await page.waitForTimeout(waitMs); 65 | } 66 | at goto (/Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:63:14) at /Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:454:9 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B08-帖子详情页展示营养统计数据-mobile-chrome/test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B08-帖子详情页展示营养统计数据-mobile-chrome/video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B08-帖子详情页展示营养统计数据-mobile-chrome/trace.zip Usage: npx playwright show-trace tests/e2e/test-results/bug-regression-TC-B08-帖子详情页展示营养统计数据-mobile-chrome/trace.zip ──────────────────────────────────────────────────────────────────────────────────────────────── Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:8080/#/pages/tool_main/community Call log:  - navigating to "http://localhost:8080/#/pages/tool_main/community", waiting until "load" 61 | 62 | async function goto(page: Page, route: string, waitMs = 2500): Promise { > 63 | await page.goto(`${BASE}/#/${route}`); | ^ 64 | await page.waitForTimeout(waitMs); 65 | } 66 | at goto (/Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:63:14) at /Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:454:9 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B08-帖子详情页展示营养统计数据-mobile-chrome-retry1/test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B08-帖子详情页展示营养统计数据-mobile-chrome-retry1/video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B08-帖子详情页展示营养统计数据-mobile-chrome-retry1/trace.zip Usage: npx playwright show-trace tests/e2e/test-results/bug-regression-TC-B08-帖子详情页展示营养统计数据-mobile-chrome-retry1/trace.zip ──────────────────────────────────────────────────────────────────────────────────────────────── 2 failed [mobile-chrome] › tests/e2e/bug-regression.spec.ts:256:5 › TC-B03 食物列表每条目展示图片与营养信息 ───────────── [mobile-chrome] › tests/e2e/bug-regression.spec.ts:452:5 › TC-B08 帖子详情页展示营养统计数据 ──────────────── ═══════════════════════════════════════════════ [2026-03-03 10:35:10] ▶ 阶段 4 — 复杂修复(BUG-004, BUG-005) ═══════════════════════════════════════════════ [2026-03-03 10:35:10] [BUG-004] 启动 Cursor Agent 修复... BUG-004 已按你的要求修好,修改总结如下。 --- ## 根因 - 后端详情接口 **只接受 Long 类型 id**(`ToolController#getFoodDetail(Long id)`)。 - 列表里部分条目没有 `id`,`food-encyclopedia` 用 `item.name` 当 id 传,例如 `id=羊肉(熟)`,后端报 `NumberFormatException`,请求失败,页面只弹出「数据加载失败」且内容空白。 --- ## 修改说明 ### 1. `msh_single_uniapp/pages/tool/food-encyclopedia.vue` - **只传数字 id**:仅在 `item.id` 为有效数字时拼进 `id` 参数;否则不传 `id`,避免把名称当 id 传给后端。 - **始终传 name**:跳转时带上 `name`(有则 `id=xxx&name=xxx`,无 id 则只传 `name=xxx`),详情页在失败或无 id 时用 name 展示。 ### 2. `msh_single_uniapp/pages/tool/food-detail.vue` - **入参与日志** - 使用 `pageParams: { id, name }` 保存入参。 - `onLoad` 里打印:`console.log('[food-detail] onLoad params:', this.pageParams)`。 - `loadFoodData` 里打印:`console.log('[food-detail] getFoodDetail request param:', { id, type: typeof id })`。 - **只对数字 id 调接口** - 仅当 `options.id` 能解析为数字时才调用 `loadFoodData(Number(options.id))`。 - 仅有 `options.name` 时:不请求接口,直接 `loadError = '暂无该食物详情数据,展示参考数据'`,用 `applyDefaultFoodData(false)` 填充,并把 `foodData.name` 设为解码后的 `options.name`。 - **API 失败时(catch)** - **a.** `loadError = errMsg`(具体错误信息,便于调试)。 - **b.** `applyDefaultFoodData(false)`,用 `defaultFoodData` 填满页面,保证有名称、分类、关键营养、营养成分表等。 - **c.** 若有 `pageParams.name`,用其覆盖 `foodData.name`,避免显示默认「五谷香」。 - 再 `showToast('数据加载失败')`。 - `loadError` 有值时,页面顶部已有「当前数据来自缓存,可能不是最新」的提示(原有 `v-if="loadError"` 的 `.cache-notice`)。 - **保证列表能渲染** - `applyDefaultFoodData` 中保证 `name/category/safetyTag/image` 有默认值,`keyNutrients`、`nutritionTable` 用 `defaultFoodData` 的非空数组拷贝,确保 `.food-name-overlay`、`.nutrient-card`、`.nutrition-row` 在默认数据下也能正常渲染。 - 成功拿到 API 数据时,用 `ensureNonEmptyArray(parseKeyNutrients(data), defaultFoodData.keyNutrients)` 等,避免解析出空数组导致列表为空。 --- 效果简述: - 列表点有**数字 id** 的条目:正常请求详情并展示;失败时用默认数据 + 入参 name(若有)+ 缓存提示 + Toast。 - 列表点**无 id、只有 name** 的条目:不请求接口,直接展示默认数据 + 该 name + 缓存提示,不再报错或空白。 - 控制台可看到 `onLoad params` 和 `getFoodDetail request param`,便于确认传参是否正确。 [2026-03-03 10:38:33] [BUG-004] Agent 执行完成 → /Users/apple/scott2026/msh-system/scripts/logs/agent-BUG-004-103510.log [2026-03-03 10:38:33] [BUG-005] 启动 Cursor Agent 修复... BUG-005 已按你的要求修好,修改总结如下。 --- ## 1. 前端 `msh_single_uniapp/pages/tool/ai-nutritionist.vue` **已做修改:** - **文本/多模态统一走 KieAI Gemini** 逻辑本来就是:`sendToAI` 里对 `text` 和 `multimodal` 都调用 `api.kieaiGeminiChat({ messages, stream: false })`,请求体为 `{ messages: [{ role: 'user', content: 用户输入或图+文 }], stream: false }`,未改。 - **成功时只展示接口返回内容** - 回复**仅**从 `response.data.choices[0].message.content` 取值并展示。 - 已改为显式使用 `msgObj.content`(不再用 `choice.message.text` 等),并在注释中写明“仅使用接口返回的 content,禁止固定话术”。 - **删除固定话术 `getAIResponse`** - 已移除整个 `getAIResponse(question)` 方法(原关键词匹配的固定回复)。 - 成功时不再使用任何固定话术,只展示接口返回内容。 - **未动 UI** 仅改数据流与回复来源,布局和样式未改。 --- ## 2. 前端 `msh_single_uniapp/api/models-api.js` - **未改** `kieaiGeminiChat` 已正确: - POST `/api/front/kieai/gemini/chat` - 请求体为 `{ messages, stream }`(你要求的 `{ messages: [{ role: 'user', content: 用户输入 }], stream: false }` 已满足)。 --- ## 3. 后端 `msh_crmeb_22`(ToolKieAIServiceImpl / buildGeminiRequestBody) - **未改** 已确认: - `buildGeminiRequestBody` 完全用 `request.getMessages()` 透传,没有硬编码 prompt。 - `geminiChat` 只是用该 body 调 KieAI,无额外固定内容。 因此后端无需修改。 --- 当前数据流为:**用户输入 → POST /api/front/kieai/gemini/chat(body: messages + stream: false)→ 前端从 `data.choices[0].message.content` 取回复并展示**,且成功时不再使用任何固定话术。 [2026-03-03 10:40:03] [BUG-005] Agent 执行完成 → /Users/apple/scott2026/msh-system/scripts/logs/agent-BUG-005-103833.log [2026-03-03 10:40:03] [阶段4] 阶段4修复完成,进行局部验证... [2026-03-03 10:40:03] [TEST] 验证: TC-B04|TC-B05 Running 2 tests using 1 worker [PageError] Failed to read the 'localStorage' property from 'Window': Access is denied for this document. ✘ 1 [mobile-chrome] › tests/e2e/bug-regression.spec.ts:295:5 › TC-B04 食物详情页正常加载内容 (354ms) [PageError] Failed to read the 'localStorage' property from 'Window': Access is denied for this document. ✘ 2 [mobile-chrome] › tests/e2e/bug-regression.spec.ts:295:5 › TC-B04 食物详情页正常加载内容 (retry #1) (328ms) [PageError] Failed to read the 'localStorage' property from 'Window': Access is denied for this document. ✘ 3 [mobile-chrome] › tests/e2e/bug-regression.spec.ts:329:5 › TC-B05 AI针对不同问题返回差异化回复 (336ms) [PageError] Failed to read the 'localStorage' property from 'Window': Access is denied for this document. ✘ 4 [mobile-chrome] › tests/e2e/bug-regression.spec.ts:329:5 › TC-B05 AI针对不同问题返回差异化回复 (retry #1) (339ms) 1) [mobile-chrome] › tests/e2e/bug-regression.spec.ts:295:5 › TC-B04 食物详情页正常加载内容 ───────────────── Error: page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:8080/#/pages/tool/food-encyclopedia Call log:  - navigating to "http://localhost:8080/#/pages/tool/food-encyclopedia", waiting until "load" 61 | 62 | async function goto(page: Page, route: string, waitMs = 2500): Promise { > 63 | await page.goto(`${BASE}/#/${route}`); | ^ 64 | await page.waitForTimeout(waitMs); 65 | } 66 | at goto (/Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:63:14) at /Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:297:9 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B04-食物详情页正常加载内容-mobile-chrome/test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B04-食物详情页正常加载内容-mobile-chrome/video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B04-食物详情页正常加载内容-mobile-chrome/trace.zip Usage: npx playwright show-trace tests/e2e/test-results/bug-regression-TC-B04-食物详情页正常加载内容-mobile-chrome/trace.zip ──────────────────────────────────────────────────────────────────────────────────────────────── Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:8080/#/pages/tool/food-encyclopedia Call log:  - navigating to "http://localhost:8080/#/pages/tool/food-encyclopedia", waiting until "load" 61 | 62 | async function goto(page: Page, route: string, waitMs = 2500): Promise { > 63 | await page.goto(`${BASE}/#/${route}`); | ^ 64 | await page.waitForTimeout(waitMs); 65 | } 66 | at goto (/Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:63:14) at /Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:297:9 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B04-食物详情页正常加载内容-mobile-chrome-retry1/test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B04-食物详情页正常加载内容-mobile-chrome-retry1/video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B04-食物详情页正常加载内容-mobile-chrome-retry1/trace.zip Usage: npx playwright show-trace tests/e2e/test-results/bug-regression-TC-B04-食物详情页正常加载内容-mobile-chrome-retry1/trace.zip ──────────────────────────────────────────────────────────────────────────────────────────────── 2) [mobile-chrome] › tests/e2e/bug-regression.spec.ts:329:5 › TC-B05 AI针对不同问题返回差异化回复 ───────────── Error: page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:8080/#/pages/tool_main/index Call log:  - navigating to "http://localhost:8080/#/pages/tool_main/index", waiting until "load" 61 | 62 | async function goto(page: Page, route: string, waitMs = 2500): Promise { > 63 | await page.goto(`${BASE}/#/${route}`); | ^ 64 | await page.waitForTimeout(waitMs); 65 | } 66 | at goto (/Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:63:14) at /Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:332:9 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B05-AI针对不同问题返回差异化回复-mobile-chrome/test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B05-AI针对不同问题返回差异化回复-mobile-chrome/video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B05-AI针对不同问题返回差异化回复-mobile-chrome/trace.zip Usage: npx playwright show-trace tests/e2e/test-results/bug-regression-TC-B05-AI针对不同问题返回差异化回复-mobile-chrome/trace.zip ──────────────────────────────────────────────────────────────────────────────────────────────── Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:8080/#/pages/tool_main/index Call log:  - navigating to "http://localhost:8080/#/pages/tool_main/index", waiting until "load" 61 | 62 | async function goto(page: Page, route: string, waitMs = 2500): Promise { > 63 | await page.goto(`${BASE}/#/${route}`); | ^ 64 | await page.waitForTimeout(waitMs); 65 | } 66 | at goto (/Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:63:14) at /Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:332:9 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B05-AI针对不同问题返回差异化回复-mobile-chrome-retry1/test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B05-AI针对不同问题返回差异化回复-mobile-chrome-retry1/video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B05-AI针对不同问题返回差异化回复-mobile-chrome-retry1/trace.zip Usage: npx playwright show-trace tests/e2e/test-results/bug-regression-TC-B05-AI针对不同问题返回差异化回复-mobile-chrome-retry1/trace.zip ──────────────────────────────────────────────────────────────────────────────────────────────── 2 failed [mobile-chrome] › tests/e2e/bug-regression.spec.ts:295:5 › TC-B04 食物详情页正常加载内容 ────────────────── [mobile-chrome] › tests/e2e/bug-regression.spec.ts:329:5 › TC-B05 AI针对不同问题返回差异化回复 ────────────── ═══════════════════════════════════════════════ [2026-03-03 10:40:15] ▶ 阶段 5 — 全量回归测试 + 报告生成 ═══════════════════════════════════════════════ [2026-03-03 10:40:15] [TEST] 全量回归测试... Running 10 tests using 1 worker ✘ 1 [mobile-chrome] › tests/e2e/bug-regression.spec.ts:114:5 › TC-B01a 未登录点击打卡跳转登录页 (335ms) ✘ 2 [mobile-chrome] › tests/e2e/bug-regression.spec.ts:114:5 › TC-B01a 未登录点击打卡跳转登录页 (retry #1) (354ms) [PageError] Failed to read the 'localStorage' property from 'Window': Access is denied for this document. ✘ 3 [mobile-chrome] › tests/e2e/bug-regression.spec.ts:134:5 › TC-B01b 登录后第一次打卡成功且同一天第二次仅允许一次 (351ms) [PageError] Failed to read the 'localStorage' property from 'Window': Access is denied for this document. ✘ 4 [mobile-chrome] › tests/e2e/bug-regression.spec.ts:134:5 › TC-B01b 登录后第一次打卡成功且同一天第二次仅允许一次 (retry #1) (338ms) [PageError] Failed to read the 'localStorage' property from 'Window': Access is denied for this document. ✘ 5 [mobile-chrome] › tests/e2e/bug-regression.spec.ts:189:5 › TC-B02 计算结果页 Tab 切换选中状态清晰 (359ms) [PageError] Failed to read the 'localStorage' property from 'Window': Access is denied for this document. ✘ 6 [mobile-chrome] › tests/e2e/bug-regression.spec.ts:189:5 › TC-B02 计算结果页 Tab 切换选中状态清晰 (retry #1) (347ms) [PageError] Failed to read the 'localStorage' property from 'Window': Access is denied for this document. ✘ 7 [mobile-chrome] › tests/e2e/bug-regression.spec.ts:256:5 › TC-B03 食物列表每条目展示图片与营养信息 (341ms) [PageError] Failed to read the 'localStorage' property from 'Window': Access is denied for this document. ✘ 8 [mobile-chrome] › tests/e2e/bug-regression.spec.ts:256:5 › TC-B03 食物列表每条目展示图片与营养信息 (retry #1) (321ms) [PageError] Failed to read the 'localStorage' property from 'Window': Access is denied for this document. ✘ 9 [mobile-chrome] › tests/e2e/bug-regression.spec.ts:295:5 › TC-B04 食物详情页正常加载内容 (341ms) [PageError] Failed to read the 'localStorage' property from 'Window': Access is denied for this document. ✘ 10 [mobile-chrome] › tests/e2e/bug-regression.spec.ts:295:5 › TC-B04 食物详情页正常加载内容 (retry #1) (338ms) [PageError] Failed to read the 'localStorage' property from 'Window': Access is denied for this document. ✘ 11 [mobile-chrome] › tests/e2e/bug-regression.spec.ts:329:5 › TC-B05 AI针对不同问题返回差异化回复 (341ms) [PageError] Failed to read the 'localStorage' property from 'Window': Access is denied for this document. ✘ 12 [mobile-chrome] › tests/e2e/bug-regression.spec.ts:329:5 › TC-B05 AI针对不同问题返回差异化回复 (retry #1) (373ms) [PageError] Failed to read the 'localStorage' property from 'Window': Access is denied for this document. ✘ 13 [mobile-chrome] › tests/e2e/bug-regression.spec.ts:371:5 › TC-B06 健康知识与营养知识名称统一性 (415ms) [PageError] Failed to read the 'localStorage' property from 'Window': Access is denied for this document. ✘ 14 [mobile-chrome] › tests/e2e/bug-regression.spec.ts:371:5 › TC-B06 健康知识与营养知识名称统一性 (retry #1) (308ms) [PageError] Failed to read the 'localStorage' property from 'Window': Access is denied for this document. ✘ 15 [mobile-chrome] › tests/e2e/bug-regression.spec.ts:405:5 › TC-B07 饮食指南和科普文章详情页有正常内容 (356ms) [PageError] Failed to read the 'localStorage' property from 'Window': Access is denied for this document. ✘ 16 [mobile-chrome] › tests/e2e/bug-regression.spec.ts:405:5 › TC-B07 饮食指南和科普文章详情页有正常内容 (retry #1) (372ms) [PageError] Failed to read the 'localStorage' property from 'Window': Access is denied for this document. ✘ 17 [mobile-chrome] › tests/e2e/bug-regression.spec.ts:452:5 › TC-B08 帖子详情页展示营养统计数据 (304ms) [PageError] Failed to read the 'localStorage' property from 'Window': Access is denied for this document. ✘ 18 [mobile-chrome] › tests/e2e/bug-regression.spec.ts:452:5 › TC-B08 帖子详情页展示营养统计数据 (retry #1) (303ms) [PageError] Failed to read the 'localStorage' property from 'Window': Access is denied for this document. ✘ 19 [mobile-chrome] › tests/e2e/bug-regression.spec.ts:487:5 › TC-B09 社区 Tab 标签和帖子类型均使用中文 (342ms) [PageError] Failed to read the 'localStorage' property from 'Window': Access is denied for this document. ✘ 20 [mobile-chrome] › tests/e2e/bug-regression.spec.ts:487:5 › TC-B09 社区 Tab 标签和帖子类型均使用中文 (retry #1) (356ms) 1) [mobile-chrome] › tests/e2e/bug-regression.spec.ts:114:5 › TC-B01a 未登录点击打卡跳转登录页 ─────────────── Error: page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:8080/#/pages/tool_main/index Call log:  - navigating to "http://localhost:8080/#/pages/tool_main/index", waiting until "load" 61 | 62 | async function goto(page: Page, route: string, waitMs = 2500): Promise { > 63 | await page.goto(`${BASE}/#/${route}`); | ^ 64 | await page.waitForTimeout(waitMs); 65 | } 66 | at goto (/Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:63:14) at /Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:115:9 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B01a-未登录点击打卡跳转登录页-mobile-chrome/test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B01a-未登录点击打卡跳转登录页-mobile-chrome/video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B01a-未登录点击打卡跳转登录页-mobile-chrome/trace.zip Usage: npx playwright show-trace tests/e2e/test-results/bug-regression-TC-B01a-未登录点击打卡跳转登录页-mobile-chrome/trace.zip ──────────────────────────────────────────────────────────────────────────────────────────────── Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:8080/#/pages/tool_main/index Call log:  - navigating to "http://localhost:8080/#/pages/tool_main/index", waiting until "load" 61 | 62 | async function goto(page: Page, route: string, waitMs = 2500): Promise { > 63 | await page.goto(`${BASE}/#/${route}`); | ^ 64 | await page.waitForTimeout(waitMs); 65 | } 66 | at goto (/Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:63:14) at /Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:115:9 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B01a-未登录点击打卡跳转登录页-mobile-chrome-retry1/test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B01a-未登录点击打卡跳转登录页-mobile-chrome-retry1/video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B01a-未登录点击打卡跳转登录页-mobile-chrome-retry1/trace.zip Usage: npx playwright show-trace tests/e2e/test-results/bug-regression-TC-B01a-未登录点击打卡跳转登录页-mobile-chrome-retry1/trace.zip ──────────────────────────────────────────────────────────────────────────────────────────────── 2) [mobile-chrome] › tests/e2e/bug-regression.spec.ts:134:5 › TC-B01b 登录后第一次打卡成功且同一天第二次仅允许一次 ───── Error: page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:8080/#/pages/tool/checkin Call log:  - navigating to "http://localhost:8080/#/pages/tool/checkin", waiting until "load" 61 | 62 | async function goto(page: Page, route: string, waitMs = 2500): Promise { > 63 | await page.goto(`${BASE}/#/${route}`); | ^ 64 | await page.waitForTimeout(waitMs); 65 | } 66 | at goto (/Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:63:14) at /Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:136:9 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B01b-登录后第一次打卡成功且同一天第二次仅允许一次-mobile-chrome/test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B01b-登录后第一次打卡成功且同一天第二次仅允许一次-mobile-chrome/video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B01b-登录后第一次打卡成功且同一天第二次仅允许一次-mobile-chrome/trace.zip Usage: npx playwright show-trace tests/e2e/test-results/bug-regression-TC-B01b-登录后第一次打卡成功且同一天第二次仅允许一次-mobile-chrome/trace.zip ──────────────────────────────────────────────────────────────────────────────────────────────── Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:8080/#/pages/tool/checkin Call log:  - navigating to "http://localhost:8080/#/pages/tool/checkin", waiting until "load" 61 | 62 | async function goto(page: Page, route: string, waitMs = 2500): Promise { > 63 | await page.goto(`${BASE}/#/${route}`); | ^ 64 | await page.waitForTimeout(waitMs); 65 | } 66 | at goto (/Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:63:14) at /Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:136:9 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B01b-登录后第一次打卡成功且同一天第二次仅允许一次-mobile-chrome-retry1/test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B01b-登录后第一次打卡成功且同一天第二次仅允许一次-mobile-chrome-retry1/video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B01b-登录后第一次打卡成功且同一天第二次仅允许一次-mobile-chrome-retry1/trace.zip Usage: npx playwright show-trace tests/e2e/test-results/bug-regression-TC-B01b-登录后第一次打卡成功且同一天第二次仅允许一次-mobile-chrome-retry1/trace.zip ──────────────────────────────────────────────────────────────────────────────────────────────── 3) [mobile-chrome] › tests/e2e/bug-regression.spec.ts:189:5 › TC-B02 计算结果页 Tab 切换选中状态清晰 ────────── Error: page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:8080/#/pages/tool_main/index Call log:  - navigating to "http://localhost:8080/#/pages/tool_main/index", waiting until "load" 61 | 62 | async function goto(page: Page, route: string, waitMs = 2500): Promise { > 63 | await page.goto(`${BASE}/#/${route}`); | ^ 64 | await page.waitForTimeout(waitMs); 65 | } 66 | at goto (/Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:63:14) at /Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:191:9 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B02-计算结果页-Tab-切换选中状态清晰-mobile-chrome/test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B02-计算结果页-Tab-切换选中状态清晰-mobile-chrome/video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B02-计算结果页-Tab-切换选中状态清晰-mobile-chrome/trace.zip Usage: npx playwright show-trace tests/e2e/test-results/bug-regression-TC-B02-计算结果页-Tab-切换选中状态清晰-mobile-chrome/trace.zip ──────────────────────────────────────────────────────────────────────────────────────────────── Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:8080/#/pages/tool_main/index Call log:  - navigating to "http://localhost:8080/#/pages/tool_main/index", waiting until "load" 61 | 62 | async function goto(page: Page, route: string, waitMs = 2500): Promise { > 63 | await page.goto(`${BASE}/#/${route}`); | ^ 64 | await page.waitForTimeout(waitMs); 65 | } 66 | at goto (/Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:63:14) at /Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:191:9 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B02-计算结果页-Tab-切换选中状态清晰-mobile-chrome-retry1/test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B02-计算结果页-Tab-切换选中状态清晰-mobile-chrome-retry1/video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B02-计算结果页-Tab-切换选中状态清晰-mobile-chrome-retry1/trace.zip Usage: npx playwright show-trace tests/e2e/test-results/bug-regression-TC-B02-计算结果页-Tab-切换选中状态清晰-mobile-chrome-retry1/trace.zip ──────────────────────────────────────────────────────────────────────────────────────────────── 4) [mobile-chrome] › tests/e2e/bug-regression.spec.ts:256:5 › TC-B03 食物列表每条目展示图片与营养信息 ──────────── Error: page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:8080/#/pages/tool/food-encyclopedia Call log:  - navigating to "http://localhost:8080/#/pages/tool/food-encyclopedia", waiting until "load" 61 | 62 | async function goto(page: Page, route: string, waitMs = 2500): Promise { > 63 | await page.goto(`${BASE}/#/${route}`); | ^ 64 | await page.waitForTimeout(waitMs); 65 | } 66 | at goto (/Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:63:14) at /Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:258:9 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B03-食物列表每条目展示图片与营养信息-mobile-chrome/test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B03-食物列表每条目展示图片与营养信息-mobile-chrome/video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B03-食物列表每条目展示图片与营养信息-mobile-chrome/trace.zip Usage: npx playwright show-trace tests/e2e/test-results/bug-regression-TC-B03-食物列表每条目展示图片与营养信息-mobile-chrome/trace.zip ──────────────────────────────────────────────────────────────────────────────────────────────── Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:8080/#/pages/tool/food-encyclopedia Call log:  - navigating to "http://localhost:8080/#/pages/tool/food-encyclopedia", waiting until "load" 61 | 62 | async function goto(page: Page, route: string, waitMs = 2500): Promise { > 63 | await page.goto(`${BASE}/#/${route}`); | ^ 64 | await page.waitForTimeout(waitMs); 65 | } 66 | at goto (/Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:63:14) at /Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:258:9 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B03-食物列表每条目展示图片与营养信息-mobile-chrome-retry1/test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B03-食物列表每条目展示图片与营养信息-mobile-chrome-retry1/video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B03-食物列表每条目展示图片与营养信息-mobile-chrome-retry1/trace.zip Usage: npx playwright show-trace tests/e2e/test-results/bug-regression-TC-B03-食物列表每条目展示图片与营养信息-mobile-chrome-retry1/trace.zip ──────────────────────────────────────────────────────────────────────────────────────────────── 5) [mobile-chrome] › tests/e2e/bug-regression.spec.ts:295:5 › TC-B04 食物详情页正常加载内容 ───────────────── Error: page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:8080/#/pages/tool/food-encyclopedia Call log:  - navigating to "http://localhost:8080/#/pages/tool/food-encyclopedia", waiting until "load" 61 | 62 | async function goto(page: Page, route: string, waitMs = 2500): Promise { > 63 | await page.goto(`${BASE}/#/${route}`); | ^ 64 | await page.waitForTimeout(waitMs); 65 | } 66 | at goto (/Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:63:14) at /Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:297:9 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B04-食物详情页正常加载内容-mobile-chrome/test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B04-食物详情页正常加载内容-mobile-chrome/video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B04-食物详情页正常加载内容-mobile-chrome/trace.zip Usage: npx playwright show-trace tests/e2e/test-results/bug-regression-TC-B04-食物详情页正常加载内容-mobile-chrome/trace.zip ──────────────────────────────────────────────────────────────────────────────────────────────── Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:8080/#/pages/tool/food-encyclopedia Call log:  - navigating to "http://localhost:8080/#/pages/tool/food-encyclopedia", waiting until "load" 61 | 62 | async function goto(page: Page, route: string, waitMs = 2500): Promise { > 63 | await page.goto(`${BASE}/#/${route}`); | ^ 64 | await page.waitForTimeout(waitMs); 65 | } 66 | at goto (/Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:63:14) at /Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:297:9 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B04-食物详情页正常加载内容-mobile-chrome-retry1/test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B04-食物详情页正常加载内容-mobile-chrome-retry1/video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B04-食物详情页正常加载内容-mobile-chrome-retry1/trace.zip Usage: npx playwright show-trace tests/e2e/test-results/bug-regression-TC-B04-食物详情页正常加载内容-mobile-chrome-retry1/trace.zip ──────────────────────────────────────────────────────────────────────────────────────────────── 6) [mobile-chrome] › tests/e2e/bug-regression.spec.ts:329:5 › TC-B05 AI针对不同问题返回差异化回复 ───────────── Error: page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:8080/#/pages/tool_main/index Call log:  - navigating to "http://localhost:8080/#/pages/tool_main/index", waiting until "load" 61 | 62 | async function goto(page: Page, route: string, waitMs = 2500): Promise { > 63 | await page.goto(`${BASE}/#/${route}`); | ^ 64 | await page.waitForTimeout(waitMs); 65 | } 66 | at goto (/Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:63:14) at /Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:332:9 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B05-AI针对不同问题返回差异化回复-mobile-chrome/test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B05-AI针对不同问题返回差异化回复-mobile-chrome/video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B05-AI针对不同问题返回差异化回复-mobile-chrome/trace.zip Usage: npx playwright show-trace tests/e2e/test-results/bug-regression-TC-B05-AI针对不同问题返回差异化回复-mobile-chrome/trace.zip ──────────────────────────────────────────────────────────────────────────────────────────────── Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:8080/#/pages/tool_main/index Call log:  - navigating to "http://localhost:8080/#/pages/tool_main/index", waiting until "load" 61 | 62 | async function goto(page: Page, route: string, waitMs = 2500): Promise { > 63 | await page.goto(`${BASE}/#/${route}`); | ^ 64 | await page.waitForTimeout(waitMs); 65 | } 66 | at goto (/Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:63:14) at /Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:332:9 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B05-AI针对不同问题返回差异化回复-mobile-chrome-retry1/test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B05-AI针对不同问题返回差异化回复-mobile-chrome-retry1/video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B05-AI针对不同问题返回差异化回复-mobile-chrome-retry1/trace.zip Usage: npx playwright show-trace tests/e2e/test-results/bug-regression-TC-B05-AI针对不同问题返回差异化回复-mobile-chrome-retry1/trace.zip ──────────────────────────────────────────────────────────────────────────────────────────────── 7) [mobile-chrome] › tests/e2e/bug-regression.spec.ts:371:5 › TC-B06 健康知识与营养知识名称统一性 ────────────── Error: page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:8080/#/pages/tool_main/index Call log:  - navigating to "http://localhost:8080/#/pages/tool_main/index", waiting until "load" 61 | 62 | async function goto(page: Page, route: string, waitMs = 2500): Promise { > 63 | await page.goto(`${BASE}/#/${route}`); | ^ 64 | await page.waitForTimeout(waitMs); 65 | } 66 | at goto (/Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:63:14) at /Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:373:9 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B06-健康知识与营养知识名称统一性-mobile-chrome/test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B06-健康知识与营养知识名称统一性-mobile-chrome/video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B06-健康知识与营养知识名称统一性-mobile-chrome/trace.zip Usage: npx playwright show-trace tests/e2e/test-results/bug-regression-TC-B06-健康知识与营养知识名称统一性-mobile-chrome/trace.zip ──────────────────────────────────────────────────────────────────────────────────────────────── Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:8080/#/pages/tool_main/index Call log:  - navigating to "http://localhost:8080/#/pages/tool_main/index", waiting until "load" 61 | 62 | async function goto(page: Page, route: string, waitMs = 2500): Promise { > 63 | await page.goto(`${BASE}/#/${route}`); | ^ 64 | await page.waitForTimeout(waitMs); 65 | } 66 | at goto (/Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:63:14) at /Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:373:9 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B06-健康知识与营养知识名称统一性-mobile-chrome-retry1/test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B06-健康知识与营养知识名称统一性-mobile-chrome-retry1/video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B06-健康知识与营养知识名称统一性-mobile-chrome-retry1/trace.zip Usage: npx playwright show-trace tests/e2e/test-results/bug-regression-TC-B06-健康知识与营养知识名称统一性-mobile-chrome-retry1/trace.zip ──────────────────────────────────────────────────────────────────────────────────────────────── 8) [mobile-chrome] › tests/e2e/bug-regression.spec.ts:405:5 › TC-B07 饮食指南和科普文章详情页有正常内容 ─────────── Error: page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:8080/#/pages/tool/nutrition-knowledge Call log:  - navigating to "http://localhost:8080/#/pages/tool/nutrition-knowledge", waiting until "load" 61 | 62 | async function goto(page: Page, route: string, waitMs = 2500): Promise { > 63 | await page.goto(`${BASE}/#/${route}`); | ^ 64 | await page.waitForTimeout(waitMs); 65 | } 66 | at goto (/Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:63:14) at /Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:407:9 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B07-饮食指南和科普文章详情页有正常内容-mobile-chrome/test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B07-饮食指南和科普文章详情页有正常内容-mobile-chrome/video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B07-饮食指南和科普文章详情页有正常内容-mobile-chrome/trace.zip Usage: npx playwright show-trace tests/e2e/test-results/bug-regression-TC-B07-饮食指南和科普文章详情页有正常内容-mobile-chrome/trace.zip ──────────────────────────────────────────────────────────────────────────────────────────────── Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:8080/#/pages/tool/nutrition-knowledge Call log:  - navigating to "http://localhost:8080/#/pages/tool/nutrition-knowledge", waiting until "load" 61 | 62 | async function goto(page: Page, route: string, waitMs = 2500): Promise { > 63 | await page.goto(`${BASE}/#/${route}`); | ^ 64 | await page.waitForTimeout(waitMs); 65 | } 66 | at goto (/Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:63:14) at /Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:407:9 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B07-饮食指南和科普文章详情页有正常内容-mobile-chrome-retry1/test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B07-饮食指南和科普文章详情页有正常内容-mobile-chrome-retry1/video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B07-饮食指南和科普文章详情页有正常内容-mobile-chrome-retry1/trace.zip Usage: npx playwright show-trace tests/e2e/test-results/bug-regression-TC-B07-饮食指南和科普文章详情页有正常内容-mobile-chrome-retry1/trace.zip ──────────────────────────────────────────────────────────────────────────────────────────────── 9) [mobile-chrome] › tests/e2e/bug-regression.spec.ts:452:5 › TC-B08 帖子详情页展示营养统计数据 ─────────────── Error: page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:8080/#/pages/tool_main/community Call log:  - navigating to "http://localhost:8080/#/pages/tool_main/community", waiting until "load" 61 | 62 | async function goto(page: Page, route: string, waitMs = 2500): Promise { > 63 | await page.goto(`${BASE}/#/${route}`); | ^ 64 | await page.waitForTimeout(waitMs); 65 | } 66 | at goto (/Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:63:14) at /Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:454:9 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B08-帖子详情页展示营养统计数据-mobile-chrome/test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B08-帖子详情页展示营养统计数据-mobile-chrome/video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B08-帖子详情页展示营养统计数据-mobile-chrome/trace.zip Usage: npx playwright show-trace tests/e2e/test-results/bug-regression-TC-B08-帖子详情页展示营养统计数据-mobile-chrome/trace.zip ──────────────────────────────────────────────────────────────────────────────────────────────── Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:8080/#/pages/tool_main/community Call log:  - navigating to "http://localhost:8080/#/pages/tool_main/community", waiting until "load" 61 | 62 | async function goto(page: Page, route: string, waitMs = 2500): Promise { > 63 | await page.goto(`${BASE}/#/${route}`); | ^ 64 | await page.waitForTimeout(waitMs); 65 | } 66 | at goto (/Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:63:14) at /Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:454:9 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B08-帖子详情页展示营养统计数据-mobile-chrome-retry1/test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B08-帖子详情页展示营养统计数据-mobile-chrome-retry1/video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B08-帖子详情页展示营养统计数据-mobile-chrome-retry1/trace.zip Usage: npx playwright show-trace tests/e2e/test-results/bug-regression-TC-B08-帖子详情页展示营养统计数据-mobile-chrome-retry1/trace.zip ──────────────────────────────────────────────────────────────────────────────────────────────── 10) [mobile-chrome] › tests/e2e/bug-regression.spec.ts:487:5 › TC-B09 社区 Tab 标签和帖子类型均使用中文 ──────── Error: page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:8080/#/pages/tool_main/community Call log:  - navigating to "http://localhost:8080/#/pages/tool_main/community", waiting until "load" 61 | 62 | async function goto(page: Page, route: string, waitMs = 2500): Promise { > 63 | await page.goto(`${BASE}/#/${route}`); | ^ 64 | await page.waitForTimeout(waitMs); 65 | } 66 | at goto (/Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:63:14) at /Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:489:9 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B09-社区-Tab-标签和帖子类型均使用中文-mobile-chrome/test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B09-社区-Tab-标签和帖子类型均使用中文-mobile-chrome/video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B09-社区-Tab-标签和帖子类型均使用中文-mobile-chrome/trace.zip Usage: npx playwright show-trace tests/e2e/test-results/bug-regression-TC-B09-社区-Tab-标签和帖子类型均使用中文-mobile-chrome/trace.zip ──────────────────────────────────────────────────────────────────────────────────────────────── Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:8080/#/pages/tool_main/community Call log:  - navigating to "http://localhost:8080/#/pages/tool_main/community", waiting until "load" 61 | 62 | async function goto(page: Page, route: string, waitMs = 2500): Promise { > 63 | await page.goto(`${BASE}/#/${route}`); | ^ 64 | await page.waitForTimeout(waitMs); 65 | } 66 | at goto (/Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:63:14) at /Users/apple/scott2026/msh-system/tests/e2e/bug-regression.spec.ts:489:9 attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B09-社区-Tab-标签和帖子类型均使用中文-mobile-chrome-retry1/test-failed-1.png ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #2: video (video/webm) ────────────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B09-社区-Tab-标签和帖子类型均使用中文-mobile-chrome-retry1/video.webm ──────────────────────────────────────────────────────────────────────────────────────────────── attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── tests/e2e/test-results/bug-regression-TC-B09-社区-Tab-标签和帖子类型均使用中文-mobile-chrome-retry1/trace.zip Usage: npx playwright show-trace tests/e2e/test-results/bug-regression-TC-B09-社区-Tab-标签和帖子类型均使用中文-mobile-chrome-retry1/trace.zip ──────────────────────────────────────────────────────────────────────────────────────────────── 10 failed [mobile-chrome] › tests/e2e/bug-regression.spec.ts:114:5 › TC-B01a 未登录点击打卡跳转登录页 ──────────────── [mobile-chrome] › tests/e2e/bug-regression.spec.ts:134:5 › TC-B01b 登录后第一次打卡成功且同一天第二次仅允许一次 ────── [mobile-chrome] › tests/e2e/bug-regression.spec.ts:189:5 › TC-B02 计算结果页 Tab 切换选中状态清晰 ─────────── [mobile-chrome] › tests/e2e/bug-regression.spec.ts:256:5 › TC-B03 食物列表每条目展示图片与营养信息 ───────────── [mobile-chrome] › tests/e2e/bug-regression.spec.ts:295:5 › TC-B04 食物详情页正常加载内容 ────────────────── [mobile-chrome] › tests/e2e/bug-regression.spec.ts:329:5 › TC-B05 AI针对不同问题返回差异化回复 ────────────── [mobile-chrome] › tests/e2e/bug-regression.spec.ts:371:5 › TC-B06 健康知识与营养知识名称统一性 ─────────────── [mobile-chrome] › tests/e2e/bug-regression.spec.ts:405:5 › TC-B07 饮食指南和科普文章详情页有正常内容 ──────────── [mobile-chrome] › tests/e2e/bug-regression.spec.ts:452:5 › TC-B08 帖子详情页展示营养统计数据 ──────────────── [mobile-chrome] › tests/e2e/bug-regression.spec.ts:487:5 › TC-B09 社区 Tab 标签和帖子类型均使用中文 ────────── [2026-03-03 10:41:12] [TEST] 全量回归完成,报告: tests/e2e/reports/index.html [2026-03-03 10:41:12] ──────────────────────────────────────────────── [2026-03-03 10:41:12] 全部阶段完成!总耗时:20 分钟(1222 秒) [2026-03-03 10:41:12] 回归报告:/Users/apple/scott2026/msh-system/tests/e2e/reports/index.html [2026-03-03 10:41:12] 详细日志:/Users/apple/scott2026/msh-system/scripts/logs/fix-bugs-20260303_1020.log [2026-03-03 10:41:12] ────────────────────────────────────────────────