In order to build Supersim in a collaborative and test-driven way, we need a set of tests against which to build the tool. This test suite should cover the following test cases for Supersim (where appropriate, tests should be broken down by service):
[ ] test_environment_initialization: It should verify that multiple Anvil instances can be started and configured correctly.
[ ] test_genesis_state: It should pre-deploy all smart contracts needed for testing interoperable optimism chains, when run in vanilla mode.
[ ] test_genesis_state_fork: It should update the genesis state for forked chains to ensure all smart contracts needed for testing interoperability are present.
[ ] test_cross_chain_message_passing: It should ensure that messages can be sent and received between different L2 chains running locally.
[ ] test_invariants: It should check for interop message invariants and fail if they are not met
[ ] test_timestamp_invariant: It should fail if the timestamp at the time of inclusion of the executing message is less than the timestamp of the initiating message.
[ ] test_chainID_invariant: It should fail if the initiating message is not in the dependency set.
[ ] test_message_expiry_invariant: It should fail if the timestamp at the time of inclusion of the executing message is higher than the initiating message timestamp.
[ ] test_message_relaying: It should ensure that messages can be “sent” and “received” between different L2 instances.
[ ] test_initiating_message: It should log an event when an initiating message from the source chain is created.
[ ] test_destination_receipt: It should ensure that destination chain can ingest source chain message`.
[ ] test_destination_execution: It should fire an executing message after confirming the source initiating message.
[ ] test_cross_chain_erc20_asset_transfers: ensures that erc20’s can be transferred between chains. (The exact implementation on this is still TBD (see this doc), so this may be out of scope for the initial set of tests.)
The above is a minimal set of tests for the Supersim MVP. Additional tests may be needed, and can be added as part of a PR closing this issue, or in subsequent PRs as needed.
Definition of Done
A contributor to Supersim can run the tests above to test the progress of the Supersim project.
In order to build Supersim in a collaborative and test-driven way, we need a set of tests against which to build the tool. This test suite should cover the following test cases for Supersim (where appropriate, tests should be broken down by service):
test_environment_initialization
: It should verify that multiple Anvil instances can be started and configured correctly.test_genesis_state
: It should pre-deploy all smart contracts needed for testing interoperable optimism chains, when run in vanilla mode.test_genesis_state_fork
: It should update the genesis state for forked chains to ensure all smart contracts needed for testing interoperability are present.test_cross_chain_message_passing
: It should ensure that messages can be sent and received between different L2 chains running locally.test_invariants
: It should check for interop message invariants and fail if they are not mettest_timestamp_invariant
: It should fail if the timestamp at the time of inclusion of the executing message is less than the timestamp of the initiating message.test_chainID_invariant
: It should fail if the initiating message is not in the dependency set.test_message_expiry_invariant
: It should fail if the timestamp at the time of inclusion of the executing message is higher than the initiating message timestamp.test_message_relaying
: It should ensure that messages can be “sent” and “received” between different L2 instances.test_initiating_message
: It should log an event when an initiating message from the source chain is created.test_destination_receipt
: It should ensure that destination chain can ingest source chain message`.test_destination_execution
: It should fire an executing message after confirming the source initiating message.test_cross_chain_erc20_asset_transfers
: ensures that erc20’s can be transferred between chains. (The exact implementation on this is still TBD (see this doc), so this may be out of scope for the initial set of tests.)The above is a minimal set of tests for the Supersim MVP. Additional tests may be needed, and can be added as part of a PR closing this issue, or in subsequent PRs as needed.
Definition of Done A contributor to Supersim can run the tests above to test the progress of the Supersim project.