receipt-title-required
靶子 BASE=http://localhost:20098 clone=h8 container=wt_h8_tp8 ddnum=202608130045438700285587 ghost=E2E_NO_SUCH_DDNUM_1789555620836
[A 管理端入口 —— 凭证处理台,权限位 39]
PASS A1) 凭证处理台上「个人抬头」下拉可见
PASS A2) 未配置时初值 = 必须填写抬头(回落现状) [期望 "1" / 实测 "1"]
PASS A3) 原有「对外叫法」入口没被挤掉(同一条配置栏)
PASS A4) 说明里点名了公司抬头不受此项影响(§1.7:两个相关设置必须互相点名)
PASS A5) 保存后弹出成功反馈(jncAlert,非原生 alert)
PASS A6) 重载后读回「可以不填」(真持久化,不是只改了 DOM) [期望 "0" / 实测 "0"]
PASS A7) DB 里确实是 0(证明写的是 corp_config 而非别处) [期望 "0" / 实测 "0"]
[B PC 前台 UI —— 开关=可不填]
PASS B0) 申请表单确实渲染了(否则下面的不可见断言会假绿)
PASS B1) 个人抬头下「*」隐藏 [期望 false / 实测 false]
PASS B2) 出现「可以不填」说明 [期望 true / 实测 true]
PASS B3) 切到公司抬头「*」必须回来(公司恒必填) [期望 true / 实测 true]
PASS B4) 公司抬头下「可以不填」说明隐藏 [期望 false / 实测 false]
PASS B5) 切回个人抬头「*」再次隐藏 [期望 false / 实测 false]
PASS B6) 可不填档:空抬头点提交,前端放行并真的发出了请求 [期望 1 / 实测 1]
[C PC 服务端 User::receipt_apply_post —— 用不存在的 ddnum,零写库]
PASS C0) 从页面取到 CSRF token(取不到则下面全是 CSRF 拒,与真结果同形)
PASS C1) 开关=可不填:空抬头**越过**抬头闸(不再回「抬头必填」)
PASS C2) 越过后落到 receiptEligible 的拒绝(证明真走到了后面,不是被别的闸挡住)
[D WxApi::receiptApply —— Bearer,独立端点各自验]
/data/AICode/e2e/ma_dev_v2/ma/bin/workspace/playwright/e2e/e2e-receipt-title-required.js:59
if (i === 4) throw new Error('Bearer 登录失败: ' + JSON.stringify(j).slice(0, 200));
^
Error: Bearer 登录失败: {"__raw":"<!DOCTYPE html>\n<html>\n<head>\n <meta charset=\"UTF-8\">\n <title>系统发生错误</title>\n <meta name=\"robots\" content=\"noindex,nofollow\" />\n <style>\n /* Base */\n
at bearerLogin (/data/AICode/e2e/ma_dev_v2/ma/bin/workspace/playwright/e2e/e2e-receipt-title-required.js:59:26)
at async /data/AICode/e2e/ma_dev_v2/ma/bin/workspace/playwright/e2e/e2e-receipt-title-required.js:160:19
Node.js v20.20.2