feat: [E2E] Layer 1 — stack interfaces, types, compose override, Makefile targets#186
Merged
feat: [E2E] Layer 1 — stack interfaces, types, compose override, Makefile targets#186
Conversation
- Add `e2e-deploy` named volume to bootstrap container so the manifest survives until tests read it - Write `/tmp/e2e-deploy.json` in docker-bootstrap.sh with contract addresses and issuer party IDs - Add E2E test architecture design doc
…file targets (#178) - Add tests/e2e/devstack/stack/interfaces.go: Anvil, Canton, APIServer, Relayer, Indexer, Postgres interfaces (build tag: e2e) - Add tests/e2e/devstack/stack/types.go: ServiceManifest, Account, AnvilAccount0/1, all request/response/row types, indexer page types - Add tests/e2e/docker-compose.e2e.yaml: thin include wrapper over root docker-compose.yaml; single entry point for E2E test runs - Extend Makefile with test-e2e, test-e2e-api, test-e2e-bridge, test-e2e-indexer targets (stub: "not yet implemented")
Contributor
There was a problem hiding this comment.
Code Review
This pull request establishes the infrastructure for end-to-end testing by introducing new Makefile targets, a dedicated Docker Compose configuration, and Go interfaces and types representing the various components of the stack. The reviewer provided several constructive suggestions to improve the robustness and clarity of the test code, including renaming the generic Postgres interface to APIDatabase, expanding the ServiceManifest to include connection strings for all databases in the stack, utilizing constants for event types instead of magic strings, and defining preconfigured test accounts as values to prevent accidental mutation during tests.
dhyaniarun1993
approved these changes
Apr 8, 2026
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
tests/e2e/devstack/stack/interfaces.go—Anvil,Canton,APIServer,Relayer,Indexer,Postgresinterfaces; all test and DSL code depends only on these, never on concrete implementations (//go:build e2e)tests/e2e/devstack/stack/types.go—ServiceManifest,Account,AnvilAccount0/1, request/response/row types, and all indexer paginated page typestests/e2e/docker-compose.e2e.yaml— thinincludewrapper over the rootdocker-compose.yaml; single entry point fordocker compose up --waitin E2E runsMakefile—test-e2e,test-e2e-api,test-e2e-bridge,test-e2e-indexertargets (stubbed with "not yet implemented" until later layers land)Note on compose port overrides
The
includedirective does not support overriding services from the included file. Since the rootdocker-compose.yamlalready exposes all ports with fixed bindings (8545:8545,5011:5011, etc.) and thee2e-deployvolume was already wired in #177, no service overrides are needed —docker compose portresolves correctly against the fixed mappings.Acceptance Criteria
go build -tags e2e ./tests/e2e/devstack/stack/...compiles cleanlydocker compose -f tests/e2e/docker-compose.e2e.yaml configsucceedsmake test-e2e-api,make test-e2e-bridge,make test-e2e-indexereach print "not yet implemented"Closes #178