Skip to content
cccskills
FreePublished on GitHub

migrate-pytest

Convert a pytest integration test into a deterministic test-loop test. The workflow documents scenarios and setup, studies existing test-loop patterns, plans the migration for confirmation, then writes and verifies the replacement and cleans up references.

OriginalShow the original 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.

near/nearcore2,621 stars(GitHub 2,621 + cccskills 0)

Run score Not tested

See how to install

Good for

  • Migrate a pytest integration test to test-loop
  • Document test scenarios before a migration
  • Replace an existing pytest with a deterministic test

Files included (1)

  • SKILL.md3.0 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

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

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

Update NEAR Protocol’s minimum supported version by one and bundle the related feature and configuration cleanup into a single pull request. It also regenerates snapshots and API specifications and runs the prescribed checks.

  • Deprecating the next supported protocol version
  • Removing obsolete protocol feature gates
  • Bundling version cleanup into one pull request
near/nearcore2.6KUpdated Oct 29, 2026

pr

FreeSummary

Prepare a GitHub pull request from staged changes by generating a branch name, commit message, title, and description. It presents the details for confirmation first, then can create the PR as a draft by default.

  • Open a pull request for staged code changes
  • Send completed work to GitHub for review
  • Create a draft PR with a generated title and summary
near/nearcore2.6KUpdated Oct 29, 2026

pr-review

FreeSummary

Review a Rust pull request for merge-blocking problems in correctness, production safety, performance, security, Rust usage, and code comments. It checks surrounding project context and returns actionable findings with file and line references.

  • Review a Rust pull request before merging
  • Check a branch diff for blocking issues
  • Look for security and production risks in Rust changes
near/nearcore2.6KUpdated Oct 29, 2026

update-generated

FreeSummary

Regenerate the checked-in OpenAPI specification, insta snapshots, and protocol schema in sequence. The workflow stops when a step fails and asks before copying a changed protocol schema into the tracked file.

  • Refresh the checked-in OpenAPI specification
  • Accept updated insta test snapshots
  • Check and review generated protocol schema changes
near/nearcore2.6KUpdated Oct 29, 2026

See all skills by near

Report a problem with this skill