- Port test config from 'zemu' - Copy snapshots from 'zemu' - Adapt conftest.py to support library mode - Add a new test step in the workflow
app-ethereum
Ethereum wallet application for Ledger Blue, Nano S, Nano S Plus and Nano X
« Explore the docs »
Report Bug
· Request Feature
· Request New Network
Table of Contents
About the project
Ethereum wallet application framework for Nano S, Nano S Plus and Nano X.
Ledger Blue is not maintained anymore, but the app can still be compiled for this target using the branch blue-final-release.
Documentation
This app follows the specification available in the doc/ folder.
To compile it and load it on a device, please check out our developer portal.
Plugins
We have the concept of plugins in the ETH app. Find the documentations here:
- Blog Ethereum plugins
- Ethereum application Plugins : Technical Specifications
- Plugin guide
- Boilerplate plugin
Testing
Testing is done via the open-source framework zemu.
Requirements
Build the applications required by the test suite
-
Add your BOLOS SDKs path to:
NANOS_SDKandNANOX_SDK -
Go to the
testsfolder and run./build_local_test_elfs.shcd tests # This helper script will build the applications required by the test suite and move them at the right place. yarn install ./build_local_test_elfs.sh
Running all tests
With Makefile
-
Then you can install and run tests by simply running on the
rootof the repo:make test # This will run `make install_tests` and `make run_tests`
With yarn
-
Go to the
testsfolder and run:yarn test
Running a specific test
-
Go to the
testsfolder and run:yarn jest --runInBand --detectOpenHandles {YourTestFile} -
For example with the
send test:yarn jest --runInBand --detectOpenHandles src/send.test.js
Adding tests
Zemu
To add tests, copy one of the already existing test files in tests/src/.
You then need to adapt the buffer and tx variables to adapt to the APDU you wish to send.
- Adapt the expected screen flow. Please create a folder under
tests/snapshotswith the name of the test you're performing. - Then adapt the
ORIGINAL_SNAPSHOT_PATH_PREFIXwith the name of the folder you just created. - To create the snapshots, modify the
SNAPSHOT_PATH_PREFIXand set it to be equal toORIGINAL_SNAPSHOT_PATH_PREFIX. - Run the tests once, this will create all the snapshots in the folder you created.
- Put back your
SNAPSHOT_PATH_PREFIXtosnapshots/tmp/.
Finally make sure you adapt the expected signature!
Update binaries
Don't forget to update the binaries in the test folder. To do so, compile with those environment variables:
make DEBUG=1 ALLOW_DATA=1
Then copy the binary to the tests/elfs folder (in this case, compiled with SDK for nanoS):
cp bin/app.elf tests/elfs/ethereum_nanos.elf
Repeat the operation for a binary compiled with nanoX SDK and change for ethereum_nanox.elf.
Contributing
Contributions are what makes the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag enhancement.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/my-feature) - Commit your Changes (
git commit -m 'feat: my new feature) - Push to the Branch (
git push origin feature/my-feature) - Open a Pull Request
Please try to follow Conventional Commits.