Features
Automated
Write automated tests for your smart contracts in Typescript or Javascript. Use Hydra to bootstrap your smart contract test case definition.
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.
Multi-OS
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.
Using Hydra, we were able to write 350+ tests for AtomicAssets in significantly less time than compared to the normal nodeos and cleos test scripts. With Hydra we can see a huge improvement in the quality and coverage of our tests.
We have developers across the world and they can't easily run Dockerised tests. With Hydra, they don't need any special infrastructure and they can get up and running quickly. We also really like the ability to easily feed oracle information into tests and reset database entries.
How?
Install Hyra client
npm i -g @klevoya/hydra
Login to your account
hydra login
Bootstrap your test case definitions
hydra init
Write your test case
Using JavaScript/TypeScript and the testing library of your choice.
(We support Jest out of the box.)
Frequently Asked Questions
How is Hydra different to running nodeos?
nodeos is the full-fledged EOSIO node developed by Block One.
Why would I use this instead of building my own test environment?
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.
How is this different to some of the other test tools out there like Lamington? EOS Factory?
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.
Which version of nodeos do you support?
You use a stripped down WASM VM. How accurately do you emulate the behaviour of an EOSIO mainnet?
Who developed this?
Which functionality does Hydra support?
- 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.
How can I be sure that Hydra will be stable?
If you have deeper questions about our infrastructure, robustness, or would prefer a custom SLA, feel free to get in touch.