|
5 | 5 | 当你需要为某个被测应用生成或修改测试蓝本时,**必须遵守以下规则**: |
6 | 6 |
|
7 | 7 | 1. **蓝本统一存放在 `testpilot/` 文件夹**:每个被测应用目录下创建 `testpilot/` 子目录,蓝本放在里面。 |
8 | | -2. **命名规范**:主蓝本命名为 `testpilot.json`,按功能模块拆分的蓝本命名为 `模块名.testpilot.json`。 |
9 | | -3. **更新而非新建**:若已存在同名蓝本,直接覆盖更新,**不得**创建 `_v2`、`_new`、`_backup` 等变体。 |
10 | | -4. **每个蓝本必须包含 `description` 字段**:50-200字描述本蓝本覆盖的功能范围。 |
11 | | - - ✅ 正确:`shop-demo/testpilot/testpilot.json` |
12 | | - - ✅ 正确:`shop-demo/testpilot/login.testpilot.json`(按功能拆分) |
13 | | - - ❌ 错误:`shop-demo/testpilot.json`(不要散落在根目录) |
14 | | - - ❌ 错误:`shop-demo/testpilot/testpilot_v2.json` |
| 8 | +2. **按功能模块拆分蓝本**:不要创建单一的 `testpilot.json`,而是按功能模块拆分成多个蓝本文件。 |
| 9 | +3. **命名规范**:`模块名.testpilot.json`(如 `login.testpilot.json`、`cart.testpilot.json`) |
| 10 | +4. **更新而非新建**:若已存在同名蓝本,直接覆盖更新,**不得**创建 `_v2`、`_new`、`_backup` 等变体。 |
| 11 | +5. **每个蓝本必须包含 `description` 字段**:50-200字描述本蓝本覆盖的功能范围。 |
| 12 | +6. **每个蓝本必须包含 `start_command` 字段**:如果应用需要命令行启动(如 `npm start`、`python app.py`),必须填写;纯HTML静态应用留空。 |
| 13 | + |
| 14 | +**示例结构:** |
| 15 | +``` |
| 16 | +shop-demo/ |
| 17 | + testpilot/ |
| 18 | + auth.testpilot.json ← 登录/注册/权限模块 |
| 19 | + dashboard.testpilot.json ← 仪表盘统计模块 |
| 20 | + product.testpilot.json ← 商品管理CRUD模块 |
| 21 | + order.testpilot.json ← 订单管理模块 |
| 22 | +``` |
| 23 | + |
| 24 | +**优点:** |
| 25 | +- 每个模块独立,互不干扰 |
| 26 | +- 代码变化时只需更新对应模块的蓝本 |
| 27 | +- 用户可以选择测试全部模块或单个模块 |
15 | 28 |
|
16 | 29 | 这样 TestPilot AI 插件能自动扫描 `testpilot/` 目录下的所有蓝本并以多选框列表展示。 |
17 | 30 |
|
18 | | -## 编程完成后必须生成/更新蓝本 |
| 31 | +## 代码变化时自动审视并更新蓝本(重要!) |
| 32 | + |
| 33 | +**每次修改代码后,你必须主动审视并更新对应的蓝本,无需用户提醒。** |
| 34 | + |
| 35 | +### 自动更新触发条件 |
19 | 36 |
|
20 | | -**每次完成编程任务后,你必须同时生成或更新被测应用的 `testpilot.json`**。 |
| 37 | +当你完成以下任何代码修改后,**立即检查并更新对应模块的蓝本**: |
| 38 | + |
| 39 | +1. **新增UI元素**:新增按钮/表单/导航/弹窗 → 更新对应模块蓝本,添加新场景 |
| 40 | +2. **修改元素ID/class**:修改了 `id` 或 `class` → 更新蓝本中的选择器 |
| 41 | +3. **修改业务逻辑**:修改表单验证/计算逻辑/跳转流程 → 更新蓝本中的断言和预期结果 |
| 42 | +4. **删除功能**:删除某个功能 → 从蓝本中删除对应场景 |
| 43 | +5. **修复Bug**:修复了Bug → 更新蓝本中的 `expected` 断言,确保能检测到该Bug |
| 44 | +6. **修改URL/端口**:修改了应用端口或路由 → 更新蓝本中的 `base_url` 和 `start_command` |
| 45 | + |
| 46 | +### 自动审视流程 |
| 47 | + |
| 48 | +``` |
| 49 | +修改代码 → 自问:这个改动影响哪个功能模块? |
| 50 | + → 找到对应的 xxx.testpilot.json |
| 51 | + → 检查:选择器是否还正确?断言是否需要更新? |
| 52 | + → 更新蓝本 |
| 53 | + → 完成 |
| 54 | +``` |
21 | 55 |
|
22 | | -这是因为你是最了解自己代码的人——你知道每个元素的 ID、class、功能逻辑,你生成的蓝本最精准、覆盖最全面。 |
| 56 | +**示例:** |
| 57 | +- 修改了登录页的密码输入框 `id` 从 `#pwd` 改为 `#password` |
| 58 | + → 立即打开 `auth.testpilot.json` |
| 59 | + → 找到所有使用 `#pwd` 的步骤 |
| 60 | + → 改为 `#password` |
| 61 | + → 保存 |
23 | 62 |
|
24 | 63 | ### 蓝本生成时机 |
25 | 64 |
|
26 | | -- ✅ **新建应用**:代码写完后,立即生成完整 `testpilot.json` |
27 | | -- ✅ **修改功能**:新增/修改/删除任何 UI 元素或业务逻辑后,同步更新蓝本对应场景和选择器 |
28 | | -- ✅ **修复 Bug 后**:确认代码修复正确,更新蓝本中对应的 expected 断言 |
29 | | -- ❌ **不允许跳过**:不得以"稍后再写"为由跳过蓝本生成 |
| 65 | +- ✅ **新建应用**:代码写完后,按功能模块生成多个蓝本文件 |
| 66 | +- ✅ **修改功能**:新增/修改/删除任何 UI 元素或业务逻辑后,**立即**更新对应模块的蓝本 |
| 67 | +- ✅ **修复 Bug 后**:确认代码修复正确,**立即**更新蓝本中对应的 expected 断言 |
| 68 | +- ❌ **不允许跳过**:不得以"稍后再写"为由跳过蓝本更新 |
30 | 69 |
|
31 | 70 | ### 蓝本质量要求 |
32 | 71 |
|
|
0 commit comments