deepseek-harness/apps/web/tests
2026-08-25 11:06:17 +08:00
..
expected refactor(subagent): consume shared session observations 2026-08-25 06:09:25 +08:00
snapshots/preview-boot test(web): separate session snapshots from goldens 2026-08-24 21:36:31 +08:00
support
access-confirmation.e2e.ts fix(test): use expected-output naming 2026-08-24 21:37:14 +08:00
agent-preset-authoring.e2e.ts fix(test): use expected-output naming 2026-08-24 21:37:14 +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 fix(agent-presets): project selection and refresh client catalogs 2026-08-25 06:07:58 +08:00
approval-composer.e2e.ts fix(test): make session replay portable in CI 2026-08-24 21:37:14 +08:00
assembled-boot.ts feat(client): use bounded plugin combo URLs 2026-08-25 06:43:24 +08:00
background-job-list.e2e.ts test(web): separate session snapshots from goldens 2026-08-24 21:36:31 +08:00
bash-abort-row.e2e.ts test(web): separate session snapshots from goldens 2026-08-24 21:36:31 +08:00
built-boot.expected.e2e.ts fix(test): use expected-output naming 2026-08-24 21:37:14 +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 test(web): tolerate responsive transcript reflow 2026-08-23 16:27:09 +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 refactor(test): drive sessions through owning profiles 2026-08-24 21:37:13 +08:00
cold-blank-session.e2e.ts fix(test): use expected-output naming 2026-08-24 21:37:14 +08:00
command-image-envelope.expected.e2e.ts fix(test): use expected-output naming 2026-08-24 21:37:14 +08:00
complex-history.perf.ts fix: 分页问题 2026-08-12 20:26:47 +08:00
composer-draft-scroll.e2e.ts fix(test): use expected-output naming 2026-08-24 21:37:14 +08:00
composer-tab-geometry.e2e.ts fix(test): use expected-output naming 2026-08-24 21:37:14 +08:00
conversation-column-overflow.e2e.ts fix(test): use expected-output naming 2026-08-24 21:37:14 +08:00
cordis-tool-round.e2e.ts refactor(subagent): consume shared session observations 2026-08-25 06:09:25 +08:00
declared-reasoning.e2e.ts fix(test): use expected-output naming 2026-08-24 21:37:14 +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 feat(session): persist model selection and share its catalog 2026-08-25 06:07:42 +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 fix(test): harden snapshot corpus invariants 2026-08-24 21:37:57 +08:00
feedback-command.e2e.ts refactor(test): drive sessions through owning profiles 2026-08-24 21:37:13 +08:00
github-ready-review.e2e.ts refactor(repo): retire top-level examples 2026-08-24 22:02:44 +08:00
goal-bar.e2e.ts fix(test): use expected-output naming 2026-08-24 21:37:14 +08:00
goal-bar.overlay.yml feat(web): 移除首启内测声明,遥测保持默认关闭 2026-08-13 13:47:09 +08:00
goal-command-presentation.e2e.ts fix(test): use expected-output naming 2026-08-24 21:37:14 +08:00
goal-multi-turn-actions.e2e.ts test(web): separate session snapshots from goldens 2026-08-24 21:36:31 +08: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 fix(test): use expected-output naming 2026-08-24 21:37:14 +08:00
lifecycle-chrome.e2e.ts fix(test): harden snapshot corpus invariants 2026-08-24 21:37:57 +08:00
live-interactions.e2e.ts fix(test): harden snapshot corpus invariants 2026-08-24 21:37:57 +08:00
markdown-cjk-strong.e2e.ts fix(test): use expected-output naming 2026-08-24 21:37:14 +08:00
markdown-images.e2e.ts fix(test): use expected-output naming 2026-08-24 21:37:14 +08:00
markdown-inline-code-links.e2e.ts fix(test): use expected-output naming 2026-08-24 21:37:14 +08:00
markdown-wide-table.e2e.ts fix(test): use expected-output naming 2026-08-24 21:37:14 +08:00
math-rendering.e2e.ts fix(test): use expected-output naming 2026-08-24 21:37:14 +08:00
max-tokens-notice.expected.e2e.ts fix(test): use expected-output naming 2026-08-24 21:37:14 +08:00
message-actions.e2e.ts refactor(test): drive sessions through owning profiles 2026-08-24 21:37:13 +08:00
message-feedback-layout.e2e.ts refactor(test): drive sessions through owning profiles 2026-08-24 21:37:13 +08:00
message-feedback-protocol.snapshot.ts refactor(test): drive sessions through owning profiles 2026-08-24 21:37:13 +08:00
message-feedback.e2e.ts refactor(test): drive sessions through owning profiles 2026-08-24 21:37:13 +08:00
minimal-preset.snapshot.ts refactor(test): drive sessions through owning profiles 2026-08-24 21:37:13 +08:00
models-settings.e2e.ts fix(test): use expected-output naming 2026-08-24 21:37:14 +08:00
navigation-panes.e2e.ts refactor(test): drive sessions through owning profiles 2026-08-24 21:37:13 +08:00
onboarding-deepseek-config.e2e.ts feat(session): persist model selection and share its catalog 2026-08-25 06:07:42 +08:00
onboarding-usable-provider.e2e.ts fix(test): use expected-output naming 2026-08-24 21:37:14 +08:00
permission-policy-context.e2e.ts test(snapshot): verify final workspace state 2026-08-24 21:37:14 +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 test(web): separate session snapshots from goldens 2026-08-24 21:36:31 +08:00
plan-review.e2e.ts refactor(test): drive sessions through owning profiles 2026-08-24 21:37:13 +08:00
plugin-config.e2e.ts fix(test): use expected-output naming 2026-08-24 21:37:14 +08:00
preview-boot.e2e.ts test(web): wait for stable preview onboarding 2026-08-24 15:28:14 +08: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 feat(web): single-build preview page and its acceptance e2e 2026-08-21 20:35:33 +08:00
pwsh-terminal.e2e.ts refactor(test): drive sessions through owning profiles 2026-08-24 21:37:13 +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(test): drive sessions through owning profiles 2026-08-24 21:37:13 +08:00
queue-actions.e2e.ts fix(test): harden snapshot corpus invariants 2026-08-24 21:37:57 +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 fix(client): align domain split with repository gates 2026-08-23 16:28:19 +08:00
README.md fix(client): align domain split with repository gates 2026-08-23 16:28:19 +08:00
README.zh.md fix(client): align domain split with repository gates 2026-08-23 16:28:19 +08:00
reference-composer.e2e.ts refactor(subagent): consume shared session observations 2026-08-25 06:09:25 +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(test): drive sessions through owning profiles 2026-08-24 21:37:13 +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 refactor(webserver): minimize HTTP gzip integration 2026-08-25 06:43:24 +08:00
schedule-after.e2e.ts refactor(repo): retire top-level examples 2026-08-24 22:02:44 +08:00
search-card.expected.e2e.ts fix(test): use expected-output naming 2026-08-24 21:37:14 +08:00
seeded-history.e2e.ts refactor(subagent): consume shared session observations 2026-08-25 06:09:25 +08:00
settings-chrome.e2e.ts feat(client): use bounded plugin combo URLs 2026-08-25 06:43:24 +08:00
shipped-composition.e2e.ts refactor(webserver): minimize HTTP gzip integration 2026-08-25 06:43:24 +08:00
sidebar-scrollbar.e2e.ts refactor(test): drive sessions through owning profiles 2026-08-24 21:37:13 +08:00
sidebar-subagent-activity.e2e.ts fix(test): use expected-output naming 2026-08-24 21:37:14 +08:00
skill-invocation-policy.e2e.ts fix(test): use expected-output naming 2026-08-24 21:37:14 +08:00
skill-tool-row.e2e.ts refactor(test): drive sessions through owning profiles 2026-08-24 21:37:13 +08:00
skill-user-invoke.e2e.ts fix(test): use expected-output naming 2026-08-24 21:37:14 +08:00
smoke-real.e2e.ts feat(client): use bounded plugin combo URLs 2026-08-25 06:43:24 +08:00
startup-auto-selection.e2e.ts feat(session): persist model selection and share its catalog 2026-08-25 06:07:42 +08:00
startup-rpc-budget.e2e.ts docs: remove implementation narration from prose 2026-08-21 22:22:23 +08:00
stats-paged-history.e2e.ts fix(test): use expected-output naming 2026-08-24 21:37:14 +08:00
steering.e2e.ts fix(test): make session replay portable in CI 2026-08-24 21:37:14 +08:00
subagent-conversation.e2e.ts refactor(subagent): consume shared session observations 2026-08-25 06:09:25 +08:00
subagent-interrupt-ui.e2e.ts test(web): separate session snapshots from goldens 2026-08-24 21:36:31 +08:00
subagent-interrupt.e2e.ts refactor(client): replace legacy Host event carriers 2026-08-23 16:16:02 +08:00
support.ts refactor(client): migrate consumers and remove Runtime 2026-08-23 16:28:18 +08:00
todo-row.expected.e2e.ts fix(test): use expected-output naming 2026-08-24 21:37:14 +08:00
trajectory-image-display.expected.e2e.ts fix: 修正轨迹图片测试归属 2026-08-25 11:06:17 +08:00
trajectory-virtualization.e2e.ts fix(test): use expected-output naming 2026-08-24 21:37:14 +08:00
turn-tail-actions.e2e.ts fix(test): harden snapshot corpus invariants 2026-08-24 21:37:57 +08:00
vite-entry.e2e.ts
web-search-round.e2e.ts refactor(test): drive sessions through owning profiles 2026-08-24 21:37:13 +08:00
workflow-run.e2e.ts fix(test): harden snapshot corpus invariants 2026-08-24 21:37:57 +08:00
workspace-management.e2e.ts refactor(test): drive sessions through owning profiles 2026-08-24 21:37:13 +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.

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.