Simple test execution
Never have to manage a local/development blockchain for your smart contract tests. We run a modified EOSIO Virtual Machine on our backend which is specifically desgined for testing.
Easy contract table setup
Easily configure the test environment your smart contract runs in by loading initial contract table data from JSON files.
Works everywhere you do; on MacOS, Linux, and unlike EOSIO, we also support Windows.
Massive number of tests
Want to run 10s or 100s of variants of test inputs? No problem, we have you covered. We take care of running the infrastructure so that you don’t need to spin up multiple nodeos sessions.
Debug deployed smart contracts
Hydra accepts EOSIO snapshots which means you can quickly recreate the conditions that lead to a bug on a publicly deployed smart contract.
Install Hyra client
npm i -g hydra
Bootstrap your test case definitions
Write your test case
Using the testing library of your choice. We support Jest out of the box:
npm i -S jest
Run your tests against Hydra server
Read the docs
Hydra is the full-fledged EOSIO node developed by Block One.
The biggest convenience feature in our opinion is not having to set up and configure a local blockchain at all, which would require significant infrastructure to recreate.
We spend our time on the tooling, so you don’t have to.
If you would still like to see a feature that is currently missing in Hydra, please contact us.
Some testing frameworks try to hide this fact by including EOSIO as a docker container as part of their toolset, however you are still restricted to all the limitations and disadvantages of running a local blockchain:
- Require EOSIO and/or Docker to be installed on your system, making it infeasible to run on low-resource systems like CI pipelines.
- Running a local blockchain requires significant CPU and storage resources, slowing down the rest of your system.
- Cannot run tests in parallel because all operate on the same local blockchain node.
- You are restricted to the 500ms block production time, even though your transactions might run in microseconds.
The approach we have taken with Hydra is fundamentally different: While we have similar APIs to existing testing tools, we offer additional convenience features and eliminate all of the drawbacks of running a local blockchain by running a modified EOSIO node on our backend which is specifically desgined for testing: We are not concerned with CPU/NET/RAM resource restrictions of individual accounts or with producing blocks. Instead, we use our backend to run transactions using the EOSVM while accurately emulating the rest of the EOSIO software.
- Block production: The block time and block number are always 0, but can be mocked using our testing framework.
- Detailed modelling of RAM/CPU and NET per account usage limits. However, we do support transaction traces including transaction execution time.
- Running Deferred transactions: Deferred transactions are not automatically executed after the stated delay. Instead, you can get a list of all scheduled transaction and can then decide to run them manually in your test cases. Note that deferred transactions are deprecated and are not guaranteed to run even under normal conditions.
If you have deeper questions about our infrastructure, robustness, or would prefer a custom SLA, feel free to get in touch.