Tentative roadmap for Starknet Foundry. This document reflects the state of the roadmap at the time of writing. We strive for our roadmap to reflect user needs and feedback, expect changes to this document.
All feedback and request welcome.
- Roadmap
- Table of Contents
- Reference
- Forge
- 🏗 Test Partitioning
- 🏗 Asserting Steps in Execution
- Reverting Storage Changes in Execution
- 🏗 Sierra -> Casm Compilation
- Performance Investigation
- Advanced Forking / Forking State Asserting
- Derive Macro for
FuzzableTrait - Typesafe Contract "declare"
- Research Variant and Differential Testing, Better Fuzzing Algorithms
- Cast
- Item "size" is in the scale 1 to 5 and reflects its relative complexity compared to other items in the roadmap.
- Items marked with 🏗️ are in progress.
- Items marked with ✅ are done.
Size: 3
Partitioning test suite into smaller test suites, to be run on separate machines in CI. Similar to cargo nextest.
Size: 2
Feature for asserting the number of steps used in test execution.
Size: 3
Change the test execution model to revert storage changes from top-level calls in case of recoverable failure.
Size: 3
Sierra -> Casm performance investigation and optimization (if viable).
Size: 3
Investigate bottlenecks in standard test execution (workspace & package processing, config run, collecting configs, test execution) using tracing harnesses. Performance report on eventual findings and measurements for future optimizations.
Size: 5
New test mechanism for detecting regressions in new contract versions (for upgrades on chain). Forking and asserting state changes after executing a test scenario.
Size: 2
Ability to automatically derive Fuzzable trait for structs if they contain only Fuzzable fields.
Size: 4
Detect and fail on invalid contract names at compilation time.
Size: 5
Inspired by features from Ethereum's Foundry, research the viability of adding variant and differential testing and integrating better fuzzing algorithms.
Size: 5
New Cast Scripts with focus on the ease of use, using Scarb plugins, integrated into snforge/scarb tests structure.
Size: 1
Running sncast transaction without executing them through the fee estimation endpoint.
Size: 4
Removing non-common arguments that are used as common (e.g. -account). Internal changes to how sncast loads and
combines configuration.
Size: 4
Support for Ledger wallet, keystore support with encryption, account storage rework.
Size: 3
Native multicall support for invoking transactions in sncast invoke or a better dedicated command. Removal of
multicall files.
Size: 1
Aliases for contracts in snfoundry.toml that can be used in commands instead of contract addresses.