This codemod migrates your test files from React Native Testing Library v13 to v14 by automatically transforming synchronous function calls to async versions and making test functions async when needed.
- Transforms
render(),act(),renderHook(), andfireEvent()calls toawait render(),await act(), etc. - Makes test functions (
test(),it(), hooks) async when needed - Handles
fireEvent.press(),fireEvent.changeText(),fireEvent.scroll(),screen.rerender(),screen.unmount(), and renderer methods - Only transforms calls imported from
@testing-library/react-native
# Run the codemod
npx codemod@latest run rntl-v14-async-functions --target ./path/to/your/testsIf you have custom render helper functions (like renderWithProviders, renderWithTheme), specify them so they get transformed too:
npx codemod@latest run rntl-v14-async-functions --target ./path/to/your/tests --param customRenderFunctions="renderWithProviders,renderWithTheme"Before:
test('renders component', () => {
render(<MyComponent />);
expect(screen.getByText('Hello')).toBeOnTheScreen();
});After:
test('renders component', async () => {
await render(<MyComponent />);
expect(screen.getByText('Hello')).toBeOnTheScreen();
});- Helper functions are not transformed by default (use
customRenderFunctionsparam if needed) - Namespace imports (
import * as RNTL) are not handled
- Run the codemod on your test files
- Review the changes
- Manually update any remaining helper functions if needed
- Update your RNTL version to v14 (
rntl-v14-update-depscodemod) - Run your tests to verify everything works