# RTL Upgrade Desk > An upgrade of one React test file for React 18 and React 19, following two skills from github/awesome-copilot. Paste > the file (or drop it); the browser masks comments, strings, template literals and regex literals, matches every > describe/it/test, moves act from react-dom/test-utils to react and turns Simulate into fireEvent with its import, > maps the other test-utils APIs to Testing Library, lists every Enzyme wrapper call (shallow, mount, find, simulate, > prop, state, instance, setState, setProps, update, text) with its React Testing Library counterpart and a suggested > query for its selector, flags tests that assert internals, and marks StrictMode call counts that halve in React 19. > Metered runs write the review and the tests rewritten as behaviour tests. Built on the SkillSafe skills > @github/react18-enzyme-to-rtl and @github/react19-test-patterns, from github/awesome-copilot (MIT). https://rtl-upgrade-desk.skillsafe.ai/ An independent tool: not affiliated with or endorsed by Meta (React), the Testing Library project, Enzyme or Jest. RTL here is short for React Testing Library. ## What is free - The scan: every finding with an id (E1, E2, ...), a severity (blocker - the file cannot run on the target, major, minor), the line, the test, what the page saw and the fix. - Every Enzyme call with the test it sits in and its RTL starting point; the migration order from the skills. - The migrated file itself (act and Simulate moved), the install and grep steps, findings and Enzyme calls as CSV, everything as JSON. ## The metered lanes Two tasks on gpt-terra, metered per run, routed by `task`. Input string fields: `task` (review or rewrite), `unit`, `code`, `carry` (rewrite only: the review's decisions) and `facts` (the page's scan and call list). - `review` replies with `summary`, `findings` (confirmed ids with the issue, the RTL replacement and the migrated lines), `cleared`, `extra` (up to five issues a scan cannot see, on real lines), `plan` (the steps in order, naming their ids) and `caveats`. - `rewrite` replies with `summary`, `code` (the whole migrated test file), `changes`, `kept` and `caveats`. The page holds every reply to its scan: each id accounted for exactly once, every test title and the whole file kept, and the rewritten file re-scanned - an Enzyme call or a test-utils import left behind, or a new one, is flagged. ## Links - API tutorial: https://rtl-upgrade-desk.skillsafe.ai/api.html - Source skills: https://skillsafe.ai/skill/@github/react18-enzyme-to-rtl, https://skillsafe.ai/skill/@github/react19-test-patterns