Skip to content

feat: [E2E] Layer 1 — stack interfaces, types, compose override, Makefile targets#186

Merged
sadiq1971 merged 11 commits intomainfrom
feat/e2e-layer1-interfaces
Apr 8, 2026
Merged

feat: [E2E] Layer 1 — stack interfaces, types, compose override, Makefile targets#186
sadiq1971 merged 11 commits intomainfrom
feat/e2e-layer1-interfaces

Conversation

@sadiq1971
Copy link
Copy Markdown
Member

Summary

  • tests/e2e/devstack/stack/interfaces.goAnvil, Canton, APIServer, Relayer, Indexer, Postgres interfaces; all test and DSL code depends only on these, never on concrete implementations (//go:build e2e)
  • tests/e2e/devstack/stack/types.goServiceManifest, Account, AnvilAccount0/1, request/response/row types, and all indexer paginated page types
  • tests/e2e/docker-compose.e2e.yaml — thin include wrapper over the root docker-compose.yaml; single entry point for docker compose up --wait in E2E runs
  • Makefiletest-e2e, test-e2e-api, test-e2e-bridge, test-e2e-indexer targets (stubbed with "not yet implemented" until later layers land)

Note on compose port overrides

The include directive does not support overriding services from the included file. Since the root docker-compose.yaml already exposes all ports with fixed bindings (8545:8545, 5011:5011, etc.) and the e2e-deploy volume was already wired in #177, no service overrides are needed — docker compose port resolves correctly against the fixed mappings.

Acceptance Criteria

  • go build -tags e2e ./tests/e2e/devstack/stack/... compiles cleanly
  • docker compose -f tests/e2e/docker-compose.e2e.yaml config succeeds
  • make test-e2e-api, make test-e2e-bridge, make test-e2e-indexer each print "not yet implemented"

Closes #178

- 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")
Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Base automatically changed from feat/e2e-init to main April 8, 2026 17:42
@sadiq1971 sadiq1971 merged commit 8d643f7 into main Apr 8, 2026
3 checks passed
@sadiq1971 sadiq1971 deleted the feat/e2e-layer1-interfaces branch April 8, 2026 18:35
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.

[E2E] Devstack: Layer 1 (interfaces + types) + compose file scaffold

2 participants