Files
Mdeical_Sur_Report/工程分析/测试方案-2026-04-17-13-32-07.md
admin b155dd42d6 fix(TemplateManage): Ctrl+Z undo and smart-field insertion layout
- Intercept Ctrl+Z/Y keyboard shortcuts in keydown listener and route
to custom undoStack/redoStack to fix undo inconsistency.
- Replace execCommand('insertHTML') with precise Range.insertNode()
in insertSmartField to prevent <span> escaping out of <p> when
preceded by <br>.
2026-04-17 13:39:16 +08:00

3.0 KiB
Raw Blame History

测试方案 — 2026-04-17-13-32-07

测试目标

验证 TemplateManage.tsx 中以下两项修复是否生效且无副作用:

  1. Ctrl+Z / Ctrl+Y / Ctrl+Shift+Z 快捷键正确调用自定义 Undo/Redo。
  2. 在段落末尾(含 <br>)插入 smart-field-wrapper 不再换行错位。

测试步骤

1. 编译检查

npm run lint
  • 预期结果tsc --noEmit 通过0 errors。

2. 快捷键 Undo/Redo 测试

前置条件:登录后进入 /template-manage,选中任意模板。

2.1 删除字段后撤销

  1. 在编辑器中点击一个已有的 smart-field-wrapper× 按钮(或通过 Backspace/Delete 删除字段)。
  2. 立刻按下 Ctrl+Z
  • 预期结果:被删除的字段完整恢复,内容与样式均正常。

2.2 撤销后再重做

  1. 完成步骤 2.1 后,按下 Ctrl+Y(或 Ctrl+Shift+Z)。
  • 预期结果:刚刚恢复的字段再次被删除。

2.3 插入字段后撤销

  1. 从右侧字段库点击任意字段插入到编辑器。
  2. 按下 Ctrl+Z
  • 预期结果:刚插入的字段消失,编辑器恢复到插入前的状态。

2.4 多次撤销

  1. 连续进行多次编辑操作(插入字段、删除字段、输入文字)。
  2. 连续多次按 Ctrl+Z
  • 预期结果:每次按 Ctrl+Z 都按自定义历史栈顺序回退一步;不会触发浏览器原生 undo 造成状态混乱。

3. 插入字段排版测试

前置条件:编辑器中存在一个以 <br> 结尾的 <p> 标签,例如:

<p style="font-family: SimSun;">
    <strong>手术日期:</strong><br>
</p>

3.1 在 <br> 后插入字段

  1. 将光标放到 <strong>手术日期:</strong> 后面的空白处(即 <br> 附近)。
  2. 从右侧字段库点击 手术日期 字段插入。
  • 预期结果smart-field-wrapper 出现在 <p> 标签内部,与 <strong>手术日期:</strong> 保持在同一行,不会跑到 <p> 外面形成新段落。

3.2 段中插入字段

  1. 在正常段落(如 姓名xxx)中间插入字段。
  • 预期结果:字段与前后文字保持在同一行,排版正常。

3.3 已有字段附近插入

  1. 在已有的 smart-field-wrapper 前后插入新字段(只要字段 key 不同,允许插入)。
  • 预期结果:新字段正确插入,不会与已有字段重叠或被挤到下一行。

4. 回归测试

  1. 保存模板:进行任意编辑后点击「保存模板」,刷新页面,确认内容已持久化。
  2. 打印预览:点击打印预览按钮,确认字段显示正常。
  3. 工具栏撤销/重做按钮:确认点击工具栏的撤销/重做按钮依然工作正常。
  4. Backspace/Delete 边界拦截:确认光标紧邻字段时按 Backspace/Delete 仍然只删除字段本身,不会误删整段。

判定标准

  • 所有编译检查和手工测试均通过,方可认为任务完成。
  • 若任一测试失败,回滚修改并重新分析根因。