- Category
- Developer Tools
- Rank
- No. 842Tools index
Previous survey · No. 848 ·
- Pricing
- Open Source
- Type
- TOOL
- Builder
- wevm
- GitHub
- 141 stars
- Latest release
- v0.2.15
- Date
About
Spin up HTTP testing instances for Ethereum — Anvil, Hardhat, and more, for fast end-to-end tests.
What it does
Prool manages isolated Ethereum service processes behind stable HTTP and WebSocket addresses. Tests select instances by numeric key, control their lifecycle, or acquire exclusive leases from a bounded pool. Built-in definitions cover Anvil, Tempo, and Alto, while custom definitions can wrap other services.
Why it's ranked here
Prool solves process isolation and reuse, not merely process startup. Keyed routing gives workers separate state, while exclusive leases support bounded reuse and ordered waiting. Lifecycle controls, health checks, WebSocket proxying, custom instances, and dedicated Vitest integration make it unusually complete for concurrent Ethereum integration tests.
What's good
The pool handles concurrency deliberately: duplicate lifecycle operations share promises, acquisitions wait in order, and failed resets destroy contaminated instances before reuse. Vitest can assign one direct instance per worker or start each worker's instance on its first request. Named endpoints retain protocol-specific TypeScript types.
Tradeoffs
The built-in catalog is narrow: Anvil and Tempo execution nodes plus the Alto bundler. Those adapters require separately installed tools, and Alto is an optional peer dependency. The package requires Node 22 or newer. Its server proxies only the default endpoint over HTTP or WebSocket, rejecting a TCP default endpoint.
How to use it well
Use Prool for Node-based integration suites that need worker-isolated Ethereum processes, predictable cleanup, or scarce instances shared through exclusive leases. Prefer keyed servers when workers should start instances on first request, and eager pools when every worker needs one immediately. It orchestrates services but does not install Foundry, Tempo, or Alto for you.
Technical notes+
package.json defines an ESM npm package requiring Node >=22, with root, ./vitest, and ./testcontainers exports. src/index.ts exposes Instance, Pool, and Server namespaces. src/Server.ts implements keyed HTTP and WebSocket proxying, lifecycle and message endpoints, CORS, health checks, plus token-based lease acquisition and release. src/Pool.ts deduplicates concurrent lifecycle operations, enforces limits, queues lease waiters in order, resets released instances, and destroys an instance after reset failure. src/vitest/Server.ts starts each worker-scoped instance on its first request; src/vitest/Pool.ts eagerly creates one instance per configured worker. Tests appear beside implementation in src/Pool.test.ts, src/Server.test.ts, and src/Instance.test.ts.
Observed
- License
- MIT
- Primary language
- TypeScript
- Packaging
- ES module npm package with root, Vitest, and Testcontainers export surfaces
- Install surface
- Installable with npm, pnpm, or Bun
- Interface
- Programmatic library plus HTTP and WebSocket server endpoints
- Runtime support
- Node.js 22 or newer
- Built-in instances
- Anvil, Tempo, Tempo Zone, and Alto are exported from the instance module
- Tests
- Vitest test files are colocated under src
Read from README.md, package.json, src/index.ts, src/Server.ts, src/Pool.ts, src/Instance.ts, src/Pool.test.ts, src/Server.test.ts, src/Instance.test.ts, src/vitest/Pool.ts, src/vitest/index.ts, src/vitest/Server.ts, src/instances/alto.ts.
What it can do
Spin up Anvil HTTP testing instances
Configuration parameters → Running Anvil test instance
Spin up Hardhat HTTP testing instances
Configuration parameters → Running Hardhat test instance
Create Ethereum testing environments
Test specifications → HTTP testing instance for Ethereum
Execute end-to-end tests
Test cases and Ethereum application → Test results and reports
Provision isolated testing networks
Network configuration → Isolated Ethereum test network
Tags
Tech Stack
Comments (0)
No comments yet
Editorially curated, with community endorsements as a secondary signal. Corrections welcome.
