Skip to content

Commit e54eb3c

Browse files
committed
improvement(testing): migrating from the deprecated react-test-renderer
1 parent 7030b11 commit e54eb3c

File tree

7 files changed

+110
-68
lines changed

7 files changed

+110
-68
lines changed

packages/core/package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,6 @@
110110
"prettier": "^2.0.5",
111111
"react": "18.3.1",
112112
"react-native": "0.77.1",
113-
"react-test-renderer": "^18.3.1",
114113
"rimraf": "^4.1.1",
115114
"ts-jest": "^29.1.1",
116115
"typescript": "4.9.5",

packages/core/test/tracing/timetodisplay.test.tsx

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ jest.mock('../../src/js/utils/environment', () => ({
1414
}));
1515

1616
import type { Event, Measurements, Span, SpanJSON} from '@sentry/core';
17+
import { render } from '@testing-library/react-native';
1718
import * as React from "react";
18-
import * as TestRenderer from 'react-test-renderer';
1919

2020
import { timeToDisplayIntegration } from '../../src/js/tracing/integrations/timeToDisplayIntegration';
2121
import { SPAN_ORIGIN_MANUAL_UI_TIME_TO_DISPLAY } from '../../src/js/tracing/origin';
@@ -64,7 +64,7 @@ describe('TimeToDisplay', () => {
6464
},
6565
(activeSpan: Span | undefined) => {
6666
startTimeToInitialDisplaySpan();
67-
TestRenderer.create(<TimeToInitialDisplay record={true} />);
67+
render(<TimeToInitialDisplay record={true} />);
6868
mockRecordedTimeToDisplay({
6969
ttid: {
7070
[spanToJSON(activeSpan!).span_id!]: nowInSeconds(),
@@ -93,8 +93,8 @@ describe('TimeToDisplay', () => {
9393
startTimeToInitialDisplaySpan();
9494
startTimeToFullDisplaySpan();
9595

96-
TestRenderer.create(<TimeToInitialDisplay record={true} />);
97-
TestRenderer.create(<TimeToFullDisplay record={true} />);
96+
render(<TimeToInitialDisplay record={true} />);
97+
render(<TimeToFullDisplay record={true} />);
9898

9999
mockRecordedTimeToDisplay({
100100
ttid: {
@@ -126,7 +126,7 @@ describe('TimeToDisplay', () => {
126126
},
127127
(activeSpan: Span | undefined) => {
128128
startTimeToFullDisplaySpan();
129-
TestRenderer.create(<TimeToFullDisplay record={true} />);
129+
render(<TimeToFullDisplay record={true} />);
130130

131131
mockRecordedTimeToDisplay({
132132
ttfd: {
@@ -156,7 +156,7 @@ describe('TimeToDisplay', () => {
156156
startTime: secondAgoTimestampMs(),
157157
},
158158
(activeSpan: Span | undefined) => {
159-
TestRenderer.create(<TimeToInitialDisplay record={true} />);
159+
render(<TimeToInitialDisplay record={true} />);
160160

161161
mockRecordedTimeToDisplay({
162162
ttid: {
@@ -186,8 +186,8 @@ describe('TimeToDisplay', () => {
186186
startTimeToInitialDisplaySpan();
187187
startTimeToFullDisplaySpan();
188188

189-
TestRenderer.create(<TimeToInitialDisplay record={true} />);
190-
TestRenderer.create(<TimeToFullDisplay record={true} />);
189+
render(<TimeToInitialDisplay record={true} />);
190+
render(<TimeToFullDisplay record={true} />);
191191

192192
mockRecordedTimeToDisplay({
193193
ttid: {
@@ -221,8 +221,8 @@ describe('TimeToDisplay', () => {
221221
startTimeToInitialDisplaySpan();
222222
startTimeToFullDisplaySpan();
223223

224-
TestRenderer.create(<TimeToInitialDisplay record={true} />);
225-
TestRenderer.create(<TimeToFullDisplay record={true} />);
224+
render(<TimeToInitialDisplay record={true} />);
225+
render(<TimeToFullDisplay record={true} />);
226226

227227
mockRecordedTimeToDisplay({
228228
ttid: {
@@ -261,8 +261,7 @@ describe('TimeToDisplay', () => {
261261
startTimeToInitialDisplaySpan();
262262
startTimeToFullDisplaySpan();
263263

264-
const timeToDisplayComponent = TestRenderer.create(<><TimeToInitialDisplay record={false} /><TimeToFullDisplay record={true}/></>);
265-
264+
const timeToDisplayComponent = render(<><TimeToInitialDisplay record={false} /><TimeToFullDisplay record={true}/></>);
266265
timeToDisplayComponent.update(<><TimeToInitialDisplay record={true} /><TimeToFullDisplay record={true}/></>);
267266

268267
mockRecordedTimeToDisplay({
@@ -294,15 +293,15 @@ describe('TimeToDisplay', () => {
294293
test('should not log a warning if native component exists and not in new architecture', async () => {
295294
(isTurboModuleEnabled as jest.Mock).mockReturnValue(false);
296295

297-
TestRenderer.create(<TimeToInitialDisplay record={true} />);
296+
render(<TimeToInitialDisplay record={true} />);
298297
await jest.runOnlyPendingTimersAsync(); // Flush setTimeout.
299298

300299
expect(logger.warn).not.toHaveBeenCalled();
301300
});
302301

303302
test('should log a warning if in new architecture', async () => {
304303
(isTurboModuleEnabled as jest.Mock).mockReturnValue(true);
305-
TestRenderer.create(<TimeToInitialDisplay record={true} />);
304+
render(<TimeToInitialDisplay record={true} />);
306305
await jest.runOnlyPendingTimersAsync(); // Flush setTimeout.
307306

308307
expect(logger.warn).toHaveBeenCalledWith(
Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
import * as React from 'react';
2-
import renderer from 'react-test-renderer';
3-
2+
import { render, screen } from '@testing-library/react-native';
43
import { MonoText } from '../StyledText';
54

65
it(`renders correctly`, () => {
7-
const tree = renderer.create(<MonoText>Snapshot test!</MonoText>).toJSON();
6+
render(<MonoText>MonoText Test</MonoText>);
87

9-
expect(tree).toMatchSnapshot();
8+
expect(screen.getAllByLabelText("MonoText Test")).toBeOnTheScreen();
109
});

samples/react-native-macos/package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@
4242
"@react-native/typescript-config": "0.73.1",
4343
"@types/react": "^18.2.65",
4444
"@types/react-native-vector-icons": "^6.4.18",
45-
"@types/react-test-renderer": "^18.0.0",
4645
"@typescript-eslint/eslint-plugin": "^5.37.0",
4746
"@typescript-eslint/parser": "^5.37.0",
4847
"babel-plugin-module-resolver": "^5.0.0",

samples/react-native/__tests__/App-test.tsx

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,9 @@ import React from 'react';
66

77
// Note: import explicitly to use the types shipped with jest.
88
import { it } from '@jest/globals';
9-
10-
// Note: test renderer must be required after react-native.
11-
import renderer from 'react-test-renderer';
9+
import { render } from '@testing-library/react-native';
10+
import { Text } from 'react-native';
1211

1312
it('dummy test', () => {
14-
renderer.create(<div />);
13+
render(<Text>Test</Text>);
1514
});

samples/react-native/package.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,11 +56,11 @@
5656
"@react-native/metro-config": "0.77.1",
5757
"@react-native/typescript-config": "0.77.1",
5858
"@sentry/babel-plugin-component-annotate": "4.1.1",
59+
"@testing-library/react-native": "^13.2.2",
5960
"@types/jest": "^29.5.14",
6061
"@types/node": "^22.13.1",
6162
"@types/react": "^19.0.0",
6263
"@types/react-native-vector-icons": "^6.4.18",
63-
"@types/react-test-renderer": "^19.0.0",
6464
"@typescript-eslint/eslint-plugin": "^7.18.0",
6565
"@typescript-eslint/parser": "^7.18.0",
6666
"babel-jest": "^29.6.3",
@@ -70,7 +70,6 @@
7070
"jest": "^29.6.3",
7171
"patch-package": "^8.0.0",
7272
"prettier": "2.8.8",
73-
"react-test-renderer": "19.0.0",
7473
"sentry-react-native-samples-utils": "workspace:^",
7574
"ts-jest": "^29.2.5",
7675
"typescript": "5.0.4"

0 commit comments

Comments
 (0)