Skip to content

Commit c358971

Browse files
alwxantonislucas-zimerman
authored
improvement(testing): migrating from the deprecated react-test-renderer (#5084)
* improvement(testing): migrating from the deprecated `react-test-renderer` * Update & fixes for tests * Update & fixes for tests * Jest config fix * Configuration fix --------- Co-authored-by: Antonis Lilis <antonis.lilis@gmail.com> Co-authored-by: LucasZF <lucas-zimerman1@hotmail.com>
1 parent 20daa0a commit c358971

File tree

8 files changed

+577
-177
lines changed

8 files changed

+577
-177
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: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ jest.mock('../../src/js/utils/environment', () => ({
1313
}));
1414

1515
import type { Event, Measurements, Span, SpanJSON} from '@sentry/core';
16+
import { render } from '@testing-library/react-native';
1617
import * as React from "react";
17-
import * as TestRenderer from 'react-test-renderer';
1818

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

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

9898
mockRecordedTimeToDisplay({
9999
ttid: {
@@ -125,7 +125,7 @@ describe('TimeToDisplay', () => {
125125
},
126126
(activeSpan: Span | undefined) => {
127127
startTimeToFullDisplaySpan();
128-
TestRenderer.create(<TimeToFullDisplay record={true} />);
128+
render(<TimeToFullDisplay record={true} />);
129129

130130
mockRecordedTimeToDisplay({
131131
ttfd: {
@@ -155,7 +155,7 @@ describe('TimeToDisplay', () => {
155155
startTime: secondAgoTimestampMs(),
156156
},
157157
(activeSpan: Span | undefined) => {
158-
TestRenderer.create(<TimeToInitialDisplay record={true} />);
158+
render(<TimeToInitialDisplay record={true} />);
159159

160160
mockRecordedTimeToDisplay({
161161
ttid: {
@@ -185,8 +185,8 @@ describe('TimeToDisplay', () => {
185185
startTimeToInitialDisplaySpan();
186186
startTimeToFullDisplaySpan();
187187

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

191191
mockRecordedTimeToDisplay({
192192
ttid: {
@@ -220,8 +220,8 @@ describe('TimeToDisplay', () => {
220220
startTimeToInitialDisplaySpan();
221221
startTimeToFullDisplaySpan();
222222

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

226226
mockRecordedTimeToDisplay({
227227
ttid: {
@@ -260,8 +260,7 @@ describe('TimeToDisplay', () => {
260260
startTimeToInitialDisplaySpan();
261261
startTimeToFullDisplaySpan();
262262

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

267266
mockRecordedTimeToDisplay({
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/jest.config.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
/** @type {import('@jest/types').Config.InitialOptions} */
22
module.exports = {
3+
preset: 'react-native',
34
testMatch: [
45
'<rootDir>/__tests__/**/*-test.ts',
56
'<rootDir>/__tests__/**/*-test.tsx',

samples/react-native/package.json

Lines changed: 1 addition & 1 deletion
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",

0 commit comments

Comments
 (0)