← ClaudeAtlas

rn-write-testslisted

Use to write tests for an Expo + RN app: Jest + React Native Testing Library for unit/integration (components, hooks, queries, mutations) and Maestro for end-to-end flows (sign-in, navigation, forms). Sets up the testing stack on first call (jest-expo preset, RNTL, jest config) and writes a focused test next to the source file. Triggers on: "write tests for X", "add e2e test", "mock expo-notifications", "test this hook". Not for: choosing what to test (the user decides), running the existing test suite (just `npm test`), or testing pure logic outside an Expo project.
lukedj78/dev-flow · ★ 4 · Testing & QA · score 77
Install: claude install-skill lukedj78/dev-flow
# rn-write-tests — Jest + RNTL + Maestro testing for Expo + RN ## Contract See `references/contracts.md` (vendored from `dev-flow`). Key facts: - Reads `<project-root>/.workflow/meta.json#stack.framework` — must be `"expo-rn"`. - Adds dev dependencies + Jest config on first call (idempotent: detects existing setup). - Writes test files under `<project-root>/__tests__/` (Jest convention) for unit/integration. - Writes Maestro YAML flows under `<project-root>/.maestro/` for e2e. - Does NOT modify `meta.json#phase`. ## When this skill applies - User asks to write a test for a specific source file or flow. - Orchestrator does NOT route here automatically — test writing is on-demand. ## Knowledge dependencies (read these first) - `rn-fundamentals/SKILL.md` — TS strict, modern primitives the tests will see. - `rn-data-fetching/references/patterns.md` — query/mutation patterns the tests must exercise. ## Workflow ### Step 1 — Verify preconditions Read `.workflow/meta.json`. Abort if `stack.framework != "expo-rn"`. ### Step 2 — Detect / install the test stack Check if `jest`, `jest-expo`, `@testing-library/react-native` are in `package.json`. If not: ```bash npx expo install --dev \ jest jest-expo \ @testing-library/react-native \ @testing-library/jest-native \ @types/jest -- --legacy-peer-deps ``` (See `references/jest-setup.md` for the full config.) For Maestro: detect `.maestro/` directory. If missing AND user wants e2e, see `references/maestro-setup.md` (man