ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

PowerToys Color Picker 手动 UI 验收测试清单深度解析:覆盖设置、交互与日志验证

PowerToys Color Picker 手动 UI 验收测试清单深度解析:覆盖设置、交互与日志验证 PowerToys Color Picker 手动 UI 验收测试清单深度解析覆盖设置、交互与日志验证【免费下载链接】PowerToysMicrosoft PowerToys is a collection of utilities that supercharge productivity and customization on Windows项目地址: https://gitcode.com/GitHub_Trending/po/PowerToys本指南以 Microsoft PowerToys 仓库中 Color Picker 模块的手动 UI 验收测试文档 ColorPickerUITest.md 为主线系统梳理 Color Picker屏幕取色器在设置、激活、剪贴板、编辑器与历史记录等维度的逐项验证要点并结合仓库源码说明每一条测试背后的实现机制与配置项。读完本文你将掌握对 Color Picker 进行完整手工回归验收的方法、测试矩阵的设计思路以及如何用自动化端到端测试补充手动清单的盲区。Color Picker 是 PowerToys 中一个系统级的屏幕取色工具允许用户从屏幕任意像素取色并以可配置的格式HEX、RGB、HSL 等复制到剪贴板还提供颜色历史与精细编辑能力。其 UI 由取色悬浮窗overlay与颜色编辑器Editor两个窗口构成全部逻辑运行在独立进程PowerToys.ColorPickerUI中由 PowerToys runner 依据设置加载。本文涉及的验收清单存放在 src/modules/colorPicker/ColorPicker.UITests/ColorPickerUITest.md与同目录下的自动化测试 ColorPickerEndToEndTests.cs 相互补充。一、测试前置条件与总体范围验收清单本质是一份手工冒烟 / 回归检查表其隐含的前置条件是已在 PowerToys Settings 中启用 Color Picker并且每次变更后验证默认/自定义快捷键能够正常呼出取色器。整份清单覆盖六个功能面模块启用与管理员权限上下文下的激活激活快捷键Activation shortcut的可配置性激活行为Activation behavior的三种模式剪贴板复制格式与颜色名称显示格式启停 / 排序在设置与编辑器之间的同步编辑器内的历史记录、重新取色、颜色调节与日志检查。底层设置模型集中在 ColorPickerProperties.cs其 JSON 属性名activationaction、copiedcolorrepresentation、showcolorname、visiblecolorformats等正是上述每一项测试背后的持久化键。手动测试者可以在%LocalAppData%\Microsoft\PowerToys\ColorPicker\settings.json中核对变更结果写入逻辑见 ColorPickerSettings.cs 的Save方法。二、启用开关与管理员权限上下文矩阵清单第 1 项清单第 1 项要求在普通启动非提升管理员启动以及在设置中点击 restart as admin 按钮后重启为管理员三种上下文中分别验证启用 Color Picker 后快捷键能呼出取色器。这是一项重要的权限上下文回归PowerToys 支持普通与管理员elevated两种运行态模块在切换权限后需要由 runner 重新拉起对应进程。仓库中 restart_elevated.cpp 正是实现以管理员身份重启能力的位置设置页中对应Restart as administrator按钮。验证要点如下场景操作预期结果普通启动非管理员登录后启动 PowerToysColor Picker 模块正常加载快捷键呼出悬浮取色窗管理员启动以管理员身份启动 PowerToys同上且取色不受 UIPI 权限隔离影响设置内重启为管理员在 Settings 中点击 restart as admin进程重启后 Color Picker 状态与设置保持一致快捷键可用自动化方面ColorPickerEndToEndTests.cs 已覆盖在设置页切换模块开关后PowerToys.ColorPickerUI进程随开关退出 / 重新拉起的生命周期断言可作为该清单项在普通权限下的自动化补充而管理员上下文仍需依赖手动矩阵验证。三、激活快捷键的可配置性验证清单第 2 项清单第 2 项要求修改Activate Color Picker shortcut并验证新快捷键生效。默认快捷键由 ColorPickerProperties.cs 中的DefaultActivationShortcut提供一个以 Win 组合 C0x43为键的HotkeySettingsPowerToys 的常见默认绑定为 WinShiftC实际以设置页ShortcutControl显示为准。实现上快捷键通过 ColorPickerSettings.cs 的GetAllHotkeyAccessors()暴露给 hotkey 冲突检测与注册机制任何修改都会写入properties.activationShortcut。值得注意的设计细节是自动化测试并不硬编码快捷键字符——ColorPickerEndToEndTests通过 ShortcutControl 内EditButton的AutomationProperties.HelpTextUIA读取当前快捷键文本再用ParseShortcutText把类似Win Shift C的字符串解析成键序列后发送。这意味着无论用户把快捷键改成什么组合测试都自动适配手动测试也应遵循同样的原则修改后必须用新组合而非记忆中的旧组合验证。四、三种激活行为Activation behavior验证清单第 3 项清单要求逐一尝试三种激活行为并确认行为差异Color Picker with editor mode enabled取色器 编辑器模式Editor编辑器Color Picker only仅取色器从源码结构看当前仓库用两个维度建模交互行为ColorPickerActivationAction见 ColorPickerActivationAction.cs决定快捷键按下后是直接打开编辑器OpenEditor还是打开取色器OpenColorPickerColorPickerClickAction见 ColorPickerClickAction.cs进一步决定取色后单击/中键/右键各自的动作枚举值含义PickColorThenEditor单击复制颜色并打开编辑器PickColorAndClose单击仅复制颜色并退出取色器Close单击直接关闭取色器不复制清单中的三种界面文案与这两种枚举的语义对应关系可概括为Editor对应OpenEditorColor Picker only对应取色后仅复制/关闭OpenColorPicker 主键点击为PickColorAndClose带编辑器模式则对应OpenColorPickerPickColorThenEditor取色后自动带出编辑器进行后续操作。默认配置见 ColorPickerProperties.csActivationAction OpenColorPicker主键点击PickColorThenEditor、中键PickColorAndClose、右键Close。手动验证每种模式时应重点观察快捷键呼出的是取色悬浮窗还是编辑器窗口单击取色后编辑器是否弹出、取色器是否自动关闭。五、剪贴板复制格式验证清单第 4、5 项清单第 4 项要求修改Color format for clipboard并验证从取色器复制到剪贴板的格式正确第 5 项要求尝试从编辑器把各格式复制到剪贴板。剪贴板默认格式由copiedcolorrepresentation控制默认值为HEX。格式格式化逻辑由 ColorFormatHelper.cs 提供其注册的格式包括 HEX、RGB、HSL、HSV、CMYK、HSB、HSI、HWB、NCol、CIEXYZ、CIELAB、Oklab、Oklch、VEC4、Decimal、HEX Int默认启用集合见 ColorPickerProperties.cs其中默认可见的为 HEX、RGB、HSL 三种。模块服务 ColorPickerService.cs 在生成格式化字符串时还会针对 HEX 做补#前缀处理。验证建议将Clipboard format依次切到不同的格式取色再用任意方式粘贴核对格式与设置一致然后在编辑器中逐一点击各格式的复制按钮核对与取色器行为一致。此处的端到端佐证是ColorPickerEndToEndTests中的关键断言——清空剪贴板后点击取色等待 3 秒读取剪贴板并断言其内容与悬浮窗 overlay 上实时显示的 HEX 匹配通过专用的 UIA 隐藏元素ColorHexAutomationPeer读取从而证明显示的取色值 写入剪贴板的值。六、显示颜色名称开关验证清单第 6 项清单第 6 项要求勾选 Show color name 后确认取色悬浮窗中是否显示颜色名称如White这类友好名称。对应设置项为showcolorname默认关闭。需要注意一个易踩坑的实现细节悬浮窗中可见的ColorTextBlock其AutomationProperties.Name绑定的是颜色名称而非 HEX 值见ColorPickerEndToEndTests的注释说明因此自动化若通过 UIA 读取该文本块拿到的是颜色名。手动验证时应以肉眼观察 overlay 上颜色名称的出现/消失为准同时可顺带确认关闭开关后名称立即隐藏、无需重启模块。七、格式启用 / 禁用 / 排序与编辑器同步清单第 7 项清单第 7 项要求启用一种新格式、禁用一种现有格式、对已启用格式重新排序并检查设置是否同步反映到编辑器。这一项直接命中设置数据模型visiblecolorformats——一个以格式名为键、值为(isVisible, formatString)二元组的有序字典ColorPickerProperties.cs。用户设置层 UserSettings.cs 与IUserSettings.VisibleColorFormatsIUserSettings.cs将该字典映射为可观测集合驱动 UI。编辑器侧对格式项的顺序与显隐高度敏感因此验证要点是新增启用一种格式如 CMYK→ 打开编辑器确认出现对应格式行禁用一种默认格式如 RGB→ 编辑器对应行消失且取色器复制不再以该格式输出拖动调整已启用格式的顺序 → 编辑器列表顺序随之变化。排序的交互实现参考 DragAndDropReorderBehavior.cs。这类设置 → 编辑器同步的场景难以用纯 UI 自动化稳定覆盖顺序拖拽是手动清单保留的重要理由。八、编辑器内历史记录操作清单第 8、9 项清单要求从编辑器选择历史中的颜色、并从历史中移除颜色。颜色历史与设置文件分离存储服务层 ColorPickerService.cs 表明历史保存于%LocalAppData%\Microsoft\PowerToys\ColorPicker\colorHistory.json格式为A|R|G|B的字符串数组每条历史在读取时依据当前ColorPickerSettings换算成各可见格式展示。历史条数上限由colorhistorylimit控制默认 20见 ColorPickerProperties.cs。注意 ColorPickerProperties.cs 中有明确注释ColorHistory属性已不再使用历史统一走colorHistory.json——这解释了为何手动测试选择/移除历史后最直接的验证手段是检查该 JSON 文件内容变化。验证建议取色若干次产生多条历史 → 在编辑器历史区单击某条确认主区域切换到该颜色并可复制 → 删除若干条 → 重新打开编辑器确认删除生效且重启 PowerToys 后历史仍然一致。九、从编辑器发起取色与颜色调节清单第 10、11 项清单还要求从编辑器内反向触发两种操作从编辑器打开 Color Picker在编辑器界面重新唤起取色器例如对当前颜色不满意时重新取样。取色器激活通过进程内共享事件实现模块服务将信号封装为ShowColorPickerSharedEvent见 ColorPickerService.cs 的SignalEventAsyncrunner 收到事件后通知PowerToys.ColorPickerUI弹出 overlay。验证时观察新取到的颜色是否回填到编辑器当前选中项。从编辑器打开颜色调节Adjust color编辑器提供对当前颜色的精细化调节入口。相关模型见 HSVColor.cs 与 ColorEditorViewModel.cs调节面板围绕 HSV/HSL 分量与格式控件联动ColorFormatControl。验证时调节某个分量确认各格式HEX/RGB 等实时联动刷新并可从调节结果继续复制或存入历史。这两项共同验证了取色器 ↔ 编辑器的双向交互闭环既能取色后进入编辑器也能从编辑器回到取色器 / 就地精细调整。十、日志检查清单第 12 项最后一项是检查 Color Picker 的日志有无报错。PowerToys 的模块日志开启方法与日志位置遵循统一的 logging.md 约定可在启用详细日志后将PowerToys.ColorPickerUI相关日志落盘检查关注取色会话开始/结束、设置加载失败、剪贴板写入异常等记录。会话级遥测事件的定义可参考 ColorPickerSession.cs 与 ColorPickerSettings.cs。整份手动测试跑完后检查日志无 Error/Exception是判定本次验收是否干净收尾的关键一步。十一、手动清单与自动化 E2E 的互补关系同类目录下的 ColorPickerEndToEndTests.cs 已把清单中部分场景自动化在 Settings 页导航到 Color Picker 页面通过 Dashboard 右侧工具栈中名称匹配的TextBlock模拟鼠标点击、开关模块并断言PowerToys.ColorPickerUI进程退出/启动、从EditButton的 HelpText 读取快捷键并解析为键序列、发送快捷键后等待 overlay 窗口以窗口尺寸小于 300×200 识别取色悬浮窗大于 300×300 识别编辑器、通过隐藏的ColorHexAutomationPeer文本块读取实时 HEX、单击取色后断言剪贴板与 overlay 值一致并在编辑器 UIA 树中检索到该颜色。它还内置了针对 overlay 在慢速测试机上未达 UIA 可见状态的兜底策略移动光标触发重绘后重新轮询。自动化覆盖了导航 开关 取色主链路而手动清单仍保留不可替代的价值管理员/普通权限矩阵、三种激活行为的 UI 文案差异、格式拖拽排序的视觉同步、历史记录的增删与持久化、颜色调节面板的联动、日志人工审计等均难以被稳定自动化或需要人工视觉判断。建议的实践是把本文第 210 节当作一份可勾选的回归 checklist每个 PowerToys 版本合入涉及 Color Picker 的改动时先跑自动化 E2E再按清单在普通与管理员两种上下文各过一遍即可在数分钟内完成对取色器核心功能的完整信心验证。【免费下载链接】PowerToysMicrosoft PowerToys is a collection of utilities that supercharge productivity and customization on Windows项目地址: https://gitcode.com/GitHub_Trending/po/PowerToys创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表