修正PWA升级验收跨导航等待(09-06-release-gate-integrity / 09-17-company-loan-principal-repayment)

N3 第二轮候选 18315d11:浏览器 371 通过、1 失败;报销付款主链路通过。
PWA 自动导航会销毁旧执行环境,原 expect.poll 回调直接 page.evaluate 因此提前抛错。
改为当前 html 的版本属性断言,保持 45 秒期限、同会话 A/B 联合见证及全部否定断言。
受管定向 1 项通过,无失败、跳过或重试,环境及清理通过;任务/治理检查通过。
应用、资金规则、迁移、门禁范围和并发/重试配置未改。两个失败回执完整保留。
第三轮完整候选验证以新回执为准;独立代码复核及真实还款待验。
仅本地提交,不推送、不部署,不访问生产或真实 OCR。
这个提交包含在:
2026-10-09 08:24:15 +08:00
父节点 18315d1183
当前提交 98bab39798
共修改 7 个文件,包含 45 行新增和 4 行删除
@@ -612,7 +612,8 @@ test("production PWA 在同 profile 中从旧 build 自动收敛到新 build", a
let workerB: ServiceWorkerSnapshot | null = null;
try {
await pageB.goto(`${origin}/portal`, { waitUntil: "domcontentloaded" });
await expect.poll(() => documentBuildSha(pageB), { timeout: 45_000 }).toBe(BUILD_B_SHA);
// The application may replace the document while applying the new worker.
await expect(pageB.locator("html")).toHaveAttribute("data-build-sha", BUILD_B_SHA, { timeout: 45_000 });
await expect(pageB).toHaveURL(`${origin}/portal`);
await expect.poll(() => controllerPath(pageB)).toBe("/sw.js");
await expect.poll(() => requestCount("B", "/api/auth/refresh")).toBeGreaterThan(0);