deepseek-harness/apps/web/tests
2026-08-13 16:40:58 +08:00
..
snapshots Merge branch 'master' into agent/onboarding-modal-flow 2026-08-13 16:40:58 +08:00
support
access-confirmation.e2e.ts
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 fix(session-query): rename session log export package 2026-08-13 05:02:00 +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 test(web): follow the structured abort message in the bash-abort-row scenario 2026-08-03 20:57:26 +08:00
built-boot.snapshot.ts test(web): adapt workspace browser e2e interactions to the compact sidebar 2026-08-12 01:32:08 +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 Merge remote-tracking branch 'origin/master' into xtr/react-loop-simplification 2026-08-05 21:42:33 +08:00
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
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 feat: optimze skill and tool 2026-08-13 03:46:20 +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 refactor: apply repository naming contract 2026-08-13 00:54:38 +08:00
image-display.snapshot.ts Merge pull request #2346 from deepseek-harness/fix/web-max-tokens-turn-end-notice 2026-08-12 20:07:35 +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 test: stabilize markdown web snapshots 2026-08-06 15:37:40 +08:00
markdown-images.e2e.ts test(web): pin the remaining markdown fixture's event times 2026-08-06 16:24:20 +08:00
markdown-inline-code-links.e2e.ts test: stabilize markdown web snapshots 2026-08-06 15:37:40 +08:00
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-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 fix(web): answer the review on the declared-provider editor 2026-08-10 23:31:21 +08:00
navigation-panes.e2e.ts fix(session-export): preserve streamed browser downloads 2026-08-12 18:44:04 +08:00
onboarding-deepseek-config.e2e.ts feat(web): unify onboarding dialogs 2026-08-13 01:19:52 -07: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-review.e2e.ts feat(client): surface pending session interactions 2026-08-04 17:15:10 +08:00
plugin-config.e2e.ts feat(web): combine plugin settings into tabs 2026-08-12 01:06:01 -07:00
produced-file-mentions.e2e.ts feat(web): a prose mention of a produced file opens it 2026-08-07 03:02:10 -07:00
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 refactor: apply repository naming contract 2026-08-13 00:54:38 +08:00
question-composer.e2e.ts refactor: apply repository naming contract 2026-08-13 00:54:38 +08:00
queue-actions.e2e.ts test(web): await stopped queue state 2026-08-04 15:09:55 +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
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): unify onboarding dialogs 2026-08-13 01:19:52 -07: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 refactor: apply repository naming contract 2026-08-13 00:54:38 +08:00
settings-chrome.e2e.ts refactor: apply repository naming contract 2026-08-13 00:54:38 +08:00
shipped-composition.e2e.ts refactor: apply repository naming contract 2026-08-13 00:54:38 +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 feat(web): add dedicated skill tool row 2026-08-06 14:07:15 +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 fix(review): update smoke-real onboarding path and telemetry disclosure facts 2026-08-13 14:10:42 +08:00
startup-auto-selection.e2e.ts refactor: apply repository naming contract 2026-08-13 00:54:38 +08:00
stats-paged-history.e2e.ts fix: 分页问题 2026-08-12 20:26:47 +08:00
steering.e2e.ts test: stabilize steering mid-turn snapshot 2026-08-11 21:45:30 +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 Merge remote-tracking branch 'origin/master' into feat/web-message-feedback-ui 2026-08-12 10:43:23 +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
workflow-run.e2e.ts fix(workflow): refold coalesced disclosure cycles 2026-08-12 01:01:25 +08:00
workspace-management.e2e.ts fix: rebase 5 2026-08-13 02:51:52 +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.