Record schema-61 n=20 waterfall, throttle, and U7 form evidence; note Edge channel exception for Playwright Chromium download sandbox.
4.9 KiB
4.9 KiB
首次加载性能 U1/U3/U7 收尾测试报告
一、 测试背景 (Background)
方案 要求 U1 慢网样本 ≥20 并给出 p50/p75/p95;U3 补浏览器资源瀑布确认首屏无 katex/mermaid/docx;U7 补登录表单可见测量并如实记录是否达「较历史约十几秒基线下降 50%」。本轮在 macOS 上对已部署 dev(schema 61)复测,不放宽预算。
二、 测试目标 (Test Objectives)
- 登录态瀑布 n=20:成员扇出、会话列表、重模块路径、百分位。
- 慢网双档(10 Mbps / 2 Mbps)+ CPU 4x,各 n=20,对照拟定表单 p75 预算 1.5 s / 3 s。
- U7:
/ready已绿后冷导航到登录表单可见 n=20;与约 10 s 历史诊断对比是否 ≤5 s。 - 不发送聊天;证据去查询串;不写入令牌/正文。
三、 测试方案与环境 (Test Plan & Environment)
- OS:macOS Darwin arm64;浏览器:本机 Microsoft Edge(
PLAYWRIGHT_CHANNEL=msedge)。Playwright 自带 Chromium 因沙箱无法拉取cdn.playwright.dev,改用已装 Edge,语义仍为 Chromium 内核无头自动化。 - 被测:
http://127.0.0.1:8080,/api/v1/health→schema_version: 61,入口包assets/index-CgkGfOP7.js。 - 源码 worktree:
feature/loading-perf-closeout-2026-09-22(基线364ed7f1)。 - 用例:
web/e2e/initial-load-performance.spec.ts;辅助:web/src/lib/initialLoadMetrics.ts。 - 账号:dev 容器
ADMIN_USERNAME/ADMIN_PASSWORD(报告不写值)。 - 证据目录:assets/2026-09-22-initial-load-closeout/。
四、 预期结果 (Expected Results)
- 每样本
distinctMemberProjects ≤ 1、sessionListGetCount = 1(U4 行为仍在)。 - 匿名与登录后首可操作路径
heavyHits = [](无 katex/mermaid/docx)。 - 慢网表单可见 p75 ≤ 1500 ms(10 Mbps)/ ≤ 3000 ms(2 Mbps);失败时不得放宽阈值关账。
- U7 表单 p75 相对约 10 s 基线的 50% 目标为 ≤ 5000 ms;达不到则写未达标。
五、 实际测试结果与判定 (Actual Results & Evaluation)
5.1 U1/U3 登录态瀑布(无节流)
- 输入:
RUN_INITIAL_LOAD_BASELINE=1 INITIAL_LOAD_SAMPLES=20 EXPECT_INIT_MEMBER_PROJECTS=1。 - 输出:20/20 PASS。成员项目恒为 1、会话列表 GET 恒为 1;全程 heavy 空。匿名 JS 传输 180,393 B(单入口 js)。百分位:表单可见 p50/p75/p95 = 63/64/88 ms;工作台就绪 132/146/161 ms。
- 判定:PASS(探针与瀑布)。本机无带宽限制,不单独作为预算验收。
5.2 U1 慢网 + CPU 4x
- 输入:
INITIAL_LOAD_THROTTLE=1,CDP 限速 + CPU 4,阻断 Google 字体,各档 n=20。 - 输出:
| 档位 | 表单可见 p50/p75/p95 (ms) | 预算 p75 | 工作台就绪 p75 (ms) | 达预算 |
|---|---|---|---|---|
| 10mbps-cpu4 | 590 / 599 / 631 | 1500 | 656 | 是 |
| 2mbps-cpu4 | 1342 / 1346 / 1362 | 3000 | 1240 | 是 |
- 判定:PASS。未设置
INITIAL_LOAD_ENFORCE_BUDGETS=1硬断言,但实测均低于拟定预算,故未放宽阈值。
5.3 U3 瀑布重模块
- 基线与慢网样本的
anonymousHeavy/loggedInHeavy均为[]。首按钮/输入区可用时未加载 katex/mermaid/docx。 - 判定:PASS。
5.4 U7 登录表单可见(补 2026-09-19 libatk 缺口)
- 输入:
INITIAL_LOAD_U7_FORM=1,n=20,app 已/ready,不做 postgres/app 重启。 - 输出:表单可见 p50/p75/p95 = 70/75/95 ms;
meetsFiftyPercentVsApproxBaseline=true(相对约 10 s → 5 s 目标)。 - 判定:PASS(本口径)。范围说明:测的是就绪后冷导航表单可见,不是宿主机整机重启首访;整机重启→
/ready仍以 U7 重启报告(1.0–1.2 s)为准。不得把本项外推为「开机到可登录下降 50%」的整机结论。
六、 自动化测试套件汇总 (Test Suite Execution)
cd web && npm test
# pass 473 / fail 0(含 initialLoadMetrics 百分位与 heavy 断言)
cd web && npm run build
# tsc + vite build + precompress 成功
PLAYWRIGHT_CHANNEL=msedge RUN_INITIAL_LOAD_BASELINE=1 …
# logged-in workbench:1 passed
# throttled login:1 passed(~2.0m)
# U7 browser form:1 passed
七、 测试结论与后续优化建议 (Conclusion & Next Steps)
U1 慢网 n=20 百分位与预算对照已齐;U3 浏览器瀑布已确认首屏无延迟重模块;U7 表单可见缺口在 macOS Edge 上已补测并达到相对约 10 s 基线的 50% 目标(仅限 /ready 后冷导航口径)。FEATURE-MATRIX 首次加载专项可按本报告更新为关账结论。剩余非本轮:test/main 探针、整机冷启动矩阵、强制 INITIAL_LOAD_ENFORCE_BUDGETS=1 进 CI(需稳定 runner)。
证据 JSON:login-waterfall-schema61*.json、throttled-schema61*.json、u7-form-visibility*.json。