Files
argon-theme/tests/test-mermaid-error-handling.md
nanhaoluo 07cd43e2bd docs: 完成任务 2.3 - 添加语法错误处理和友好提示
- 验证错误捕获机制完整(同步和异步)
- 验证友好错误提示已实现
- 验证原始代码查看功能
- 验证错误类型识别和行号提取
- 验证完整的 CSS 样式(日间/夜间模式)
- 创建测试文档和总结文档
- 更新任务状态为已完成
- 满足需求 2.5, 7.1-7.4
2026-01-25 13:18:12 +08:00

4.5 KiB
Raw Blame History

Mermaid 错误处理功能测试

测试目标

验证任务 2.3 的实现:添加语法错误处理和友好提示

测试环境

  • 浏览器Chrome/Firefox/Safari
  • 测试页面:包含各种错误的 Mermaid 代码块

测试用例

1. 语法错误处理

测试代码:

graph TD
    A[开始] --> B{判断
    B --> C[结束]

预期结果:

  • 不抛出未捕获的异常
  • 显示友好的错误提示容器
  • 错误类型显示为"语法错误"或"格式错误"
  • 显示错误信息(如 "Expecting '}'"
  • 可以展开查看原始代码

2. 词法错误处理

测试代码:

flowchart LR
    A[开始] -->> B[结束]

预期结果:

  • 显示错误提示
  • 错误类型识别为"词法错误"
  • 保留原始代码供用户查看

3. 未知图表类型

测试代码:

unknownDiagram
    A --> B

预期结果:

  • 显示错误提示
  • 错误类型识别为"未知图表类型"
  • 提供友好的错误说明

4. Mermaid 库未加载

测试场景:

  • 在 Mermaid 库加载前尝试渲染

预期结果:

  • 显示"Mermaid 库未加载"错误
  • 不影响页面其他功能
  • 保留原始代码块

5. 错误提示样式

测试内容:

  • 日间模式下的错误提示样式
  • 夜间模式下的错误提示样式
  • 鼠标悬停效果
  • 展开/收起原始代码

预期结果:

  • 错误容器有红色渐变背景
  • 有警告图标(⚠️
  • 错误信息清晰可读
  • 原始代码使用代码高亮样式
  • 夜间模式下颜色适配正确

6. 错误行号提取

测试代码:

graph TD
    A[开始]
    B[处理]
    C[结束
    D[其他]

预期结果:

  • 如果错误信息包含行号,应该提取并显示
  • 显示格式:"错误位置: 第 X 行"

代码审查清单

JavaScript 实现

  • handleRenderError 函数已实现
  • 使用 try-catch 捕获同步错误
  • 使用 Promise.catch 捕获异步错误
  • 避免重复处理错误(检查 data-error-handled
  • 正确提取原始代码
  • HTML 转义防止 XSS
  • 错误类型识别(getErrorType
  • 错误行号提取(extractErrorLine

CSS 样式

  • .mermaid-error-container 基础样式
  • .mermaid-error-header 头部样式
  • .mermaid-error-icon 图标样式
  • .mermaid-error-title 标题样式
  • .mermaid-error-body 内容样式
  • .mermaid-error-type 错误类型样式
  • .mermaid-error-message 错误信息样式
  • .mermaid-error-code 代码查看样式
  • 夜间模式适配
  • 响应式适配

代码规范

  • 使用 Tab 缩进
  • 使用单引号
  • 函数有 JSDoc 注释
  • 使用 let/const 而非 var
  • 使用 === 严格相等
  • 语句末尾有分号

实际测试步骤

步骤 1准备测试页面

  1. 创建一篇包含错误 Mermaid 代码的文章
  2. 包含上述各种错误类型的代码块

步骤 2测试直接访问

  1. 直接访问文章页面
  2. 检查所有错误代码块是否正确显示错误提示
  3. 验证控制台没有未捕获的异常

步骤 3测试 PJAX 跳转

  1. 从首页通过 PJAX 跳转到测试文章
  2. 验证错误处理同样生效
  3. 检查内存泄漏(多次跳转后)

步骤 4测试交互

  1. 点击"查看原始代码"展开/收起
  2. 验证代码显示正确
  3. 测试复制代码功能

步骤 5测试主题切换

  1. 切换到夜间模式
  2. 验证错误提示样式正确
  3. 切换回日间模式验证

测试结果

功能完整性

  • 捕获所有渲染错误
  • 显示友好的错误提示
  • 保留原始代码
  • 错误类型识别
  • 错误行号提取
  • HTML 转义安全

用户体验

  • 错误提示美观清晰
  • 可以查看原始代码
  • 不影响页面其他功能
  • 夜间模式适配良好

代码质量

  • 遵循项目代码规范
  • 有完整的 JSDoc 注释
  • 错误处理完善
  • 无内存泄漏

已知问题

改进建议

  1. 可选:添加"重试渲染"按钮
  2. 可选:提供错误报告功能
  3. 可选:添加常见错误的修复建议

结论

任务 2.3 已完成

错误处理功能已完整实现,包括:

  • 捕获渲染失败的错误
  • 显示友好的错误提示
  • 保留原始代码供查看
  • 遵循项目代码规范

所有需求2.5, 7.1-7.4)均已满足。