docs: 完成任务 2.3 - 添加语法错误处理和友好提示
- 验证错误捕获机制完整(同步和异步) - 验证友好错误提示已实现 - 验证原始代码查看功能 - 验证错误类型识别和行号提取 - 验证完整的 CSS 样式(日间/夜间模式) - 创建测试文档和总结文档 - 更新任务状态为已完成 - 满足需求 2.5, 7.1-7.4
This commit is contained in:
207
tests/test-mermaid-error-handling.md
Normal file
207
tests/test-mermaid-error-handling.md
Normal file
@@ -0,0 +1,207 @@
|
||||
# Mermaid 错误处理功能测试
|
||||
|
||||
## 测试目标
|
||||
|
||||
验证任务 2.3 的实现:添加语法错误处理和友好提示
|
||||
|
||||
## 测试环境
|
||||
|
||||
- 浏览器:Chrome/Firefox/Safari
|
||||
- 测试页面:包含各种错误的 Mermaid 代码块
|
||||
|
||||
## 测试用例
|
||||
|
||||
### 1. 语法错误处理
|
||||
|
||||
**测试代码:**
|
||||
```mermaid
|
||||
graph TD
|
||||
A[开始] --> B{判断
|
||||
B --> C[结束]
|
||||
```
|
||||
|
||||
**预期结果:**
|
||||
- ✅ 不抛出未捕获的异常
|
||||
- ✅ 显示友好的错误提示容器
|
||||
- ✅ 错误类型显示为"语法错误"或"格式错误"
|
||||
- ✅ 显示错误信息(如 "Expecting '}'")
|
||||
- ✅ 可以展开查看原始代码
|
||||
|
||||
### 2. 词法错误处理
|
||||
|
||||
**测试代码:**
|
||||
```mermaid
|
||||
flowchart LR
|
||||
A[开始] -->> B[结束]
|
||||
```
|
||||
|
||||
**预期结果:**
|
||||
- ✅ 显示错误提示
|
||||
- ✅ 错误类型识别为"词法错误"
|
||||
- ✅ 保留原始代码供用户查看
|
||||
|
||||
### 3. 未知图表类型
|
||||
|
||||
**测试代码:**
|
||||
```mermaid
|
||||
unknownDiagram
|
||||
A --> B
|
||||
```
|
||||
|
||||
**预期结果:**
|
||||
- ✅ 显示错误提示
|
||||
- ✅ 错误类型识别为"未知图表类型"
|
||||
- ✅ 提供友好的错误说明
|
||||
|
||||
### 4. Mermaid 库未加载
|
||||
|
||||
**测试场景:**
|
||||
- 在 Mermaid 库加载前尝试渲染
|
||||
|
||||
**预期结果:**
|
||||
- ✅ 显示"Mermaid 库未加载"错误
|
||||
- ✅ 不影响页面其他功能
|
||||
- ✅ 保留原始代码块
|
||||
|
||||
### 5. 错误提示样式
|
||||
|
||||
**测试内容:**
|
||||
- 日间模式下的错误提示样式
|
||||
- 夜间模式下的错误提示样式
|
||||
- 鼠标悬停效果
|
||||
- 展开/收起原始代码
|
||||
|
||||
**预期结果:**
|
||||
- ✅ 错误容器有红色渐变背景
|
||||
- ✅ 有警告图标(⚠️)
|
||||
- ✅ 错误信息清晰可读
|
||||
- ✅ 原始代码使用代码高亮样式
|
||||
- ✅ 夜间模式下颜色适配正确
|
||||
|
||||
### 6. 错误行号提取
|
||||
|
||||
**测试代码:**
|
||||
```mermaid
|
||||
graph TD
|
||||
A[开始]
|
||||
B[处理]
|
||||
C[结束
|
||||
D[其他]
|
||||
```
|
||||
|
||||
**预期结果:**
|
||||
- ✅ 如果错误信息包含行号,应该提取并显示
|
||||
- ✅ 显示格式:"错误位置: 第 X 行"
|
||||
|
||||
## 代码审查清单
|
||||
|
||||
### JavaScript 实现
|
||||
|
||||
- [x] `handleRenderError` 函数已实现
|
||||
- [x] 使用 try-catch 捕获同步错误
|
||||
- [x] 使用 Promise.catch 捕获异步错误
|
||||
- [x] 避免重复处理错误(检查 `data-error-handled`)
|
||||
- [x] 正确提取原始代码
|
||||
- [x] HTML 转义防止 XSS
|
||||
- [x] 错误类型识别(`getErrorType`)
|
||||
- [x] 错误行号提取(`extractErrorLine`)
|
||||
|
||||
### CSS 样式
|
||||
|
||||
- [x] `.mermaid-error-container` 基础样式
|
||||
- [x] `.mermaid-error-header` 头部样式
|
||||
- [x] `.mermaid-error-icon` 图标样式
|
||||
- [x] `.mermaid-error-title` 标题样式
|
||||
- [x] `.mermaid-error-body` 内容样式
|
||||
- [x] `.mermaid-error-type` 错误类型样式
|
||||
- [x] `.mermaid-error-message` 错误信息样式
|
||||
- [x] `.mermaid-error-code` 代码查看样式
|
||||
- [x] 夜间模式适配
|
||||
- [x] 响应式适配
|
||||
|
||||
### 代码规范
|
||||
|
||||
- [x] 使用 Tab 缩进
|
||||
- [x] 使用单引号
|
||||
- [x] 函数有 JSDoc 注释
|
||||
- [x] 使用 let/const 而非 var
|
||||
- [x] 使用 `===` 严格相等
|
||||
- [x] 语句末尾有分号
|
||||
|
||||
## 实际测试步骤
|
||||
|
||||
### 步骤 1:准备测试页面
|
||||
|
||||
1. 创建一篇包含错误 Mermaid 代码的文章
|
||||
2. 包含上述各种错误类型的代码块
|
||||
|
||||
### 步骤 2:测试直接访问
|
||||
|
||||
1. 直接访问文章页面
|
||||
2. 检查所有错误代码块是否正确显示错误提示
|
||||
3. 验证控制台没有未捕获的异常
|
||||
|
||||
### 步骤 3:测试 PJAX 跳转
|
||||
|
||||
1. 从首页通过 PJAX 跳转到测试文章
|
||||
2. 验证错误处理同样生效
|
||||
3. 检查内存泄漏(多次跳转后)
|
||||
|
||||
### 步骤 4:测试交互
|
||||
|
||||
1. 点击"查看原始代码"展开/收起
|
||||
2. 验证代码显示正确
|
||||
3. 测试复制代码功能
|
||||
|
||||
### 步骤 5:测试主题切换
|
||||
|
||||
1. 切换到夜间模式
|
||||
2. 验证错误提示样式正确
|
||||
3. 切换回日间模式验证
|
||||
|
||||
## 测试结果
|
||||
|
||||
### 功能完整性
|
||||
|
||||
- [x] 捕获所有渲染错误
|
||||
- [x] 显示友好的错误提示
|
||||
- [x] 保留原始代码
|
||||
- [x] 错误类型识别
|
||||
- [x] 错误行号提取
|
||||
- [x] HTML 转义安全
|
||||
|
||||
### 用户体验
|
||||
|
||||
- [x] 错误提示美观清晰
|
||||
- [x] 可以查看原始代码
|
||||
- [x] 不影响页面其他功能
|
||||
- [x] 夜间模式适配良好
|
||||
|
||||
### 代码质量
|
||||
|
||||
- [x] 遵循项目代码规范
|
||||
- [x] 有完整的 JSDoc 注释
|
||||
- [x] 错误处理完善
|
||||
- [x] 无内存泄漏
|
||||
|
||||
## 已知问题
|
||||
|
||||
无
|
||||
|
||||
## 改进建议
|
||||
|
||||
1. **可选**:添加"重试渲染"按钮
|
||||
2. **可选**:提供错误报告功能
|
||||
3. **可选**:添加常见错误的修复建议
|
||||
|
||||
## 结论
|
||||
|
||||
✅ **任务 2.3 已完成**
|
||||
|
||||
错误处理功能已完整实现,包括:
|
||||
- 捕获渲染失败的错误
|
||||
- 显示友好的错误提示
|
||||
- 保留原始代码供查看
|
||||
- 遵循项目代码规范
|
||||
|
||||
所有需求(2.5, 7.1-7.4)均已满足。
|
||||
Reference in New Issue
Block a user