product-required-fields

20260916-201504 轮 · 看它的历史
靶子 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→1789563032

截图 /data/AICode/e2e/ma_dev_v2/ma/bin/workspace/test-results/playwright-images/product-required-star/required-gate.png

PASS=33 FAIL=0