Relation to Tevm
Where this repo sits
Tevm used to be a single monorepo, evmts/tevm-monorepo.
It is being split into focused repositories, each publishing its own packages on its own cadence with
its Git history preserved. evmts/tevm-test is the one that owns testing.
tevm-monorepo core node, EVM, state, actions, memory-client — the `tevm` package
├── tevm-test @tevm/test-matchers, @tevm/test-node, @tevm/test-utils ← you are here
├── tevm-contract @tevm/contract — the shared, type-safe contract kernel
├── tevm-utils @tevm/utils — shared low-level helpers
├── tevm-bundler Solidity-import compiler and the Vite/webpack/Rollup/… plugins
├── tevm-cli @tevm/cli — the `tevm` binary
├── tevm-ethers Ethers v6 integration
├── tevm-logger @tevm/logger — shared structured logging
├── tevm-mud @tevm/mud — MUD optimistic state integration
└── tevm-examples standalone example applications
What depends on what
Tevm Test sits on top of core. It consumes tevm, @tevm/node, @tevm/actions,
@tevm/memory-client, @tevm/contract, @tevm/errors, and @tevm/utils; nothing in core depends on it
at runtime.
| Package | Depends on | Peer dependencies |
|---|---|---|
@tevm/test-matchers | @tevm/actions, @tevm/contract, @tevm/errors, @tevm/node, @tevm/utils, abitype, ox, viem, vitest | tevm >= 1.0.0, viem ^2.49.3 |
@tevm/test-node | @tevm/common, @tevm/memory-client, @tevm/node, tevm/server | tevm, viem |
@tevm/test-utils | @tevm/contract, @ponder/utils, viem | viem |
The one-way dependency is why the split is worth doing: test tooling can ship a fix on Tuesday without waiting for a core release, and a core release does not have to re-publish the matchers.
Versioning
The packages track Tevm core's version line — both are on 1.0.0-rc.151 today — so that a matching pair
is obvious at a glance. They are released independently with Changesets
and published from GitHub Actions with npm provenance.
That coupling is a convention, not a constraint enforced by the resolver. @tevm/test-matchers declares
tevm >= 1.0.0 as a peer, so it will install against any 1.x core.
Which package do I want?
- Testing your own contracts or your app's chain interactions in TypeScript —
@tevm/test-matchers, plus@tevm/test-utilsif you want ready-made fixtures. - Testing against a real chain without the flakiness —
@tevm/test-node. - Running an EVM in the browser, in Node, or in an app — you want core:
tevmand node.tevm.sh. Nothing here is needed in production; these are devDependencies. - Importing
.solfiles directly in TypeScript — that's the bundler, inevmts/tevm-bundler.
Documentation map
| Site | Covers |
|---|---|
| tevm.sh | Tevm overview and the wider ecosystem |
| node.tevm.sh | The Tevm node: EVM, state, forking, JSON-RPC, bundler |
| test.tevm.sh | This site — matchers, snapshot test node, fixtures |
Contributing
Issues and pull requests for anything on this site belong in
evmts/tevm-test. Bugs in the EVM itself, in forking, or in the
JSON-RPC layer belong in evmts/tevm-monorepo.
Local development needs Node 24 and pnpm 9:
pnpm install
pnpm lint
pnpm typecheck
pnpm build
pnpm testThe docs site is in docs/:
pnpm --filter @tevm/test-docs dev
pnpm --filter @tevm/test-docs build
