search-syntax-pro/SHORTCUT_FIX_TEST_GUIDE.md
Zain 84a509b92d feat: 新增快捷键功能及多项优化
- 新增全局快捷键支持(Ctrl+Shift+F/Command+Shift+F)
- 添加快捷键命令类型定义(chrome-commands.d.ts)
- 实现版本管理工具(version.ts)
- 新增模板和快捷键相关类型定义
- 优化搜索表单组件支持外部控制高级选项
- 新增引擎选择器组件(EngineSelector)
- 改进全局样式和按钮样式
- 在设置页面新增快捷键配置选项
- 添加测试页面和调试工具
- 更新文档包括发布说明和测试指南

本次提交包含多项功能新增和优化,主要围绕快捷键功能的实现和用户体验提升。
2025-11-11 16:45:59 +08:00

216 行
4.7 KiB
Markdown

此文件含有模棱两可的 Unicode 字符

此文件含有可能会与其他字符混淆的 Unicode 字符。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。

# 快捷键修复测试指南
## 快速测试步骤
### 1. 重新加载扩展
```bash
# 如果还没构建,先构建
npm run build
# 然后访问 chrome://extensions,点击扩展的"刷新"按钮
```
### 2. 验证监听器注册(核心验证)
**操作**:
1. 打开 Chrome DevTools(F12)
2. 切换到 Console 标签
3. 清空控制台(Ctrl+L 或点击清空按钮)
4. 打开扩展 Popup
**预期结果**:
```
✅ 只看到一条日志:[ShortcutManager] Keyboard listener registered
❌ 不应该看到多条相同的注册日志
```
### 3. 测试快捷键引擎切换
**操作**:
1. 打开 Options 设置页面
2. 找到"快捷键设置"部分
3. 编辑一个引擎切换快捷键(如 Ctrl+1)
4. 选择目标引擎为 **GitHub**
5. 保存配置
6. 关闭 Options,打开 Popup
7. 清空控制台
8. 按下 **Ctrl+1**
**预期结果**:
```
✅ 控制台只显示一次执行日志
✅ 日志显示参数为 'github'
✅ 搜索引擎切换到 GitHub
✅ 不应该看到参数为 'baidu' 或其他旧值的日志
```
### 4. 验证 UI 显示
**操作**:
1. 打开 Options → 快捷键设置
2. 查看引擎切换快捷键的描述文本
**预期结果**:
```
✅ 显示:"切换到GitHub搜索"(而非静态的"切换搜索引擎")
✅ 快捷键显示正确(如 Ctrl+1)
✅ 目标引擎显示正确(→ GitHub)
```
**操作2**:
1. 打开 Popup
2. 点击右上角的 "?" 图标(快捷键帮助)
3. 查看引擎切换快捷键的描述
**预期结果**:
```
✅ 显示:"切换到github搜索"(根据配置动态生成)
```
---
## 详细测试场景
### 场景1: 修改引擎后立即生效
**步骤**:
1. Options → 快捷键设置
2. 将 Ctrl+1 的目标引擎设置为 **Google**
3. 保存
4. 打开 Popup(不需要重启)
5. 按 Ctrl+1
**预期**: 切换到 Google
### 场景2: 多次修改配置
**步骤**:
1. 修改 Ctrl+1 → GitHub,保存
2. 测试 ✅
3. 修改 Ctrl+1 → Baidu,保存
4. 测试 ✅
5. 修改 Ctrl+1 → Bing,保存
6. 测试 ✅
**预期**: 每次都切换到正确的引擎
### 场景3: 多个引擎快捷键
**步骤**:
1. 配置 Ctrl+1 → GitHub
2. 配置 Ctrl+2 → Google
3. 配置 Ctrl+3 → Bing
4. 打开 Popup,依次测试
**预期**: 每个快捷键都切换到正确的引擎
---
## 性能测试
### 测试初始化次数
**操作**:
1. 打开 Popup
2. 查看控制台
3. 关闭 Popup
4. 再次打开 Popup
5. 查看控制台
**预期**:
```
第1次打开: 1条 [ShortcutManager] Keyboard listener registered
第2次打开: 1条 [ShortcutManager] Keyboard listener registered
总计: 2条(每次打开一条)
```
---
## 回归测试
确保其他快捷键功能不受影响:
- [ ] Ctrl+Enter - 执行搜索 ✅
- [ ] Ctrl+C - 复制查询 ✅
- [ ] Ctrl+L - 清空表单 ✅
- [ ] Ctrl+T - 打开模板选择器 ✅
- [ ] Ctrl+H - 打开历史记录 ✅
- [ ] ? - 显示快捷键帮助 ✅
- [ ] Escape - 关闭弹窗 ✅
- [ ] Tab / Shift+Tab - 字段导航 ✅
---
## 问题排查
### 如果还是执行两次
1. **检查控制台**: 是否有多条注册日志?
2. **清除缓存**:
- 卸载扩展
- 清除浏览器缓存
- 重新加载扩展
3. **检查构建**: 确认使用了最新的构建文件
4. **检查代码**: 确认修改已生效
### 如果引擎切换不正确
1. **检查存储**:
```javascript
chrome.storage.local.get('custom_shortcuts', console.log)
```
2. **检查日志**:
- 应该看到 `[ShortcutManager] 更新快捷键 xxx 的目标引擎: github`
- 应该看到 `[App] 使用引擎名称: github`
3. **检查参数**:
- 控制台应显示正确的 actionParam
---
## 成功标准
全部通过以下检查:
- ✅ 监听器只注册一次
- ✅ 快捷键只执行一次
- ✅ 引擎切换到正确的目标
- ✅ UI 显示正确的引擎名称
- ✅ 修改配置后立即生效
- ✅ 所有快捷键功能正常
- ✅ 无控制台错误
- ✅ 性能无异常
---
## 快速验证命令
在浏览器控制台执行:
```javascript
// 检查存储的快捷键配置
chrome.storage.local.get('custom_shortcuts', (data) => {
console.log('快捷键配置:', data.custom_shortcuts);
});
// 检查某个快捷键的详细信息
chrome.storage.local.get('custom_shortcuts', (data) => {
const shortcuts = data.custom_shortcuts || {};
const switchEngineShortcuts = Object.entries(shortcuts)
.filter(([, sc]) => sc.action === 'SWITCH_ENGINE')
.map(([id, sc]) => ({ id, ...sc }));
console.table(switchEngineShortcuts);
});
```
---
**测试完成后,请在此记录结果:**
- [ ] 测试通过 ✅
- [ ] 测试失败 ❌ (请附上错误信息)
- [ ] 需要进一步调试
**测试人**: ___________
**测试时间**: ___________
**测试结果**: ___________