Vibeleaderboard
Index / tool
Visit github.com
Category
Developer Tools
Rank

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 parametersRunning Anvil test instance

  • Spin up Hardhat HTTP testing instances

    Configuration parametersRunning Hardhat test instance

  • Create Ethereum testing environments

    Test specificationsHTTP testing instance for Ethereum

  • Execute end-to-end tests

    Test cases and Ethereum applicationTest results and reports

  • Provision isolated testing networks

    Network configurationIsolated Ethereum test network

Tags

ethereumtestinganvilweb3wevm

Tech Stack

Node.jsTypeScript

Comments (0)

No comments yet

Editorially curated, with community endorsements as a secondary signal. Corrections welcome.