From 22dc2e42bdc00d87fc19c5e75fc7c0b3fdcdc572 Mon Sep 17 00:00:00 2001 From: Brian Vaughn Date: Wed, 15 Apr 2020 19:10:15 -0700 Subject: [PATCH] Add experimental DebugTracing logger for internal use (#18531) --- .../ReactDOMServerIntegrationModes-test.js | 50 +++ .../src/server/ReactPartialRenderer.js | 2 + packages/react-reconciler/src/DebugTracing.js | 226 ++++++++++++ .../react-reconciler/src/ReactFiber.new.js | 6 + .../react-reconciler/src/ReactFiber.old.js | 6 + .../src/ReactFiberClassComponent.new.js | 42 ++- .../src/ReactFiberClassComponent.old.js | 42 ++- .../src/ReactFiberHooks.new.js | 26 +- .../src/ReactFiberHooks.old.js | 26 +- .../src/ReactFiberReconciler.new.js | 1 - .../src/ReactFiberReconciler.old.js | 1 - .../src/ReactFiberThrow.new.js | 14 +- .../src/ReactFiberThrow.old.js | 14 +- .../src/ReactFiberWorkLoop.new.js | 116 ++++++ .../src/ReactFiberWorkLoop.old.js | 116 ++++++ .../react-reconciler/src/ReactTypeOfMode.js | 11 +- .../__tests__/DebugTracing-test.internal.js | 345 ++++++++++++++++++ packages/react/index.classic.fb.js | 2 + packages/react/index.experimental.js | 2 + packages/react/index.js | 1 + packages/react/index.modern.fb.js | 2 + packages/react/src/React.js | 2 + packages/shared/ReactFeatureFlags.js | 4 + packages/shared/ReactSymbols.js | 2 + .../forks/ReactFeatureFlags.native-fb.js | 1 + .../forks/ReactFeatureFlags.native-oss.js | 1 + .../forks/ReactFeatureFlags.test-renderer.js | 1 + .../ReactFeatureFlags.test-renderer.www.js | 1 + .../shared/forks/ReactFeatureFlags.testing.js | 1 + .../forks/ReactFeatureFlags.testing.www.js | 1 + .../forks/ReactFeatureFlags.www-dynamic.js | 1 + .../shared/forks/ReactFeatureFlags.www.js | 1 + packages/shared/isValidElementType.js | 2 + 33 files changed, 1050 insertions(+), 19 deletions(-) create mode 100644 packages/react-reconciler/src/DebugTracing.js create mode 100644 packages/react-reconciler/src/__tests__/DebugTracing-test.internal.js diff --git a/packages/react-dom/src/__tests__/ReactDOMServerIntegrationModes-test.js b/packages/react-dom/src/__tests__/ReactDOMServerIntegrationModes-test.js index 979af05553..8086ff4414 100644 --- a/packages/react-dom/src/__tests__/ReactDOMServerIntegrationModes-test.js +++ b/packages/react-dom/src/__tests__/ReactDOMServerIntegrationModes-test.js @@ -39,6 +39,56 @@ describe('ReactDOMServerIntegration', () => { resetModules(); }); + // Test pragmas don't support itRenders abstraction + if ( + __EXPERIMENTAL__ && + require('shared/ReactFeatureFlags').enableDebugTracing + ) { + describe('React.unstable_DebugTracingMode', () => { + beforeEach(() => { + spyOnDevAndProd(console, 'log'); + }); + + itRenders('with one child', async render => { + const e = await render( + +
text1
+
, + ); + const parent = e.parentNode; + expect(parent.childNodes[0].tagName).toBe('DIV'); + }); + + itRenders('mode with several children', async render => { + const Header = props => { + return

header

; + }; + const Footer = props => { + return ( + +

footer

+

about

+
+ ); + }; + const e = await render( + +
text1
+ text2 +
+