migrate-to-rstest

187installs71stars

Install to Claude Code

npx -y skills add https://github.com/rstackjs/agent-skills --skill migrate-to-rstest

Description

migrate to rstest

SKILL.md

---
name: migrate-to-rstest
description: Migrate Jest or Vitest projects to Rstest. Use when asked to move from Jest/Vitest to Rstest, replace `jest`/`vi` APIs with `@rstest/core`, translate config into `rstest.config.ts`, update scripts/coverage/setup/mocks/snapshots/projects, or diagnose migration failures caused by Rstest's Rsbuild/Rspack execution model or version skew.
---

# Migrate to Rstest

## Goal

Migrate Jest/Vitest tests and config to Rstest with minimal behavior changes. Use the current Rstest migration docs for exact mappings; this skill adds scope, dependency, and cleanup guardrails.

## Workflow

1. Detect runner and scope (`references/detect-test-framework.md`).
2. Run dependency/version gates (`references/dependency-install-gate.md`).
3. Read only the needed deltas: Jest, Vitest, and/or global API replacement.
4. Migrate scripts/config/setup before tests; prefer adapters or Rsbuild/Rspack config fixes before editing test bodies.
5. Validate discovery/types/run, fixing failures in this order: dependency skew, config/resolver, setup/env/coverage, mocks/timers/snapshots, test bodies.
6. After the scope is green, remove only scope-local legacy files and devDeps no remaining scope uses.
7. Summarize changes, kept legacy files, unsupported fields, and TODOs.

## Guardrails

- Keep the smallest viable scope; do not broaden a monorepo migration or bulk-rewrite tests when config/setup fixes are plausible.
- Do not change production behavior, assertions, test names, scenarios, or coverage thresholds to make migration pass.
- No `jest`/`vi` shims or aliases; rewrite call sites to Rstest APIs (`references/global-api-migration.md`).
- Do not silently drop unknown config fields; verify or report them as unsupported.

## High-risk Rstest deltas

- `rstest` / `rstest run` is single-run; watch mode is `rstest --watch` or `rstest watch`.
- `globals` defaults to `false`; if globals remain, set `globals: true` and add `@rstest/core/globals` types.
- Rstest runs on Rsbuild/Rspack. Use `references/dependency-install-gate.md` for latest-only APIs, coverage providers, adapters, plugins, and toolchain-version fallbacks.

## Escalate before large edits

If the next fix requires many test edits or production source changes, stop and report: why smaller fixes failed, options, risks, and the recommended path.