# Evm Wallet Docker E2e

> Run the evm-wallet Docker e2e tests (build, start stack, wait for healthy, test, diagnose failures).

- Skill: `consensys-incorporated/evm-wallet-docker-e2e` (Agent Skill)
- Install (CLI): `npx skillmds@latest add consensys-incorporated/evm-wallet-docker-e2e`
- Raw SKILL.md: https://api.skillmd.com/api/skills/consensys-incorporated/evm-wallet-docker-e2e/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: DevOps & Infra
- Author: consensys-incorporated (https://skillmd.com/u/consensys-incorporated)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/consensys-incorporated/evm-wallet-docker-e2e

---


Run all commands from the repo root unless noted.

## 1. Verify Docker is running

```bash
docker info 2>&1 | head -5
```

If it fails, tell the user Docker is not running and ask them to start Docker Desktop (or the daemon), then wait for confirmation before continuing.

## 2. Build the repo and Docker images

```bash
yarn workspace @ocap/evm-wallet-experiment docker:build 2>&1 | tail -30
```

This builds the full monorepo then builds the Docker images. It may take a few minutes. Report any errors from the tail output.

## 3. Tear down any existing stack, then start fresh

Always bring the stack down first to avoid stale container state (e.g. spent delegation budgets from a previous run leaking into the new run).

```bash
yarn workspace @ocap/evm-wallet-experiment docker:down 2>&1 | tail -10
```

Then start the stack:

```bash
yarn workspace @ocap/evm-wallet-experiment docker:ensure-logs && \
  yarn workspace @ocap/evm-wallet-experiment docker:compose up -d 2>&1 | tail -20
```

## 4. Wait for all services to be healthy

Poll every 10 seconds (up to 3 minutes / 18 attempts). All 8 services must reach `(healthy)` status before proceeding:

- `evm`, `bundler`
- `kernel-home-bundler-7702`, `kernel-away-bundler-7702`
- `kernel-home-bundler-hybrid`, `kernel-away-bundler-hybrid`
- `kernel-home-peer-relay`, `kernel-away-peer-relay`

```bash
i=0; while [ $i -lt 18 ]; do
  i=$((i+1))
  ps_out=$(yarn workspace @ocap/evm-wallet-experiment docker:ps 2>&1)
  healthy=$(echo "$ps_out" | grep -c "(healthy)" || true)
  echo "Attempt $i/18: $healthy/8 healthy"
  if [ "$healthy" -ge 8 ]; then echo "Stack ready."; break; fi
  if [ "$i" -eq 18 ]; then echo "Timed out:"; echo "$ps_out"; exit 1; fi
  sleep 10
done
```

If the loop exits with a timeout, show the last `docker:ps` output and stop — do not proceed to the tests.

## 5. Run the e2e tests

```bash
yarn workspace @ocap/evm-wallet-experiment test:e2e:docker 2>&1 | tail -80
```

The vitest reporter also writes structured results to `packages/evm-wallet-experiment/logs/test-results.json`.

## 6. Diagnose failures

If tests fail, investigate in this order:

### Structured test results

```bash
cat packages/evm-wallet-experiment/logs/test-results.json
```

Look at the `testResults` array for failed tests and their error messages.

### Service logs

Container logs are written to `packages/evm-wallet-experiment/logs/`. Check the service(s) relevant to the failing test mode first:

```bash
tail -150 packages/evm-wallet-experiment/logs/<service>.log
```

Service log files:

- `evm.log` — Anvil chain (check for on-chain errors)
- `kernel-home-bundler-7702.log`, `kernel-away-bundler-7702.log`
- `kernel-home-bundler-hybrid.log`, `kernel-away-bundler-hybrid.log`
- `kernel-home-peer-relay.log`, `kernel-away-peer-relay.log`

Start with the pair(s) involved in the failing test, then `evm.log` for on-chain issues.

