Skip to content

fix(tests): 终端菜单测试通过真实侧栏交互触发重绘 [skip ci] - #1917

Merged
1lck merged 1 commit into
previewfrom
codex/fix-1907-terminal-menu
Nov 14, 2026
Merged

1lck merged 1 commit into
previewfrom
codex/fix-1907-terminal-menu

Conversation

@1lck

@1lck 1lck commented Nov 14, 2026

Copy link
Copy Markdown
Owner

关联 Issue / Linked issue

PR 类型 / Type

  • feat:新功能或用户可见的改进
  • fix:缺陷修复
  • docs:文档、Agent Note、Skill 等规则文件
  • release:稳定版发布准备

改动说明 / What changes

背景 / Why

终端菜单测试直接改变工具窗口状态后,只调用消费已有重绘请求的 Pump;没有待处理的后台请求时,终端内容不会绘制,测试报 the terminal is not shown。终端输出偶尔提供一帧,因而掩盖缺少刷新,导致同一用例时过时败。

改动 / Changes

  • 在读取到 shell 输出后先消费待处理的绘制帧,避免输出通知替后续操作偶然刷新。
  • 通过点击真实终端侧栏按钮打开面板,走与窗口一致的输入、布局及重绘路径;保留全选、复制、关闭和进程清理断言。
  • 在现有 Viva 测试计时笔记中记录 Pump 的重绘语义,以及交互用真实控件、准备布局用 h.chromeAction 的约束。
  • 为 terminal-interaction 补充 macOS 终端菜单实现和回归测试证据,明确 Windows 跳过该 /bin/sh 用例;两端原生验收状态仍保持 pending。

不在本 PR 范围内 / Out of scope

无产品界面、Core、Viva 或插件协议改动。#1908 的同步 gofmt 管道挂起已由 #1911 改成临时文件、异步调用及超时,本次只核对已有修复,完整 i18n 测试 41/41 通过。

类型专属:fix

复现与根因

检查项

  • 已先加强既有回归用例,确认旧调用 5/5 失败、真实按钮操作 20/20 通过;路径:desktop/internal/workbench/context_menu_test.go。
  • [N/A] 无法自动化时的手动复现:本问题已有自动化复现。
  • 已检查变更测试调用的侧栏按钮、h.click、reduceChrome、Driver.Pump 及测试清理路径;无公开函数、类型或协议字段变更。
  • 已检查另一平台:相同测试共用,Windows 现有跳过条件未改;未声称 Windows 运行验收通过。
  • 只改了本缺陷相关测试、对应笔记和宿主终端矩阵证据,没有夹带产品重构;未发现需另建单的新债务。
  • [N/A] 新建 bug-fix 笔记:按优先更新已有 Note 的规则,约束写入 implemented/testing/2026-11-08-viva-go-test-timing.md,避免复制两份测试规则。

范围检查 / Scope checks

功能矩阵 / Feature matrix

  • 更新 terminal-interaction.json 的 macOS 证据和测试边界说明;未将无头结果冒充原生验收,verificationStatus 保持 pending。
  • verify-platform-feature-matrix.sh、verify-platform-feature-matrix-change.sh origin/preview HEAD 通过。
  • 运行生成器查看矩阵,未提交 .artifacts 下生成视图。
  • [N/A] 未更新矩阵的理由:本次已补充与该能力相关的真实测试证据,未自行添加 matrix-exempt。

插件归属 / Plugin ownership

  • 已运行 develop-lithe 第三节宿主零依赖自查命令,结果为空。
  • 本次终端测试不读取具体插件、插件包或仓库,不使用真实插件 ID。
  • 矩阵只更新宿主终端能力,不引用具体插件测试或发布物。
  • 无插件文案、构建资源或实现知识进入宿主文档。
  • [N/A] 受影响插件验证:未修改通用扩展点或插件 API。

统一日志系统 / Structured logging

N/A:仅修复测试驱动方式,无生产生命周期、终态或错误路径变化。

界面文案 / i18n

N/A:没有用户可见文案变更。共享语言检查和生成一致性检查已运行并通过。

逻辑归属 / Logic placement

N/A:没有新增或修改业务逻辑、Core 规则或平台适配器。

性能与内存 / Performance and memory

N/A:不修改生产性能路径,不新增运行时、缓存、定时器或依赖;测试保留原有有界等待及进程清理。

设置 / Settings

N/A:未修改设置项或设置页。

插件契约 / Plugin contract

N/A:未修改契约、Core pin、宿主方法或通知。

发行包与资源 / Bundle and resources

N/A:未新增或修改资源及构建步骤。发行目录运行时只读静态检查已通过。

无用代码与重构 / Dead code and refactoring

  • 本次替换未产生无用声明或兼容分支。
  • [N/A] 存量债务建单:未发现本范围内需新增追踪的无用代码或重构债务。

验证 / Verification

完整包与竞态验证在 b582e20 基线上完成;提交前已重放到最新 preview 7126dbe,并针对新依赖再次执行终端菜单用例。最终改动仅三份文件。

命令或操作 平台 结果
旧调用排空后台帧,终端菜单用例 -count=5 macOS 5/5 失败,证明不会依赖后台 wake 掩盖缺陷
修复后终端菜单用例 -count=20 macOS 20/20 通过
相邻 4 个菜单测试的逐项计时与 -race macOS 全部通过;终端菜单约 90ms,JSON/HTML/JUnit 已在本地产生
desktop-go.sh test ./... -timeout=90s macOS 其余 54 个包通过;工作台整包到达总体截止时间,没有断言失败
desktop-go.sh test ./internal/workbench -timeout=300s macOS 整包通过,150.643s
最新 preview 基线:终端菜单用例 -count=5 -timeout=60s macOS 5/5 通过,1.980s 包级耗时
完整 test-i18n.mjs macOS 41/41 通过,约 17.37s,确认 #1908 已由已有提交解决
测试稳定性门禁、Agent Note 校验 macOS 通过
i18n 检查及 generate-i18n.mjs --check macOS 通过
功能矩阵校验、变更门禁和视图生成 macOS 通过
verify-runtime-bundle-immutability.sh macOS 通过,覆盖共享桌面 macOS/Windows 资源路径
插件归属自查、git diff --check macOS 通过

未能执行的检查和原因: Linux/Windows 原生运行及真实产品窗口未执行。按维护者明确要求跳过本 PR 和合入提交的 CI;提交和 squash 标题均保留 [skip ci],不把 CI 标记为通过。

提交前确认 / Final checks

  • 从 preview 创建修复分支,推送前重放到最新 preview;目标 preview。
  • 按 Draft 创建,本地验证后再标记 ready,并按维护者要求 squash 合并、跳过 CI。
  • 无无关改动、构建产物、凭据、个人路径或未脱敏的日志。
  • 本次测试启动的 Lithe/Core/工作台测试进程已全部结束,没有残留。

@ghfind-review ghfind-review Bot added the review: high ghfind author score; see https://ghfind.com label Nov 14, 2026
@1lck
1lck marked this pull request as ready for review November 14, 2026 10:33
@1lck
1lck merged commit 5bf0a65 into preview Nov 14, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

review: high ghfind author score; see https://ghfind.com

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant