react-testing-library · pproenca — скилл для Claude Code: правила RTL-тестов
Скилл с 43 правилами для тестов на React Testing Library. Помогает агенту писать и ревьюить тесты, которые проверяют поведение, а не внутренности компонента.
npx skills add pproenca/dot-skills --skill react-testing-library -a claude-codeЧто делает react-testing-library
Скилл разбит на 9 категорий по приоритету: выбор запросов, асинхронность и типичные анти-паттерны идут как критические, дальше взаимодействие с пользователем, ассерты, настройка компонента, структура теста, отладка и проверка доступности. Внутри — 43 правила с префиксами вроде query-, async-, anti-, user-. Каждое лежит отдельным файлом в references/ с объяснением и примерами кода, плюс шаблон для добавления новых правил в assets/templates/_template.md.
Агент подхватывает скилл, когда вы пишете или правите тесты: выбор между getByRole и getByTestId, findBy против waitFor, userEvent вместо fireEvent, лишний act(), ручной cleanup. По сути это чек-лист, по которому агент себя останавливает. Без него он охотно цепляется за getByTestId и детали реализации.
Правила опираются на jest-dom-матчеры (toBeVisible, toHaveTextContent, toHaveValue) и на screen для запросов. Если в проекте другой набор матчеров или тесты пишутся на голом expect без jest-dom, часть советов придётся отбросить — это повод проверить, что у вас в setupTests.
Какие задачи решает
- выбрать запрос, который не сломается от рефакторинга разметки
- дождаться появления элемента без
waitForвокругgetBy - убрать лишний
act()из теста - заменить
fireEventнаuserEventи не забытьawait - проверить доступность через роли и ARIA-состояния
Примеры запросов агенту
- Напиши тест на форму логина по правилам react-testing-library
- Отревьюй этот файл тестов и найди анти-паттерны RTL
- Перепиши эти тесты с getByTestId на getByRole
Как установить react-testing-library
1Через Skills CLI (Vercel)
npx skills add pproenca/dot-skills --skill react-testing-library -a claude-code2Вручную: положить файлы
~/.claude/skills/react-testing-library/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/react-testing-library/
1Через Skills CLI (Vercel)
npx skills add pproenca/dot-skills --skill react-testing-library -a codex2Вручную: положить файлы
.agents/skills/react-testing-library/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add pproenca/dot-skills --skill react-testing-library -a cursor2Вручную: положить файлы
.cursor/skills/react-testing-library/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install pproenca/dot-skills react-testing-library2Вручную: положить файлы
.github/skills/react-testing-library/SKILL.md1Через Skills CLI (Vercel)
npx skills add pproenca/dot-skills --skill react-testing-library -a gemini-cli2Командой платформы
gemini skills install https://github.com/pproenca/dot-skills --path skills/.experimental/react-testing-libraryВручную: положить файлы
.devin/skills/react-testing-library/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add pproenca/dot-skills --skill react-testing-library -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Вопросы о react-testing-library
Как установить react-testing-library в Claude?
Выполните npx skills add pproenca/dot-skills --skill react-testing-library -a claude-code. Скилл окажется в ~/.claude/skills/react-testing-library/SKILL.md.
Что делает этот скилл?
Даёт агенту 43 правила по тестам на React Testing Library: выбор запросов, работа с асинхронностью, анти-паттерны, userEvent, ассерты и структура теста.
Чем он помогает при ревью тестов?
Агент сверяется с категориями anti- и query- и указывает на тесты, завязанные на детали реализации, лишний act() и запросы через container.
Исходный текст
SKILL.md · MIT
--- name: react-testing-library description: React Testing Library best practices for writing maintainable, user-centric tests. Use when writing, reviewing, or refactoring RTL tests. Triggers on test files, testing patterns, getBy/queryBy queries, userEvent, waitFor, and component testing. --- # React Testing Library Best Practices Comprehensive testing guide for React components using Testing Library, designed for AI agents and LLMs. Contains 43 rules across 9 categories, prioritized by impact to guide test writing and code review. ## When to Apply Reference these guidelines when: - Writing new component tests with React Testing Library - Selecting queries (getByRole, getByLabelText, etc.) - Handling async operations in tests (findBy, waitFor) - Simulating user interactions (userEvent) - Reviewing tests for anti-patterns and implementation detail testing ## Rule Categories by Priority | Priority | Category | Impact | Prefix | |----------|----------|--------|--------| | 1 | Query Selection | CRITICAL | `query-` | | 2 | Async Handling | CRITICAL | `async-` | | 3 | Common Anti-Patterns | CRITICAL | `anti-` | | 4 | User Interaction | HIGH | `user-` | | 5 | Assertions | HIGH | `assert-` | | 6 | Component Setup | MEDIUM | `setup-` | | 7 | Test Structure | MEDIUM | `struct-` | | 8 | Debugging | LOW-MEDIUM | `debug-` | | 9 | Accessibility Testing | LOW | `a11y-` | ## Quick Reference ### 1. Query Selection (CRITICAL) - [`query-prefer-role`](references/query-prefer-role.md) - Prefer getByRole over other queries - [`query-avoid-testid`](references/query-avoid-testid.md) - Avoid getByTestId as primary query - [`query-use-screen`](references/query-use-screen.md) - Use screen for queries - [`query-label-text-forms`](references/query-label-text-forms.md) - Use getByLabelText for form fields - [`query-role-name-option`](references/query-role-name-option.md) - Use name option with getByRole - [`query-get-vs-query`](references/query-get-vs-query.md) - Use getBy for present, queryBy for absent - [`query-within-scope`](references/query-within-scope.md) - Use within() to scope queries ### 2. Async Handling (CRITICAL) - [`async-findby-over-waitfor`](references/async-findby-over-waitfor.md) - Use findBy instead of waitFor + getBy - [`async-await-findby`](references/async-await-findby.md) - Always await findBy queries - [`async-single-assertion-waitfor`](references/async-single-assertion-waitfor.md) - Single assertion in waitFor - [`async-no-side-effects-waitfor`](references/async-no-side-effects-waitfor.md) - Avoid side effects in waitFor - [`async-waitfor-disappear`](references/async-waitfor-disappear.md) - Use waitForElementToBeRemoved ### 3. Common Anti-Patterns (CRITICAL) - [`anti-unnecessary-act`](references/anti-unnecessary-act.md) - Avoid unnecessary act() wrapping - [`anti-manual-cleanup`](references/anti-manual-cleanup.md) - Remove manual cleanup calls - [`anti-implementation-details`](references/anti-implementation-details.md) - Avoid testing implementation details - [`anti-empty-waitfor`](references/anti-empty-waitfor.md) - Avoid empty waitFor callbacks - [`anti-container-queries`](references/anti-container-queries.md) - Avoid using container for queries - [`anti-redundant-roles`](references/anti-redundant-roles.md) - Avoid adding redundant ARIA roles ### 4. User Interaction (HIGH) - [`user-prefer-userevent`](references/user-prefer-userevent.md) - Use userEvent over fireEvent - [`user-setup-before-render`](references/user-setup-before-render.md) - Setup userEvent before render - [`user-await-interactions`](references/user-await-interactions.md) - Always await userEvent interactions - [`user-keyboard-for-special-keys`](references/user-keyboard-for-special-keys.md) - Use keyboard() for special keys - [`user-clear-before-type`](references/user-clear-before-type.md) - Use clear() before retyping ### 5. Assertions (HIGH) - [`assert-jest-dom-matchers`](references/assert-jest-dom-matchers.md) - Use jest-dom matchers - [`assert-visible-over-in-document`](references/assert-visible-over-in-document.md) - Use toBeVisible() for visibility - [`assert-text-content`](references/assert-text-content.md) - Use toHaveTextContent() for text - [`assert-have-value`](references/assert-have-value.md) - Use toHaveValue() for inputs - [`assert-accessible-description`](references/assert-accessible-description.md) - Use toHaveAccessibleDescription() ### 6. Component Setup (MEDIUM) - [`setup-wrapper-providers`](references/setup-wrapper-providers.md) - Use wrapper option for providers - [`setup-custom-render`](references/setup-custom-render.md) - Create custom render with providers - [`setup-mock-modules`](references/setup-mock-modules.md) - Mock modules at module level - [`setup-fake-timers`](references/setup-fake-timers.md) - Configure userEvent with fake timers - [`setup-render-hook`](references/setup-render-hook.md) - Use renderHook for testing hooks ### 7. Test Structure (MEDIUM) - [`struct-arrange-act-assert`](references/struct-arrange-act-assert.md) - Follow Arrange-Act-Assert pattern - [`struct-one-behavior-per-test`](references/struct-one-behavior-per-test.md) - Test one behavior per test - [`struct-descriptive-names`](references/struct-descriptive-names.md) - Use descriptive test names - [`struct-avoid-beforeeach-render`](references/struct-avoid-beforeeach-render.md) - Avoid render() in beforeEach ### 8. Debugging (LOW-MEDIUM) - [`debug-screen-debug`](references/debug-screen-debug.md) - Use screen.debug() to inspect DOM - [`debug-logroles`](references/debug-logroles.md) - Use logRoles to find available roles - [`debug-testing-playground`](references/debug-testing-playground.md) - Use Testing Playground for queries ### 9. Accessibility Testing (LOW) - [`a11y-role-queries-verify`](references/a11y-role-queries-verify.md) - Role queries verify accessibility - [`a11y-verify-focus`](references/a11y-verify-focus.md) - Test focus management - [`a11y-test-aria-states`](references/a11y-test-aria-states.md) - Test ARIA states and properties ## How to Use Read individual reference files for detailed explanations and code examples: - [Section definitions](references/_sections.md) - Category structure and impact levels - [Rule template](assets/templates/_template.md) - Template for adding new rules ## Reference Files | File | Description | |------|-------------| | [references/_sections.md](references/_sections.md) | Category definitions and ordering | | [assets/templates/_template.md](assets/templates/_template.md) | Template for new rules | | [metadata.json](metadata.json) | Version and reference information |
© pproenca · MIT · pproenca/dot-skills
Похожие скиллы
Всё по теме «Тесты и QA» →Сначала — react-testing-library от других авторов.