product-required-fields
靶子 http://localhost:20098 pid=1310
【必填星号渲染】
✔ 已加载 pid=1310 的编辑页(pname 非空)
采集到 21 个 td.title
✔ td.title 采集非空(否则下面的 every/filter 恒真 = 假绿)
带星: ["商品名称:","实际销售价:","尺寸大小:","装订类型:"]
无星: ["产品单位:","产品重量:","关键字:","商品编号:","属性设置:","市场参考价:","库存报警下限:","库存数量:","所属样式:","所属类目:","支付类型:","最低购买数量:","条形码:","点击数:","赠送积分:","销售操作:","限购数量:"]
✔ 带星字段集合严格相等
✔ 分辨力守卫:无星字段 17 个(非零)
✔ 「商品名称:」星号字符
✔ 「商品名称:」星号渲染色
✔ 「装订类型:」星号字符
✔ 「装订类型:」星号渲染色
✔ 「尺寸大小:」星号字符
✔ 「尺寸大小:」星号渲染色
✔ 「实际销售价:」星号字符
✔ 「实际销售价:」星号渲染色
✔ 图例行恰好 1 条
✔ 图例文本以 * 开头且非空:"*为必填项"
✔ 图例星号渲染色
✔ 基线读到 pid=1310 的行(非空)
✔ 基线 pprice 非空且是合法形态
基线: 宝宝周岁 1200 [{~name~:~对裱蝴蝶精装~,~prop~:[{~name~:~210x285~,~prop~:{~jichu~:1200,~jiaye~:0,~jichuvip~:0,~jiayevip~:0...
【后端 fail-closed 闸】
✔ 空 pprice → 被拦,且提示是「请至少添加一个装订类型」
✔ 空 pprice → 没走到保存后的 302 跳转
✔ 有装订类型但无尺寸 → 被拦,且提示是「请至少添加一个尺寸大小」
✔ 有装订类型但无尺寸 → 没走到保存后的 302 跳转
✔ 有尺寸但基础价为 null → 被拦,且提示是「请填写规格「杂志装订,310x310」的基础价格」
✔ 有尺寸但基础价为 null → 没走到保存后的 302 跳转
✔ 守卫:合法 pprice 未被闸拦(不含任何必填提示)
✔ 守卫:合法 pprice 走到了保存后的 302 跳转
【前端提交前拦截】
✔ 删光装订类型 → 弹出提示,含「装订类型」
✔ 删光装订类型 → 表单没有提交(仍停在编辑页):/Admin/shangpinguanli_xiugai/pid/1310
实际提示: ["请至少添加一个装订类型"]
✔ 基础价格清空 → 弹出提示,含「基础价格」
✔ 基础价格清空 → 表单没有提交(仍停在编辑页):/Admin/shangpinguanli_xiugai/pid/1310
实际提示: ["请填写规格「对裱蝴蝶精装,210x285」的基础价格"]
【守卫:正常保存不被误伤】
✔ 原样保存 → 跳到 subpage/2(保存成功)
✔ 原样保存 → 没有弹出任何拦截提示
✔ 原样保存 → pname/psellpricemin/pprice 逐字段不变
✔ 原样保存 → puptime 已刷新(证明 UPDATE 真的执行了,不是被静默跳过) 1788718551→1789555512
截图 /data/AICode/e2e/ma_dev_v2/ma/bin/workspace/test-results/playwright-images/product-required-star/required-gate.png
PASS=33 FAIL=0