Skip to content

test(remote): containerized clean-host e2e for daemon worktree provisioning#93

Merged
Zeus-Deus merged 1 commit into
mainfrom
test/78-daemon-worktree-e2e-docker
Jun 10, 2026
Merged

test(remote): containerized clean-host e2e for daemon worktree provisioning#93
Zeus-Deus merged 1 commit into
mainfrom
test/78-daemon-worktree-e2e-docker

Conversation

@Zeus-Deus

Copy link
Copy Markdown
Owner

Salvaged from #92 (closed as superseded by #88#91): the one artifact main doesn't already have.

Adds scripts/e2e/daemon-worktree-setup-e2e.sh — an end-to-end harness for the #78 provisioning pipeline that runs on a pristine containerized host rather than the dev machine:

  1. Starts a clean Docker container (archlinux:latest by default, CMX_WT_E2E_IMAGE to override), installs only git + the gtk/webkit runtime libs the debug binary links, and mounts the built codemux-remote.
  2. Seeds a repo with a committed .codemux/config.json setup script (captures the injected CODEMUX_* env) and a gitignored .env.
  3. Starts codemux-remote serve, waits for the manifest, and drives the real authed HTTP tool surface (tools/call worktree_create) exactly like the MCP bridge does.
  4. Asserts on the container filesystem: worktree at the canonical ~/.codemux/worktrees/<repo>/<branch> path, setup marker written with the right CODEMUX_BRANCH and a CODEMUX_PORT matching the response's setup.port, and the gitignored .env copied from the main checkout.

Complements the in-repo integration test (http_worktree_create_provisions_like_desktop), which runs the daemon on the dev machine — this validates the same pipeline on a host with no dev environment at all. Binary under test is overridable via CMX_WT_E2E_BIN.

Test plan

  • Ran against a build of current main: PASS (setup_running: true in the response; marker captured feature/provision + the allocated port; .env contents intact in the new worktree).
  • Negative paths exercised during development: missing manifest and failed tool call both surface the daemon's serve.log and exit non-zero.

…ioning

Adds scripts/e2e/daemon-worktree-setup-e2e.sh: stands up a pristine
Docker container as a headless host (no desktop, no dev environment),
mounts the built codemux-remote binary, seeds a repo with a committed
.codemux/config.json setup script and a gitignored .env, starts
codemux-remote serve, and drives the real authed HTTP tool surface
(tools/call worktree_create) exactly like the MCP bridge does. Asserts
on the container filesystem that the worktree was created at the
canonical path, the setup script ran with CODEMUX_BRANCH/CODEMUX_PORT
injected, and the gitignored .env was copied from the main checkout.

Complements the in-repo integration test
(http_worktree_create_provisions_like_desktop), which runs the daemon
on the dev machine: this harness validates the same provisioning
pipeline on a clean host where only git and the runtime libs exist.
Binary under test is overridable via CMX_WT_E2E_BIN.

Verified passing against the current main daemon.
@Zeus-Deus Zeus-Deus merged commit 9f248ce into main Jun 10, 2026
4 checks passed
@Zeus-Deus Zeus-Deus deleted the test/78-daemon-worktree-e2e-docker branch June 10, 2026 16:04
Zeus-Deus added a commit that referenced this pull request Jun 10, 2026
- STATUS/PLAN: v0.8.0 is released (OpenCode sync, favicon cache-bust,
  dev mock runtime shipped); retag post-tag work as unreleased and add
  the perf pass (#72-#79), run checkpoints (#80), daemon worktree
  provisioning parity (#78) + containerized e2e (PR #93)
- STATUS: PTY producer back-pressure is now engaged on the live path
  (issue #73) - drop the stale "inert in production" claims
- TESTING: document scripts/e2e/ harnesses and the env-gated SSH
  round-trip integration tests
- features: new project-avatars.md (sidebar image/color customization,
  favicon derivation + cache-bust, UI-state persistence); link it from
  INDEX and add the run-checkpoints bullet to FEATURES.md
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant