56 results available
Sign in
Skills directory

react19-test-patterns

github

·

Last changed
Hardened

This skill has been hardened by Chainguard

Last changed

This version passed the hardening gate. Hardening applied 9 targeted changes and preserved all other text. Classified findings before hardening: 0. Classified findings closed: 0. Classified findings remaining: 0. Unclassified scanner findings remaining: 0. Review findings closed: 11. Review findings remaining: 1.


Open before hardening

None

Open after hardening

None


Expand
File
Group
Subtype
Severity
Status

No findings available

0 findings


SKILL.md

React 19 Test Migration Patterns

Reference for common test file migrations required by React 19.

Scope: limit edits to the test files the user names. Get confirmation from the user before changing shared render helpers or test setup files, and before batch edits across many files.

Priority Order

Fix test files in this order; each layer depends on the previous:

  1. Fix the act import first, it unblocks everything else
  2. Replace Simulate → fireEvent immediately after act
  3. Do the Full react-dom/test-utils cleanup to remove remaining imports
  4. Check StrictMode call counts by measuring actual counts and explaining each change

1. act() Import Fix

// Before: REMOVED in React 19:
import { act } from 'react-dom/test-utils';

// After:
import { act } from 'react';

If mixed with other test-utils imports:

// Before:
import { act, Simulate, renderIntoDocument } from 'react-dom/test-utils';

// After: split the imports:
import { act } from 'react';
import { fireEvent, render } from '@testing-library/react'; // replaces Simulate + renderIntoDocument

2. Simulate → fireEvent

// Before: Simulate REMOVED in React 19:
import { Simulate } from 'react-dom/test-utils';
Simulate.click(element);
Simulate.change(input, { target: { value: 'hello' } });
Simulate.submit(form);
Simulate.keyDown(element, { key: 'Enter', keyCode: 13 });

// After:
import { fireEvent } from '@testing-library/react';
fireEvent.click(element);
fireEvent.change(input, { target: { value: 'hello' } });
fireEvent.submit(form);
fireEvent.keyDown(element, { key: 'Enter', keyCode: 13 });

If @testing-library/react is not already installed, ask the user before installing it, choose a release that supports React 19, and commit the updated lockfile.


3. react-dom/test-utils Full API Map

Old (react-dom/test-utils)New location

act

import { act } from 'react'

Simulate

fireEvent from @testing-library/react

renderIntoDocument

render from @testing-library/react

findRenderedDOMComponentWithTag

getByRole, getByTestId from RTL

findRenderedDOMComponentWithClass

getByRole or container.querySelector

scryRenderedDOMComponentsWithTag

getAllByRole from RTL

isElement, isCompositeComponent

Remove as not needed with RTL

isDOMComponent

Remove


4. StrictMode Call Count Fixes

React 19 StrictMode in development still runs effects as mount, unmount, then mount again, so effect call counts do not simply drop by half. Spy assertions that count calls may still change after the upgrade; attribute each change to its real cause.

Strategy: measure actual counts, and explain each one before changing an assertion.

  1. Before running tests, inspect the test script in the project package file and confirm it calls the expected test runner. Run tests only in a repository the user trusts, after the user confirms, and prefer an isolated environment with no secrets and limited network access.
  2. The command below assumes a Jest setup. Check which runner the project configures first; for a different runner, use the equivalent single file run for that runner, and ask the user if unsure.
  3. Replace the placeholder only with a test file path that exists in the repository and contains only letters, digits, dots, dashes, underscores and slashes. If a path contains other characters, stop and ask the user.
  4. Read the full output, including the Expected and Received lines and any other errors or warnings.
  5. Before editing an assertion, explain the count change by a known React 19 behavior and add a short comment beside the changed assertion stating the reason. Report unexplained differences to the user and leave those assertions as they are.
# Run the failing test and read the full output:
npm test -- --watchAll=false --testPathPattern="[filename]"
// Render-phase calls (component body) are still double-invoked in React 19 StrictMode:
expect(renderSpy).toHaveBeenCalledTimes(2);  // stays at 2 for render body calls

Install

Install with chainctl
chainctl skill install public/github/react19-test-patterns:latest
Get started with chainctl
View source

Harden your own skills

Bring Chainguard's hardening pipeline to your first-party skills — custom rulesets, automated remediation, full audit trail.

Provenance

Upstream sourcehttps://github.com/github/awesome-copilot
Upstream commitc73936e05eea186dd9970db9e97c104d7e77a644
OCI reference

skills.cgr.dev/public/github.com/github/skills/react19-test-patterns:latest

License

MIT

Files

HARDENING.md

LICENSE

SKILL.md


The trusted source for open source

Talk to an expert
PrivacyTerms

Product

Chainguard ContainersChainguard LibrariesChainguard VMsChainguard OS PackagesChainguard ActionsChainguard Agent SkillsIntegrationsPricing
© 2026 Chainguard, Inc. All Rights Reserved.
Chainguard® and the Chainguard logo are registered trademarks of Chainguard, Inc. in the United States and/or other countries.
The other respective trademarks mentioned on this page are owned by the respective companies and use of them does not imply any affiliation or endorsement.