@szc-ft/mcp-szcd-client 0.28.1 → 0.28.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. package/opencode-extension/skills/local-browser-test/SKILL.md +67 -34
  2. package/opencode-extension/skills/local-browser-test/lib/ant-adapter.js +716 -0
  3. package/opencode-extension/skills/local-browser-test/lib/browser-engine.js +2275 -0
  4. package/opencode-extension/skills/local-browser-test/lib/chrome-finder.js +125 -0
  5. package/opencode-extension/skills/local-browser-test/lib/expect.js +392 -0
  6. package/opencode-extension/skills/local-browser-test/lib/shared-deps.js +137 -0
  7. package/opencode-extension/skills/local-browser-test/lib/test-plan.js +48 -0
  8. package/opencode-extension/skills/local-browser-test/lib/visual-compare.js +192 -0
  9. package/opencode-extension/skills/local-browser-test/local-browser-executor.js +735 -0
  10. package/package.json +1 -1
  11. package/qwen-extension/qwen-extension.json +1 -1
  12. package/qwen-extension/skills/local-browser-test/SKILL.md +67 -34
  13. package/qwen-extension/skills/local-browser-test/lib/ant-adapter.js +716 -0
  14. package/qwen-extension/skills/local-browser-test/lib/browser-engine.js +2275 -0
  15. package/qwen-extension/skills/local-browser-test/lib/chrome-finder.js +125 -0
  16. package/qwen-extension/skills/local-browser-test/lib/expect.js +392 -0
  17. package/qwen-extension/skills/local-browser-test/lib/shared-deps.js +137 -0
  18. package/qwen-extension/skills/local-browser-test/lib/test-plan.js +48 -0
  19. package/qwen-extension/skills/local-browser-test/lib/visual-compare.js +192 -0
  20. package/qwen-extension/skills/local-browser-test/local-browser-executor.js +735 -0
  21. package/standard-skill/local-browser-test/SKILL.md +67 -34
  22. package/standard-skill/local-browser-test/lib/ant-adapter.js +716 -0
  23. package/standard-skill/local-browser-test/lib/browser-engine.js +2275 -0
  24. package/standard-skill/local-browser-test/lib/chrome-finder.js +125 -0
  25. package/standard-skill/local-browser-test/lib/expect.js +392 -0
  26. package/standard-skill/local-browser-test/lib/shared-deps.js +137 -0
  27. package/standard-skill/local-browser-test/lib/test-plan.js +48 -0
  28. package/standard-skill/local-browser-test/lib/visual-compare.js +192 -0
  29. package/standard-skill/local-browser-test/local-browser-executor.js +735 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@szc-ft/mcp-szcd-client",
3
- "version": "0.28.1",
3
+ "version": "0.28.2",
4
4
  "description": "MCP client for szcd component library - auto-configures AI coding tools with MCP server, skills, agents and commands",
