chore: sync submodule state (parent ref update)
Made-with: Cursor
This commit is contained in:
142
docs/INTEGRATION_AND_TESTING.md
Normal file
142
docs/INTEGRATION_AND_TESTING.md
Normal file
@@ -0,0 +1,142 @@
|
||||
# Integration and Testing
|
||||
|
||||
How to build, integrate, and test the MetaMask dual-chain provider, explorer config, token-aggregation API, and Chain 138 Snap. **Default package manager: pnpm.**
|
||||
|
||||
---
|
||||
|
||||
## Run all (pnpm)
|
||||
|
||||
From the repo root or `metamask-integration/`:
|
||||
|
||||
```bash
|
||||
cd metamask-integration
|
||||
pnpm run run-all
|
||||
```
|
||||
|
||||
Runs: (1) full integration script (provider test + config validation), (2) token-aggregation `pnpm install` + `pnpm run build`, (3) explorer frontend `pnpm install` + `pnpm run build`, (4) Chain 138 Snap install + build (Snap template uses yarn internally).
|
||||
|
||||
---
|
||||
|
||||
## 1. Provider (Node) integration test
|
||||
|
||||
From the repo root (or `metamask-integration/`):
|
||||
|
||||
```bash
|
||||
cd metamask-integration/provider
|
||||
pnpm exec node test-integration.mjs
|
||||
# or: node test-integration.mjs
|
||||
```
|
||||
|
||||
Tests chains, tokens, wallet exports, and oracles without `window.ethereum`. Expect: **4 passed, 0 failed**.
|
||||
|
||||
---
|
||||
|
||||
## 2. Full integration script
|
||||
|
||||
Runs provider test + validates explorer config JSONs + optional Explorer API and token-aggregation API:
|
||||
|
||||
```bash
|
||||
cd metamask-integration
|
||||
pnpm run test:integration
|
||||
# or: ./scripts/integration-test-all.sh
|
||||
```
|
||||
|
||||
**Optional env (for live API checks):**
|
||||
|
||||
- `EXPLORER_API_URL` – e.g. `http://localhost:8080` (explorer backend)
|
||||
- `TOKEN_AGGREGATION_URL` – e.g. `http://localhost:3000` (token-aggregation service)
|
||||
|
||||
Config files validated from repo: `docs/04-configuration/metamask/DUAL_CHAIN_NETWORKS.json`, `DUAL_CHAIN_TOKEN_LIST.tokenlist.json`.
|
||||
|
||||
---
|
||||
|
||||
## 3. Explorer API (config endpoints)
|
||||
|
||||
Explorer backend serves:
|
||||
|
||||
- `GET /api/config/networks` – Chain 138 + Ethereum Mainnet + ALL Mainnet params
|
||||
- `GET /api/config/token-list` – Uniswap token list format
|
||||
|
||||
To test against a running explorer:
|
||||
|
||||
```bash
|
||||
export EXPLORER_API_URL=http://localhost:8080
|
||||
./scripts/integration-test-all.sh
|
||||
```
|
||||
|
||||
Explorer backend requires DB; see `explorer-monorepo/backend/` for build/run.
|
||||
|
||||
---
|
||||
|
||||
## 4. Token-aggregation API
|
||||
|
||||
Token-aggregation service (Chain 138 + ALL Mainnet) exposes:
|
||||
|
||||
**Note:** The service may have existing TypeScript build issues in `canonical-tokens.ts`; the REST API is documented and can be tested when the service is run (e.g. via Docker or with DB).
|
||||
|
||||
- `GET /api/v1/chains` – supported chains
|
||||
- `GET /api/v1/tokens?chainId=138` – tokens and market data
|
||||
- See `smom-dbis-138/services/token-aggregation/docs/REST_API_REFERENCE.md`
|
||||
|
||||
To test when the service is running (with DB):
|
||||
|
||||
```bash
|
||||
export TOKEN_AGGREGATION_URL=http://localhost:3000
|
||||
./scripts/integration-test-all.sh
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 5. Provider E2E (manual, browser)
|
||||
|
||||
Open `metamask-integration/examples/provider-e2e.html` **via a local server** (e.g. `npx serve metamask-integration/examples` or your app) with MetaMask installed.
|
||||
|
||||
- **Add chains** – adds Chain 138, Ethereum Mainnet, ALL Mainnet
|
||||
- **Switch chain** – 138 / 1 / 651940
|
||||
- **List tokens** – tokens from provider for current chain
|
||||
- **ETH/USD price** – oracle price (requires ethers; loads from esm.sh if needed)
|
||||
|
||||
---
|
||||
|
||||
## 6. Chain 138 Snap
|
||||
|
||||
Snap provides:
|
||||
|
||||
- `get_chain138_config` – Chain 138 params for `wallet_addEthereumChain`
|
||||
- `get_chain138_market_chains` – fetches `GET {apiBaseUrl}/api/v1/chains` (pass token-aggregation base URL)
|
||||
- `hello` – demo dialog
|
||||
|
||||
**Build and run (from repo root):**
|
||||
|
||||
```bash
|
||||
cd metamask-integration/chain138-snap
|
||||
yarn install
|
||||
yarn build
|
||||
yarn start
|
||||
```
|
||||
|
||||
Then install the Snap in MetaMask Flask using the provided site (e.g. `http://localhost:8000`). Invoke from a dapp:
|
||||
|
||||
```js
|
||||
await ethereum.request({
|
||||
method: 'wallet_invokeSnap',
|
||||
params: {
|
||||
snapId: 'YOUR_SNAP_ID',
|
||||
request: { method: 'get_chain138_config' },
|
||||
},
|
||||
});
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Summary
|
||||
|
||||
| Item | Command / location (pnpm default) |
|
||||
|------|------------------------------------|
|
||||
| **Run all** | `cd metamask-integration && pnpm run run-all` |
|
||||
| Provider test | `cd provider && pnpm exec node test-integration.mjs` |
|
||||
| Full integration | `pnpm run test:integration` or `./scripts/integration-test-all.sh` |
|
||||
| Explorer config | Validated by script; optional `EXPLORER_API_URL` |
|
||||
| Token-aggregation | `cd smom-dbis-138/services/token-aggregation && pnpm install && pnpm run build`; optional `TOKEN_AGGREGATION_URL` in script |
|
||||
| Provider E2E | Serve `examples/provider-e2e.html`, use MetaMask |
|
||||
| Snap | `chain138-snap`: pnpm install, pnpm run build, pnpm run start (template uses yarn internally); install in Flask |
|
||||
Reference in New Issue
Block a user