End-to-end test suite for validating client-server-facilitator communication across languages and frameworks.
Install all dependencies (TypeScript via pnpm, Go, Python):
pnpm install:allThis will:
- Install TypeScript dependencies via
pnpm install - Run
install.shandbuild.shfor all clients, servers, and facilitators - Handle nested directories (like
external-proxies/andlocal/)
For legacy (v1) implementations as well:
pnpm install:all:legacyIf you only want to set up v2 implementations:
pnpm setupOr manually for a specific component:
cd facilitators/go
bash install.sh
bash build.shpnpm testLaunches an interactive CLI where you can select:
- Facilitators - Payment verification/settlement services (Go, TypeScript)
- Servers - Protected endpoints requiring payment (Express, Gin, Hono, Next.js, FastAPI, Flask, etc.)
- Clients - Payment-capable HTTP clients (axios, fetch, httpx, requests, etc.)
- Extensions - Additional features like Bazaar discovery
- Protocols - EVM, SVM, and/or Aptos networks
Every valid combination of your selections will be tested. For example, selecting 2 facilitators, 3 servers, and 2 clients will generate and run all compatible test scenarios.
pnpm test --minSame interactive CLI, but with intelligent test minimization:
- 90% fewer tests compared to full mode
- Each selected component is tested at least once across all variations
- Skips redundant combinations that provide no additional coverage
- Example:
legacy-hono(v1 only) tests once, whileexpress(v1+v2, EVM+SVM) tests all 4 combinations
Perfect for rapid iteration during development while maintaining comprehensive coverage.
pnpm test -v
pnpm test --min -vAdd the -v flag to any command for verbose output:
- Prints all facilitator logs
- Prints all server logs
- Prints all client logs
- Shows detailed information after each test scenario
Useful for debugging test failures or understanding the payment flow.
Required environment variables (set in .env file):
# Client wallets
CLIENT_EVM_PRIVATE_KEY=0x... # EVM private key for client payments
CLIENT_SVM_PRIVATE_KEY=... # Solana private key for client payments
CLIENT_APTOS_PRIVATE_KEY=... # Aptos private key for client payments (hex string)
CLIENT_STELLAR_PRIVATE_KEY=... # Stellar private key for client payments
# Server payment addresses
SERVER_EVM_ADDRESS=0x... # Where servers receive EVM payments
SERVER_SVM_ADDRESS=... # Where servers receive Solana payments
SERVER_APTOS_ADDRESS=0x... # Where servers receive Aptos payments
SERVER_STELLAR_ADDRESS=... # Where servers receive Stellar payments
# Facilitator wallets (for payment verification/settlement)
FACILITATOR_EVM_PRIVATE_KEY=0x... # EVM private key for facilitator
FACILITATOR_SVM_PRIVATE_KEY=... # Solana private key for facilitator
FACILITATOR_APTOS_PRIVATE_KEY=... # Aptos private key for facilitator (hex string)
FACILITATOR_STELLAR_PRIVATE_KEY=... # Stellar private key for facilitatorYou need three separate Stellar accounts for e2e tests (client, server, facilitator):
- Go to Stellar Laboratory ➡️ Generate keypair ➡️ Fund account with Friendbot, then copy the
SecretandPublickeys so you can use them. - Add USDC trustline (required for client and server): go to Fund Account ➡️ Paste your
Public Key➡️ Add USDC Trustline ➡️ paste yourSecret key➡️ Sign transaction ➡️ Add Trustline. - Get testnet USDC from Circle Faucet (select Stellar network).
Note: The facilitator account only needs XLM (step 1). Client and server accounts need all three steps.
$ pnpm test --min
🎯 Interactive Mode
==================
✔ Select facilitators › go, typescript
✔ Select servers › express, hono, legacy-express
✔ Select clients › axios, fetch, httpx
✔ Select extensions › bazaar
✔ Select protocol families › EVM, SVM, Aptos, Stellar
📊 Coverage-Based Minimization
Total scenarios: 156
Selected scenarios: 18 (88.5% reduction)
✅ Passed: 18
❌ Failed: 0