Files
blurweb/TESTING.md
2025-12-11 13:41:09 +08:00

303 lines
6.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 模糊记忆功能测试指南
## 测试环境准备
1. 在 Chrome/Edge 浏览器中加载扩展
2. 打开 `test.html` 测试页面
3. 打开浏览器控制台F12查看日志
## 测试用例
### 测试 1元素模式模糊记忆
**步骤:**
1. 点击扩展图标,选择"元素模式"
2. 点击"开启模糊模式"
3. 在测试页面上点击几个元素进行模糊
4. 按 ESC 退出模糊模式
5. **刷新页面F5**
6. 等待页面加载完成
**预期结果:**
- ✅ 页面顶部显示提示:"已恢复 N 个模糊效果"
- ✅ 之前模糊的元素自动恢复模糊状态
- ✅ 控制台输出恢复日志
**验证方法:**
```javascript
// 在控制台执行
chrome.storage.local.get(['blurredData'], (result) => {
console.log('存储的模糊数据:', result.blurredData);
});
```
---
### 测试 2文本选择模式模糊记忆
**步骤:**
1. 点击扩展图标,选择"文本选择模式"
2. 点击"开启模糊模式"
3. 拖动选择几段文本,点击浮动按钮模糊
4. 按 ESC 退出模糊模式
5. **刷新页面F5**
**预期结果:**
- ✅ 选中的文本段落自动恢复模糊
- ✅ 点击模糊的文本可以恢复
**注意事项:**
- 如果文本内容改变,可能无法恢复
- XPath 必须能够找到对应的文本节点
---
### 测试 3区域模式模糊记忆
**步骤:**
1. 点击扩展图标,选择"区域模式"
2. 点击"开启模糊模式"
3. 拖动鼠标绘制几个矩形区域
4. 按 ESC 退出模糊模式
5. **刷新页面F5**
**预期结果:**
- ✅ 模糊区域自动恢复
- ✅ 点击区域可以移除
- ✅ 区域位置和大小保持一致
**注意事项:**
- 使用绝对坐标存储
- 如果页面布局改变,区域位置可能偏移
---
### 测试 4混合模式模糊记忆
**步骤:**
1. 使用元素模式模糊几个元素
2. 切换到文本选择模式模糊几段文本
3. 切换到区域模式绘制几个区域
4. **刷新页面F5**
**预期结果:**
- ✅ 所有模式的模糊效果都能恢复
- ✅ 提示显示总数量
---
### 测试 5清除模糊效果
**步骤:**
1. 添加一些模糊效果
2. 点击扩展图标
3. 点击"清除所有模糊"按钮
4. **刷新页面F5**
**预期结果:**
- ✅ 页面不再显示任何模糊效果
- ✅ 不显示"已恢复"提示
- ✅ 存储数据已清空
**验证方法:**
```javascript
chrome.storage.local.get(['blurredData'], (result) => {
const pageData = result.blurredData?.[window.location.href];
console.log('当前页面数据:', pageData); // 应该为 undefined
});
```
---
### 测试 6多页面隔离
**步骤:**
1.`test.html` 页面添加模糊效果
2. 打开另一个网页(如 `file:///F:/test2.html`
3. 添加不同的模糊效果
4. 分别刷新两个页面
**预期结果:**
- ✅ 每个页面只恢复自己的模糊效果
- ✅ 不会互相干扰
---
### 测试 7强度变化
**步骤:**
1. 添加模糊效果(强度 10px
2. 调整强度滑块到 15px
3. **不刷新页面**,再添加新的模糊效果
4. 刷新页面
**预期结果:**
- ✅ 所有模糊效果恢复
- ✅ 强度可能不完全一致(当前实现使用全局 intensity
**改进建议:**
- 每个元素单独存储其强度值
---
## 控制台日志参考
**正常的恢复日志:**
```
[BlurText] Content script loaded
[BlurText] Loaded blur intensity: 10
[BlurText] Restoring blur data: {elements: Array(3), selections: Array(2), areas: Array(1), timestamp: 1234567890}
[BlurText] Restored element blur: div.test-section > h2:nth-of-type(1)
[BlurText] Restored selection blur: 138-0000-1234
[BlurText] Restored area blur: {left: 100, top: 200, width: 300, height: 150}
```
**没有存储数据:**
```
[BlurText] No saved blur data for this page
```
**恢复失败警告:**
```
[BlurText] Failed to restore element: div.removed-element Error: Element not found
```
---
## 常见问题排查
### 问题 1刷新后没有恢复
**可能原因:**
- 存储数据未保存成功
- URL 变化(如添加了查询参数)
- 元素被 JavaScript 动态删除
**排查方法:**
```javascript
// 检查存储数据
chrome.storage.local.get(['blurredData'], console.log);
// 检查当前 URL
console.log('Current URL:', window.location.href);
```
### 问题 2部分元素未恢复
**可能原因:**
- DOM 结构变化
- CSS 选择器失效
- 元素动态加载延迟
**解决方案:**
- 查看控制台警告
- 手动重新模糊
### 问题 3文本选择恢复失败
**可能原因:**
- 文本内容改变
- XPath 路径变化
- 文本节点被重新渲染
**验证方法:**
```javascript
// 检查 XPath 是否有效
const xpath = "//div[@id='content']/p[1]/text()[1]";
const result = document.evaluate(xpath, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null);
console.log('XPath result:', result.singleNodeValue);
```
---
## 性能测试
### 大量模糊元素测试
**步骤:**
1. 在页面上添加 50-100 个模糊效果
2. 刷新页面
3. 观察恢复时间和性能
**监控指标:**
```javascript
// 在控制台执行
console.time('restore');
// 刷新页面
// 等待恢复完成
console.timeEnd('restore'); // 查看恢复耗时
```
**性能目标:**
- 50 个元素:< 200ms
- 100 个元素:< 500ms
- 200 个元素:< 1000ms
---
## 测试结论模板
```
测试日期2025-01-11
测试浏览器Chrome 120.0
测试页面test.html
元素模式:✅ 通过
文本选择模式:✅ 通过
区域模式:✅ 通过
混合模式:✅ 通过
清除功能:✅ 通过
多页面隔离:✅ 通过
性能表现:
- 10 个元素恢复耗时45ms
- 50 个元素恢复耗时180ms
已知问题:
1. 无
备注:
功能正常,符合预期
```
---
## 自动化测试(可选)
如需编写自动化测试,可以参考以下代码:
```javascript
// test-restore.js
async function testRestore() {
// 1. 清空存储
await chrome.storage.local.clear();
// 2. 模拟添加模糊数据
const testData = {
blurredData: {
[window.location.href]: {
elements: [
{ selector: 'h1', intensity: 10 }
],
selections: [],
areas: [],
timestamp: Date.now()
}
}
};
await chrome.storage.local.set(testData);
// 3. 刷新页面
window.location.reload();
// 4. 验证恢复(需要在新页面加载后执行)
setTimeout(() => {
const h1 = document.querySelector('h1');
const isBlurred = h1.classList.contains('blurtext-blurred');
console.log('Test result:', isBlurred ? 'PASS' : 'FAIL');
}, 1000);
}
testRestore();
```