Files
argon-theme/tests/test-mermaid-error-handling.md

208 lines
4.5 KiB
Markdown
Raw Normal View History

# 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)均已满足。