deepseek-harness/apps/web/tests
Kaige-Gao 8304a25d8a Merge remote-tracking branch 'origin/master' into fix/permission-copy-and-default
# Conflicts:
#	packages/subagent/subagent-codex/tests/subagent-codex.spec.ts
2026-08-19 22:50:35 +08:00
..
snapshots Merge remote-tracking branch 'origin/master' into fix/permission-copy-and-default 2026-08-19 22:50:35 +08:00
support
access-confirmation.e2e.ts Merge remote-tracking branch 'origin/master' into fix/permission-copy-and-default 2026-08-19 22:50:35 +08:00
agent-preset-authoring.e2e.ts fix(web): clamp preset card descriptions instead of sizing the roster 2026-08-11 14:09:04 +08:00
agent-preset-authoring.overlay.yml refactor(agent-presets,web): copy-only preset authoring with a path to the files 2026-08-08 22:35:26 +08:00
agent-preset-selection.e2e.ts refactor: apply repository naming contract 2026-08-13 00:54:38 +08:00
approval-composer.e2e.ts docs: make technical prose concrete 2026-08-10 16:34:20 +08:00
assembled-boot.ts feat(ui-tool): integrate connection handling for POSIX home path abbreviation 2026-08-18 19:25:13 +08:00
background-job-list.e2e.ts refactor: apply repository naming contract 2026-08-13 00:54:38 +08:00
bash-abort-row.e2e.ts
built-boot.snapshot.ts feat(client): compose deployment branding through slots 2026-08-19 18:21:35 +08:00
chat-continuous-conversation.e2e.ts Merge remote-tracking branch 'origin/master' into feat/web-message-feedback-ui 2026-08-12 10:43:23 +08:00
chat-long-interactions.e2e.ts Merge remote-tracking branch 'origin/master' into feat/web-message-feedback-ui 2026-08-12 10:43:23 +08:00
chat-scroll-contract.e2e.ts refactor: apply repository naming contract 2026-08-13 00:54:38 +08:00
chat-scroll-fixture.ts
code-mode-round.e2e.ts docs: purge chain-of-thought leakage from prose 2026-08-09 21:10:59 +08:00
cold-blank-session.e2e.ts fix(web): hide verified cold blank sessions 2026-08-13 14:04:16 +08:00
command-image-envelope.snapshot.ts fix(plan): accept image-only plan requests 2026-08-18 15:43:59 +08:00
complex-history.perf.ts fix: 分页问题 2026-08-12 20:26:47 +08:00
composer-draft-scroll.e2e.ts Merge remote-tracking branch 'origin/master' into feat/web-message-feedback-ui 2026-08-12 10:43:23 +08:00
composer-tab-geometry.e2e.ts review: address ds-review-bot findings on composer geometry 2026-08-12 23:51:46 +08:00
conversation-column-overflow.e2e.ts docs: purge chain-of-thought leakage from prose 2026-08-09 21:10:59 +08:00
cordis-tool-round.e2e.ts test(web): make Cordis continuation turn deterministic 2026-08-18 11:58:11 +08:00
declared-reasoning.e2e.ts fix(headless): dsh run is a direct core front door 2026-08-09 13:44:44 +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 docs: reserve seam for complete capabilities 2026-08-09 17:26:57 +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 docs: make technical prose concrete 2026-08-10 16:34:20 +08:00
feedback-command.e2e.ts test(feedback): fix the assembled e2e record path and teardown restore 2026-08-11 11:01:48 +08:00
goal-bar.e2e.ts feat(web): unify onboarding dialogs 2026-08-13 01:19:52 -07:00
goal-bar.overlay.yml feat(web): 移除首启内测声明,遥测保持默认关闭 2026-08-13 13:47:09 +08:00
goal-command-presentation.e2e.ts feat(web): show command inputs in the human transcript 2026-08-11 17:19:51 +08:00
goal-multi-turn-actions.e2e.ts refactor: apply repository naming contract 2026-08-13 00:54:38 +08:00
hmr-live.e2e.ts feat(build): bind client artifacts to build profiles 2026-08-19 18:21:27 +08:00
home-path-tilde.snapshot.ts feat(ui-tool): integrate connection handling for POSIX home path abbreviation 2026-08-18 19:25:13 +08:00
image-display.snapshot.ts fix(attachment): address dimension-limit review 2026-08-18 11:30:07 +08:00
lifecycle-chrome.e2e.ts refactor: apply repository naming contract 2026-08-13 00:54:38 +08:00
live-interactions.e2e.ts docs: reserve seam for complete capabilities 2026-08-09 17:26:57 +08:00
markdown-cjk-strong.e2e.ts
markdown-images.e2e.ts
markdown-inline-code-links.e2e.ts
math-rendering.e2e.ts review: address ds-review-bot findings on session-stats 2026-08-12 21:43:35 +08:00
max-tokens-notice.snapshot.ts fix(web): surface max-tokens turn ends as a localized truncation notice 2026-08-12 15:36:27 +08:00
message-actions.e2e.ts fix(ci): await token stats before aria snapshot 2026-08-11 00:28:00 +08:00
message-feedback-layout.e2e.ts feat(feedback): float the note editor in a popover, not inline in the actions row 2026-08-19 13:49:30 +08:00
message-feedback-protocol.snapshot.ts fix(feedback): address backend review gaps 2026-08-10 21:40:03 -07:00
message-feedback.e2e.ts feat(feedback): add the Web surface for message feedback 2026-08-11 17:14:21 +08:00
minimal-preset.snapshot.ts Merge remote-tracking branch 'origin/master' into worktree/minimal-no-runtime-context 2026-08-13 10:24:29 +08:00
models-settings.e2e.ts feat(web): add model picker bulk selection 2026-08-18 13:07:11 +08:00
navigation-panes.e2e.ts feat(web): Implement file-open failure handling in chat view 2026-08-18 17:39:38 +08:00
onboarding-deepseek-config.e2e.ts feat(llm-deepseek): support multimodal requests 2026-08-19 11:39:52 +08:00
onboarding-usable-provider.e2e.ts feat(web): unify onboarding dialogs 2026-08-13 01:19:52 -07:00
permission-policy-context.e2e.ts
pin-browse-picker.overlay.yml refactor: apply repository naming contract 2026-08-13 00:54:38 +08:00
plan-control-row.e2e.ts fix(web): resolve the remaining review suggestions on the header, guard, and note 2026-08-08 03:31:58 +08:00
plan-review.e2e.ts
plugin-config.e2e.ts feat(web): combine plugin settings into tabs 2026-08-12 01:06:01 -07:00
produced-file-mentions.e2e.ts
produced-files.e2e.ts Merge upstream master into feat/produced-files-folder 2026-08-11 05:22:59 -07:00
produced-files.overlay.yml feat(web): make produced-file overflow discoverable 2026-08-10 21:53:38 -07:00
pwa-manifest.e2e.ts revert(web): drop the 32x32 PNG favicon fallback 2026-08-10 14:17:17 +08:00
pwsh-terminal.e2e.ts test(web): adapt workspace browser e2e interactions to the compact sidebar 2026-08-12 01:32:08 +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 refactor: apply repository naming contract 2026-08-13 00:54:38 +08:00
queue-actions.e2e.ts fix(web): harden the composer submit transaction 2026-08-17 18:35:45 +08:00
rail-search-expand.e2e.ts review: address ds-review-bot findings on rail-search fix 2026-08-19 14:34:17 +08:00
README.i18n.yaml feat(web): unify onboarding dialogs 2026-08-13 01:19:52 -07:00
README.md feat(web): unify onboarding dialogs 2026-08-13 01:19:52 -07:00
README.zh.md feat(web): unify onboarding dialogs 2026-08-13 01:19:52 -07:00
reference-composer.e2e.ts fix(web): address reference review defects 2026-08-19 18:02:10 +08:00
remote-welcome.e2e.ts feat(web): unify onboarding dialogs 2026-08-13 01:19:52 -07:00
replay-round-trip.e2e.ts refactor(web): remove --dev; mount the reload chain unconditionally 2026-08-11 18:01:25 +08:00
scaffold-hermetic.e2e.ts fix(agent-presets): unify the session event entrypoint and re-address the hermetic skills probe 2026-08-09 23:42:44 +08:00
scaffold.ts feat(web,cli): open the ready Web UI by default 2026-08-19 15:42:12 +08:00
schedule-after.e2e.ts refactor: apply repository naming contract 2026-08-13 00:54:38 +08:00
search-card.snapshot.ts docs: make technical prose concrete 2026-08-10 16:34:20 +08:00
seeded-history.e2e.ts fix: ci 2026-08-18 19:31:12 +08:00
settings-chrome.e2e.ts Merge remote-tracking branch 'origin/master' into fix/permission-copy-and-default 2026-08-19 22:50:35 +08:00
shipped-composition.e2e.ts refactor(llm): use one five-retry default 2026-08-18 16:33:22 +08:00
sidebar-scrollbar.e2e.ts test(web): cover workspace sidebar behavior 2026-08-11 15:25:11 +08:00
sidebar-subagent-activity.e2e.ts refactor: apply repository naming contract 2026-08-13 00:54:38 +08:00
skill-invocation-policy.e2e.ts test(web): cover user-only skill invocation end to end 2026-08-08 01:27:25 +08:00
skill-tool-row.e2e.ts test(web): refresh product subagent skill rendering 2026-08-18 19:19:58 +08:00
skill-user-invoke.e2e.ts test: update conversation assembly coverage and docs 2026-08-09 18:16:44 +08:00
smoke-real.e2e.ts feat(client): compose deployment branding through slots 2026-08-19 18:21:35 +08:00
startup-auto-selection.e2e.ts feat(client): compose deployment branding through slots 2026-08-19 18:21:35 +08:00
startup-rpc-budget.e2e.ts fix(client): harden settings describe mirror 2026-08-18 15:26:16 +08:00
stats-paged-history.e2e.ts fix: 分页问题 2026-08-12 20:26:47 +08:00
steering.e2e.ts Merge remote-tracking branch 'origin/master' into worktree/web-file-session-references 2026-08-19 11:01:27 +08:00
subagent-conversation.e2e.ts test(web): wait for the transcript the subagent golden pins 2026-08-11 22:03:50 +08:00
subagent-interrupt-ui.e2e.ts docs: purge chain-of-thought leakage from prose 2026-08-09 21:10:59 +08:00
subagent-interrupt.e2e.ts docs: purge chain-of-thought leakage from prose 2026-08-09 21:10:59 +08:00
support.ts fix(locale): correct two stale product-default-Chinese comments 2026-08-18 17:39:06 +08:00
todo-row.snapshot.ts fix(web): surface max-tokens turn ends as a localized truncation notice 2026-08-12 15:36:27 +08:00
trajectory-virtualization.e2e.ts fix(web): address trajectory pagination review 2026-08-13 14:38:15 +08:00
turn-tail-actions.e2e.ts docs: make technical prose concrete 2026-08-10 16:34:20 +08:00
vite-entry.e2e.ts
web-search-round.e2e.ts fix multi-query web search review feedback 2026-08-19 10:33:43 +08:00
workflow-run.e2e.ts fix(workflow): preserve disclosure intent across completion 2026-08-17 17:31:00 +08:00
workspace-management.e2e.ts perf(ci): parallelize coverage and web snapshots in-job 2026-08-18 21:15:20 +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.apiProxy, the Host SessionStore, 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.

Two kinds of Client import stand. 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. Separately, the chat scenarios import conversationContextKey from @deepseek-ai/dsh-client-runtime/client because client/runtime is reachable through the unsplit directory-picker packages and pulls nothing further in. That reachability is incidental, not a guarantee — if it ever leaves the graph, mirror the helper like the rest.

Nothing mechanically enforces this rule; keep it in review.