5
5
  "keywords": [
6
6
  "mcp",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "szcd-component-helper",
3
- "version": "0.28.1",
3
+ "version": "0.28.2",
4
4
  "description": "szcd 组件库 MCP 助手 — 查询组件信息、匹配需求、生成代码",
5
5
  "mcpServers": {
6
6
  "szcd-component-helper": {
@@ -27,16 +27,46 @@ compatibility:
27
27
 
28
28
  ## ⚡ 路径解析(必读,避免 ad-hoc 脚本)
29
29
 
30
- **所有命令使用 `$CLIENT_PATH` 变量,会话开始时先解析一次:**
30
+ **执行器内置在 skill 目录中(自包含),会话开始时先解析 skill 路径:**
31
31
 
32
32
  ```bash
33
- # 解析客户端安装路径(成功后所有命令复用此变量)
34
- export CLIENT_PATH=$(node -p "require.resolve('@szc-ft/mcp-szcd-client/local-browser-executor.js')" 2>/dev/null \
35
- || node -p "require('path').dirname(require.resolve('@szc-ft/mcp-szcd-client/package.json')) + '/local-browser-executor.js'")
36
- echo "CLIENT_PATH=$CLIENT_PATH"
37
- ```
33
+ # 解析 skill 目录路径(执行器 + lib 都在 skill 目录内)
34
+ export SKILL_DIR=$(node -p "
35
+ const path = require('path');
36
+ // 尝试从 npm 包解析
37
+ try { return path.dirname(require.resolve('@szc-ft/mcp-szcd-client/standard-skill/local-browser-test/SKILL.md')); } catch {}
38
+ // 尝试从 IDE skill 目录查找
39
+ const os = require('os');
40
+ const candidates = [
41
+ path.join(os.homedir(), '.qwen/extensions/szcd-component-helper/skills/local-browser-test'),
42
+ path.join(os.homedir(), '.claude/skills/local-browser-test'),
43
+ path.join(os.homedir(), '.config/opencode/skills/local-browser-test'),
44
+ path.join(os.homedir(), '.trae-cn/skills/local-browser-test'),
45
+ path.join(os.homedir(), '.qoder/skills/local-browser-test'),
46
+ ];
47
+ for (const c of candidates) {
48
+ if (require('fs').existsSync(path.join(c, 'local-browser-executor.js'))) return c;
49
+ }
50
+ throw new Error('local-browser-test skill not found');
51
+ ")
52
+ echo "SKILL_DIR=$SKILL_DIR"
53
+
54
+ # 执行器路径
55
+ export EXECUTOR="$SKILL_DIR/local-browser-executor.js"
56
+ ```
57
+
58
+ 后续所有命令直接 `node "$EXECUTOR" --action ...`。
59
+
60
+ **执行器 + lib 内置在 skill 目录中,自带 Ant 适配层 + expect 断言 + testCase 引擎。禁止自己 require puppeteer 写脚本**——自写脚本会丢失:
61
+ - 微前端 frame 探活 + 自动召回
62
+ - `closeAllDropdowns` 跨 frame 清理
63
+ - Ant Select mousedown + VERIFY 回写
64
+ - testCase recovery 重试
65
+ - API 按 frame scope 过滤
66
+
67
+ ### 过渡兼容执行器
38
68
 
39
- 后续所有命令直接 `node "$CLIENT_PATH" --action ...`,**不要自己 require puppeteer 写脚本**——执行器已封装好 antSelect/formFill/expect/testCase 等步骤,自己写脚本会丢失微前端 frame 探活、closeAllDropdowns、verify 回写等保护。
69
+ `local-browser-executor.cjs`(同目录)是 CommonJS 过渡版,仅支持基础诊断(diagnose/screenshot/list-pages/api-check/plan/snapshot/interact/perf/watch)。**Ant 适配层 / testCase DSL / expect 断言仅 `local-browser-executor.js`(ES Module 版)支持。** 优先用 `.js` 版本。
40
70
 
41
71
  ## 🎯 三种典型任务(场景驱动)
42
72
 
@@ -66,7 +96,7 @@ cat > /tmp/case.json <<'EOF'
66
96
  "recovery": { "maxRetriesPerStep": 2 }
67
97
  }
68
98
  EOF
69
- node "$CLIENT_PATH" --action test-case --test-case-file /tmp/case.json --test-report /tmp/report.json
99
+ node "$EXECUTOR" --action test-case --test-case-file /tmp/case.json --test-report /tmp/report.json
70
100
  ```
71
101
 
72
102
  dataset 数组每行跑一遍同样的 steps,`{{name}}` / `{{type}}` 自动替换。`setup.findFrame` 一次定位后所有步骤自动走子应用 frame(微前端默认行为)。
@@ -77,7 +107,7 @@ dataset 数组每行跑一遍同样的 steps,`{{name}}` / `{{type}}` 自动替
77
107
 
78
108
  ```bash
79
109
  # 单字段
80
- node "$CLIENT_PATH" --action act --frame-content-contains "数据集" \
110
+ node "$EXECUTOR" --action act --frame-content-contains "数据集" \
81
111
  --selector ant-select=资源类型 --click ... # ❌ 不要这样
82
112
 
83
113
  # ✅ 用 testCase 的 antSelect 步骤(在 testCase.steps 内):
@@ -98,10 +128,10 @@ node "$CLIENT_PATH" --action act --frame-content-contains "数据集" \
98
128
 
99
129
  ```bash
100
130
  # 一次性看 JS 错误 + API 失败 + iframe 状态
101
- node "$CLIENT_PATH" --action diagnose --url-contains "platform.aicityos.com" --wait 10000
131
+ node "$EXECUTOR" --action diagnose --url-contains "platform.aicityos.com" --wait 10000
102
132
 
103
133
  # 仅看 API
104
- node "$CLIENT_PATH" --action api-capture --url-contains "platform.aicityos.com" \
134
+ node "$EXECUTOR" --action api-capture --url-contains "platform.aicityos.com" \
105
135
  --url-pattern "/api/" --wait 10000 --include-response-body \
106
136
  --output /tmp/api.json
107
137
  ```
@@ -113,21 +143,24 @@ node "$CLIENT_PATH" --action api-capture --url-contains "platform.aicityos.com"
113
143
  ```
114
144
  Agent / SKILL.md
115
145
  → testCase JSON ← P0 用例首选入口
116
- szcd-mcp-client/local-browser-executor.js ($CLIENT_PATH)
117
- → lib/browser-engine.js (executeTestCase + Ant 适配 + expect)
118
- → lib/ant-adapter.js (Select/TreeSelect/Input/Radio/...)
119
- → lib/expect.js (validation/locator/url/api + poll)
146
+ $SKILL_DIR/local-browser-executor.js ($EXECUTOR)
147
+ $SKILL_DIR/lib/browser-engine.js (executeTestCase + Ant 适配 + expect)
148
+ $SKILL_DIR/lib/ant-adapter.js (Select/TreeSelect/Input/Radio/...)
149
+ $SKILL_DIR/lib/expect.js (validation/locator/url/api + poll)
120
150
  → puppeteer-core + CDP
121
151
  → 用户真实 Chrome / Edge
122
152
  ```
123
153
 
124
- 新增稳定能力优先进入 `lib/browser-engine.js` `lib/ant-adapter.js`,**禁止 AI 在用户机器上写 ad-hoc puppeteer 脚本**——会丢失:
154
+ 执行器 + lib 内置在 skill 目录中(自包含),`postinstall` 会把整个 skill 目录复制到各 IDE。
155
+ **禁止 AI 在用户机器上写 ad-hoc puppeteer 脚本**——会丢失:
125
156
  - 微前端 frame 探活 + 自动召回
126
157
  - `closeAllDropdowns` 跨 frame 清理
127
158
  - Ant Select VERIFY 回写
128
159
  - testCase recovery 重试
129
160
  - API 按 frame scope 过滤
130
161
 
162
+ `local-browser-executor.cjs`(同目录)是 CommonJS 过渡版,仅支持基础诊断。**Ant 适配层 / testCase DSL / expect 断言仅 `local-browser-executor.js`(ES Module 版)支持。**
163
+
131
164
  ## 浏览器模式
132
165
 
133
166
  支持两种模式,执行器自动检测优先使用 connect:
@@ -311,7 +344,7 @@ wujie 微前端子应用渲染在 blob URL iframe 中,**坐标点击无法到
311
344
 
312
345
  ### 结构化观察(主链路起点)
313
346
  ```bash
314
- node {client_path}/local-browser-executor.js \
347
+ node "$EXECUTOR" \
315
348
  --action observe \
316
349
  --url-contains "platform.aicityos.com" \
317
350
  --frame-content-contains "数据集目录" \
@@ -323,7 +356,7 @@ node {client_path}/local-browser-executor.js \
323
356
 
324
357
  ### 观察后按 index 交互(主链路闭环)
325
358
  ```bash
326
- node {client_path}/local-browser-executor.js \
359
+ node "$EXECUTOR" \
327
360
  --action act \
328
361
  --url-contains "platform.aicityos.com" \
329
362
  --frame-content-contains "数据集目录" \
@@ -334,7 +367,7 @@ node {client_path}/local-browser-executor.js \
334
367
 
335
368
  ### 左侧菜单路径稳定点击
336
369
  ```bash
337
- node {client_path}/local-browser-executor.js \
370
+ node "$EXECUTOR" \
338
371
  --action act \
339
372
  --url-contains "platform.aicityos.com" \
340
373
  --menu-path "目录管理/数据集目录" \
@@ -346,7 +379,7 @@ node {client_path}/local-browser-executor.js \
346
379
 
347
380
  ### 轻量 DOM 断言
348
381
  ```bash
349
- node {client_path}/local-browser-executor.js \
382
+ node "$EXECUTOR" \
350
383
  --action assert \
351
384
  --url-contains "platform.aicityos.com" \
352
385
  --selector ".ant-table" \
@@ -357,7 +390,7 @@ node {client_path}/local-browser-executor.js \
357
390
 
358
391
  ### API 请求/响应捕获(真实浏览器 + 微前端)
359
392
  ```bash
360
- node {client_path}/local-browser-executor.js \
393
+ node "$EXECUTOR" \
361
394
  --action api-capture \
362
395
  --url-contains "platform.aicityos.com" \
363
396
  --frame-content-contains "数据集目录" \
@@ -372,7 +405,7 @@ node {client_path}/local-browser-executor.js \
372
405
 
373
406
  ### API 捕获结果断言
374
407
  ```bash
375
- node {client_path}/local-browser-executor.js \
408
+ node "$EXECUTOR" \
376
409
  --action assert-api \
377
410
  --capture-file /tmp/browser-api-capture.json \
378
411
  --max-failed 0 \
@@ -385,7 +418,7 @@ node {client_path}/local-browser-executor.js \
385
418
 
386
419
  ### 快速诊断(过渡兼容)
387
420
  ```bash
388
- NODE_PATH=~/.szcd-mcp/deps/node_modules node {skill_path}/local-browser-executor.cjs \
421
+ NODE_PATH=~/.szcd-mcp/deps/node_modules node "$SKILL_DIR/local-browser-executor.cjs" \
389
422
  --action diagnose \
390
423
  --url-contains "platform.aicityos.com" \
391
424
  --wait 15000 \
@@ -394,13 +427,13 @@ NODE_PATH=~/.szcd-mcp/deps/node_modules node {skill_path}/local-browser-executor
394
427
 
395
428
  ### 列出所有标签页
396
429
  ```bash
397
- NODE_PATH=~/.szcd-mcp/deps/node_modules node {skill_path}/local-browser-executor.cjs \
430
+ NODE_PATH=~/.szcd-mcp/deps/node_modules node "$SKILL_DIR/local-browser-executor.cjs" \
398
431
  --action list-pages
399
432
  ```
400
433
 
401
434
  ### 检查 API 请求状态
402
435
  ```bash
403
- NODE_PATH=~/.szcd-mcp/deps/node_modules node {skill_path}/local-browser-executor.cjs \
436
+ NODE_PATH=~/.szcd-mcp/deps/node_modules node "$SKILL_DIR/local-browser-executor.cjs" \
404
437
  --action api-check \
405
438
  --url-contains "platform.aicityos.com" \
406
439
  --wait 15000
@@ -408,7 +441,7 @@ NODE_PATH=~/.szcd-mcp/deps/node_modules node {skill_path}/local-browser-executor
408
441
 
409
442
  ### 截图
410
443
  ```bash
411
- NODE_PATH=~/.szcd-mcp/deps/node_modules node {skill_path}/local-browser-executor.cjs \
444
+ NODE_PATH=~/.szcd-mcp/deps/node_modules node "$SKILL_DIR/local-browser-executor.cjs" \
412
445
  --action screenshot \
413
446
  --url-contains "platform.aicityos.com" \
414
447
  --filename current-page.png \
@@ -417,7 +450,7 @@ NODE_PATH=~/.szcd-mcp/deps/node_modules node {skill_path}/local-browser-executor
417
450
 
418
451
  ### 执行测试计划 JSON
419
452
  ```bash
420
- NODE_PATH=~/.szcd-mcp/deps/node_modules node {skill_path}/local-browser-executor.cjs \
453
+ NODE_PATH=~/.szcd-mcp/deps/node_modules node "$SKILL_DIR/local-browser-executor.cjs" \
421
454
  --action plan \
422
455
  --plan-file /tmp/test-plan.json \
423
456
  --output /tmp/browser-test-result.json
@@ -425,7 +458,7 @@ NODE_PATH=~/.szcd-mcp/deps/node_modules node {skill_path}/local-browser-executor
425
458
 
426
459
  ### DOM 快照(结构化页面树,类似 browser-use take_snapshot)
427
460
  ```bash
428
- NODE_PATH=~/.szcd-mcp/deps/node_modules node {skill_path}/local-browser-executor.cjs \
461
+ NODE_PATH=~/.szcd-mcp/deps/node_modules node "$SKILL_DIR/local-browser-executor.cjs" \
429
462
  --action snapshot \
430
463
  --url-contains "platform.aicityos.com" \
431
464
  --depth 4 \
@@ -446,25 +479,25 @@ NODE_PATH=~/.szcd-mcp/deps/node_modules node {skill_path}/local-browser-executor
446
479
  ### 智能交互(支持 text=、role=、~ 选择器,类似 Playwright)
447
480
  ```bash
448
481
  # 点击包含“构建”文本的按钮
449
- NODE_PATH=~/.szcd-mcp/deps/node_modules node {skill_path}/local-browser-executor.cjs \
482
+ NODE_PATH=~/.szcd-mcp/deps/node_modules node "$SKILL_DIR/local-browser-executor.cjs" \
450
483
  --action interact \
451
484
  --url-contains "jenkins" \
452
485
  --click "text=Build"
453
486
 
454
487
  # 在输入框中输入文本
455
- NODE_PATH=~/.szcd-mcp/deps/node_modules node {skill_path}/local-browser-executor.cjs \
488
+ NODE_PATH=~/.szcd-mcp/deps/node_modules node "$SKILL_DIR/local-browser-executor.cjs" \
456
489
  --action interact \
457
490
  --click "#search-input" \
458
491
  --type "hello world"
459
492
 
460
493
  # 悬停 + 截图
461
- NODE_PATH=~/.szcd-mcp/deps/node_modules node {skill_path}/local-browser-executor.cjs \
494
+ NODE_PATH=~/.szcd-mcp/deps/node_modules node "$SKILL_DIR/local-browser-executor.cjs" \
462
495
  --action interact \
463
496
  --hover "~ant-menu-item" \
464
497
  --screenshot-after
465
498
 
466
499
  # 滚动页面
467
- NODE_PATH=~/.szcd-mcp/deps/node_modules node {skill_path}/local-browser-executor.cjs \
500
+ NODE_PATH=~/.szcd-mcp/deps/node_modules node "$SKILL_DIR/local-browser-executor.cjs" \
468
501
  --action interact \
469
502
  --scroll down --scroll-amount 500
470
503
  ```
@@ -476,14 +509,14 @@ NODE_PATH=~/.szcd-mcp/deps/node_modules node {skill_path}/local-browser-executor
476
509
 
477
510
  ### 性能指标采集(FCP/TTFB/资源统计)
478
511
  ```bash
479
- NODE_PATH=~/.szcd-mcp/deps/node_modules node {skill_path}/local-browser-executor.cjs \
512
+ NODE_PATH=~/.szcd-mcp/deps/node_modules node "$SKILL_DIR/local-browser-executor.cjs" \
480
513
  --action perf \
481
514
  --url-contains "platform.aicityos.com"
482
515
  ```
483
516
 
484
517
  ### 持续监控模式(定时截图 + 错误检测)
485
518
  ```bash
486
- NODE_PATH=~/.szcd-mcp/deps/node_modules node {skill_path}/local-browser-executor.cjs \
519
+ NODE_PATH=~/.szcd-mcp/deps/node_modules node "$SKILL_DIR/local-browser-executor.cjs" \
487
520
  --action watch \
488
521
  --url-contains "platform.aicityos.com" \
489
522
  --interval 5000 \