You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
42 lines
4.2 KiB
42 lines
4.2 KiB
|
16 hours ago
|
# 05 · demo Playwright 扩展冒烟
|
||
|
|
|
||
|
|
Type: task
|
||
|
|
Status: resolved
|
||
|
|
Blocked by: 03, 04
|
||
|
|
|
||
|
|
Claimed: 2026-09-06 · wayfinder 工作会话(frontier 首票)
|
||
|
|
Resolved: 2026-09-06
|
||
|
|
|
||
|
|
## Question
|
||
|
|
|
||
|
|
demo 页新入口(票 03 产物)纳入 UI 冒烟,扩展 round-1 的 11 步脚本:
|
||
|
|
|
||
|
|
1. **脚本扩展**:从 `demo_smoke10.py` 扩展新入口步骤——战略协议 CRUD、查重设置保存回读、批量工商(NO_HIT 呈现)、导入带 duplicateStrategy;建议复制为 `demo_smoke_r2.py` 保留 11 步基线(取舍票内定)
|
||
|
|
2. **执行**:`.scratch/customer-e2e/.venv10` 复用(chromium-1234 已缓存零下载);`?api=http://localhost:8080` 注入 + file:// 跨域 + OPTIONS 预检链路照旧
|
||
|
|
3. **门槛**:全步骤 PASS、console error = 0、page error = 0、网络层断言零旧契约调用(`/api/customer/\d+/`、PUT/DELETE)
|
||
|
|
4. **已知坑位**(round-1 票 10 实测沉淀):loadHead 重渲染吃掉动态输入框(reload + 重点 detail tab)、member 双分支防御性预清理、confirmSimilar 双分支等待——新步骤沿用这些模式
|
||
|
|
5. **残留清理**:UI 冒烟造的数据(协议/设置/导入)e2c- 前缀正门清理;查重设置是全局单例,测试后恢复出厂值(masterEnabled=false 或原值)
|
||
|
|
|
||
|
|
## Answer(2026-09-06 落地收官)
|
||
|
|
|
||
|
|
**执行环境**:fat jar 直接复用票 04 重建版(22:29,无需重打);corretto-17(`C:\Users\Administrator\.jdks\corretto-17.0.13`)+ verify profile + MinIO env 起服 ~40s 判活;Playwright 走 `.venv10`(chromium-1234 零下载)。
|
||
|
|
|
||
|
|
**脚本形态(票内拍板)**:新建 `demo_smoke_r2.py` 复制扩展而非原地改,保留 smoke10 11 步基线(详情页签循环 5→6 加 agreements 只读过一遍)+ 4 个新入口步骤块 + 三段收尾清理(协议清扫 / dedup 兜底恢复 / `e2c-r2demo-浏览器*` archive 正门)。
|
||
|
|
|
||
|
|
**结果:20 步全 PASS,首轮一次过**;console_errors=0、page_errors=0、网络层 57 请求零旧契约形态(`/api/customer/<digits>/`=0、PUT/DELETE=0)。
|
||
|
|
|
||
|
|
四个新入口逐项:
|
||
|
|
|
||
|
|
1. **战略协议 CRUD(五端点闭环)**:create(level=2, amount=300万-r2)→ **客户快照同步实证**(info.grid 战略协议='2')→ edit(对话框预填断言 level=2 → 升三级)→ detail(三级)→ **原生 confirm 删除流**(Playwright dialog accept)→ 列表空。实测 `agreement/delete` 为**软删**(DB `deleted=1` 墓碑、list 端点已过滤)——DB 复核口径按 `deleted=0`。
|
||
|
|
2. **查重设置(全局单例)**:save(阈值 66/精确/phone=0)→ 重入 tab 触发 loadDedup 回读断言 → UI 恢复原值 → **起测前 GET 原值无条件 POST 兜底恢复**双保险;DB 终态 = 原值(master=1/name=1/mode=2/threshold=80/phone=1)。
|
||
|
|
3. **F6 批量工商**:勾选自建客户 1 行 → batch-update → 结果行=1 且「未命中」徽标命中——stub 恒 NO_HIT 如实呈现语义通过。
|
||
|
|
4. **F8 导入策略**:`#impStrategy=OVERWRITE` → 上传预检 toast 回显 `策略=OVERWRITE`(t=1 suspect=1;只预检不 confirm)。
|
||
|
|
|
||
|
|
**BUDDY 归属解耦**(票 04 移交项落实):协议/F6 全部挂自建客户(owner=admin);交割只 page+preview **不 initiate**(规避 heavy F-13 同款名下全量圈定);事后 DB 复核 collab owner 仍=曾偲青 未漂移。
|
||
|
|
|
||
|
|
**残留终态(DB 实扫 `scan-residue-t05.py`)**:r2demo 客户 arch=2、协议活行=0、成员位无活跃 BUDDY 行(member/remove 软删墓碑 ×3)、`e2c-*` 活跃 **16 = seed 基准**、dedup 单例原值;导入留 2 条任务痕迹(round-1 DRAFT + 本轮预检,无业务写入,对齐 heavy F-14 先例不清理)。服务已停(8080 释放)。
|
||
|
|
|
||
|
|
**坑位沉淀**:① settings 重入的「已加载」toast 有残留竞态——回读断言改盯控件值 + 900ms 等 GET 覆盖;② `customer_team_member` 列名是 `user_id`/`member_role`(不是 member_user_id/role);③ Playwright 原生 confirm 需 `page.once("dialog", accept)` 且注册先于点击。
|
||
|
|
|
||
|
|
**产物索引**:`.scratch/customer-e2e/demo_smoke_r2.py` / `demo-smoke-r2-result.json` / `shots-r2/`×11;`.scratch/customer-e2e-r2/scan-residue-t05.py`。无新缺陷、无新 fog;**frontier → 06**(report-v2 聚合,API 三套件 + UI 冒烟四路输入全齐)。
|