feat: 为高频变更 JS 文件补充 smoke test 并建立 js-test-gate Rule
新增测试: - api.test.js: 28 个用例覆盖 VpsFmt 纯工具函数(OAuth 归一化、倒计时文案、费用文案、徽章样式) - app.test.js: 15 个用例覆盖 NAVS/VIEW_MAP/VALID_VIEWS 常量和 _viewFromHash 路由解析 - modals.test.js: 3 个用例验证 9 个模态框组件定义完整性 规则与钩子: - 新建 .qoder/rules/js-test-gate.md:编辑 static/js/ 下 JS 文件后运行 vitest - 更新 post-edit-check.sh:JS 编辑后 node --check + vitest(排除 vendored 文件) 部署闸门 check_js_tests(update.sh)已有 vitest run 步骤,现在测试覆盖从 1/7 文件提升到 4/7
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
#!/bin/bash
|
||||
# Post-edit hook: 自动验证编辑后的文件
|
||||
# - Python 文件 → 运行 pytest
|
||||
# - JavaScript 文件 → 运行 node --check
|
||||
# - JavaScript 文件 → node --check 语法检查 + vitest 单元测试
|
||||
|
||||
input=$(cat)
|
||||
file_path=$(echo "$input" | jq -r '.tool_input.file_path')
|
||||
@@ -17,7 +17,15 @@ case "$rel_path" in
|
||||
;;
|
||||
static/js/*.js)
|
||||
echo "🔍 检测到 JavaScript 文件变更: $rel_path" >&2
|
||||
node --check "$file_path"
|
||||
node --check "$file_path" || exit 1
|
||||
# 语法通过后运行 vitest(排除 vendored 文件)
|
||||
case "$rel_path" in
|
||||
*/vue.global.prod.js|*/tailwind.js|*/chart.umd.js) ;;
|
||||
*)
|
||||
cd "$QODER_PROJECT_DIR" || exit 0
|
||||
npx vitest run
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
# vps-manager JavaScript 测试验证规则
|
||||
|
||||
## 触发条件
|
||||
|
||||
每次编辑 `vps-manager/static/js/` 下的 `.js` 文件后自动运行(排除第三方 vendored 文件如 `vue.global.prod.js`、`tailwind.js`、`chart.umd.js`)。
|
||||
|
||||
## 执行命令
|
||||
|
||||
```bash
|
||||
cd vps-manager && npx vitest run
|
||||
```
|
||||
|
||||
## 规则
|
||||
|
||||
- 全部通过才视为改动完成,失败则先修复再提交
|
||||
- 测试文件位于 `static/js/__tests__/` 目录,vitest 配置在 `vitest.config.js`
|
||||
- 当前覆盖:`store.test.js`(状态管理)、`api.test.js`(工具函数)、`app.test.js`(导航路由)、`modals.test.js`(组件定义)
|
||||
- 部署闸门 `deploy/update.sh` 的 `check_js_tests` 步骤会在 cc1 自动更新时运行 `npx vitest run`,失败则回滚并告警
|
||||
Reference in New Issue
Block a user