Polkadot Ecosystem Tests powered by Chopsticks.
yarn test
run all testsyarn test:ui
run all tests with Vitest UIyarn test <chain>
run tests for specific chainyarn update-known-good
update KNOWN_GOOD_BLOCK_NUMBERS.env fileyarn update-env
update block numbers for all chainsyarn test -u
update snapshotsKNOWN_GOOD_BLOCK_NUMBERS.env
. If you want to run the tests against the latest block numbers, you can run yarn update-env
first.DB_PATH=./db.sqlite
in your .env
file to cache the chain state in order to speed up repeated test runs..env
and KNOWN_GOOD_BLOCK_NUMBERS.env
. This ensures everything is reproducible.yarn test -u
to update the snapshots. However, always manually inspect the diffs to ensure they are expected.Chain configurations are defined in packages/networks/src/chains. Use existing chains as examples. Make sure to update index.ts as well.
The XCM tests are defined in packages/kusama/src and packages/polkadot/src for Kusama chains and Polkadot chains respectively.
Add a new file named of <chain1>.<chain2>.test.ts
for tests between those two chains. Use existing files as examples.
The XCM tests are defined in packages/shared/src/xcm. They are implemented in such a way that they are network agnostic and can be reused across different chains. The tests should also be tolerant to minor changes regarding onchain envoronment. For example, they should not be impacted by a small change in transaction fees, and should use .redact
to round the numbers or remove fields that are constantly changing.
For network specific tests that cannot be reused, just add them as normal tests.
Environment variables can be set in .env
file. The following variables are supported:
DB_PATH
: path to the cache database.RUNTIME_LOG_LEVEL
: log level for the runtime. 5 for error, 4 for warn, 3 for info, 2 for debug, 1 for trace. Default is 0.LOG_LEVEL
: log level for Chopstick. Note, use yarn vitest
instead of yarn test
to see logs. Options are error
, warn
, info
, debug
, trace
. Default is error
.$(NETWORK_NAME)_BLOCK_NUMBER
: set block number for the chain.$(NETWORK_NAME)_WASM
: path to the chain's wasm file.$(NETWORK_NAME)_ENDPOINT
: endpoint of the chain.Known good block numbers are stored in KNOWN_GOOD_BLOCK_NUMBERS.env
. Those block numbers are used by default when running tests unless they are overriden by environment variables.
The Update Known Good Block Numbers workflow will automatically update the known good block numbers periodically.
Use yarn update-known-good
to update the known good block numbers manually.
Use yarn update-env
to fetch the latest block numbers for all chains and save them to .env
file. Note this change is ignored by git. However, it can be useful to ensure the tests are not flaky due to block number changes.
Use Update Snapshots workflow if there are some new changes breaks the tests. It will update known good block numbers, update snapshots, and open an PR. Please review the update snapshots to ensure it is expected. In case of changes due to onchain fees, we will want to adjust precision in the tests to prevent flakiness in the future.