deepseek-harness/apps/web/tests
imccyu 804b1ffbfc refactor(api): converge the Remote failure vocabulary and client surface
Single RemoteError with a merge-extensible, domain-prefixed code map;
owners throw at the failure point; streams surface marked failures;
clients consume ctx.remote directly with isRemoteFailure as the only
discrimination point and construct no failure instances.
2026-08-28 22:37:36 +08:00
..
expected Merge pull request #3262 from deepseek-harness/feat/session-turn-stats-display 2026-08-28 13:52:02 +02:00
snapshots feat(web): polish the input trigger menu presentation 2026-08-26 21:17:46 +08:00
support
access-confirmation.e2e.ts fix(web): cover authenticated host runtimes 2026-08-25 14:23:46 +08:00
agent-preset-authoring.e2e.ts fix(web): cover authenticated host runtimes 2026-08-25 14:23:46 +08:00
agent-preset-authoring.overlay.yml refactor(client): replace host description consumers 2026-08-27 22:26:28 +08:00
agent-preset-selection.e2e.ts feat(web): polish the input trigger menu presentation 2026-08-26 21:17:46 +08:00
agent-team-panel.e2e.ts fix(team): authenticate browser panel snapshot 2026-08-26 10:56:57 +08:00
agent-team-panel.overlay.yml fix(team): preserve current Client architecture after rebase 2026-08-26 10:56:57 +08:00
approval-composer.e2e.ts Merge remote-tracking branch 'origin/master' into worktree/web-textarea-refactor-991614 2026-08-25 19:35:55 +08:00
assembled-boot.ts refactor(connection): own RPC transport contracts 2026-08-27 22:26:29 +08:00
background-job-list.e2e.ts Merge remote-tracking branch 'origin/master' into xtr/message-tool-call-id 2026-08-25 14:42:35 +08:00
bash-abort-row.e2e.ts fix(web): cover authenticated host runtimes 2026-08-25 14:23:46 +08:00
built-boot.expected.e2e.ts refactor(connection): own RPC transport contracts 2026-08-27 22:26:29 +08:00
chat-continuous-conversation.e2e.ts feat(ui-conversation): fold turn process before final answer (#2547) 2026-08-27 10:12:39 +00:00
chat-long-interactions.e2e.ts feat(ui-conversation): fold turn process before final answer (#2547) 2026-08-27 10:12:39 +00:00
chat-scroll-contract.e2e.ts feat(ui-conversation): fold turn process before final answer (#2547) 2026-08-27 10:12:39 +00:00
chat-scroll-fixture.ts refactor(llm): rename CallId to ToolCallId 2026-08-21 16:10:24 +08:00
cold-blank-session.e2e.ts fix(web): cover authenticated host runtimes 2026-08-25 14:23:46 +08:00
command-image-envelope.expected.e2e.ts refactor(connection): own RPC transport contracts 2026-08-27 22:26:29 +08:00
complex-history.perf.ts Merge remote-tracking branch 'origin/master' into dshw/pr-deepseek-harness-deepseek-harness-2731 2026-08-26 11:40:56 +08:00
composer-draft-scroll.e2e.ts Merge remote-tracking branch 'origin/master' into worktree/web-textarea-refactor-991614 2026-08-25 19:35:55 +08:00
composer-tab-geometry.e2e.ts feat(ui-conversation): fold turn process before final answer (#2547) 2026-08-27 10:12:39 +00:00
cordis-tool-round.e2e.ts feat(ui-conversation): fold turn process before final answer (#2547) 2026-08-27 10:12:39 +00:00
declared-reasoning.e2e.ts fix(web): cover authenticated host runtimes 2026-08-25 14:23:46 +08:00
declared-reasoning.overlay.yml fix(headless): dsh run is a direct core front door 2026-08-09 13:44:44 +08:00
default-model.e2e.ts refactor(api): converge the Remote failure vocabulary and client surface 2026-08-28 22:37:36 +08:00
default-model.overlay.yml docs: purge chain-of-thought leakage from prose 2026-08-09 21:10:59 +08:00
details-session-lifecycle.e2e.ts Merge remote-tracking branch 'origin/master' into worktree/web-textarea-refactor-991614 2026-08-25 19:35:55 +08:00
feedback-command.e2e.ts feat(ui-conversation): fold turn process before final answer (#2547) 2026-08-27 10:12:39 +00:00
feedback-release.e2e.ts feat(ui-conversation): fold turn process before final answer (#2547) 2026-08-27 10:12:39 +00:00
github-ready-review.e2e.ts feat(ui-conversation): fold turn process before final answer (#2547) 2026-08-27 10:12:39 +00:00
goal-bar.e2e.ts refactor(connection): own RPC transport contracts 2026-08-27 22:26:29 +08:00
goal-bar.overlay.yml feat(web): 移除首启内测声明,遥测保持默认关闭 2026-08-13 13:47:09 +08:00
goal-command-presentation.e2e.ts Merge remote-tracking branch 'origin/master' into worktree/web-textarea-refactor-991614 2026-08-25 19:35:55 +08:00
goal-multi-turn-actions.e2e.ts feat(ui-conversation): fold turn process before final answer (#2547) 2026-08-27 10:12:39 +00:00
hmr-live.e2e.ts test: follow the uuid mint to its new entropy seam 2026-08-21 20:35:34 +08:00
home-path-tilde.expected.e2e.ts fix(test): use expected-output naming 2026-08-24 21:37:14 +08:00
image-display.expected.e2e.ts rename code-mode to ptc (PTC mode), except session-persistent vocabulary 2026-08-27 23:14:31 +08:00
lifecycle-chrome.e2e.ts feat(ui-conversation): fold turn process before final answer (#2547) 2026-08-27 10:12:39 +00:00
live-interactions.e2e.ts feat(ui-conversation): fold turn process before final answer (#2547) 2026-08-27 10:12:39 +00:00
markdown-cjk-strong.e2e.ts fix(web): cover authenticated host runtimes 2026-08-25 14:23:46 +08:00
markdown-images.e2e.ts fix(web): cover authenticated host runtimes 2026-08-25 14:23:46 +08:00
markdown-inline-code-links.e2e.ts fix(web): cover authenticated host runtimes 2026-08-25 14:23:46 +08:00
markdown-wide-table.e2e.ts fix(web): cover authenticated host runtimes 2026-08-25 14:23:46 +08:00
math-rendering.e2e.ts fix(web): cover authenticated host runtimes 2026-08-25 14:23:46 +08:00
max-tokens-notice.expected.e2e.ts refactor(connection): own RPC transport contracts 2026-08-27 22:26:29 +08:00
message-actions.e2e.ts fix(web): cover authenticated host runtimes 2026-08-25 14:23:46 +08:00
message-feedback-layout.e2e.ts fix(web): cover authenticated host runtimes 2026-08-25 14:23:46 +08:00
message-feedback-protocol.snapshot.ts fix(web): cover authenticated host runtimes 2026-08-25 14:23:46 +08:00
message-feedback.e2e.ts fix(web): cover authenticated host runtimes 2026-08-25 14:23:46 +08:00
minimal-preset.snapshot.ts feat(ui-conversation): fold turn process before final answer (#2547) 2026-08-27 10:12:39 +00:00
models-settings.e2e.ts fix(web): cover authenticated host runtimes 2026-08-25 14:23:46 +08:00
navigation-panes.e2e.ts test(api): refresh Remote migration artifacts 2026-08-27 21:57:56 +08:00
onboarding-deepseek-config.e2e.ts refactor(client): use settings Remote namespaces 2026-08-27 03:01:02 +08:00
onboarding-usable-provider.e2e.ts fix(web): cover authenticated host runtimes 2026-08-25 14:23:46 +08:00
permission-policy-context.e2e.ts Merge pull request #3125 from deepseek-harness/worktree/composer-editable-gate 2026-08-26 16:54:37 +08:00
pin-browse-picker.overlay.yml refactor: apply repository naming contract 2026-08-13 00:54:38 +08:00
plan-control-row.e2e.ts Merge remote-tracking branch 'origin/master' into worktree/web-textarea-refactor-991614 2026-08-25 19:35:55 +08:00
plan-review.e2e.ts feat(ui-conversation): fold turn process before final answer (#2547) 2026-08-27 10:12:39 +00:00
plugin-config.e2e.ts fix(ui-settings-plugins): place Subagent after Agent loop 2026-08-27 12:00:02 +08:00
preview-boot.e2e.ts test(api): refresh Remote migration artifacts 2026-08-27 21:57:56 +08:00
produced-file-mentions.e2e.ts Merge remote-tracking branch 'origin/master' into xtr/message-tool-call-id 2026-08-25 14:42:35 +08:00
produced-files.e2e.ts fix(api): preserve native path opening behavior 2026-08-27 21:57:58 +08:00
produced-files.overlay.yml refactor(client): replace host description consumers 2026-08-27 22:26:28 +08:00
ptc-round.e2e.ts rename code-mode to ptc (PTC mode), except session-persistent vocabulary 2026-08-27 23:14:31 +08:00
pwa-manifest.e2e.ts feat(web): single-build preview page and its acceptance e2e 2026-08-21 20:35:33 +08:00
pwsh-terminal.e2e.ts fix(web): cover authenticated host runtimes 2026-08-25 14:23:46 +08:00
pwsh-terminal.overlay.yml Merge pull request #2417 from deepseek-harness/fix/pwsh-terminal-overlay-dup 2026-08-17 12:10:31 +08:00
question-composer.e2e.ts feat(ui-conversation): fold turn process before final answer (#2547) 2026-08-27 10:12:39 +00:00
queue-actions.e2e.ts feat(ui-conversation): fold turn process before final answer (#2547) 2026-08-27 10:12:39 +00:00
rail-search-expand.e2e.ts fix(web): cover authenticated host runtimes 2026-08-25 14:23:46 +08:00
README.i18n.yaml docs(api): describe Connection-owned transport 2026-08-27 22:26:30 +08:00
README.md docs(api): describe Connection-owned transport 2026-08-27 22:26:30 +08:00
README.zh.md docs(api): describe Connection-owned transport 2026-08-27 22:26:30 +08:00
reference-composer.e2e.ts test(web): align e2e suite with the hero-glow removal and menu retention 2026-08-28 12:50:25 +08:00
remote-welcome.e2e.ts fix(web): cover authenticated host runtimes 2026-08-25 14:23:46 +08:00
replay-round-trip.e2e.ts docs(api): describe Connection-owned transport 2026-08-27 22:26:30 +08:00
scaffold-hermetic.e2e.ts test(api): refresh Remote migration artifacts 2026-08-27 21:57:56 +08:00
scaffold.ts rename code-mode to ptc (PTC mode), except session-persistent vocabulary 2026-08-27 23:14:31 +08:00
schedule-after.e2e.ts fix(web): tighten schedule catalog evidence 2026-08-28 09:28:33 +08:00
search-card.expected.e2e.ts refactor(connection): own RPC transport contracts 2026-08-27 22:26:29 +08:00
seeded-history.e2e.ts test(api): refresh Remote migration artifacts 2026-08-27 21:57:56 +08:00
settings-chrome.e2e.ts test(api): refresh Remote migration artifacts 2026-08-27 21:57:56 +08:00
shipped-composition.e2e.ts Merge remote-tracking branch 'origin/master' into xtr/message-tool-call-id 2026-08-25 20:24:54 +08:00
sidebar-scrollbar.e2e.ts fix(web): cover authenticated host runtimes 2026-08-25 14:23:46 +08:00
sidebar-subagent-activity.e2e.ts fix(web): cover authenticated host runtimes 2026-08-25 14:23:46 +08:00
skill-invocation-policy.e2e.ts Merge remote-tracking branch 'origin/master' into worktree/web-textarea-refactor-991614 2026-08-25 19:35:55 +08:00
skill-tool-row.e2e.ts feat(ui-conversation): fold turn process before final answer (#2547) 2026-08-27 10:12:39 +00:00
skill-user-invoke.e2e.ts feat(ui-conversation): fold turn process before final answer (#2547) 2026-08-27 10:12:39 +00:00
smoke-real.e2e.ts rename code-mode to ptc (PTC mode), except session-persistent vocabulary 2026-08-27 23:14:31 +08:00
startup-auto-selection.e2e.ts feat(web): polish the input trigger menu presentation 2026-08-26 21:17:46 +08:00
startup-rpc-budget.e2e.ts refactor(client): use settings Remote namespaces 2026-08-27 03:01:02 +08:00
stats-paged-history.e2e.ts fix(web): cover authenticated host runtimes 2026-08-25 14:23:46 +08:00
steering.e2e.ts feat(ui-conversation): fold turn process before final answer (#2547) 2026-08-27 10:12:39 +00:00
streaming-fence-highlight.e2e.ts test(web): drive the streaming-fence prompt through the composer surface 2026-08-25 19:55:45 +08:00
subagent-conversation.e2e.ts feat(ui-conversation): fold turn process before final answer (#2547) 2026-08-27 10:12:39 +00:00
subagent-interrupt-ui.e2e.ts Merge remote-tracking branch 'origin/master' into feat/web-input-trigger-menu-polish 2026-08-26 21:35:21 +08:00
subagent-interrupt.e2e.ts test(subagent): cover Remote control migration 2026-08-26 14:52:53 +08:00
submission-echo.e2e.ts refactor(connection): own RPC transport contracts 2026-08-27 22:26:29 +08:00
support.ts feat(ui-conversation): fold turn process before final answer (#2547) 2026-08-27 10:12:39 +00:00
todo-row.expected.e2e.ts refactor(connection): own RPC transport contracts 2026-08-27 22:26:29 +08:00
trajectory-image-display.expected.e2e.ts rename code-mode to ptc (PTC mode), except session-persistent vocabulary 2026-08-27 23:14:31 +08:00
trajectory-virtualization.e2e.ts Merge remote-tracking branch 'origin/master' into worktree/web-textarea-refactor-991614 2026-08-25 19:35:55 +08:00
turn-tail-actions.e2e.ts fix(web): label the Turn-time TTFT row as first-token latency, not an average 2026-08-28 15:03:47 +08:00
vite-entry.e2e.ts
web-search-round.e2e.ts feat(ui-conversation): fold turn process before final answer (#2547) 2026-08-27 10:12:39 +00:00
workflow-run.e2e.ts feat(ui-conversation): fold turn process before final answer (#2547) 2026-08-27 10:12:39 +00:00
workspace-management.e2e.ts fix(web): cover authenticated host runtimes 2026-08-25 14:23:46 +08:00
workspace-new-session-folding.e2e.ts test(web): authenticate folding snapshot 2026-08-25 17:20:06 +08:00

apps/web browser e2e

English | 中文

These tests boot the real web composition in-process and drive it with a real Chromium over real HTTP. The lane's mechanics — modes, fixtures, goldens, and the deliberate composition divergences from dsh web — are documented in scaffold.ts and the browser e2e Agent Note.

These are Host-face tests

They type-check in the root tsconfig.host.json, not in the Client aggregate, because they read Host services directly: ctx.connection, the Host SessionStore, and ctx.sessionProjectionCache. Driving a browser at runtime does not make a file part of the Client program — the two faces merge cordis Context under the same keys with different services, so one program cannot see both. Moving these files into the Client aggregate makes every Host-service access fail to compile.

Do not import @deepseek-ai/dsh-client-* here

Importing a Client package — a value or a type — pulls its whole TypeScript project, and every project it references, into the Host build graph. That has bitten this lane once already: four Client consumer packages reference api/remotes' Client face, which cannot compile until Host tsdown has generated @deepseek-ai/dsh-goal/remote, so the Host build phase ended up waiting on an artifact it produces itself.

When a scenario needs a Client-owned constant or pure function, mirror it here instead, next to the commented-out import that names the source module. A drift then surfaces as a missed selector or a stale mirrored value — a loud failure, never a silent pass. scaffold.ts follows this rule for the welcome-notice namespace, acknowledgement field, version, and asserted Chinese copy.

One kind of Client import stands. assembled-boot.ts drives the shell itself, so it imports AppWebEntry from @deepseek-ai/dsh-client-web and the boot-manifest type from @deepseek-ai/dsh-client-modules/client: booting the real shell is what that harness is for, and both packages are already in the Host graph. The chat scenarios mirror conversationContextKey in support.ts instead of importing its Client owner.

Nothing mechanically enforces this rule; keep it in review.