mobile-upload-android

20260916-181749 轮 · 看它的历史
靶子 http://localhost:20098  容器 wt_h8_tp8  UA=Pixel5

  现状        HTTP=200 android=true picked=1/1→1 L('取消')=cancel  hero=ok     back=true/true/true   err=0
  变异nojs    HTTP=200 android=true picked=0/0→THREW:page.waitForEvent: Timeout 8000ms exceeded while waiting for L('取消')=cancel  hero=ok     back=true/true/true   err=1
  变异zombie  HTTP=200 android=true picked=1/1→1 L('取消')=cancel  hero=ok     back=true/true/true   err=0
  变异nolang  HTTP=200 android=true picked=1/1→1 L('取消')=取消      hero=ok     back=true/true/true   err=0
  变异nodedup HTTP=200 android=true picked=1/1→2 L('取消')=cancel  hero=ok     back=true/true/true   err=0

── 守卫断言(本轮清理前后都必须绿)──
  ✔ 页面可达  (200)
  ✔ 🔴 UA 分支确实进了非 iOS 模板  (true/false)
  ✔ zepto 就位  (function)
  ✔ 统一弹窗就位  (function/function)
  ✔ 点上传框 → 上传面板真的滑进视口(不再是 -1440px)  (false)
  ✔ 🔴 选一张图 → 本地预览 1 条 + 待上传计数 1(用户可见判据)  (1/1)
  ✔ 🔴 点开始上传 → 真的打出 getUploadOss(OSS 三步第 1 步)  (true)
  ✔ 🔴 并且真的走到 OSS 直传(第 2 步,已 abort 不落对象)  (true)
  ✔ 零 JS 报错  (0)

── 批 1 目标断言(清理【前】应为红)──
  ✔ 加载后不弹任何弹窗  (0)
  ✔ 🔴 本地缩略图库已彻底移除:不再往 localStorage 写共用身份 userName='???'  (false)
  ✔ 死面板 #user-info 已删  (false)
  ✔ 死面板 #wechat-talk 已删  (false)
  ✔ 死按钮 #delete-thumb 已删  (false)
  ✔ 占位身份 window.vUserId 已删  (undefined)
  ✔ 🔴 私人邮箱不在渲染后的 DOM 里  (false)
  ✔ 🔴 私人邮箱也不在服务端响应体里  (false)

── 批 2 目标断言 ──
  ✔ 🔴 JS 语言包已挂上(本页不走主题 layout,此前被漏掉)  (1)
  ✔ window.__I18N__ 已是字典对象  (object)
  ✔ 🔴 ?l=en-us 下 L('取消') 真的取到英文(挑的是已有译文的 key)  (cancel)
  ✔ 首屏素材加载成功(不再是那张烤着中文与他司品牌的 banner.png)  (ok)
  ✔ 首屏标题是 HTML 文本、不是图(可翻译)  (true)
  ✔ 上传按钮是 HTML 文本、不是烤字的 PNG  (true)
  ✔ 🔴 返回按钮真的看得见(宽度/文字/aria-label 三样都有)  (true/true/true)

── 批 5 目标断言:?l=en-us 下首屏与计数行真的是英文 ──
  ✔ 首屏标题不再含中文  (false)
  ✔ 首屏副标不再含中文  (false)
  ✔ 上传按钮不再含中文  (false)
  ✔ 🔴 「待上传 N 张」这类计数行也不再含中文(原先被拆成碎片,翻不动)  (false)
  ✔    并且计数行里那个数字还在(占位符没把 <span> 吃掉)  (true)

── 批 3 目标断言 ──
  ✔ 🔴 连选同一张照片两次 → 列表仍是 1 条(与 iOS 侧 checkRepeat 对齐)  (1)

── 变异验证 ──
  ✔ 辅助杠杆 nojs:掐掉 webapp.js 后选图不再有预览(证明用例真在驱动这条链路)  (false)
  ✔ 🔴 判别性杠杆 zombie:把死面板注回去 → 「已删」断言必须转红  (true)
  ✔ 🔴 判别性杠杆 zombie:把私人邮箱与占位身份注回去 → 对应断言也必须转红  (true)
  ✔ 🔴 判别性杠杆 nolang:掐掉语言包 → 取词退回中文原文  (取消)
  ✔ 🔴 判别性杠杆 nolang:__I18N__ 同时必须变回 undefined(证明上面那条不是碰巧)  (undefined)
  ✔ 🔴 判别性杠杆 nodedupe:把去重判定改回"命中也不 return" → 重复选图必须变 2 条  (2)
    [nojs] err: mimo is not defined

现状请求序列: ["GET /index.php/Flash/getUploadOss/upload_user/1","OSS-PUT"]

PASS=36 FAIL=0