oa-frontend-postdeploy-public-verification 记录公网部署后验证
这个提交包含在:
@@ -57,16 +57,16 @@
|
||||
|
||||
## Acceptance Criteria
|
||||
|
||||
- [ ] 用户明确批准执行公网部署。
|
||||
- [ ] 部署前本地门禁通过。
|
||||
- [ ] `SYNC_ENV=0 bash deploy/trialrun/deploy.sh` 成功,不覆盖远端 `.env`。
|
||||
- [ ] 部署后公网 `/ready` 通过。
|
||||
- [ ] 部署后 live smoke / OCR readiness 通过或可解释。
|
||||
- [ ] 部署后权限矩阵 `PASS_PERMISSION_MATRIX_READY`。
|
||||
- [ ] 部署后 PC 只读视觉矩阵无 P1 blocker。
|
||||
- [ ] 部署后移动入口和企业微信渲染矩阵通过。
|
||||
- [ ] 所有报告保存到当前 task 的 `research/` 或既有 `artifacts/qa-flow/`,且只在 task 中引用脱敏相对路径。
|
||||
- [ ] Trellis validate、governance 和 `git diff --check` 通过。
|
||||
- [x] 用户明确批准执行公网部署。
|
||||
- [x] 部署前本地门禁通过。
|
||||
- [x] `SYNC_ENV=0 bash deploy/trialrun/deploy.sh` 成功,不覆盖远端 `.env`。
|
||||
- [x] 部署后公网 `/ready` 通过。
|
||||
- [x] 部署后 live smoke / OCR readiness 通过或可解释。
|
||||
- [x] 部署后权限矩阵 `PASS_PERMISSION_MATRIX_READY`。
|
||||
- [x] 部署后 PC 只读视觉矩阵无 P1 blocker。
|
||||
- [x] 部署后移动入口和企业微信渲染矩阵通过。
|
||||
- [x] 所有报告保存到当前 task 的 `research/` 或既有 `artifacts/qa-flow/`,且只在 task 中引用脱敏相对路径。
|
||||
- [x] Trellis validate、governance 和 `git diff --check` 通过。
|
||||
|
||||
## Definition Of Done
|
||||
|
||||
|
||||
+42
@@ -0,0 +1,42 @@
|
||||
{
|
||||
"checkedAt": "2026-05-26T09:45:41.133Z",
|
||||
"baseUrl": "https://oa.hyinda.com",
|
||||
"liveSmokeReady": true,
|
||||
"liveSmoke": {
|
||||
"LIVE_SMOKE_ADMIN_IDENTIFIER": true,
|
||||
"LIVE_SMOKE_ADMIN_PASSWORD": true,
|
||||
"LIVE_SMOKE_EMPLOYEE_IDENTIFIER": true,
|
||||
"LIVE_SMOKE_EMPLOYEE_PASSWORD": true
|
||||
},
|
||||
"liveSmokeOptional": {
|
||||
"LIVE_EXPECT_WECOM_STATUS": true,
|
||||
"LIVE_SMOKE_MANAGER_IDENTIFIER": true,
|
||||
"LIVE_SMOKE_MANAGER_PASSWORD": true,
|
||||
"LIVE_SMOKE_FINANCE_IDENTIFIER": true,
|
||||
"LIVE_SMOKE_FINANCE_PASSWORD": true
|
||||
},
|
||||
"liveOcrReady": true,
|
||||
"liveOcr": {
|
||||
"userReady": true,
|
||||
"invoiceSampleReady": true,
|
||||
"invoiceFileProvided": true,
|
||||
"invoiceFileReady": true,
|
||||
"invoiceBatchDirProvided": false,
|
||||
"invoiceBatchDirReady": false,
|
||||
"allowDuplicate": true
|
||||
},
|
||||
"missing": [],
|
||||
"publicReady": {
|
||||
"ok": true,
|
||||
"status": 200
|
||||
},
|
||||
"wecomConfig": {
|
||||
"ok": true,
|
||||
"status": 200,
|
||||
"statusText": "ready",
|
||||
"entryEnabled": true,
|
||||
"oauthEnabled": true,
|
||||
"defaultReturnTo": "/mobile",
|
||||
"loginUrl": "/api/auth/wecom/login?returnTo=%2Fmobile"
|
||||
}
|
||||
}
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
|
||||
Running 1 test using 1 worker
|
||||
|
||||
[live-ocr] {"alias":"SAMPLE-PDF-001","status":"ocr_failed","durationMs":634,"transport":"ui","timings":{"uploadMs":634,"terminalWaitMs":0},"reasonCategory":"duplicate_or_same_invoice","fieldHits":{"invoiceId":false,"invoiceCodeOrNumber":false,"sellerName":false,"totalAmount":false,"invoiceDate":false}}
|
||||
✓ 1 tests/e2e/manual/live-invoice-ocr.spec.ts:8:1 › 手工 live 腾讯 OCR 辅助复核:真实 VAT 发票上传后进入可处理状态 (6.0s)
|
||||
|
||||
1 passed (9.6s)
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
>>> 探活 live /ready: https://oa.hyinda.com/ready
|
||||
>>> 执行 live smoke Playwright
|
||||
|
||||
> [email protected] test:e2e:live
|
||||
> playwright test tests/e2e/live-smoke.spec.ts
|
||||
|
||||
|
||||
Running 3 tests using 1 worker
|
||||
|
||||
✓ 1 tests/e2e/live-smoke.spec.ts:43:3 › live smoke › 公网基础探活与企微配置状态 (1.8s)
|
||||
✓ 2 tests/e2e/live-smoke.spec.ts:64:3 › live smoke › 管理员只读网页 smoke (11.6s)
|
||||
✓ 3 tests/e2e/live-smoke.spec.ts:106:3 › live smoke › 员工只读网页 smoke (10.5s)
|
||||
|
||||
3 passed (27.7s)
|
||||
+1
@@ -0,0 +1 @@
|
||||
[pending-ocr][SKIP] missing DATABASE_URL
|
||||
+1
@@ -0,0 +1 @@
|
||||
[public-bundle-copy] base=https://oa.hyinda.com scanned=92 focused=2 findings=0
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"issueId": null,
|
||||
"baseURL": "https://oa.hyinda.com",
|
||||
"commit": "d829e44",
|
||||
"checkedAt": "2026-05-26T09:46:31.838Z",
|
||||
"status": "PASS",
|
||||
"mode": "live-smoke-readiness",
|
||||
"reportDir": ".trellis/tasks/05-26-oa-frontend-postdeploy-public-verification/research/postdeploy-live-smoke-readiness",
|
||||
"groups": null,
|
||||
"notes": "公网 /ready、public bundle、pending OCR、live smoke 和真实 OCR 可用性检查;缺少凭据或样票时按脚本规则记录 SKIP。"
|
||||
}
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
|
||||
Running 6 tests using 1 worker
|
||||
|
||||
(node:1644539) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.
|
||||
(Use `node --trace-warnings ...` to show where the warning was created)
|
||||
(node:1644539) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.
|
||||
(Use `node --trace-warnings ...` to show where the warning was created)
|
||||
✓ 1 tests/e2e/dg7-mobile-information-dedupe.spec.ts:884:3 › MIF7 移动信息架构整改 › 首页常用入口不重复底部 Tab,员工进度页按状态分标签 (35.6s)
|
||||
✓ 2 tests/e2e/dg7-mobile-information-dedupe.spec.ts:933:3 › MIF7 移动信息架构整改 › 审批人首页只保留轻待办摘要,审批页按待我审批和已处理分组 (5.4s)
|
||||
✓ 3 tests/e2e/dg7-mobile-information-dedupe.spec.ts:1008:3 › MIF7 移动信息架构整改 › 通知中心事件化,点击通知直达业务详情且返回来源页 (7.7s)
|
||||
✓ 4 tests/e2e/dg7-mobile-information-dedupe.spec.ts:1056:3 › MIF7 移动信息架构整改 › 报销详情统一详情壳,直接进入请假详情返回进度标签 (7.1s)
|
||||
✓ 5 tests/e2e/dg7-mobile-information-dedupe.spec.ts:1112:3 › MIF7 移动信息架构整改 › 财务首页角色化摘要只对财务角色展示 (7.2s)
|
||||
✓ 6 tests/e2e/r124-mobile-entry-matrix.spec.ts:486:3 › R124 企业微信移动入口矩阵 › 底部入口、我的二级入口、PDF 上传和草稿删除不回退到 PC 体验 (12.9s)
|
||||
|
||||
6 passed (1.3m)
|
||||
+892
@@ -0,0 +1,892 @@
|
||||
{
|
||||
"issueId": "OAFRONT3-1",
|
||||
"mode": "pc-readonly-visual-evidence",
|
||||
"status": "PASS_PC_READONLY_VISUAL_READY",
|
||||
"conclusion": "PASS_PC_READONLY_VISUAL_READY",
|
||||
"baseUrl": "https://oa.hyinda.com",
|
||||
"checkedAt": "2026-05-26T09:49:00.322Z",
|
||||
"readOnly": true,
|
||||
"viewport": "1440x960",
|
||||
"roleCount": 7,
|
||||
"routeCount": 32,
|
||||
"screenshotDir": "output/playwright/oafront3-pc-readonly-postdeploy",
|
||||
"reportDir": ".trellis/tasks/05-26-oa-frontend-postdeploy-public-verification/research/postdeploy-oafront3-pc-readonly",
|
||||
"roles": [
|
||||
{
|
||||
"role": "employee",
|
||||
"login": "PASS"
|
||||
},
|
||||
{
|
||||
"role": "manager",
|
||||
"login": "PASS"
|
||||
},
|
||||
{
|
||||
"role": "finance",
|
||||
"login": "PASS"
|
||||
},
|
||||
{
|
||||
"role": "finance_mgr",
|
||||
"login": "PASS"
|
||||
},
|
||||
{
|
||||
"role": "admin",
|
||||
"login": "PASS"
|
||||
},
|
||||
{
|
||||
"role": "ceo",
|
||||
"login": "PASS"
|
||||
},
|
||||
{
|
||||
"role": "hr",
|
||||
"login": "PASS"
|
||||
}
|
||||
],
|
||||
"routes": [
|
||||
{
|
||||
"role": "employee",
|
||||
"route": "/portal",
|
||||
"label": "员工工作台",
|
||||
"layer": "A",
|
||||
"expectation": "accessible",
|
||||
"status": "PASS",
|
||||
"finalPath": "/portal",
|
||||
"screenshot": "output/playwright/oafront3-pc-readonly-postdeploy/employee-portal.png",
|
||||
"metrics": {
|
||||
"title": "海音达工作台",
|
||||
"textLength": 786,
|
||||
"headingCount": 1,
|
||||
"tableCount": 0,
|
||||
"uuidCount": 0,
|
||||
"rawStatusTokenCount": 0,
|
||||
"longNumberCount": 0,
|
||||
"rawJsonBlockCount": 0,
|
||||
"englishFound": [],
|
||||
"datePlaceholderCount": 0,
|
||||
"clippedCount": 0,
|
||||
"forbiddenLike": false,
|
||||
"appErrorLike": false,
|
||||
"navPortalCopy": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"role": "employee",
|
||||
"route": "/reimbursements",
|
||||
"label": "员工报销列表",
|
||||
"layer": "A",
|
||||
"expectation": "accessible",
|
||||
"status": "PASS",
|
||||
"finalPath": "/reimbursements",
|
||||
"screenshot": "output/playwright/oafront3-pc-readonly-postdeploy/employee-reimbursements.png",
|
||||
"metrics": {
|
||||
"title": "海音达工作台",
|
||||
"textLength": 718,
|
||||
"headingCount": 1,
|
||||
"tableCount": 1,
|
||||
"uuidCount": 0,
|
||||
"rawStatusTokenCount": 0,
|
||||
"longNumberCount": 0,
|
||||
"rawJsonBlockCount": 0,
|
||||
"englishFound": [],
|
||||
"datePlaceholderCount": 0,
|
||||
"clippedCount": 0,
|
||||
"forbiddenLike": false,
|
||||
"appErrorLike": false,
|
||||
"navPortalCopy": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"role": "employee",
|
||||
"route": "/invoice-pool",
|
||||
"label": "员工票据中心",
|
||||
"layer": "B",
|
||||
"expectation": "accessible",
|
||||
"status": "PASS",
|
||||
"finalPath": "/invoice-pool",
|
||||
"screenshot": "output/playwright/oafront3-pc-readonly-postdeploy/employee-invoice-pool.png",
|
||||
"metrics": {
|
||||
"title": "海音达工作台",
|
||||
"textLength": 3447,
|
||||
"headingCount": 1,
|
||||
"tableCount": 1,
|
||||
"uuidCount": 0,
|
||||
"rawStatusTokenCount": 0,
|
||||
"longNumberCount": 0,
|
||||
"rawJsonBlockCount": 0,
|
||||
"englishFound": [],
|
||||
"datePlaceholderCount": 0,
|
||||
"clippedCount": 0,
|
||||
"forbiddenLike": false,
|
||||
"appErrorLike": false,
|
||||
"navPortalCopy": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"role": "employee",
|
||||
"route": "/purchase-requests",
|
||||
"label": "员工采购申请",
|
||||
"layer": "B",
|
||||
"expectation": "accessible",
|
||||
"status": "PASS",
|
||||
"finalPath": "/purchase-requests",
|
||||
"screenshot": "output/playwright/oafront3-pc-readonly-postdeploy/employee-purchase-requests.png",
|
||||
"metrics": {
|
||||
"title": "海音达工作台",
|
||||
"textLength": 1085,
|
||||
"headingCount": 1,
|
||||
"tableCount": 3,
|
||||
"uuidCount": 0,
|
||||
"rawStatusTokenCount": 0,
|
||||
"longNumberCount": 0,
|
||||
"rawJsonBlockCount": 0,
|
||||
"englishFound": [],
|
||||
"datePlaceholderCount": 0,
|
||||
"clippedCount": 0,
|
||||
"forbiddenLike": false,
|
||||
"appErrorLike": false,
|
||||
"navPortalCopy": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"role": "employee",
|
||||
"route": "/assets",
|
||||
"label": "员工资产台账",
|
||||
"layer": "B",
|
||||
"expectation": "accessible",
|
||||
"status": "PASS",
|
||||
"finalPath": "/assets",
|
||||
"screenshot": "output/playwright/oafront3-pc-readonly-postdeploy/employee-assets.png",
|
||||
"metrics": {
|
||||
"title": "海音达工作台",
|
||||
"textLength": 830,
|
||||
"headingCount": 1,
|
||||
"tableCount": 2,
|
||||
"uuidCount": 0,
|
||||
"rawStatusTokenCount": 0,
|
||||
"longNumberCount": 0,
|
||||
"rawJsonBlockCount": 0,
|
||||
"englishFound": [],
|
||||
"datePlaceholderCount": 0,
|
||||
"clippedCount": 0,
|
||||
"forbiddenLike": false,
|
||||
"appErrorLike": false,
|
||||
"navPortalCopy": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"role": "employee",
|
||||
"route": "/payment-batches",
|
||||
"label": "员工付款权限负例",
|
||||
"layer": "B",
|
||||
"expectation": "forbidden_ok",
|
||||
"status": "FORBIDDEN_EXPECTED",
|
||||
"finalPath": "/403",
|
||||
"screenshot": "output/playwright/oafront3-pc-readonly-postdeploy/employee-payment-batches.png",
|
||||
"metrics": {
|
||||
"title": "海音达工作台",
|
||||
"textLength": 56,
|
||||
"headingCount": 1,
|
||||
"tableCount": 0,
|
||||
"uuidCount": 0,
|
||||
"rawStatusTokenCount": 0,
|
||||
"longNumberCount": 0,
|
||||
"rawJsonBlockCount": 0,
|
||||
"englishFound": [],
|
||||
"datePlaceholderCount": 0,
|
||||
"clippedCount": 0,
|
||||
"forbiddenLike": true,
|
||||
"appErrorLike": false,
|
||||
"navPortalCopy": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"role": "manager",
|
||||
"route": "/portal",
|
||||
"label": "主管工作台",
|
||||
"layer": "A",
|
||||
"expectation": "accessible",
|
||||
"status": "PASS",
|
||||
"finalPath": "/portal",
|
||||
"screenshot": "output/playwright/oafront3-pc-readonly-postdeploy/manager-portal.png",
|
||||
"metrics": {
|
||||
"title": "海音达工作台",
|
||||
"textLength": 984,
|
||||
"headingCount": 1,
|
||||
"tableCount": 0,
|
||||
"uuidCount": 0,
|
||||
"rawStatusTokenCount": 0,
|
||||
"longNumberCount": 0,
|
||||
"rawJsonBlockCount": 0,
|
||||
"englishFound": [],
|
||||
"datePlaceholderCount": 0,
|
||||
"clippedCount": 0,
|
||||
"forbiddenLike": false,
|
||||
"appErrorLike": false,
|
||||
"navPortalCopy": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"role": "manager",
|
||||
"route": "/workflow/tasks",
|
||||
"label": "主管审批待办",
|
||||
"layer": "A",
|
||||
"expectation": "accessible",
|
||||
"status": "PASS",
|
||||
"finalPath": "/workflow/tasks",
|
||||
"screenshot": "output/playwright/oafront3-pc-readonly-postdeploy/manager-workflow-tasks.png",
|
||||
"metrics": {
|
||||
"title": "海音达工作台",
|
||||
"textLength": 550,
|
||||
"headingCount": 1,
|
||||
"tableCount": 1,
|
||||
"uuidCount": 0,
|
||||
"rawStatusTokenCount": 0,
|
||||
"longNumberCount": 0,
|
||||
"rawJsonBlockCount": 0,
|
||||
"englishFound": [],
|
||||
"datePlaceholderCount": 0,
|
||||
"clippedCount": 0,
|
||||
"forbiddenLike": false,
|
||||
"appErrorLike": false,
|
||||
"navPortalCopy": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"role": "manager",
|
||||
"route": "/purchase-requests",
|
||||
"label": "主管采购申请",
|
||||
"layer": "B",
|
||||
"expectation": "accessible",
|
||||
"status": "PASS",
|
||||
"finalPath": "/purchase-requests",
|
||||
"screenshot": "output/playwright/oafront3-pc-readonly-postdeploy/manager-purchase-requests.png",
|
||||
"metrics": {
|
||||
"title": "海音达工作台",
|
||||
"textLength": 475,
|
||||
"headingCount": 1,
|
||||
"tableCount": 1,
|
||||
"uuidCount": 0,
|
||||
"rawStatusTokenCount": 0,
|
||||
"longNumberCount": 0,
|
||||
"rawJsonBlockCount": 0,
|
||||
"englishFound": [],
|
||||
"datePlaceholderCount": 0,
|
||||
"clippedCount": 0,
|
||||
"forbiddenLike": false,
|
||||
"appErrorLike": false,
|
||||
"navPortalCopy": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"role": "manager",
|
||||
"route": "/projects",
|
||||
"label": "主管项目列表",
|
||||
"layer": "B",
|
||||
"expectation": "optional",
|
||||
"status": "PASS",
|
||||
"finalPath": "/projects",
|
||||
"screenshot": "output/playwright/oafront3-pc-readonly-postdeploy/manager-projects.png",
|
||||
"metrics": {
|
||||
"title": "海音达工作台",
|
||||
"textLength": 777,
|
||||
"headingCount": 1,
|
||||
"tableCount": 0,
|
||||
"uuidCount": 0,
|
||||
"rawStatusTokenCount": 0,
|
||||
"longNumberCount": 0,
|
||||
"rawJsonBlockCount": 0,
|
||||
"englishFound": [],
|
||||
"datePlaceholderCount": 0,
|
||||
"clippedCount": 0,
|
||||
"forbiddenLike": false,
|
||||
"appErrorLike": false,
|
||||
"navPortalCopy": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"role": "finance",
|
||||
"route": "/portal",
|
||||
"label": "财务工作台",
|
||||
"layer": "A",
|
||||
"expectation": "accessible",
|
||||
"status": "PASS",
|
||||
"finalPath": "/portal",
|
||||
"screenshot": "output/playwright/oafront3-pc-readonly-postdeploy/finance-portal.png",
|
||||
"metrics": {
|
||||
"title": "海音达工作台",
|
||||
"textLength": 1009,
|
||||
"headingCount": 1,
|
||||
"tableCount": 0,
|
||||
"uuidCount": 0,
|
||||
"rawStatusTokenCount": 0,
|
||||
"longNumberCount": 0,
|
||||
"rawJsonBlockCount": 0,
|
||||
"englishFound": [],
|
||||
"datePlaceholderCount": 0,
|
||||
"clippedCount": 0,
|
||||
"forbiddenLike": false,
|
||||
"appErrorLike": false,
|
||||
"navPortalCopy": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"role": "finance",
|
||||
"route": "/invoice-pool",
|
||||
"label": "财务票据中心",
|
||||
"layer": "B",
|
||||
"expectation": "accessible",
|
||||
"status": "PASS",
|
||||
"finalPath": "/invoice-pool",
|
||||
"screenshot": "output/playwright/oafront3-pc-readonly-postdeploy/finance-invoice-pool.png",
|
||||
"metrics": {
|
||||
"title": "海音达工作台",
|
||||
"textLength": 526,
|
||||
"headingCount": 1,
|
||||
"tableCount": 1,
|
||||
"uuidCount": 0,
|
||||
"rawStatusTokenCount": 0,
|
||||
"longNumberCount": 0,
|
||||
"rawJsonBlockCount": 0,
|
||||
"englishFound": [],
|
||||
"datePlaceholderCount": 0,
|
||||
"clippedCount": 0,
|
||||
"forbiddenLike": false,
|
||||
"appErrorLike": false,
|
||||
"navPortalCopy": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"role": "finance",
|
||||
"route": "/payment-batches",
|
||||
"label": "财务付款批次",
|
||||
"layer": "B",
|
||||
"expectation": "accessible",
|
||||
"status": "PASS",
|
||||
"finalPath": "/payment-batches",
|
||||
"screenshot": "output/playwright/oafront3-pc-readonly-postdeploy/finance-payment-batches.png",
|
||||
"metrics": {
|
||||
"title": "海音达工作台",
|
||||
"textLength": 1726,
|
||||
"headingCount": 1,
|
||||
"tableCount": 0,
|
||||
"uuidCount": 0,
|
||||
"rawStatusTokenCount": 0,
|
||||
"longNumberCount": 0,
|
||||
"rawJsonBlockCount": 0,
|
||||
"englishFound": [],
|
||||
"datePlaceholderCount": 0,
|
||||
"clippedCount": 0,
|
||||
"forbiddenLike": false,
|
||||
"appErrorLike": false,
|
||||
"navPortalCopy": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"role": "finance",
|
||||
"route": "/ap-operations",
|
||||
"label": "财务 AP 运营",
|
||||
"layer": "B",
|
||||
"expectation": "accessible",
|
||||
"status": "PASS",
|
||||
"finalPath": "/ap-operations",
|
||||
"screenshot": "output/playwright/oafront3-pc-readonly-postdeploy/finance-ap-operations.png",
|
||||
"metrics": {
|
||||
"title": "海音达工作台",
|
||||
"textLength": 736,
|
||||
"headingCount": 1,
|
||||
"tableCount": 1,
|
||||
"uuidCount": 0,
|
||||
"rawStatusTokenCount": 0,
|
||||
"longNumberCount": 0,
|
||||
"rawJsonBlockCount": 0,
|
||||
"englishFound": [],
|
||||
"datePlaceholderCount": 0,
|
||||
"clippedCount": 0,
|
||||
"forbiddenLike": false,
|
||||
"appErrorLike": false,
|
||||
"navPortalCopy": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"role": "finance",
|
||||
"route": "/reimbursements",
|
||||
"label": "财务报销列表",
|
||||
"layer": "A",
|
||||
"expectation": "accessible",
|
||||
"status": "PASS",
|
||||
"finalPath": "/reimbursements",
|
||||
"screenshot": "output/playwright/oafront3-pc-readonly-postdeploy/finance-reimbursements.png",
|
||||
"metrics": {
|
||||
"title": "海音达工作台",
|
||||
"textLength": 453,
|
||||
"headingCount": 1,
|
||||
"tableCount": 1,
|
||||
"uuidCount": 0,
|
||||
"rawStatusTokenCount": 0,
|
||||
"longNumberCount": 0,
|
||||
"rawJsonBlockCount": 0,
|
||||
"englishFound": [],
|
||||
"datePlaceholderCount": 0,
|
||||
"clippedCount": 0,
|
||||
"forbiddenLike": false,
|
||||
"appErrorLike": false,
|
||||
"navPortalCopy": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"role": "finance_mgr",
|
||||
"route": "/portal",
|
||||
"label": "财务负责人工作台",
|
||||
"layer": "A",
|
||||
"expectation": "accessible",
|
||||
"status": "PASS",
|
||||
"finalPath": "/portal",
|
||||
"screenshot": "output/playwright/oafront3-pc-readonly-postdeploy/finance_mgr-portal.png",
|
||||
"metrics": {
|
||||
"title": "海音达工作台",
|
||||
"textLength": 1111,
|
||||
"headingCount": 1,
|
||||
"tableCount": 0,
|
||||
"uuidCount": 0,
|
||||
"rawStatusTokenCount": 0,
|
||||
"longNumberCount": 0,
|
||||
"rawJsonBlockCount": 0,
|
||||
"englishFound": [],
|
||||
"datePlaceholderCount": 0,
|
||||
"clippedCount": 0,
|
||||
"forbiddenLike": false,
|
||||
"appErrorLike": false,
|
||||
"navPortalCopy": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"role": "finance_mgr",
|
||||
"route": "/workflow/tasks",
|
||||
"label": "财务负责人审批待办",
|
||||
"layer": "A",
|
||||
"expectation": "accessible",
|
||||
"status": "PASS",
|
||||
"finalPath": "/workflow/tasks",
|
||||
"screenshot": "output/playwright/oafront3-pc-readonly-postdeploy/finance_mgr-workflow-tasks.png",
|
||||
"metrics": {
|
||||
"title": "海音达工作台",
|
||||
"textLength": 839,
|
||||
"headingCount": 1,
|
||||
"tableCount": 1,
|
||||
"uuidCount": 0,
|
||||
"rawStatusTokenCount": 0,
|
||||
"longNumberCount": 0,
|
||||
"rawJsonBlockCount": 0,
|
||||
"englishFound": [],
|
||||
"datePlaceholderCount": 0,
|
||||
"clippedCount": 0,
|
||||
"forbiddenLike": false,
|
||||
"appErrorLike": false,
|
||||
"navPortalCopy": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"role": "finance_mgr",
|
||||
"route": "/payment-batches",
|
||||
"label": "财务负责人付款批次",
|
||||
"layer": "B",
|
||||
"expectation": "accessible",
|
||||
"status": "PASS",
|
||||
"finalPath": "/payment-batches",
|
||||
"screenshot": "output/playwright/oafront3-pc-readonly-postdeploy/finance_mgr-payment-batches.png",
|
||||
"metrics": {
|
||||
"title": "海音达工作台",
|
||||
"textLength": 1792,
|
||||
"headingCount": 1,
|
||||
"tableCount": 0,
|
||||
"uuidCount": 0,
|
||||
"rawStatusTokenCount": 0,
|
||||
"longNumberCount": 0,
|
||||
"rawJsonBlockCount": 0,
|
||||
"englishFound": [],
|
||||
"datePlaceholderCount": 0,
|
||||
"clippedCount": 0,
|
||||
"forbiddenLike": false,
|
||||
"appErrorLike": false,
|
||||
"navPortalCopy": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"role": "finance_mgr",
|
||||
"route": "/ap-operations",
|
||||
"label": "财务负责人 AP 运营",
|
||||
"layer": "B",
|
||||
"expectation": "accessible",
|
||||
"status": "PASS",
|
||||
"finalPath": "/ap-operations",
|
||||
"screenshot": "output/playwright/oafront3-pc-readonly-postdeploy/finance_mgr-ap-operations.png",
|
||||
"metrics": {
|
||||
"title": "海音达工作台",
|
||||
"textLength": 809,
|
||||
"headingCount": 1,
|
||||
"tableCount": 1,
|
||||
"uuidCount": 0,
|
||||
"rawStatusTokenCount": 0,
|
||||
"longNumberCount": 0,
|
||||
"rawJsonBlockCount": 0,
|
||||
"englishFound": [],
|
||||
"datePlaceholderCount": 0,
|
||||
"clippedCount": 0,
|
||||
"forbiddenLike": false,
|
||||
"appErrorLike": false,
|
||||
"navPortalCopy": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"role": "finance_mgr",
|
||||
"route": "/audit-logs",
|
||||
"label": "财务负责人审计日志",
|
||||
"layer": "C",
|
||||
"expectation": "accessible",
|
||||
"status": "PASS",
|
||||
"finalPath": "/audit-logs",
|
||||
"screenshot": "output/playwright/oafront3-pc-readonly-postdeploy/finance_mgr-audit-logs.png",
|
||||
"metrics": {
|
||||
"title": "海音达工作台",
|
||||
"textLength": 3519,
|
||||
"headingCount": 1,
|
||||
"tableCount": 1,
|
||||
"uuidCount": 40,
|
||||
"rawStatusTokenCount": 0,
|
||||
"longNumberCount": 0,
|
||||
"rawJsonBlockCount": 0,
|
||||
"englishFound": [],
|
||||
"datePlaceholderCount": 0,
|
||||
"clippedCount": 0,
|
||||
"forbiddenLike": false,
|
||||
"appErrorLike": false,
|
||||
"navPortalCopy": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"role": "admin",
|
||||
"route": "/portal",
|
||||
"label": "管理员工作台",
|
||||
"layer": "A",
|
||||
"expectation": "accessible",
|
||||
"status": "PASS",
|
||||
"finalPath": "/portal",
|
||||
"screenshot": "output/playwright/oafront3-pc-readonly-postdeploy/admin-portal.png",
|
||||
"metrics": {
|
||||
"title": "海音达工作台",
|
||||
"textLength": 896,
|
||||
"headingCount": 1,
|
||||
"tableCount": 0,
|
||||
"uuidCount": 0,
|
||||
"rawStatusTokenCount": 0,
|
||||
"longNumberCount": 0,
|
||||
"rawJsonBlockCount": 0,
|
||||
"englishFound": [],
|
||||
"datePlaceholderCount": 0,
|
||||
"clippedCount": 0,
|
||||
"forbiddenLike": false,
|
||||
"appErrorLike": false,
|
||||
"navPortalCopy": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"role": "admin",
|
||||
"route": "/assets",
|
||||
"label": "管理员资产台账",
|
||||
"layer": "B",
|
||||
"expectation": "accessible",
|
||||
"status": "PASS",
|
||||
"finalPath": "/assets",
|
||||
"screenshot": "output/playwright/oafront3-pc-readonly-postdeploy/admin-assets.png",
|
||||
"metrics": {
|
||||
"title": "海音达工作台",
|
||||
"textLength": 3586,
|
||||
"headingCount": 1,
|
||||
"tableCount": 2,
|
||||
"uuidCount": 0,
|
||||
"rawStatusTokenCount": 0,
|
||||
"longNumberCount": 0,
|
||||
"rawJsonBlockCount": 0,
|
||||
"englishFound": [],
|
||||
"datePlaceholderCount": 0,
|
||||
"clippedCount": 0,
|
||||
"forbiddenLike": false,
|
||||
"appErrorLike": false,
|
||||
"navPortalCopy": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"role": "admin",
|
||||
"route": "/contracts-registry",
|
||||
"label": "管理员合同台账",
|
||||
"layer": "B",
|
||||
"expectation": "accessible",
|
||||
"status": "PASS",
|
||||
"finalPath": "/contracts-registry",
|
||||
"screenshot": "output/playwright/oafront3-pc-readonly-postdeploy/admin-contracts-registry.png",
|
||||
"metrics": {
|
||||
"title": "海音达工作台",
|
||||
"textLength": 1612,
|
||||
"headingCount": 1,
|
||||
"tableCount": 0,
|
||||
"uuidCount": 0,
|
||||
"rawStatusTokenCount": 0,
|
||||
"longNumberCount": 0,
|
||||
"rawJsonBlockCount": 0,
|
||||
"englishFound": [],
|
||||
"datePlaceholderCount": 0,
|
||||
"clippedCount": 0,
|
||||
"forbiddenLike": false,
|
||||
"appErrorLike": false,
|
||||
"navPortalCopy": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"role": "admin",
|
||||
"route": "/system/workspace",
|
||||
"label": "管理员工作区设置",
|
||||
"layer": "C",
|
||||
"expectation": "accessible",
|
||||
"status": "PASS",
|
||||
"finalPath": "/system/workspace",
|
||||
"screenshot": "output/playwright/oafront3-pc-readonly-postdeploy/admin-system-workspace.png",
|
||||
"metrics": {
|
||||
"title": "海音达工作台",
|
||||
"textLength": 1718,
|
||||
"headingCount": 1,
|
||||
"tableCount": 1,
|
||||
"uuidCount": 0,
|
||||
"rawStatusTokenCount": 0,
|
||||
"longNumberCount": 0,
|
||||
"rawJsonBlockCount": 0,
|
||||
"englishFound": [],
|
||||
"datePlaceholderCount": 0,
|
||||
"clippedCount": 0,
|
||||
"forbiddenLike": false,
|
||||
"appErrorLike": false,
|
||||
"navPortalCopy": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"role": "admin",
|
||||
"route": "/system/approval-rules",
|
||||
"label": "管理员审批规则",
|
||||
"layer": "C",
|
||||
"expectation": "accessible",
|
||||
"status": "PASS",
|
||||
"finalPath": "/system/approval-rules",
|
||||
"screenshot": "output/playwright/oafront3-pc-readonly-postdeploy/admin-system-approval-rules.png",
|
||||
"metrics": {
|
||||
"title": "海音达工作台",
|
||||
"textLength": 983,
|
||||
"headingCount": 1,
|
||||
"tableCount": 1,
|
||||
"uuidCount": 3,
|
||||
"rawStatusTokenCount": 0,
|
||||
"longNumberCount": 0,
|
||||
"rawJsonBlockCount": 0,
|
||||
"englishFound": [],
|
||||
"datePlaceholderCount": 0,
|
||||
"clippedCount": 0,
|
||||
"forbiddenLike": false,
|
||||
"appErrorLike": false,
|
||||
"navPortalCopy": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"role": "admin",
|
||||
"route": "/system/feature-flags",
|
||||
"label": "管理员功能开关",
|
||||
"layer": "C",
|
||||
"expectation": "accessible",
|
||||
"status": "PASS",
|
||||
"finalPath": "/system/feature-flags",
|
||||
"screenshot": "output/playwright/oafront3-pc-readonly-postdeploy/admin-system-feature-flags.png",
|
||||
"metrics": {
|
||||
"title": "海音达工作台",
|
||||
"textLength": 4638,
|
||||
"headingCount": 1,
|
||||
"tableCount": 1,
|
||||
"uuidCount": 0,
|
||||
"rawStatusTokenCount": 0,
|
||||
"longNumberCount": 0,
|
||||
"rawJsonBlockCount": 0,
|
||||
"englishFound": [],
|
||||
"datePlaceholderCount": 0,
|
||||
"clippedCount": 0,
|
||||
"forbiddenLike": false,
|
||||
"appErrorLike": false,
|
||||
"navPortalCopy": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"role": "ceo",
|
||||
"route": "/portal",
|
||||
"label": "负责人工作台",
|
||||
"layer": "A",
|
||||
"expectation": "accessible",
|
||||
"status": "PASS",
|
||||
"finalPath": "/portal",
|
||||
"screenshot": "output/playwright/oafront3-pc-readonly-postdeploy/ceo-portal.png",
|
||||
"metrics": {
|
||||
"title": "海音达工作台",
|
||||
"textLength": 928,
|
||||
"headingCount": 1,
|
||||
"tableCount": 0,
|
||||
"uuidCount": 0,
|
||||
"rawStatusTokenCount": 0,
|
||||
"longNumberCount": 0,
|
||||
"rawJsonBlockCount": 0,
|
||||
"englishFound": [],
|
||||
"datePlaceholderCount": 0,
|
||||
"clippedCount": 0,
|
||||
"forbiddenLike": false,
|
||||
"appErrorLike": false,
|
||||
"navPortalCopy": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"role": "ceo",
|
||||
"route": "/workflow/tasks",
|
||||
"label": "负责人审批待办",
|
||||
"layer": "A",
|
||||
"expectation": "accessible",
|
||||
"status": "PASS",
|
||||
"finalPath": "/workflow/tasks",
|
||||
"screenshot": "output/playwright/oafront3-pc-readonly-postdeploy/ceo-workflow-tasks.png",
|
||||
"metrics": {
|
||||
"title": "海音达工作台",
|
||||
"textLength": 465,
|
||||
"headingCount": 1,
|
||||
"tableCount": 1,
|
||||
"uuidCount": 0,
|
||||
"rawStatusTokenCount": 0,
|
||||
"longNumberCount": 0,
|
||||
"rawJsonBlockCount": 0,
|
||||
"englishFound": [],
|
||||
"datePlaceholderCount": 0,
|
||||
"clippedCount": 0,
|
||||
"forbiddenLike": false,
|
||||
"appErrorLike": false,
|
||||
"navPortalCopy": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"role": "ceo",
|
||||
"route": "/budgets",
|
||||
"label": "负责人预算视图",
|
||||
"layer": "B",
|
||||
"expectation": "optional",
|
||||
"status": "PASS",
|
||||
"finalPath": "/budgets",
|
||||
"screenshot": "output/playwright/oafront3-pc-readonly-postdeploy/ceo-budgets.png",
|
||||
"metrics": {
|
||||
"title": "海音达工作台",
|
||||
"textLength": 493,
|
||||
"headingCount": 1,
|
||||
"tableCount": 1,
|
||||
"uuidCount": 0,
|
||||
"rawStatusTokenCount": 0,
|
||||
"longNumberCount": 0,
|
||||
"rawJsonBlockCount": 0,
|
||||
"englishFound": [],
|
||||
"datePlaceholderCount": 0,
|
||||
"clippedCount": 0,
|
||||
"forbiddenLike": false,
|
||||
"appErrorLike": false,
|
||||
"navPortalCopy": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"role": "hr",
|
||||
"route": "/portal",
|
||||
"label": "HR 工作台",
|
||||
"layer": "A",
|
||||
"expectation": "accessible",
|
||||
"status": "PASS",
|
||||
"finalPath": "/portal",
|
||||
"screenshot": "output/playwright/oafront3-pc-readonly-postdeploy/hr-portal.png",
|
||||
"metrics": {
|
||||
"title": "海音达工作台",
|
||||
"textLength": 926,
|
||||
"headingCount": 1,
|
||||
"tableCount": 0,
|
||||
"uuidCount": 0,
|
||||
"rawStatusTokenCount": 0,
|
||||
"longNumberCount": 0,
|
||||
"rawJsonBlockCount": 0,
|
||||
"englishFound": [],
|
||||
"datePlaceholderCount": 0,
|
||||
"clippedCount": 0,
|
||||
"forbiddenLike": false,
|
||||
"appErrorLike": false,
|
||||
"navPortalCopy": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"role": "hr",
|
||||
"route": "/people",
|
||||
"label": "HR 人员管理",
|
||||
"layer": "C",
|
||||
"expectation": "accessible",
|
||||
"status": "PASS",
|
||||
"finalPath": "/people",
|
||||
"screenshot": "output/playwright/oafront3-pc-readonly-postdeploy/hr-people.png",
|
||||
"metrics": {
|
||||
"title": "海音达工作台",
|
||||
"textLength": 2822,
|
||||
"headingCount": 2,
|
||||
"tableCount": 1,
|
||||
"uuidCount": 0,
|
||||
"rawStatusTokenCount": 0,
|
||||
"longNumberCount": 5,
|
||||
"rawJsonBlockCount": 0,
|
||||
"englishFound": [
|
||||
"Employee",
|
||||
"Admin"
|
||||
],
|
||||
"datePlaceholderCount": 0,
|
||||
"clippedCount": 0,
|
||||
"forbiddenLike": false,
|
||||
"appErrorLike": false,
|
||||
"navPortalCopy": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"role": "hr",
|
||||
"route": "/wecom-approval-archive",
|
||||
"label": "HR 企微归档",
|
||||
"layer": "B",
|
||||
"expectation": "accessible",
|
||||
"status": "PASS",
|
||||
"finalPath": "/wecom-approval-archive",
|
||||
"screenshot": "output/playwright/oafront3-pc-readonly-postdeploy/hr-wecom-approval-archive.png",
|
||||
"metrics": {
|
||||
"title": "海音达工作台",
|
||||
"textLength": 728,
|
||||
"headingCount": 1,
|
||||
"tableCount": 0,
|
||||
"uuidCount": 0,
|
||||
"rawStatusTokenCount": 0,
|
||||
"longNumberCount": 0,
|
||||
"rawJsonBlockCount": 0,
|
||||
"englishFound": [],
|
||||
"datePlaceholderCount": 0,
|
||||
"clippedCount": 0,
|
||||
"forbiddenLike": false,
|
||||
"appErrorLike": false,
|
||||
"navPortalCopy": false
|
||||
}
|
||||
}
|
||||
],
|
||||
"findingCount": 0,
|
||||
"findings": [],
|
||||
"boundaries": {
|
||||
"noBusinessWrites": true,
|
||||
"noFileUploads": true,
|
||||
"noFormSubmits": true,
|
||||
"noExports": true,
|
||||
"noWeComWrites": true,
|
||||
"noRealPaymentExecution": true
|
||||
},
|
||||
"privacy": "no password/token/secret/full email/full phone/full local sensitive path/raw invoice/contract body/bank receipt/raw payload in JSON report"
|
||||
}
|
||||
+2285
文件差异内容过多而无法显示
加载差异
+28
@@ -0,0 +1,28 @@
|
||||
# OA 权限矩阵脱敏自动验证报告
|
||||
|
||||
生成时间:2026-05-26T09:46:58.583Z
|
||||
结论:PASS_PERMISSION_MATRIX_READY
|
||||
|
||||
## 统计
|
||||
|
||||
- 角色数:7
|
||||
- 正向探针:43
|
||||
- 负向探针:42
|
||||
- 问题数:0
|
||||
|
||||
## 角色结果
|
||||
|
||||
| 角色 | 登录 | 角色匹配 | 探针通过/总数 |
|
||||
| --- | --- | --- | ---: |
|
||||
| employee | PASS | PASS | 17/17 |
|
||||
| manager | PASS | PASS | 13/13 |
|
||||
| finance | PASS | PASS | 14/14 |
|
||||
| finance_mgr | PASS | PASS | 10/10 |
|
||||
| hr | PASS | PASS | 11/11 |
|
||||
| ceo | PASS | PASS | 9/9 |
|
||||
| admin | PASS | PASS | 11/11 |
|
||||
|
||||
## 说明
|
||||
|
||||
- 本报告只输出角色、HTTP 状态、脱敏账号和摘要计数,不输出密码、token、Secret、完整账号、合同正文、票据内容或原始 payload。
|
||||
- 409 表示功能门禁关闭且未泄露数据;对财务/AP/付款等冻结或受控功能可作为可解释拒绝。
|
||||
+43
@@ -0,0 +1,43 @@
|
||||
# Postdeploy Public Verification Summary
|
||||
|
||||
## Conclusion
|
||||
|
||||
`READY_FOR_TRIAL_START_CONFIRMATION`
|
||||
|
||||
The public trial environment has been deployed from commit `d829e44` with
|
||||
`SYNC_ENV=0`. The deployment did not overwrite the remote `.env`. Public
|
||||
post-deploy checks passed, and the latest PC frontend cleanup is now covered by
|
||||
public visual and smoke evidence.
|
||||
|
||||
## Checks
|
||||
|
||||
| Check | Status | Evidence |
|
||||
| --- | --- | --- |
|
||||
| Pre-deploy client build | PASS | command output in session |
|
||||
| UI design rules | PASS | `check-ui-design-rules --strict`, 0 findings |
|
||||
| Deploy script | PASS | `SYNC_ENV=0 bash deploy/trialrun/deploy.sh` |
|
||||
| Deploy live smoke | PASS | deploy script live smoke, 3 passed |
|
||||
| Public bundle copy scan | PASS | deploy script scanned 92 resources, 0 findings |
|
||||
| Live smoke readiness | PASS | `research/postdeploy-live-smoke-readiness/summary.json` |
|
||||
| Permission matrix | PASS | `research/postdeploy-permission-matrix/summary.json` |
|
||||
| PC readonly visual matrix | PASS | `research/postdeploy-oafront3-pc-readonly/summary.json` |
|
||||
| Mobile entry matrix | PASS | `research/postdeploy-mobile-entry-matrix/output.log` |
|
||||
| WeCom rendering matrix | PASS | `research/postdeploy-wecom-rendering-matrix/output.log` |
|
||||
|
||||
## Notes
|
||||
|
||||
- Live OCR sample ended in a duplicate/same-invoice terminal category and the
|
||||
Playwright check passed; this is a known acceptable live sample outcome.
|
||||
- Pending OCR helper scan was `SKIP` because local `DATABASE_URL` was not loaded
|
||||
for that helper. This did not block readiness because live smoke and live OCR
|
||||
checks passed.
|
||||
- During rsync, deployment printed a non-blocking cleanup warning for an old
|
||||
remote `artifacts/` directory. The deployment script continued and completed
|
||||
all runtime checks.
|
||||
|
||||
## Boundaries
|
||||
|
||||
- No real business write automation was executed.
|
||||
- No Enterprise WeChat write was executed.
|
||||
- No payment, bank import, ERP write, database reset, restore, or remote `.env`
|
||||
overwrite was executed.
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
|
||||
Running 8 tests using 1 worker
|
||||
|
||||
(node:1648689) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.
|
||||
(Use `node --trace-warnings ...` to show where the warning was created)
|
||||
(node:1648689) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.
|
||||
(Use `node --trace-warnings ...` to show where the warning was created)
|
||||
✓ 1 tests/e2e/r6-wecom-mobile-rendering-hardening.spec.ts:572:7 › WCM6 企业微信多手机移动渲染稳定化 › 320 iPhone 企业微信 › 核心移动入口使用 SVG 图标且跨视口不挤压 (7.2s)
|
||||
✓ 2 tests/e2e/r6-wecom-mobile-rendering-hardening.spec.ts:572:7 › WCM6 企业微信多手机移动渲染稳定化 › 360 Android 企业微信 › 核心移动入口使用 SVG 图标且跨视口不挤压 (7.4s)
|
||||
✓ 3 tests/e2e/r6-wecom-mobile-rendering-hardening.spec.ts:572:7 › WCM6 企业微信多手机移动渲染稳定化 › 375 iPhone 企业微信 › 核心移动入口使用 SVG 图标且跨视口不挤压 (7.6s)
|
||||
✓ 4 tests/e2e/r6-wecom-mobile-rendering-hardening.spec.ts:572:7 › WCM6 企业微信多手机移动渲染稳定化 › 390 iPhone12 企业微信 › 核心移动入口使用 SVG 图标且跨视口不挤压 (7.6s)
|
||||
✓ 5 tests/e2e/r6-wecom-mobile-rendering-hardening.spec.ts:572:7 › WCM6 企业微信多手机移动渲染稳定化 › 393 Android 企业微信 › 核心移动入口使用 SVG 图标且跨视口不挤压 (7.1s)
|
||||
✓ 6 tests/e2e/r6-wecom-mobile-rendering-hardening.spec.ts:572:7 › WCM6 企业微信多手机移动渲染稳定化 › 414 iPhone 企业微信 › 核心移动入口使用 SVG 图标且跨视口不挤压 (7.4s)
|
||||
✓ 7 tests/e2e/r6-wecom-mobile-rendering-hardening.spec.ts:572:7 › WCM6 企业微信多手机移动渲染稳定化 › 430 iPhone 企业微信 › 核心移动入口使用 SVG 图标且跨视口不挤压 (7.1s)
|
||||
✓ 8 tests/e2e/r6-wecom-mobile-rendering-hardening.spec.ts:588:5 › WCM6 企业微信多手机移动渲染稳定化 › 390 iPhone12 企业微信 字体失败 › Material Symbols 字体失败时核心移动入口仍稳定 (7.1s)
|
||||
|
||||
8 passed (1.0m)
|
||||
在新工单中引用
屏蔽一个用户