- name
- migrate-pytest
- description
- Migrate a pytest integration test to the test-loop framework. Use when converting a pytest from pytest/tests/ to a deterministic test-loop test.
- argument-hint
- <path-to-pytest-file>
- allowed-tools
- Read, Grep, Glob, Bash, Edit, Write
Migrate a pytest integration test to the test-loop framework.
**Target pytest file:** $ARGUMENTS
Follow these steps in order:
## 1. Understand the pytest
- Read the target pytest file
- Identify each distinct test scenario (steps, test methods, or test functions)
- For each scenario, write in details:
- What is being tested (the behavior under test)
- The network topology (how many validators, archival nodes, RPC nodes, observers)
- Key configuration (epoch_length, gc settings, archive mode, split storage, etc.)
- The sequence of actions (start nodes, wait for blocks, kill/restart, send txs, etc.)
- The assertions (what is verified and how)
- Present this analysis to the user before proceeding
- Write this analysis into `<test_name>_migration.md` in the project root.
## 2. Study the test-loop framework
- Read `test-loop-tests/README.md` for the builder API and patterns
- Read relevant examples from `test-loop-tests/src/examples/` that are relevant to the pytest being migrated (list available examples with `ls test-loop-tests/src/examples/`)
- Browse existing tests in `test-loop-tests/src/tests/` for patterns similar to what the pytest does
## 3. Design the test-loop test
For each pytest scenario, decide:
- Whether it maps to a separate `#[test]` function or can be combined
- The simplest builder API setup that covers the scenario
- Which test-loop utilities to use (runners, node accessors, transactions)
- Whether any simplification is appropriate (the README says: "it would be _extremely_ hard to migrate the logic precisely. Instead, migrate tests only if they make sense to you")
Present the plan to the user and get confirmation before writing code.
## 4. Write the test
- Create `test-loop-tests/src/tests/<test_name>.rs`
- Follow the instructions in `test-loop-tests/README.md`
- Register the module in `test-loop-tests/src/tests/mod.rs` (keep alphabetical order)
## 5. Verify
- Run `cargo check --package test-loop-tests --features test_features` to verify compilation
- Run each test individually:
`cargo test --package test-loop-tests --features test_features -- tests::<module>::<test_name> --exact --show-output`
- Fix any compilation errors or test failures
- Run `cargo fmt --package test-loop-tests`
## 6. Clean up the pytest
- Delete the original pytest file
- Remove its entries from `nightly/pytest-sanity.txt` (check for both regular and `--features nightly` variants, and commented-out spice variants)
- Search for any other references to the pytest filename
## 7. Summary
Report what was done:
- Which pytest scenarios were migrated (and any that were intentionally simplified or skipped)
- The new test file location and test function names
- Approximate runtime comparison if available
Ver no GitHub