Interchaintest
Interchaintest (formerly known as IBCtest) is a full-featured testing environment for IBC-compatible blockchains. It orchestrates Go tests that run docker containers for multiple networks concurrently across local, devnet, testnet, and mainnet.
Why use interchaintest?
In order to ship production-grade software for the Interchain, we needed sophisticated developer tooling...but IBC and Web3 have a lot of moving parts, which can lead to a steep learning curve and all sorts of pain. Recognize any of these?
- repeatedly building repo-specific, Docker- and shell-based testing solutions,
- duplication of effort, and
- difficulty in repurposing existing testing harnesses for new problem domains.
We built interchaintest
to extract patterns and create a generic test harness: a use-case-agnostic framework for generating repeatable, diagnostic tests for every aspect of IBC.
Read more at the Announcing interchaintest
blog post (opens in a new tab).
Who benefits from interchaintest
?
interchaintest
is for developers who expect top-shelf testing tools when working on blockchain protocols such as Cosmos or Ethereum.
What does interchaintest
do?
interchaintest
is a framework for testing blockchain functionality and interoperability between chains, primarily with the Inter-Blockchain Communication (IBC) protocol.
Want to quickly spin up custom testnets and dev environments to test IBC, Relayer (opens in a new tab) setup, chain infrastructure, smart contracts, etc.? interchaintest
orchestrates Go tests that utilize Docker containers for multiple IBC (opens in a new tab)-compatible blockchains.
How do I use it?
As a Module
Most people choose to import interchaintest
as a module.
- Often, teams will integrate
interchaintest
with a github CI/CD pipeline. - Most teams will write their own suite. Here's a tutorial on Writing Custom Tests.
- You can also utilize our suite of built-in Conformance Tests that exercise high-level IBC compatibility.
As a Binary
There's also an option to build and run interchaintest
as a binary (which might be preferable, e.g., with custom chain sets). You can still run Conformance Tests.