Skill

react-testing

Install
1
Install the plugin
$
npx claudepluginhub mintuz/claude-plugins --plugin web

Want just this skill?

Add to a custom plugin, then install with one command.

Description

WHEN testing React components/hooks/context with React Testing Library; NOT e2e; covers renderHook, providers, forms, and anti-patterns.

Tool Access

This skill uses the workspace's default tool permissions.

Supporting Assets
View in Repository
references/advanced.md
references/anti-patterns.md
references/components.md
references/context.md
references/forms.md
references/hooks.md
Skill Content

React Testing Library

This skill focuses on React-specific testing patterns. For general DOM testing patterns (queries, userEvent, async, accessibility), load the frontend-testing skill. For TDD workflow, load the tdd skill.

Core Principles

React components are functions - Test them like functions: inputs (props) → output (rendered DOM).

Test behavior, not implementation:

  • ✅ Test what users see and do
  • ✅ Test through public APIs (props, rendered output)
  • ❌ Don't test component state
  • ❌ Don't test component methods
  • ❌ Don't use shallow rendering

Modern RTL handles cleanup automatically:

  • No manual act() for render, userEvent, or async queries
  • No manual cleanup() - it's automatic
  • Use factory functions instead of beforeEach

Quick Reference

TopicGuide
Testing components, props, and conditional renderingcomponents.md
Testing custom hooks with renderHookhooks.md
Testing context providers and consumerscontext.md
Testing form inputs, submissions, and validationforms.md
Common React testing mistakes to avoidanti-patterns.md
Loading states, error boundaries, portals, Suspenseadvanced.md

When to Use Each Guide

Components

Use components.md when you need:

  • Basic component testing patterns
  • Testing how props affect rendered output
  • Testing conditional rendering
  • Examples of correct vs incorrect component tests

Hooks

Use hooks.md when you need:

  • Testing custom hooks with renderHook
  • Using result.current, act(), and rerender()
  • Testing hooks with props

Context

Use context.md when you need:

  • Using the wrapper option with providers
  • Setting up multiple providers
  • Creating custom render functions for context
  • Testing components that consume context

Forms

Use forms.md when you need:

  • Testing controlled inputs
  • Testing form submissions
  • Testing form validation
  • User interaction patterns with forms

Anti-Patterns

Use anti-patterns.md when you need:

  • When to avoid manual act() wrapping
  • Why manual cleanup() is unnecessary
  • Avoiding beforeEach render patterns
  • Why to avoid testing component internals
  • Why shallow rendering is problematic

Advanced

Use advanced.md when you need:

  • Testing loading states
  • Testing error boundaries
  • Testing portals
  • Testing React Suspense

Summary Checklist

React-specific checks:

  • Using render() from @testing-library/react (not enzyme's shallow/mount)
  • Using renderHook() for custom hooks
  • Using wrapper option for context providers
  • No manual act() calls (RTL handles it)
  • No manual cleanup() calls (automatic)
  • Testing component output, not internal state
  • Using factory functions, not beforeEach render
  • Following TDD workflow (see tdd skill)
  • Using general DOM testing patterns (see frontend-testing skill)
Stats
Stars14
Forks4
Last CommitDec 16, 2025
Actions

Similar Skills