Skip to content

Add integration test harness with dedicated test Stellar network #619

Description

@Smartdevs17

Context

Integration tests currently run against a shared Stellar testnet, causing flaky tests due to sequence number conflicts, account limits, and rate limiting.

Current Limitation/Problem

Shared testnet accounts cause test interference. Rate limits cause random test failures. State leaks between test suites.

Expected Outcome

Dedicated test Stellar network: Dockerized Soroban standalone for contract integration tests, ephemeral per-test accounts, automatic cleanup, and snapshot/restore for speed.

Acceptance Criteria

  • Dockerized Stellar standalone: pre-configured Docker image for CI and local use
  • Per-test accounts: fresh Stellar account funded with friendbot per test case, destroyed after
  • Test lifecycle hooks: beforeAll (deploy contracts, fund accounts), afterAll (cleanup all accounts)
  • Snapshot/restore: snapshot container state after contract deployment, restore per test suite
  • CI integration: GitHub Actions service container with Soroban standalone image
  • Failsafe: 30s timeout per test, automatic retry on sequence number error (max 2 retries)
  • Performance: full contract test suite completes in <2 minutes (vs 10+ min on shared testnet)
  • Edge case: snapshot corruption recovery (re-deploy contracts from clean state)

Technical Scope

  • docker/stellar-standalone.Dockerfile - test Stellar network Docker image
  • docker-compose.test.yml - test environment composition
  • scripts/test-integration.sh - integration test runner
  • packages/test-harness/ - test fixture utilities (deployContract, fundAccount, invokeContract)
  • .github/workflows/integration-tests.yml - CI integration test workflow
  • contracts/test-helpers/ - deploy, fund, invoke helper functions

Metadata

Metadata

Labels

200-points200 point issueStellar WaveIssues in the Stellar wave programdrips-waveIssues in the Drips Wave programhighHigh complexity issue

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions