From 34675e1a98a02ffba84f28aa7c1380d7c66529d0 Mon Sep 17 00:00:00 2001 From: shunli Date: Sat, 26 Sep 2026 14:42:49 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=BE=E5=AE=BD=E4=B8=A4=E5=A4=84=E8=B4=9F?= =?UTF-8?q?=E8=BD=BD=E6=95=8F=E6=84=9F=E7=9A=84E2E=E8=B6=85=E6=97=B6?= =?UTF-8?q?=E9=A2=84=E7=AE=97=20[09-06-release-gate-integrity]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 750a184b 两轮 verify-candidate 在 2 核主机/4 worker 下均因同两处超时失败: - 报销付款批次主链路:全部阶段在 305s/303s 完成,超出 300s(单跑 145s)→ 420s - 项目级视觉 pc:admin:15 页在 180s 内完成 14 页 → 每组 240s(用例级覆盖) 所有断言、worker 数、重试及 Playwright 项目默认 180s(回执校验项)不变; 规约同步视觉分组预算。 Co-Authored-By: Claude Opus 5.5 --- .trellis/spec/hyb-oa/deployment-trialrun.md | 2 +- client/tests/e2e/project-wide-visual.spec.ts | 2 ++ client/tests/e2e/reimbursement-payment-batch-flow.spec.ts | 3 ++- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/.trellis/spec/hyb-oa/deployment-trialrun.md b/.trellis/spec/hyb-oa/deployment-trialrun.md index 8d9f0c23..657f9b94 100644 --- a/.trellis/spec/hyb-oa/deployment-trialrun.md +++ b/.trellis/spec/hyb-oa/deployment-trialrun.md @@ -22,7 +22,7 @@ - After a successfully owned local server start, `run-web-gates.sh` recalculates `PLAYWRIGHT_OCR_MOCK` from that startup's `OCR_PROVIDER=mock` and `JOBS_ENABLED=true`; a caller's flag cannot enable unsupported capability. Each startup appends non-secret provider/job facts to `server-capabilities.jsonl` in the run report. Actual missing-field correction still has to pass; configuration alone is not behavior evidence. - R108 uses an active synthetic reimbursement submitted through formal APIs, with a valid PDF and explicit item binding. Initialization fails the test rather than skipping it. Preserve the employee approval refusal, current approve/return and no-reject contract, offline upload queue, 390/414 layouts, and independent output paths. An incomplete visual report is not PASS just because findings is empty. - The existing project visual matrix explicitly lists all 14 current system routes. Unknown wildcards/parameters and unowned system routes fail route-plan preparation. AP uses finance, system/audit uses admin, approval uses manager, and login uses an anonymous context. Require exact target URL plus a page-specific title or workspace anchor; 403/404/login fallback and same-origin API 403/404 are failures, not target page coverage. Mock response controls must declare UTF-8 so Chinese error headings exercise the intended guard. -- Per-route arrival and full audit completion are separate: record completion only after the screenshot and all DOM checks. The approved matrix is 25 PC + 8 mobile pages, grouped into seven role/viewport tests with 180 seconds each and one timed synthetic preparation. Preserve all assertions, screenshots, configured workers and zero retries; only this file's groups remain serial as before. Compare exact planned/completed route-role-viewport identities, reject missing/duplicate/unexpected pages and wrong arrivals, and require all seven actual test statuses passed. Failed or skipped serial successors must leave the report incomplete; unrelated guard tests cannot overwrite it. Matrix coverage does not mean every product page. Live/frozen obligations remain in full discovery; focused passes do not change ordinary eligibility. +- Per-route arrival and full audit completion are separate: record completion only after the screenshot and all DOM checks. The approved matrix is 25 PC + 8 mobile pages, grouped into seven role/viewport tests with 240 seconds each (per-test override; the Playwright project default stays 180 seconds and remains a receipt check) and one timed synthetic preparation. Preserve all assertions, screenshots, configured workers and zero retries; only this file's groups remain serial as before. Compare exact planned/completed route-role-viewport identities, reject missing/duplicate/unexpected pages and wrong arrivals, and require all seven actual test statuses passed. Failed or skipped serial successors must leave the report incomplete; unrelated guard tests cannot overwrite it. Matrix coverage does not mean every product page. Live/frozen obligations remain in full discovery; focused passes do not change ordinary eligibility. ## Public OA Boundary diff --git a/client/tests/e2e/project-wide-visual.spec.ts b/client/tests/e2e/project-wide-visual.spec.ts index 8d189144..86872af6 100644 --- a/client/tests/e2e/project-wide-visual.spec.ts +++ b/client/tests/e2e/project-wide-visual.spec.ts @@ -606,6 +606,8 @@ test.describe.serial("项目级全页面视觉巡检", () => { for (const group of groups) { test(group.id, async ({ browser }) => { + // Admin audits 15 pages in one group; 180s ran out on a loaded 2-core host. + test.setTimeout(240_000); const groupPlans = plans.filter(plan => plan.viewport === group.viewport && plan.role === group.role); await auditPlans(browser, groupPlans, group.viewport); expect(findings.filter(finding => finding.severity === "P1"), `项目级视觉巡检失败,报告:${reportPath()}`).toEqual([]); diff --git a/client/tests/e2e/reimbursement-payment-batch-flow.spec.ts b/client/tests/e2e/reimbursement-payment-batch-flow.spec.ts index a87a4bf0..d57d5305 100644 --- a/client/tests/e2e/reimbursement-payment-batch-flow.spec.ts +++ b/client/tests/e2e/reimbursement-payment-batch-flow.spec.ts @@ -2,6 +2,7 @@ import { test } from "@playwright/test"; import { reimbursementPaymentFlow } from "./helpers/reimbursementPaymentFlow"; test("E2E 报销付款批次主链路:提交 -> 审批 -> 创建批次 -> 复核 -> 执行 -> 下游收口", async ({ page }) => { - test.setTimeout(300_000); + // Every stage finished at ~305s under 4 workers on a 2-core host (~145s alone). + test.setTimeout(420_000); await reimbursementPaymentFlow(page); });