From ab65d2b335debed999134ce3fde9fa4ae39e0a9b Mon Sep 17 00:00:00 2001 From: Brian Vaughn Date: Thu, 13 Apr 2017 10:54:30 -0700 Subject: [PATCH] Updated Rollup bundle for test-utils * Moved test-utils into react-dom package * Added ReactTestUtilsFBEntry module (though it doesn't really do anything at the moment) * Replaced ReactDOM references with react-dom to avoid duplicating code --- packages/react-dom/package.json | 1 + packages/react-dom/test-utils.js | 5 +++ scripts/rollup/bundles.js | 16 +++++--- scripts/rollup/results.json | 40 +++++++++++-------- src/fb/ReactDOMFBEntry.js | 5 +-- src/fb/ReactDOMFiberFBEntry.js | 11 ----- .../fb/ReactTestUtilsFBEntry.js | 8 +--- src/renderers/dom/ReactDOM.js | 3 ++ src/renderers/dom/fiber/ReactDOMFiber.js | 3 ++ src/test/ReactTestUtils.js | 16 +++++--- 10 files changed, 61 insertions(+), 47 deletions(-) create mode 100644 packages/react-dom/test-utils.js rename scripts/rollup/shims/facebook-www/ReactTestUtils.js => src/fb/ReactTestUtilsFBEntry.js (60%) diff --git a/packages/react-dom/package.json b/packages/react-dom/package.json index 52070cd964734..d1863e6507af0 100644 --- a/packages/react-dom/package.json +++ b/packages/react-dom/package.json @@ -27,6 +27,7 @@ "README.md", "index.js", "server.js", + "test-utils.js", "cjs/", "umd/" ], diff --git a/packages/react-dom/test-utils.js b/packages/react-dom/test-utils.js new file mode 100644 index 0000000000000..b6bed7d549a17 --- /dev/null +++ b/packages/react-dom/test-utils.js @@ -0,0 +1,5 @@ +'use strict'; + +if (process.env.NODE_ENV !== 'production') { + module.exports = require('./cjs/test-utils.development.js'); +} diff --git a/scripts/rollup/bundles.js b/scripts/rollup/bundles.js index b08c10a2483af..6fb9e248b4827 100644 --- a/scripts/rollup/bundles.js +++ b/scripts/rollup/bundles.js @@ -125,7 +125,7 @@ const bundles = [ }, { babelOpts: babelOptsReact, - bundleTypes: [NODE_DEV], + bundleTypes: [FB_DEV, NODE_DEV], config: { destDir: 'build/', globals: { @@ -135,14 +135,20 @@ const bundles = [ sourceMap: false, }, entry: 'src/test/ReactTestUtils.js', - externals: ['prop-types', 'prop-types/checkPropTypes', 'react'], + externals: [ + 'prop-types', + 'prop-types/checkPropTypes', + 'react', + 'react-dom', + 'react-dom/test-utils', + ], + fbEntry: 'src/fb/ReactTestUtilsFBEntry.js', hasteName: 'ReactTestUtils', isRenderer: false, - label: 'react-test-utils', + label: 'test-utils', manglePropertiesOnProd: false, - name: 'react-test-utils', + name: 'react-dom/test-utils', paths: [ - 'src/renderers/dom/**/*.js', 'src/renderers/shared/**/*.js', 'src/test/**/*.js', // ReactTestUtils is currently very coupled to DOM. diff --git a/scripts/rollup/results.json b/scripts/rollup/results.json index 12d537433c001..3f10353846c3e 100644 --- a/scripts/rollup/results.json +++ b/scripts/rollup/results.json @@ -10,12 +10,12 @@ "gzip": 5761 }, "react-dom.development.js (UMD_DEV)": { - "size": 583148, - "gzip": 134526 + "size": 583284, + "gzip": 134555 }, "react-dom.production.min.js (UMD_PROD)": { - "size": 120740, - "gzip": 38094 + "size": 120793, + "gzip": 38119 }, "react-dom-server.development.js (UMD_DEV)": { "size": 495516, @@ -50,28 +50,28 @@ "gzip": 9248 }, "ReactDOMStack-dev.js (FB_DEV)": { - "size": 522721, - "gzip": 124723 + "size": 492312, + "gzip": 117399 }, "ReactDOMStack-prod.js (FB_PROD)": { - "size": 352776, - "gzip": 84675 + "size": 352924, + "gzip": 84697 }, "react-dom.development.js (NODE_DEV)": { - "size": 542144, - "gzip": 125150 + "size": 542280, + "gzip": 125179 }, "react-dom.production.min.js (NODE_PROD)": { - "size": 116925, - "gzip": 36732 + "size": 116978, + "gzip": 36758 }, "ReactDOMFiber-dev.js (FB_DEV)": { - "size": 797189, - "gzip": 184111 + "size": 543121, + "gzip": 125573 }, "ReactDOMFiber-prod.js (FB_PROD)": { - "size": 407613, - "gzip": 93586 + "size": 407761, + "gzip": 93608 }, "react-dom-server.development.js (NODE_DEV)": { "size": 445547, @@ -140,6 +140,14 @@ "react-test-utils.development.js (NODE_DEV)": { "size": 510240, "gzip": 122093 + }, + "react-dom-test-utils.development.js (NODE_DEV)": { + "size": 78532, + "gzip": 19766 + }, + "ReactTestUtils-dev.js (FB_DEV)": { + "size": 528, + "gzip": 328 } } } \ No newline at end of file diff --git a/src/fb/ReactDOMFBEntry.js b/src/fb/ReactDOMFBEntry.js index 754febaf3637a..c4e8c003fc8cf 100644 --- a/src/fb/ReactDOMFBEntry.js +++ b/src/fb/ReactDOMFBEntry.js @@ -43,10 +43,9 @@ Object.assign(ReactDOM.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED, { if (__DEV__) { Object.assign(ReactDOM.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED, { - // ReactPerf and ReactTestUtils currently only work with the DOM renderer - // so we expose them from here, but only in DEV mode. + // ReactPerf currently only works with the DOM renderer + // so we expose it here, but only in DEV mode. ReactPerf: require('ReactPerf'), - ReactTestUtils: require('ReactTestUtils'), }); } diff --git a/src/fb/ReactDOMFiberFBEntry.js b/src/fb/ReactDOMFiberFBEntry.js index 188b9c71248ca..9ecaa6fe07844 100644 --- a/src/fb/ReactDOMFiberFBEntry.js +++ b/src/fb/ReactDOMFiberFBEntry.js @@ -45,15 +45,4 @@ Object.assign( }, ); -if (__DEV__) { - Object.assign( - ReactDOMFiber.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED, - { - // ReactPerf and ReactTestUtils currently only work with the DOM renderer - // so we expose them from here, but only in DEV mode. - ReactTestUtils: require('ReactTestUtils'), - }, - ); -} - module.exports = ReactDOMFiber; diff --git a/scripts/rollup/shims/facebook-www/ReactTestUtils.js b/src/fb/ReactTestUtilsFBEntry.js similarity index 60% rename from scripts/rollup/shims/facebook-www/ReactTestUtils.js rename to src/fb/ReactTestUtilsFBEntry.js index dafb421d1d187..89ca4ecb50292 100644 --- a/scripts/rollup/shims/facebook-www/ReactTestUtils.js +++ b/src/fb/ReactTestUtilsFBEntry.js @@ -5,14 +5,10 @@ * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. - * - * @providesModule ReactTestUtils */ 'use strict'; -const { - __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED, -} = require('ReactDOM-fb'); +var ReactTestUtils = require('react-dom/test-utils'); -module.exports = __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactTestUtils; +module.exports = ReactTestUtils; diff --git a/src/renderers/dom/ReactDOM.js b/src/renderers/dom/ReactDOM.js index f5f976ea7d4aa..2ddf727c88f43 100644 --- a/src/renderers/dom/ReactDOM.js +++ b/src/renderers/dom/ReactDOM.js @@ -42,6 +42,9 @@ var ReactDOM = { __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED: { // For TapEventPlugin which is popular in open source EventPluginHub: require('EventPluginHub'), + // Used by test-utils + ReactDOMComponentTree, + ReactBrowserEventEmitter: require('ReactBrowserEventEmitter'), }, }; diff --git a/src/renderers/dom/fiber/ReactDOMFiber.js b/src/renderers/dom/fiber/ReactDOMFiber.js index 80598dfb69079..d9b14490834e7 100644 --- a/src/renderers/dom/fiber/ReactDOMFiber.js +++ b/src/renderers/dom/fiber/ReactDOMFiber.js @@ -543,6 +543,9 @@ var ReactDOM = { __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED: { // For TapEventPlugin which is popular in open source EventPluginHub: require('EventPluginHub'), + // Used by test-utils + ReactDOMComponentTree, + ReactBrowserEventEmitter, }, }; diff --git a/src/test/ReactTestUtils.js b/src/test/ReactTestUtils.js index f320be4bd12b5..f0179ab9a7a40 100644 --- a/src/test/ReactTestUtils.js +++ b/src/test/ReactTestUtils.js @@ -17,19 +17,21 @@ var EventPluginRegistry = require('EventPluginRegistry'); var EventPropagators = require('EventPropagators'); var React = require('react'); var ReactControlledComponent = require('ReactControlledComponent'); -var ReactDOM = require('ReactDOM'); -var ReactDOMComponentTree = require('ReactDOMComponentTree'); -var ReactBrowserEventEmitter = require('ReactBrowserEventEmitter'); +var ReactDOM = require('react-dom'); var ReactFiberTreeReflection = require('ReactFiberTreeReflection'); var ReactInstanceMap = require('ReactInstanceMap'); var ReactTypeOfWork = require('ReactTypeOfWork'); var ReactGenericBatching = require('ReactGenericBatching'); var SyntheticEvent = require('SyntheticEvent'); -var ReactShallowRenderer = require('ReactShallowRenderer'); -var findDOMNode = require('findDOMNode'); var invariant = require('fbjs/lib/invariant'); +var {findDOMNode} = ReactDOM; +var { + ReactDOMComponentTree, + ReactBrowserEventEmitter, +} = ReactDOM.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED; + var topLevelTypes = EventConstants.topLevelTypes; var { ClassComponent, @@ -403,9 +405,11 @@ var ReactTestUtils = { }; }, + /** + * TODO (bvaughn) Re-add with an export to react-test-renderer/shallow and a message createRenderer: function() { - return new ReactShallowRenderer(); }, + */ Simulate: null, SimulateNative: {},