Imported from hawaka6667-dev/obsidian-wiki-paste (
.github/skills/wiki-paste-ab-experiment/SKILL.md). Install upstream withnpx skills add hawaka6667-dev/obsidian-wiki-paste --skill wiki-paste-ab-experiment. Copyright stays with the author.
本 skill 的目的,是模拟用户实际操作并检查用户最终能看到的结果。常规单测、类型检查和源码检查可以辅助定位,但不能代替这条用户视角验证链。
快速流程
- 定义意图:从本次功能改动写出可观察的预期:用户做什么、界面应显示/发生什么、哪些内容或结构必须保持。避免把具体样例提升为规则。
- 准备真实场景:选择最接近用户实际使用的输入、设置、vault 和视图。复用合适的测试页;新建夹具前检查路径及现有内容,不覆盖用户数据。
- 模拟用户操作:优先通过 Obsidian 实际入口执行功能。确实无法物理操作时,可用 Obsidian CLI
dev:cdp等受控方式派发事件;让 Obsidian 和插件自行处理,不手动插入预期转换结果。 - 观察用户结果:在 Obsidian preview、Canvas 或对应 UI 中查看结果;用截图记录整体视觉,用 DOM、链接属性或其他可观察状态补足截图看不出的信息。源文本和自动化断言可用于定位原因,但不能单独证明用户最终看到的结果符合设计。
- 做 A/B 用户视角对照:默认使用 Main/Test 两侧,以相同输入和顺序模拟用户操作,只改变本次要验证的变量(如开关或版本)。逐项观察两侧最终呈现是否符合预期,不把“存在差异”本身当作成功。若确实没有合理的对照侧,才使用单侧用户路径验证,并说明原因。
- 恢复并汇报:恢复本次改变的视图、设置和临时状态,不撤销用户原有内容。报告预期、实际可见结果、辅助证据和限制;一旦出现明确不符,先停下来报告,不继续追加互相污染的 case。
取证原则
- preview/截图是用户视角验收的主要方式,用于发现常规测试难以覆盖的最终呈现和集成问题;根据目标选一种合适方式,不要求每次同时截图、检查 DOM 和运行 A/B。
- 截图之外若需确认语义、结构、链接目标或状态,再查源文本、DOM、属性或运行时状态。不同证据回答不同问题,不能互相冒充。
- 自动化测试可与用户视角验证并行:它擅长规则和边界断言,但即使全部通过,只要没有呈现目标结果,仍需做相应的运行时/视觉检查。
- CDP 合成事件不等同于系统剪贴板和物理键盘操作;使用时注明这一限制。命令成功、事件被取消或截图已生成,都不等于目标行为已通过。
Wiki Paste 场景
- 纯文本粘贴只提供
text/plain,验证escapeMarkdownSyntax路径;不要附带text/html。 - 富文本粘贴仅在目标输入确实包含
text/html时提供 HTML(可带对应text/plain),由 Obsidian 原生转换后观察插件后处理。插件优先检查text/html;给纯文本 case 附 HTML 会切换路径。 - MIME 类型不确定时分别模拟纯文本和富文本;Canvas 粘贴应在实际 Canvas 入口观察节点内容和尺寸。
- 脚注引用
[^id]与定义[^id]: ...是不同输入场景;只在本次设计涉及它们时覆盖。
A/B 用户视角对照
- 手工 A/B 输入、记录和本地 Canvas 夹具统一放在仓库根目录的可见
local-testing/,该目录由.gitignore排除。开始前先检查并复用其中的材料;自动化回归测试仍放在tests/。 - A/B 是本 skill 的默认验证主线,不是常规测试通过后的可选截图步骤。两侧使用相同输入和顺序,页头记录 vault、版本和开关状态;每个 case 单独派发一次 paste,并在记录中独占一段,case 之间保留空行。不把标题或解释混入待测粘贴内容。
- 仅改变一个对照变量。开关造成的预期呈现差异不是回归;仍需分别核对两侧结果是否符合设计意图。
- 截图、preview、Canvas 画面或其他真实 UI 观察用于确认用户看到的差异;源文本、DOM 和自动化断言用于补充解释,不可替代呈现对照。
- 切换 preview 前先查询 view mode;结束时仅当当前为
preview才执行markdown:toggle-preview,随后确认恢复为source。
