test(vessel,vesseld): quality + e2e black-box suites#64
Merged
Conversation
Two new test modules, both keyed off the just-released vessel
v0.1.0-rc.2 / cmd/vesseld v0.1.0-rc.1 surface:
tests/quality/vessel/ — in-process integration suite for the
vessel runtime (in go.work, race-enabled, no GOWORK trickery).
Covers Captain submit/drain/stop, restart loop, kanban
agent-as-tool, sidecars, history modes, hooks (incl. the new
Handle.OnTerminate ordering contract), probes/restart escalation.
Pins sdk v0.2.7 / vessel v0.1.0-rc.2 in require lines so go.work
gives us local source while go mod tidy still produces a coherent
graph.
tests/e2e/vesseld/ — black-box subprocess suite for the vesseld
binary. GOWORK=off, build-tagged //go:build e2e. Each test boots
a vesseld subprocess on a per-test temp socket against an
in-process mock OpenAI server (no network, no API key).
Coverage: API contract, plan/runs/vessels endpoints, auth (token
+ unix-socket file mode), conformance (SSE log envelopes incl.
delta replay), validate-only / bad-config rejection, allowlist,
sidecar reject, drain semantics, run-status pagination, restart
policy, kanban delegation, multi-vessel fleet, rate limiting,
chaos (kill-during-run), CLI flags, OS-specific edge cases.
Total: ~4.7k LOC of black-box coverage.
Wiring: - go.work: add ./tests/quality/vessel
- Makefile: vessel/cmd/vesseld/tests/quality/vessel join
MODULES_WORK; tests/e2e/vesseld joins MODULES_OFFWORK; add
`make test-e2e` and `make ci-e2e` targets
- .gitignore: allowlist cmd/** and vessel/** at the repo root
(previously these new top-level dirs would have been ignored)
- .github/workflows/ci.yml: new test-vessel-quality and
test-vesseld-e2e jobs (Go 1.25 + 1.26, -race), wired into the
ci-pass gate; lint extended to vet+gofmt the new dirs
Co-authored-by: Cursor <cursoragent@cursor.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
PR-3 of the vessel/vesseld v0.1 series. Adds two new test modules covering the runtime + daemon end-to-end. No production-code changes.
What's in here
`tests/quality/vessel/` (in-process integration suite)
In go.work, race-enabled, no GOWORK trickery. Pinned in go.mod to:
Coverage:
`tests/e2e/vesseld/` (black-box subprocess suite)
GOWORK=off, build-tagged `//go:build e2e`, `make test-e2e`. Each test boots a vesseld subprocess on a per-test temp socket against an in-process mock OpenAI server — no network, no API key, no shared state across tests.
Coverage (~4.7k LOC):
Wiring
Test plan
Out of scope
Made with Cursor