deepseek-harness/apps/web/tests
creatixchu cb754a0319 feat(locale): derive the initial Settings language from the browser
A first visit resolved to Chinese regardless of the browser: LocaleService
read `dsh.locale` and fell straight back to `zh` when nothing was stored,
ignoring the languages the browser already states it reads.

The initial locale now resolves through three ordered sources — the persisted
preference, then `navigator` (first entry of the ordered language list whose
primary subtag names a shipped locale, so `zh-Hans-CN` -> zh and `en-GB` ->
en), then `FALLBACK_LOCALE`. An explicit choice still wins and nothing writes
the detected locale back to storage, so "has the user chosen?" stays a
question only the stored value answers.

Specs asserting the shipped Chinese copy now state the browser they assume:
the web e2e scenarios open their page with `locale: ZH_BROWSER_LOCALE`, and
package specs pin it through the new `pinBrowserLanguages` test helper.
`settings-chrome.e2e.ts` gains an English-browser scenario as the
assembled-app proof.
2026-07-31 15:26:46 +08:00
..
snapshots Merge pull request #1039 from deepseek-harness/worktree/composer-scroll-sync 2026-07-31 14:48:41 +08:00
access-confirmation.e2e.ts feat(locale): derive the initial Settings language from the browser 2026-07-31 15:26:46 +08:00
approval-composer.e2e.ts fix: docs/static 2026-07-31 02:13:53 +08:00
built-boot.snapshot.ts Merge remote-tracking branch 'origin/master' into feat/web-diff-card 2026-07-31 11:56:28 +08:00
code-mode-round.e2e.ts Merge branch 'master' into codex/details-default-closed 2026-07-30 14:50:50 +08:00
composer-draft-scroll.e2e.ts fix(web): assert the wrap-width premise instead of reserving a gutter 2026-07-31 13:13:50 +08:00
cordis-tool-round.e2e.ts test(web): align e2e anchors and goldens with the unified tool-row expand 2026-07-31 02:16:28 +08:00
details-session-lifecycle.e2e.ts wip 2026-07-31 02:13:53 +08:00
lifecycle-chrome.e2e.ts fix(web): show plan status only while active 2026-07-30 22:42:25 +08:00
live-interactions.e2e.ts test(web): refresh running-turn snapshots 2026-07-31 14:38:27 +08:00
message-actions.e2e.ts wip 2026-07-31 02:13:53 +08:00
models-settings.e2e.ts feat(locale): derive the initial Settings language from the browser 2026-07-31 15:26:46 +08:00
navigation-panes.e2e.ts Merge branch 'master' into codex/basic-session-search 2026-07-31 10:23:52 +08:00
onboarding-deepseek-config.e2e.ts feat(locale): derive the initial Settings language from the browser 2026-07-31 15:26:46 +08:00
plan-review.e2e.ts feat(web): render a plan review as a decision card, not a quiz 2026-07-30 19:09:35 +08:00
question-composer.e2e.ts test(web): pin browser replay locale 2026-07-30 11:39:11 +08:00
queue-actions.e2e.ts Merge remote-tracking branch 'origin/master' into codex/responsive-queue-panel 2026-07-31 11:10:08 +08:00
replay-round-trip.e2e.ts test(web): pin browser replay locale 2026-07-30 11:39:11 +08:00
scaffold-hermetic.e2e.ts fix(web): isolate replay skill discovery 2026-07-30 19:30:06 +08:00
scaffold.ts Merge remote-tracking branch 'origin/master' into mergebot/pr711 2026-07-31 02:02:47 +08:00
seeded-history.e2e.ts test(web): align full-access scenario anchors with locale rollout 2026-07-31 03:36:42 +08:00
settings-chrome.e2e.ts feat(locale): derive the initial Settings language from the browser 2026-07-31 15:26:46 +08:00
sidebar-scrollbar.e2e.ts test(web): pin browser replay locale 2026-07-30 11:39:11 +08:00
skill-invocation-policy.e2e.ts test(web): pin browser replay locale 2026-07-30 11:39:11 +08:00
smoke-real.e2e.ts Merge remote-tracking branch 'origin/master' into worktree/web-model-request-retry 2026-07-30 20:03:39 +08:00
steering.e2e.ts wip 2026-07-31 02:13:53 +08:00
support.ts feat(locale): derive the initial Settings language from the browser 2026-07-31 15:26:46 +08:00
workspace-management.e2e.ts fix: review follow-ups for the session archive set 2026-07-31 14:08:13 +08:00