From ab7322b5a07d646754dbece170ec5e8568b6e104 Mon Sep 17 00:00:00 2001 From: Andrew Clark Date: Wed, 24 Apr 2024 11:54:06 -0400 Subject: [PATCH] warn -> error for Test Renderer deprecation We use `console.error` for deprecations. `console.warn` is for less critical issues, like performance anti-patterns. --- .../shouldIgnoreConsoleError.js | 3 +- .../shouldIgnoreConsoleWarn.js | 6 -- .../src/__tests__/TimelineProfiler-test.js | 40 ----------- .../src/__tests__/preprocessData-test.js | 70 +++++++++---------- .../src/__tests__/treeContext-test.js | 12 ++-- .../react-devtools-shell/src/app/index.js | 1 + .../src/__tests__/ReactHooks-test.internal.js | 15 ++-- .../src/__tests__/ReactLazy-test.internal.js | 14 ++-- .../src/ReactTestRenderer.js | 2 +- .../ReactTestRenderer-test.internal.js | 21 +++--- 10 files changed, 67 insertions(+), 117 deletions(-) diff --git a/packages/internal-test-utils/shouldIgnoreConsoleError.js b/packages/internal-test-utils/shouldIgnoreConsoleError.js index b0342368b14c6..c1e4ecb75bba1 100644 --- a/packages/internal-test-utils/shouldIgnoreConsoleError.js +++ b/packages/internal-test-utils/shouldIgnoreConsoleError.js @@ -23,7 +23,8 @@ module.exports = function shouldIgnoreConsoleError(format, args) { ) !== -1 || format.indexOf( 'ReactDOM.hydrate has not been supported since React 18', - ) !== -1 + ) !== -1 || + format.indexOf('react-test-renderer is deprecated.') !== -1 ) { // We haven't finished migrating our tests to use createRoot. return true; diff --git a/packages/internal-test-utils/shouldIgnoreConsoleWarn.js b/packages/internal-test-utils/shouldIgnoreConsoleWarn.js index 9fa8414263bbc..cde6264e01352 100644 --- a/packages/internal-test-utils/shouldIgnoreConsoleWarn.js +++ b/packages/internal-test-utils/shouldIgnoreConsoleWarn.js @@ -1,11 +1,5 @@ 'use strict'; module.exports = function shouldIgnoreConsoleWarn(format) { - if (typeof format === 'string') { - if (format.indexOf('Warning: react-test-renderer is deprecated.') === 0) { - return true; - } - } - return false; }; diff --git a/packages/react-devtools-shared/src/__tests__/TimelineProfiler-test.js b/packages/react-devtools-shared/src/__tests__/TimelineProfiler-test.js index acffea6a42c45..3a89150c59db3 100644 --- a/packages/react-devtools-shared/src/__tests__/TimelineProfiler-test.js +++ b/packages/react-devtools-shared/src/__tests__/TimelineProfiler-test.js @@ -327,8 +327,6 @@ describe('Timeline profiler', () => { "--profiler-version-1", "--react-internal-module-start- at filtered (:0:0)", "--react-internal-module-stop- at filtered (:1:1)", - "--react-internal-module-start- at filtered (:0:0)", - "--react-internal-module-stop- at filtered (:1:1)", "--react-lane-labels-SyncHydrationLane,Sync,InputContinuousHydration,InputContinuous,DefaultHydration,Default,TransitionHydration,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Retry,Retry,Retry,Retry,SelectiveHydration,IdleHydration,Idle,Offscreen,Deferred", "--layout-effects-start-32", "--layout-effects-stop", @@ -403,8 +401,6 @@ describe('Timeline profiler', () => { "--profiler-version-1", "--react-internal-module-start- at filtered (:0:0)", "--react-internal-module-stop- at filtered (:1:1)", - "--react-internal-module-start- at filtered (:0:0)", - "--react-internal-module-stop- at filtered (:1:1)", "--react-lane-labels-SyncHydrationLane,Sync,InputContinuousHydration,InputContinuous,DefaultHydration,Default,TransitionHydration,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Retry,Retry,Retry,Retry,SelectiveHydration,IdleHydration,Idle,Offscreen,Deferred", "--layout-effects-start-32", "--layout-effects-stop", @@ -460,8 +456,6 @@ describe('Timeline profiler', () => { "--profiler-version-1", "--react-internal-module-start- at filtered (:0:0)", "--react-internal-module-stop- at filtered (:1:1)", - "--react-internal-module-start- at filtered (:0:0)", - "--react-internal-module-stop- at filtered (:1:1)", "--react-lane-labels-SyncHydrationLane,Sync,InputContinuousHydration,InputContinuous,DefaultHydration,Default,TransitionHydration,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Retry,Retry,Retry,Retry,SelectiveHydration,IdleHydration,Idle,Offscreen,Deferred", "--layout-effects-start-32", "--layout-effects-stop", @@ -516,8 +510,6 @@ describe('Timeline profiler', () => { "--profiler-version-1", "--react-internal-module-start- at filtered (:0:0)", "--react-internal-module-stop- at filtered (:1:1)", - "--react-internal-module-start- at filtered (:0:0)", - "--react-internal-module-stop- at filtered (:1:1)", "--react-lane-labels-SyncHydrationLane,Sync,InputContinuousHydration,InputContinuous,DefaultHydration,Default,TransitionHydration,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Retry,Retry,Retry,Retry,SelectiveHydration,IdleHydration,Idle,Offscreen,Deferred", "--layout-effects-start-32", "--schedule-state-update-2-Example", @@ -531,8 +523,6 @@ describe('Timeline profiler', () => { "--profiler-version-1", "--react-internal-module-start- at filtered (:0:0)", "--react-internal-module-stop- at filtered (:1:1)", - "--react-internal-module-start- at filtered (:0:0)", - "--react-internal-module-stop- at filtered (:1:1)", "--react-lane-labels-SyncHydrationLane,Sync,InputContinuousHydration,InputContinuous,DefaultHydration,Default,TransitionHydration,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Retry,Retry,Retry,Retry,SelectiveHydration,IdleHydration,Idle,Offscreen,Deferred", "--commit-stop", "--commit-stop", @@ -573,8 +563,6 @@ describe('Timeline profiler', () => { "--profiler-version-1", "--react-internal-module-start- at filtered (:0:0)", "--react-internal-module-stop- at filtered (:1:1)", - "--react-internal-module-start- at filtered (:0:0)", - "--react-internal-module-stop- at filtered (:1:1)", "--react-lane-labels-SyncHydrationLane,Sync,InputContinuousHydration,InputContinuous,DefaultHydration,Default,TransitionHydration,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Retry,Retry,Retry,Retry,SelectiveHydration,IdleHydration,Idle,Offscreen,Deferred", "--layout-effects-start-32", "--schedule-forced-update-2-Example", @@ -588,8 +576,6 @@ describe('Timeline profiler', () => { "--profiler-version-1", "--react-internal-module-start- at filtered (:0:0)", "--react-internal-module-stop- at filtered (:1:1)", - "--react-internal-module-start- at filtered (:0:0)", - "--react-internal-module-stop- at filtered (:1:1)", "--react-lane-labels-SyncHydrationLane,Sync,InputContinuousHydration,InputContinuous,DefaultHydration,Default,TransitionHydration,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Retry,Retry,Retry,Retry,SelectiveHydration,IdleHydration,Idle,Offscreen,Deferred", "--commit-stop", "--commit-stop", @@ -642,8 +628,6 @@ describe('Timeline profiler', () => { "--profiler-version-1", "--react-internal-module-start- at filtered (:0:0)", "--react-internal-module-stop- at filtered (:1:1)", - "--react-internal-module-start- at filtered (:0:0)", - "--react-internal-module-stop- at filtered (:1:1)", "--react-lane-labels-SyncHydrationLane,Sync,InputContinuousHydration,InputContinuous,DefaultHydration,Default,TransitionHydration,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Retry,Retry,Retry,Retry,SelectiveHydration,IdleHydration,Idle,Offscreen,Deferred", "--layout-effects-start-32", "--layout-effects-stop", @@ -698,8 +682,6 @@ describe('Timeline profiler', () => { "--profiler-version-1", "--react-internal-module-start- at filtered (:0:0)", "--react-internal-module-stop- at filtered (:1:1)", - "--react-internal-module-start- at filtered (:0:0)", - "--react-internal-module-stop- at filtered (:1:1)", "--react-lane-labels-SyncHydrationLane,Sync,InputContinuousHydration,InputContinuous,DefaultHydration,Default,TransitionHydration,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Retry,Retry,Retry,Retry,SelectiveHydration,IdleHydration,Idle,Offscreen,Deferred", "--layout-effects-start-32", "--layout-effects-stop", @@ -740,8 +722,6 @@ describe('Timeline profiler', () => { "--profiler-version-1", "--react-internal-module-start- at filtered (:0:0)", "--react-internal-module-stop- at filtered (:1:1)", - "--react-internal-module-start- at filtered (:0:0)", - "--react-internal-module-stop- at filtered (:1:1)", "--react-lane-labels-SyncHydrationLane,Sync,InputContinuousHydration,InputContinuous,DefaultHydration,Default,TransitionHydration,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Retry,Retry,Retry,Retry,SelectiveHydration,IdleHydration,Idle,Offscreen,Deferred", "--layout-effects-start-32", "--component-layout-effect-mount-start-Example", @@ -757,8 +737,6 @@ describe('Timeline profiler', () => { "--profiler-version-1", "--react-internal-module-start- at filtered (:0:0)", "--react-internal-module-stop- at filtered (:1:1)", - "--react-internal-module-start- at filtered (:0:0)", - "--react-internal-module-stop- at filtered (:1:1)", "--react-lane-labels-SyncHydrationLane,Sync,InputContinuousHydration,InputContinuous,DefaultHydration,Default,TransitionHydration,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Retry,Retry,Retry,Retry,SelectiveHydration,IdleHydration,Idle,Offscreen,Deferred", "--commit-stop", "--commit-stop", @@ -791,8 +769,6 @@ describe('Timeline profiler', () => { "--profiler-version-1", "--react-internal-module-start- at filtered (:0:0)", "--react-internal-module-stop- at filtered (:1:1)", - "--react-internal-module-start- at filtered (:0:0)", - "--react-internal-module-stop- at filtered (:1:1)", "--react-lane-labels-SyncHydrationLane,Sync,InputContinuousHydration,InputContinuous,DefaultHydration,Default,TransitionHydration,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Retry,Retry,Retry,Retry,SelectiveHydration,IdleHydration,Idle,Offscreen,Deferred", "--layout-effects-start-32", "--layout-effects-stop", @@ -811,8 +787,6 @@ describe('Timeline profiler', () => { "--profiler-version-1", "--react-internal-module-start- at filtered (:0:0)", "--react-internal-module-stop- at filtered (:1:1)", - "--react-internal-module-start- at filtered (:0:0)", - "--react-internal-module-stop- at filtered (:1:1)", "--react-lane-labels-SyncHydrationLane,Sync,InputContinuousHydration,InputContinuous,DefaultHydration,Default,TransitionHydration,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Retry,Retry,Retry,Retry,SelectiveHydration,IdleHydration,Idle,Offscreen,Deferred", "--commit-stop", ] @@ -845,8 +819,6 @@ describe('Timeline profiler', () => { "--profiler-version-1", "--react-internal-module-start- at filtered (:0:0)", "--react-internal-module-stop- at filtered (:1:1)", - "--react-internal-module-start- at filtered (:0:0)", - "--react-internal-module-stop- at filtered (:1:1)", "--react-lane-labels-SyncHydrationLane,Sync,InputContinuousHydration,InputContinuous,DefaultHydration,Default,TransitionHydration,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Retry,Retry,Retry,Retry,SelectiveHydration,IdleHydration,Idle,Offscreen,Deferred", "--layout-effects-start-32", "--layout-effects-stop", @@ -913,8 +885,6 @@ describe('Timeline profiler', () => { "--profiler-version-1", "--react-internal-module-start- at filtered (:0:0)", "--react-internal-module-stop- at filtered (:1:1)", - "--react-internal-module-start- at filtered (:0:0)", - "--react-internal-module-stop- at filtered (:1:1)", "--react-lane-labels-SyncHydrationLane,Sync,InputContinuousHydration,InputContinuous,DefaultHydration,Default,TransitionHydration,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Retry,Retry,Retry,Retry,SelectiveHydration,IdleHydration,Idle,Offscreen,Deferred", "--layout-effects-start-32", "--schedule-state-update-2-ErrorBoundary", @@ -928,8 +898,6 @@ describe('Timeline profiler', () => { "--profiler-version-1", "--react-internal-module-start- at filtered (:0:0)", "--react-internal-module-stop- at filtered (:1:1)", - "--react-internal-module-start- at filtered (:0:0)", - "--react-internal-module-stop- at filtered (:1:1)", "--react-lane-labels-SyncHydrationLane,Sync,InputContinuousHydration,InputContinuous,DefaultHydration,Default,TransitionHydration,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Retry,Retry,Retry,Retry,SelectiveHydration,IdleHydration,Idle,Offscreen,Deferred", "--commit-stop", "--commit-stop", @@ -993,8 +961,6 @@ describe('Timeline profiler', () => { "--profiler-version-1", "--react-internal-module-start- at filtered (:0:0)", "--react-internal-module-stop- at filtered (:1:1)", - "--react-internal-module-start- at filtered (:0:0)", - "--react-internal-module-stop- at filtered (:1:1)", "--react-lane-labels-SyncHydrationLane,Sync,InputContinuousHydration,InputContinuous,DefaultHydration,Default,TransitionHydration,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Retry,Retry,Retry,Retry,SelectiveHydration,IdleHydration,Idle,Offscreen,Deferred", "--layout-effects-start-32", "--component-layout-effect-mount-start-ComponentWithEffects", @@ -1051,8 +1017,6 @@ describe('Timeline profiler', () => { "--profiler-version-1", "--react-internal-module-start- at filtered (:0:0)", "--react-internal-module-stop- at filtered (:1:1)", - "--react-internal-module-start- at filtered (:0:0)", - "--react-internal-module-stop- at filtered (:1:1)", "--react-lane-labels-SyncHydrationLane,Sync,InputContinuousHydration,InputContinuous,DefaultHydration,Default,TransitionHydration,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Retry,Retry,Retry,Retry,SelectiveHydration,IdleHydration,Idle,Offscreen,Deferred", "--component-layout-effect-unmount-start-ComponentWithEffects", "--component-layout-effect-unmount-stop", @@ -1154,8 +1118,6 @@ describe('Timeline profiler', () => { "--profiler-version-1", "--react-internal-module-start- at filtered (:0:0)", "--react-internal-module-stop- at filtered (:1:1)", - "--react-internal-module-start- at filtered (:0:0)", - "--react-internal-module-stop- at filtered (:1:1)", "--react-lane-labels-SyncHydrationLane,Sync,InputContinuousHydration,InputContinuous,DefaultHydration,Default,TransitionHydration,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Retry,Retry,Retry,Retry,SelectiveHydration,IdleHydration,Idle,Offscreen,Deferred", "--layout-effects-start-2", "--layout-effects-stop", @@ -1196,8 +1158,6 @@ describe('Timeline profiler', () => { "--profiler-version-1", "--react-internal-module-start- at filtered (:0:0)", "--react-internal-module-stop- at filtered (:1:1)", - "--react-internal-module-start- at filtered (:0:0)", - "--react-internal-module-stop- at filtered (:1:1)", "--react-lane-labels-SyncHydrationLane,Sync,InputContinuousHydration,InputContinuous,DefaultHydration,Default,TransitionHydration,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Retry,Retry,Retry,Retry,SelectiveHydration,IdleHydration,Idle,Offscreen,Deferred", "--layout-effects-start-8", "--layout-effects-stop", diff --git a/packages/react-devtools-shared/src/__tests__/preprocessData-test.js b/packages/react-devtools-shared/src/__tests__/preprocessData-test.js index f3e29a23cffd8..c7edb766a24b6 100644 --- a/packages/react-devtools-shared/src/__tests__/preprocessData-test.js +++ b/packages/react-devtools-shared/src/__tests__/preprocessData-test.js @@ -841,9 +841,9 @@ describe('Timeline profiler', () => { { "batchUID": 0, "depth": 0, - "duration": 0.014, + "duration": 0.012, "lanes": "0b0000000000000000000000000000101", - "timestamp": 0.008, + "timestamp": 0.006, "type": "render-idle", }, { @@ -851,15 +851,15 @@ describe('Timeline profiler', () => { "depth": 0, "duration": 0.003, "lanes": "0b0000000000000000000000000000101", - "timestamp": 0.008, + "timestamp": 0.006, "type": "render", }, { "batchUID": 0, "depth": 0, - "duration": 0.010, + "duration": 0.008, "lanes": "0b0000000000000000000000000000101", - "timestamp": 0.012, + "timestamp": 0.01, "type": "commit", }, { @@ -867,7 +867,7 @@ describe('Timeline profiler', () => { "depth": 1, "duration": 0.001, "lanes": "0b0000000000000000000000000000101", - "timestamp": 0.02, + "timestamp": 0.016, "type": "layout-effects", }, { @@ -875,7 +875,7 @@ describe('Timeline profiler', () => { "depth": 0, "duration": 0.004, "lanes": "0b0000000000000000000000000000101", - "timestamp": 0.023, + "timestamp": 0.019, "type": "passive-effects", }, ], @@ -883,9 +883,9 @@ describe('Timeline profiler', () => { { "batchUID": 1, "depth": 0, - "duration": 0.014, + "duration": 0.012, "lanes": "0b0000000000000000000000000000101", - "timestamp": 0.028, + "timestamp": 0.024, "type": "render-idle", }, { @@ -893,15 +893,15 @@ describe('Timeline profiler', () => { "depth": 0, "duration": 0.003, "lanes": "0b0000000000000000000000000000101", - "timestamp": 0.028, + "timestamp": 0.024, "type": "render", }, { "batchUID": 1, "depth": 0, - "duration": 0.010, + "duration": 0.008, "lanes": "0b0000000000000000000000000000101", - "timestamp": 0.032, + "timestamp": 0.028, "type": "commit", }, { @@ -909,7 +909,7 @@ describe('Timeline profiler', () => { "depth": 1, "duration": 0.001, "lanes": "0b0000000000000000000000000000101", - "timestamp": 0.04, + "timestamp": 0.034, "type": "layout-effects", }, { @@ -917,7 +917,7 @@ describe('Timeline profiler', () => { "depth": 0, "duration": 0.003, "lanes": "0b0000000000000000000000000000101", - "timestamp": 0.043, + "timestamp": 0.037, "type": "passive-effects", }, ], @@ -926,33 +926,33 @@ describe('Timeline profiler', () => { { "componentName": "App", "duration": 0.001, - "timestamp": 0.009, + "timestamp": 0.007, "type": "render", "warning": null, }, { "componentName": "App", "duration": 0.002, - "timestamp": 0.024, + "timestamp": 0.02, "type": "passive-effect-mount", "warning": null, }, { "componentName": "App", "duration": 0.001, - "timestamp": 0.029, + "timestamp": 0.025, "type": "render", "warning": null, }, { "componentName": "App", "duration": 0.001, - "timestamp": 0.044, + "timestamp": 0.038, "type": "passive-effect-mount", "warning": null, }, ], - "duration": 0.046, + "duration": 0.04, "flamechart": [], "internalModuleSourceToRanges": Map { undefined => [ @@ -1015,9 +1015,9 @@ describe('Timeline profiler', () => { { "batchUID": 0, "depth": 0, - "duration": 0.014, + "duration": 0.012, "lanes": "0b0000000000000000000000000000101", - "timestamp": 0.008, + "timestamp": 0.006, "type": "render-idle", }, { @@ -1025,15 +1025,15 @@ describe('Timeline profiler', () => { "depth": 0, "duration": 0.003, "lanes": "0b0000000000000000000000000000101", - "timestamp": 0.008, + "timestamp": 0.006, "type": "render", }, { "batchUID": 0, "depth": 0, - "duration": 0.010, + "duration": 0.008, "lanes": "0b0000000000000000000000000000101", - "timestamp": 0.012, + "timestamp": 0.01, "type": "commit", }, { @@ -1041,7 +1041,7 @@ describe('Timeline profiler', () => { "depth": 1, "duration": 0.001, "lanes": "0b0000000000000000000000000000101", - "timestamp": 0.02, + "timestamp": 0.016, "type": "layout-effects", }, { @@ -1049,15 +1049,15 @@ describe('Timeline profiler', () => { "depth": 0, "duration": 0.004, "lanes": "0b0000000000000000000000000000101", - "timestamp": 0.023, + "timestamp": 0.019, "type": "passive-effects", }, { "batchUID": 1, "depth": 0, - "duration": 0.014, + "duration": 0.012, "lanes": "0b0000000000000000000000000000101", - "timestamp": 0.028, + "timestamp": 0.024, "type": "render-idle", }, { @@ -1065,15 +1065,15 @@ describe('Timeline profiler', () => { "depth": 0, "duration": 0.003, "lanes": "0b0000000000000000000000000000101", - "timestamp": 0.028, + "timestamp": 0.024, "type": "render", }, { "batchUID": 1, "depth": 0, - "duration": 0.010, + "duration": 0.008, "lanes": "0b0000000000000000000000000000101", - "timestamp": 0.032, + "timestamp": 0.028, "type": "commit", }, { @@ -1081,7 +1081,7 @@ describe('Timeline profiler', () => { "depth": 1, "duration": 0.001, "lanes": "0b0000000000000000000000000000101", - "timestamp": 0.04, + "timestamp": 0.034, "type": "layout-effects", }, { @@ -1089,7 +1089,7 @@ describe('Timeline profiler', () => { "depth": 0, "duration": 0.003, "lanes": "0b0000000000000000000000000000101", - "timestamp": 0.043, + "timestamp": 0.037, "type": "passive-effects", }, ], @@ -1126,14 +1126,14 @@ describe('Timeline profiler', () => { "schedulingEvents": [ { "lanes": "0b0000000000000000000000000000101", - "timestamp": 0.007, + "timestamp": 0.005, "type": "schedule-render", "warning": null, }, { "componentName": "App", "lanes": "0b0000000000000000000000000000101", - "timestamp": 0.025, + "timestamp": 0.021, "type": "schedule-state-update", "warning": null, }, diff --git a/packages/react-devtools-shared/src/__tests__/treeContext-test.js b/packages/react-devtools-shared/src/__tests__/treeContext-test.js index b6249cfdc4490..f22b08f4d9cc3 100644 --- a/packages/react-devtools-shared/src/__tests__/treeContext-test.js +++ b/packages/react-devtools-shared/src/__tests__/treeContext-test.js @@ -2586,14 +2586,14 @@ describe('TreeListContext', () => { utils.act(() => TestRenderer.create()); expect(store).toMatchInlineSnapshot(` - ✕ 1, ⚠ 1 + ✕ 2, ⚠ 0 [root] ✕ `); selectNextErrorOrWarning(); expect(state).toMatchInlineSnapshot(` - ✕ 1, ⚠ 1 + ✕ 2, ⚠ 0 [root] → ✕ `); @@ -2648,14 +2648,14 @@ describe('TreeListContext', () => { utils.act(() => TestRenderer.create()); expect(store).toMatchInlineSnapshot(` - ✕ 1, ⚠ 1 + ✕ 2, ⚠ 0 [root] ✕ `); selectNextErrorOrWarning(); expect(state).toMatchInlineSnapshot(` - ✕ 1, ⚠ 1 + ✕ 2, ⚠ 0 [root] → ✕ `); @@ -2705,7 +2705,7 @@ describe('TreeListContext', () => { utils.act(() => TestRenderer.create()); expect(store).toMatchInlineSnapshot(` - ✕ 2, ⚠ 1 + ✕ 3, ⚠ 0 [root] ▾ ✕ @@ -2713,7 +2713,7 @@ describe('TreeListContext', () => { selectNextErrorOrWarning(); expect(state).toMatchInlineSnapshot(` - ✕ 2, ⚠ 1 + ✕ 3, ⚠ 0 [root] → ▾ ✕ diff --git a/packages/react-devtools-shell/src/app/index.js b/packages/react-devtools-shell/src/app/index.js index f991d61363bd1..69f8566cbe6b4 100644 --- a/packages/react-devtools-shell/src/app/index.js +++ b/packages/react-devtools-shell/src/app/index.js @@ -31,6 +31,7 @@ ignoreErrors([ 'Warning: Unsafe lifecycle methods', 'Warning: %s is deprecated in StrictMode.', // findDOMNode 'Warning: ReactDOM.render was removed in React 19', + 'Warning: react-test-renderer is deprecated', ]); ignoreWarnings(['Warning: componentWillReceiveProps has been renamed']); ignoreLogs([]); diff --git a/packages/react-reconciler/src/__tests__/ReactHooks-test.internal.js b/packages/react-reconciler/src/__tests__/ReactHooks-test.internal.js index be4119bb797b9..476838776f329 100644 --- a/packages/react-reconciler/src/__tests__/ReactHooks-test.internal.js +++ b/packages/react-reconciler/src/__tests__/ReactHooks-test.internal.js @@ -19,6 +19,7 @@ let Scheduler; let ReactDOMServer; let act; let assertLog; +let assertConsoleErrorDev; let waitForAll; let waitForThrow; @@ -35,6 +36,7 @@ describe('ReactHooks', () => { const InternalTestUtils = require('internal-test-utils'); assertLog = InternalTestUtils.assertLog; + assertConsoleErrorDev = InternalTestUtils.assertConsoleErrorDev; waitForAll = InternalTestUtils.waitForAll; waitForThrow = InternalTestUtils.waitForThrow; }); @@ -1810,7 +1812,6 @@ describe('ReactHooks', () => { // Regression test for #14674 it('does not swallow original error when updating another component in render phase', async () => { const {useState} = React; - spyOnDev(console, 'error').mockImplementation(() => {}); let _setState; function A() { @@ -1837,14 +1838,10 @@ describe('ReactHooks', () => { ); }); }).rejects.toThrow('Hello'); - - if (__DEV__) { - expect(console.error).toHaveBeenCalledTimes(1); - expect(console.error.mock.calls[0][0]).toContain( - 'Warning: Cannot update a component (`%s`) while rendering ' + - 'a different component (`%s`).', - ); - } + assertConsoleErrorDev([ + 'Warning: Cannot update a component (`A`) while rendering ' + + 'a different component (`B`).', + ]); }); // Regression test for https://github.com/facebook/react/issues/15057 diff --git a/packages/react-reconciler/src/__tests__/ReactLazy-test.internal.js b/packages/react-reconciler/src/__tests__/ReactLazy-test.internal.js index 03b9d62732b56..9ed000d9d0b2e 100644 --- a/packages/react-reconciler/src/__tests__/ReactLazy-test.internal.js +++ b/packages/react-reconciler/src/__tests__/ReactLazy-test.internal.js @@ -7,6 +7,7 @@ let waitFor; let waitForAll; let waitForThrow; let assertLog; +let assertConsoleErrorDev; let act; let fakeModuleCache; @@ -34,6 +35,7 @@ describe('ReactLazy', () => { waitForAll = InternalTestUtils.waitForAll; waitForThrow = InternalTestUtils.waitForThrow; assertLog = InternalTestUtils.assertLog; + assertConsoleErrorDev = InternalTestUtils.assertConsoleErrorDev; act = InternalTestUtils.act; fakeModuleCache = new Map(); @@ -205,8 +207,6 @@ describe('ReactLazy', () => { }); it('does not support arbitrary promises, only module objects', async () => { - spyOnDev(console, 'error').mockImplementation(() => {}); - const LazyText = lazy(async () => Text); const root = ReactTestRenderer.create(null, { @@ -228,13 +228,11 @@ describe('ReactLazy', () => { expect(error.message).toMatch('Element type is invalid'); assertLog(['Loading...']); + assertConsoleErrorDev([ + 'Expected the result of a dynamic import() call', + 'Expected the result of a dynamic import() call', + ]); expect(root).not.toMatchRenderedOutput('Hi'); - if (__DEV__) { - expect(console.error).toHaveBeenCalledTimes(2); - expect(console.error.mock.calls[0][0]).toContain( - 'Expected the result of a dynamic import() call', - ); - } }); it('throws if promise rejects', async () => { diff --git a/packages/react-test-renderer/src/ReactTestRenderer.js b/packages/react-test-renderer/src/ReactTestRenderer.js index 3d2f77a47e962..e23bc1f1663c2 100644 --- a/packages/react-test-renderer/src/ReactTestRenderer.js +++ b/packages/react-test-renderer/src/ReactTestRenderer.js @@ -475,7 +475,7 @@ function create( enableReactTestRendererWarning === true && global.IS_REACT_NATIVE_TEST_ENVIRONMENT !== true ) { - console.warn( + console.error( 'react-test-renderer is deprecated. See https://react.dev/warnings/react-test-renderer', ); } diff --git a/packages/react-test-renderer/src/__tests__/ReactTestRenderer-test.internal.js b/packages/react-test-renderer/src/__tests__/ReactTestRenderer-test.internal.js index 4cd173d06f348..819f499884725 100644 --- a/packages/react-test-renderer/src/__tests__/ReactTestRenderer-test.internal.js +++ b/packages/react-test-renderer/src/__tests__/ReactTestRenderer-test.internal.js @@ -60,26 +60,25 @@ describe('ReactTestRenderer', () => { ReactFeatureFlags.enableReactTestRendererWarning = false; }); + // @gate __DEV__ it('should warn if enableReactTestRendererWarning is enabled', () => { + jest.spyOn(console, 'error').mockImplementation(() => {}); ReactFeatureFlags.enableReactTestRendererWarning = true; - expect(() => { - ReactTestRenderer.create(
); - }).toWarnDev( + ReactTestRenderer.create(
); + expect(console.error).toHaveBeenCalledTimes(1); + expect(console.error.mock.calls[0][0]).toContain( 'Warning: react-test-renderer is deprecated. See https://react.dev/warnings/react-test-renderer', - {withoutStack: true}, ); + console.error.mockRestore(); }); - // @gate __DEV__ it('should not warn if enableReactTestRendererWarning is enabled but the RN global is set', () => { + jest.spyOn(console, 'error').mockImplementation(() => {}); global.IS_REACT_NATIVE_TEST_ENVIRONMENT = true; ReactFeatureFlags.enableReactTestRendererWarning = true; - expect(() => { - ReactTestRenderer.create(
); - }).not.toWarnDev( - 'Warning: react-test-renderer is deprecated. See https://react.dev/warnings/react-test-renderer', - {withoutStack: true}, - ); + ReactTestRenderer.create(
); + expect(console.error).toHaveBeenCalledTimes(0); + console.error.mockRestore(); }); describe('root tags', () => {