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

4.7 KiB

快捷键修复测试指南

快速测试步骤

1. 重新加载扩展

# 如果还没构建,先构建
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. 检查存储:
    chrome.storage.local.get('custom_shortcuts', console.log)
    
  2. 检查日志:
    • 应该看到 [ShortcutManager] 更新快捷键 xxx 的目标引擎: github
    • 应该看到 [App] 使用引擎名称: github
  3. 检查参数:
    • 控制台应显示正确的 actionParam

成功标准

全部通过以下检查:

  • ✅ 监听器只注册一次
  • ✅ 快捷键只执行一次
  • ✅ 引擎切换到正确的目标
  • ✅ UI 显示正确的引擎名称
  • ✅ 修改配置后立即生效
  • ✅ 所有快捷键功能正常
  • ✅ 无控制台错误
  • ✅ 性能无异常

快速验证命令

在浏览器控制台执行:

// 检查存储的快捷键配置
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);
});

测试完成后,请在此记录结果:

  • 测试通过 ✅
  • 测试失败 ❌ (请附上错误信息)
  • 需要进一步调试

测试人: ___________ 测试时间: ___________ 测试结果: ___________