Skip to content

fix(e2e): TC-E2E-126 偶发拿到真实引擎译文 → 首装按界面语言写目标语言与种子设置交错,种子被整份覆盖回默认引擎;夹具等首装落定再交出 service worker,DeepL 替身改走能扛住 SW 重启的描述符(#723) - #765

Merged
Teeeeeeeerry merged 2 commits into
mainfrom
fix/723-e2e-seed-and-deepl-stub
Oct 7, 2026

Conversation

@Teeeeeeeerry

Copy link
Copy Markdown
Owner

问题

TC-E2E-126 偶发失败:期望框里写回 [DL:JA] 你好世界,实际是 Hello World。上一批起已经连着三批在 CI 上出现,重跑即过。

根因

票面推测的是“SW 里直接改写 self.fetch 的 DeepL 替身扛不住 SW 重启”。查了 PR #722 那次失败的 trace,真正的原因不是这个:

  • 失败那次整页翻译发出去的是 translate.googleapis.com/...&tl=en —— 种子里的 enginePriority: ['deepl'] 和目标语言 zh-CN 都没生效,设置回到了默认值。
  • 首装时 background 按界面语言推导目标语言,不是 zh-CN 就 patchSettings({ to })(365-60 E2E 首装按界面语言改写目标语言,覆盖种子设置导致随机失败(父 #365) #469)。夹具用 locale: 'zh-CN' 想让推导结果是 zh-CN,但 Playwright 的 locale 是挂上 worker 之后才覆盖界面语言的:CI 的 Linux 上真实界面是 en-US,首装处理经常赶在覆盖之前,推导出 en。
  • 这次写入在 worker 起来后一两百毫秒落盘,先读后写。与 seedSettings 交错时合并基底是空存储,种子被整份写回默认值。本地强制 en-US 实测:改前 6 次里 4 次在夹具交出 worker 之后才落盘。
  • SW 重启确实会让旧替身失效,但失效时 DeepL 用假 key 失败,框里保持原文,拿不回 Hello World。只启用 DeepL 时路由器不会去别的引擎:拿到 Google 的真实译文,是因为种子被覆盖后启用的本来就是 Google。

修复

验证

  • TC-E2E-126 --repeat-each 20 --retries 0:默认配置 20/20 通过;夹具强制 en-US 界面再跑 20/20 通过。
  • 强制 en-US 时探针检查夹具交出 worker 那一刻与 1.5 秒后的目标语言:改后 20/20 一致;改前 6 次里 4 次在交出之后被改写。
  • 模拟 SW 实例被替换(删掉 SW 上被改写的 fetch):新替身照常出译文;旧写法框里停在原文。
  • 故意把种子换成 google-web:报错是“整页翻译没有经过 DeepL 替身……”,收到的是 【译】Write a reply。
  • e2e-mock 单测新增 DeepL 替身与 SW 替换后自愈两条,先红后绿;pnpm test 1442 条全过,pnpm typecheck 通过,pnpm test:e2e:core 100 过 2 跳过。

Closes #723

Teeeeeeeerry and others added 2 commits October 7, 2026 22:04
…等首装落定再交出 service worker,DeepL 替身改走能扛住 SW 重启的描述符(#723)

CI 失败那次的网络 trace 里整页翻译发的是 translate.googleapis.com、tl=en:
种子里的 enginePriority: ['deepl'] 与目标语言都没生效。Playwright 的 locale
是挂上 worker 之后才覆盖界面语言的,首装处理可能先看到真实的 en-US,
patchSettings 先读后写,与 seedSettings 交错时把种子整份写回默认值。

- background 暴露首装处理落定的信号,夹具等它之后才把 worker 交给用例
- DeepL 替身并入 e2e-mock 描述符,新增 mockDeepl 夹具,SW 重启后自愈
- TC-E2E-126 先认替身的译文前缀,没经过替身时报错直接指向替身或种子设置

Co-Authored-By: zhexuancai-uts <261878103+zhexuancai-uts@users.noreply.github.com>
Co-Authored-By: zhexuancai-uts <261878103+zhexuancai-uts@users.noreply.github.com>
@Teeeeeeeerry
Teeeeeeeerry merged commit b7d3c4e into main Oct 7, 2026
6 checks passed
@Teeeeeeeerry
Teeeeeeeerry deleted the fix/723-e2e-seed-and-deepl-stub branch October 7, 2026 11:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

TC-E2E-126 偶发拿到真实引擎译文:SW 里直接改写的 DeepL fetch 替身扛不住 service worker 重启

1 participant