with one click
test
// Runs tests for the GenVM project. Use after making code changes to verify correctness.
// Runs tests for the GenVM project. Use after making code changes to verify correctness.
Builds the GenVM project. Use after making code changes to compile Rust binaries.
Add RST docstrings to public Python methods/classes. Use when asked to document Python code.
Sets up the development environment for GenVM repository. Use when setting up the repo for the first time or when dependencies need to be refreshed.
| name | test |
| description | Runs tests for the GenVM project. Use after making code changes to verify correctness. |
GenVM uses ya-test-runner for all tests. Before running tests, ensure the project is built (see /build skill).
Run all tests:
nix develop .#mock-tests --command ya-test-runner run
Run release tests (stable integration):
nix develop .#mock-tests --command ya-test-runner --filter-tag "$(cat tests/presets/release.txt)" run
Run a specific test:
nix develop .#mock-tests --command ya-test-runner run --filter-name 'test_name'
ya-test-runner run [OPTIONS]
Options:
| Flag | Description |
|---|---|
--filter-name REGEX | Filter tests by name regex |
--filter-tag EXPR | Filter tests by tags (e.g., stable & !slow) |
--filter-continue FILE | Re-run only tests from a continue file |
--fail-fast | Stop execution after first failure |
--coverage | Enable coverage collection for Rust tests |
--log-level LEVEL | Set log level (trace/debug/info/warning/error) |
# Show available tests
ya-test-runner show test
# Show execution plan
ya-test-runner show plan
# Show available services
ya-test-runner show services
# Show available tags
ya-test-runner show tags
Presets are tag expressions stored in tests/presets/:
| Preset | Expression | Use Case |
|---|---|---|
release.txt | integration & stable | CI release tests |
rust.txt | rust | integration | Rust development |
python.txt | python | Python SDK tests |
Usage:
ya-test-runner --filter-tag "$(cat tests/presets/release.txt)" run
tests/cases/)End-to-end tests using jsonnet configuration. Services (manager, modules, webdriver) are started automatically.
nix develop .#mock-tests --command ya-test-runner --filter-tag integration run
Cargo tests for Rust crates:
nix develop .#rust-test --command ya-test-runner --filter-tag rust run
With coverage:
nix develop .#rust-test --command ya-test-runner --filter-tag rust --coverage run
Tests for the Python standard library (genlayer-py-std):
nix develop .#mock-tests --command ya-test-runner --filter-tag python run
Or directly with pytest inside nix develop:
nix develop .#mock-tests --command bash -c "cd runners/genlayer-py-std && poetry run pytest tests/"
Coverage: pytest is configured with --cov and --cov-fail-under=75. Coverage scope includes genlayer.types, genlayer.calldata, genlayer.storage, genlayer.evm, genlayer._internal, and genlayer_embeddings. Must run inside nix develop for numpy-dependent tests and correct coverage resolution.
For web-related tests (semi-stable/unstable), webdriver is started automatically by ya-test-runner. To manually start it:
bash modules/webdriver/build-and-run.sh
If WASM files or compilation changed, precompile to save test time:
./build/out/bin/genvm precompile
When tests fail, ya-test-runner writes failed test names to build/test-artifacts/continue/<timestamp>-<random>. Re-run only failed tests:
# Use filename shown in failure summary
ya-test-runner --filter-continue 20260123-143052-abc123 run
| What to test | Command |
|---|---|
| All tests | nix develop .#mock-tests --command ya-test-runner run |
| Release tests | nix develop .#mock-tests --command ya-test-runner --filter-tag "$(cat tests/presets/release.txt)" run |
| Rust tests | nix develop .#rust-test --command ya-test-runner --filter-tag rust run |
| Python (poetry) | nix develop .#mock-tests --command bash -c "cd runners/genlayer-py-std && poetry run pytest tests/" |
| Re-run failed | ya-test-runner --filter-continue <file> run |
| With debug logs | nix develop .#mock-tests --command ya-test-runner run --log-level debug |
| Show test list | nix develop .#mock-tests --command ya-test-runner show test |