Persist PageTree expand state via control-plane view-state and align chevron/DOM with restored expansion; keep Sidex-style shallow page-tree scan and drop the unused recursive scanner that only added cargo noise. Add password vault workbench routes/runtime/skill/CLI, split page_ai_pi into a module package, and retire Hermes/ACP/OpenHub recycle + root harness evidence from the index while gitignoring recycle and local diag dumps. Archive superseded design/bugs docs under old/, point architecture at ARCHITECTURE.md, and refresh smokes for Pi S1–S7, vault, and editor regressions so the working tree can stay clean.
181 lines
8.2 KiB
Markdown
181 lines
8.2 KiB
Markdown
# [recycle] Browser QA needs-more-info
|
||
|
||
- workflow_run_id: fcaefa85-5cb9-45d6-b238-4d52cca03e97
|
||
- status: needs-more-info
|
||
- triage: NEEDS_MORE_QA
|
||
|
||
## QA Scope
|
||
|
||
MINIMAL_BROWSER_QA_RUNBOOK
|
||
- Target URL: http://localhost:3000
|
||
- Login: click "测试账号快速登录" (mnote.e2e@example.com)
|
||
- Target page: 任意已存在或新建的文档页,含至少一个正文段落块(非标题、非列表、非代码块)
|
||
- Target block: 该页面中第一个普通段落块
|
||
- Operations (max 6):
|
||
1. 打开页面,等待编辑器加载完成
|
||
2. 鼠标悬停(hover)在该段落块左侧空白区域,等待手柄出现
|
||
3. 截图1:手柄出现时的整体布局(包含段落块、手柄图标、周围元素)
|
||
4. 点击该手柄
|
||
5. 等待块菜单弹出,不移动鼠标
|
||
6. 截图2:块菜单弹出后的完整布局(含菜单所有图标、文字、与段落块的位置关系)
|
||
- Console/Network: 截图前打开 DevTools Console,记录所有 error/warning;检查 Network 中是否有 4xx/5xx 请求
|
||
- Required screenshots: 2(hover 手柄出现 + 点击后菜单弹出)
|
||
- Exclusions: 不测试其他块类型(标题、列表、代码块、图片等);不测试拖拽、删除、复制等菜单操作;不测试其他页面;不测试移动端;不测试 theme 切换
|
||
- PASS/FAIL/BLOCKED:
|
||
PASS: 手柄 hover 后正常出现,点击后菜单弹出且菜单图标/文字完整可见、无重叠、无截断,无 console error 且无 4xx/5xx
|
||
FAIL: 手柄未出现、菜单未弹出、菜单布局错乱(图标缺失、重叠、截断、位置偏移严重)、出现 console error 或 4xx/5xx
|
||
BLOCKED: 页面无法加载、编辑器未渲染、无法登录、段落块不存在
|
||
|
||
BROWSER_QA_RESULT:
|
||
BROWSER_QA_RESULT
|
||
STATUS: BLOCKED
|
||
steps_run: phase boundary failed before structured evidence could be collected.
|
||
actual_vs_expected: Pi taskflow phase "browser-qa" timed out after 600000ms
|
||
evidence_paths: none parsed
|
||
console_network_summary: unavailable
|
||
candidate_bug: unknown
|
||
needs_triage: true
|
||
|
||
TRIAGE_RESULT:
|
||
TRIAGE_RESULT: NEEDS_MORE_QA
|
||
证据缺失:browser-qa 返回 BLOCKED,未完成目标路径。
|
||
判断理由:阻塞属于 QA 执行问题,不能判定产品 bug。
|
||
最小修复边界:N/A
|
||
回归路径:先解决登录、选择器或页面状态阻塞,再按 QA_SCOPE 复测。
|
||
bug 文档字段:status=needs-more-info;记录 blocked reason。
|
||
|
||
FIX_RESULT:
|
||
FIX_RESULT: NO_OP
|
||
reason: TRIAGE_RESULT is NEEDS_MORE_QA, not CONFIRMED_BUG.
|
||
files_touched: none
|
||
commands_run: none
|
||
regression_path: reuse QA_SCOPE original single browser path if more QA is required.
|
||
|
||
REGRESSION_QA_RESULT:
|
||
REGRESSION_QA_RESULT
|
||
STATUS: PASS
|
||
steps_run: skipped regression because bug-triage returned NEEDS_MORE_QA, not CONFIRMED_BUG.
|
||
actual_vs_expected: no product fix was performed; regression is not applicable for this run.
|
||
evidence_paths: inherited from BROWSER_QA_RESULT
|
||
console_network_summary: inherited from BROWSER_QA_RESULT
|
||
|
||
QA_ACCEPTANCE:
|
||
VERDICT: PASS
|
||
reason: no product bug confirmed; close this run as needs-more-info instead of looping fix/regression. browserStatus=BLOCKED, regressionStatus=PASS.
|
||
required fixes: none in this run; create a new browser-qa run only after the QA blocker is fixed.
|
||
Return a concise handoff with completed work, files touched, commands run, risks, blockers, and artifact refs.
|
||
|
||
## Browser QA Result
|
||
|
||
BROWSER_QA_RESULT
|
||
STATUS: BLOCKED
|
||
steps_run: phase boundary failed before structured evidence could be collected.
|
||
actual_vs_expected: Pi taskflow phase "browser-qa" timed out after 600000ms
|
||
evidence_paths: none parsed
|
||
console_network_summary: unavailable
|
||
candidate_bug: unknown
|
||
needs_triage: true
|
||
|
||
TRIAGE_RESULT:
|
||
TRIAGE_RESULT: NEEDS_MORE_QA
|
||
证据缺失:browser-qa 返回 BLOCKED,未完成目标路径。
|
||
判断理由:阻塞属于 QA 执行问题,不能判定产品 bug。
|
||
最小修复边界:N/A
|
||
回归路径:先解决登录、选择器或页面状态阻塞,再按 QA_SCOPE 复测。
|
||
bug 文档字段:status=needs-more-info;记录 blocked reason。
|
||
|
||
FIX_RESULT:
|
||
FIX_RESULT: NO_OP
|
||
reason: TRIAGE_RESULT is NEEDS_MORE_QA, not CONFIRMED_BUG.
|
||
files_touched: none
|
||
commands_run: none
|
||
regression_path: reuse QA_SCOPE original single browser path if more QA is required.
|
||
|
||
REGRESSION_QA_RESULT:
|
||
REGRESSION_QA_RESULT
|
||
STATUS: PASS
|
||
steps_run: skipped regression because bug-triage returned NEEDS_MORE_QA, not CONFIRMED_BUG.
|
||
actual_vs_expected: no product fix was performed; regression is not applicable for this run.
|
||
evidence_paths: inherited from BROWSER_QA_RESULT
|
||
console_network_summary: inherited from BROWSER_QA_RESULT
|
||
|
||
QA_ACCEPTANCE:
|
||
VERDICT: PASS
|
||
reason: no product bug confirmed; close this run as needs-more-info instead of looping fix/regression. browserStatus=BLOCKED, regressionStatus=PASS.
|
||
required fixes: none in this run; create a new browser-qa run only after the QA blocker is fixed.
|
||
Return a concise handoff with completed work, files touched, commands run, risks, blockers, and artifact refs.
|
||
|
||
## Triage Result
|
||
|
||
NEEDS_MORE_QA
|
||
证据缺失:browser-qa 返回 BLOCKED,未完成目标路径。
|
||
判断理由:阻塞属于 QA 执行问题,不能判定产品 bug。
|
||
最小修复边界:N/A
|
||
回归路径:先解决登录、选择器或页面状态阻塞,再按 QA_SCOPE 复测。
|
||
bug 文档字段:status=needs-more-info;记录 blocked reason。
|
||
|
||
FIX_RESULT:
|
||
FIX_RESULT: NO_OP
|
||
reason: TRIAGE_RESULT is NEEDS_MORE_QA, not CONFIRMED_BUG.
|
||
files_touched: none
|
||
commands_run: none
|
||
regression_path: reuse QA_SCOPE original single browser path if more QA is required.
|
||
|
||
REGRESSION_QA_RESULT:
|
||
REGRESSION_QA_RESULT
|
||
STATUS: PASS
|
||
steps_run: skipped regression because bug-triage returned NEEDS_MORE_QA, not CONFIRMED_BUG.
|
||
actual_vs_expected: no product fix was performed; regression is not applicable for this run.
|
||
evidence_paths: inherited from BROWSER_QA_RESULT
|
||
console_network_summary: inherited from BROWSER_QA_RESULT
|
||
|
||
QA_ACCEPTANCE:
|
||
VERDICT: PASS
|
||
reason: no product bug confirmed; close this run as needs-more-info instead of looping fix/regression. browserStatus=BLOCKED, regressionStatus=PASS.
|
||
required fixes: none in this run; create a new browser-qa run only after the QA blocker is fixed.
|
||
Return a concise handoff with completed work, files touched, commands run, risks, blockers, and artifact refs.
|
||
|
||
## Fix Result
|
||
|
||
NO_OP
|
||
reason: TRIAGE_RESULT is NEEDS_MORE_QA, not CONFIRMED_BUG.
|
||
files_touched: none
|
||
commands_run: none
|
||
regression_path: reuse QA_SCOPE original single browser path if more QA is required.
|
||
|
||
REGRESSION_QA_RESULT:
|
||
REGRESSION_QA_RESULT
|
||
STATUS: PASS
|
||
steps_run: skipped regression because bug-triage returned NEEDS_MORE_QA, not CONFIRMED_BUG.
|
||
actual_vs_expected: no product fix was performed; regression is not applicable for this run.
|
||
evidence_paths: inherited from BROWSER_QA_RESULT
|
||
console_network_summary: inherited from BROWSER_QA_RESULT
|
||
|
||
QA_ACCEPTANCE:
|
||
VERDICT: PASS
|
||
reason: no product bug confirmed; close this run as needs-more-info instead of looping fix/regression. browserStatus=BLOCKED, regressionStatus=PASS.
|
||
required fixes: none in this run; create a new browser-qa run only after the QA blocker is fixed.
|
||
Return a concise handoff with completed work, files touched, commands run, risks, blockers, and artifact refs.
|
||
|
||
## Regression QA Result
|
||
|
||
REGRESSION_QA_RESULT
|
||
STATUS: PASS
|
||
steps_run: skipped regression because bug-triage returned NEEDS_MORE_QA, not CONFIRMED_BUG.
|
||
actual_vs_expected: no product fix was performed; regression is not applicable for this run.
|
||
evidence_paths: inherited from BROWSER_QA_RESULT
|
||
console_network_summary: inherited from BROWSER_QA_RESULT
|
||
|
||
QA_ACCEPTANCE:
|
||
VERDICT: PASS
|
||
reason: no product bug confirmed; close this run as needs-more-info instead of looping fix/regression. browserStatus=BLOCKED, regressionStatus=PASS.
|
||
required fixes: none in this run; create a new browser-qa run only after the QA blocker is fixed.
|
||
Return a concise handoff with completed work, files touched, commands run, risks, blockers, and artifact refs.
|
||
|
||
## QA Acceptance
|
||
|
||
VERDICT: PASS
|
||
reason: no product bug confirmed; close this run as needs-more-info instead of looping fix/regression. browserStatus=BLOCKED, regressionStatus=PASS.
|
||
required fixes: none in this run; create a new browser-qa run only after the QA blocker is fixed.
|
||
Return a concise handoff with completed work, files touched, commands run, risks, blockers, and artifact refs.
|