diff --git a/packages/react-dom/package.json b/packages/react-dom/package.json index 52070cd9647..d1863e6507a 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 00000000000..b6bed7d549a --- /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 cc33df8d123..6fb9e248b48 100644 --- a/scripts/rollup/bundles.js +++ b/scripts/rollup/bundles.js @@ -91,7 +91,6 @@ const bundles = [ 'src/renderers/shared/**/*.js', 'src/test/**/*.js', // ReactTestUtils is currently very coupled to DOM. - 'src/isomorphic/classic/types/checkPropTypes.js', 'src/ReactVersion.js', 'src/shared/**/*.js', ], @@ -120,7 +119,39 @@ const bundles = [ 'src/renderers/shared/**/*.js', 'src/test/**/*.js', // ReactTestUtils is currently very coupled to DOM. - 'src/isomorphic/classic/types/checkPropTypes.js', + 'src/ReactVersion.js', + 'src/shared/**/*.js', + ], + }, + { + babelOpts: babelOptsReact, + bundleTypes: [FB_DEV, NODE_DEV], + config: { + destDir: 'build/', + globals: { + react: 'React', + }, + moduleName: 'ReactTestUtils', + sourceMap: false, + }, + entry: 'src/test/ReactTestUtils.js', + externals: [ + 'prop-types', + 'prop-types/checkPropTypes', + 'react', + 'react-dom', + 'react-dom/test-utils', + ], + fbEntry: 'src/fb/ReactTestUtilsFBEntry.js', + hasteName: 'ReactTestUtils', + isRenderer: false, + label: 'test-utils', + manglePropertiesOnProd: false, + name: 'react-dom/test-utils', + paths: [ + 'src/renderers/shared/**/*.js', + 'src/test/**/*.js', // ReactTestUtils is currently very coupled to DOM. + 'src/ReactVersion.js', 'src/shared/**/*.js', ], @@ -151,7 +182,6 @@ const bundles = [ 'src/renderers/dom/**/*.js', 'src/renderers/shared/**/*.js', - 'src/isomorphic/classic/types/checkPropTypes.js', 'src/ReactVersion.js', 'src/shared/**/*.js', ], @@ -190,7 +220,6 @@ const bundles = [ 'src/renderers/art/**/*.js', 'src/renderers/shared/**/*.js', - 'src/isomorphic/classic/types/checkPropTypes.js', 'src/ReactVersion.js', 'src/shared/**/*.js', ], @@ -226,7 +255,6 @@ const bundles = [ 'src/renderers/art/**/*.js', 'src/renderers/shared/**/*.js', - 'src/isomorphic/classic/types/checkPropTypes.js', 'src/ReactVersion.js', 'src/shared/**/*.js', ], @@ -328,7 +356,6 @@ const bundles = [ 'src/renderers/shared/**/*.js', 'src/renderers/testing/**/*.js', - 'src/isomorphic/classic/types/checkPropTypes.js', 'src/ReactVersion.js', 'src/shared/**/*.js', ], @@ -355,12 +382,13 @@ const bundles = [ 'src/renderers/shared/**/*.js', 'src/renderers/testing/**/*.js', - 'src/isomorphic/classic/types/checkPropTypes.js', 'src/ReactVersion.js', 'src/shared/**/*.js', ], }, + // TODO (bvaughn) Add shallow renderer target + /******* React Noop Renderer (used only for fixtures/fiber-debugger) *******/ { babelOpts: babelOptsReact, @@ -383,7 +411,6 @@ const bundles = [ 'src/renderers/noop/**/*.js', 'src/renderers/shared/**/*.js', - 'src/isomorphic/classic/types/checkPropTypes.js', 'src/ReactVersion.js', 'src/shared/**/*.js', ], diff --git a/scripts/rollup/results.json b/scripts/rollup/results.json index 01bee146eed..3f10353846c 100644 --- a/scripts/rollup/results.json +++ b/scripts/rollup/results.json @@ -1,113 +1,113 @@ { - "branch": "master", + "branch": "react-dom-test-utils", "bundleSizes": { "react.development.js (UMD_DEV)": { - "size": 121454, - "gzip": 30515 + "size": 121412, + "gzip": 30500 }, "react.production.min.js (UMD_PROD)": { - "size": 15685, - "gzip": 5765 + "size": 15679, + "gzip": 5761 }, "react-dom.development.js (UMD_DEV)": { - "size": 583190, - "gzip": 134534 + "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": 495558, - "gzip": 119685 + "size": 495516, + "gzip": 119682 }, "react-dom-server.production.min.js (UMD_PROD)": { "size": 107033, "gzip": 33273 }, "react-art.development.js (UMD_DEV)": { - "size": 342608, - "gzip": 76782 + "size": 342568, + "gzip": 76773 }, "react-art.production.min.js (UMD_PROD)": { "size": 95013, "gzip": 28991 }, "react.development.js (NODE_DEV)": { - "size": 70266, - "gzip": 17594 + "size": 70222, + "gzip": 17579 }, "react.production.min.js (NODE_PROD)": { - "size": 9226, - "gzip": 3628 + "size": 9220, + "gzip": 3621 }, "React-dev.js (FB_DEV)": { - "size": 72123, - "gzip": 18231 + "size": 72079, + "gzip": 18217 }, "React-prod.js (FB_PROD)": { - "size": 36643, - "gzip": 9256 + "size": 36606, + "gzip": 9248 }, "ReactDOMStack-dev.js (FB_DEV)": { - "size": 522763, - "gzip": 124727 + "size": 492312, + "gzip": 117399 }, "ReactDOMStack-prod.js (FB_PROD)": { - "size": 352776, - "gzip": 84675 + "size": 352924, + "gzip": 84697 }, "react-dom.development.js (NODE_DEV)": { - "size": 542188, - "gzip": 125158 + "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": 797235, - "gzip": 184122 + "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": 445589, - "gzip": 107597 + "size": 445547, + "gzip": 107594 }, "react-dom-server.production.min.js (NODE_PROD)": { "size": 101411, "gzip": 31292 }, "ReactDOMServerStack-dev.js (FB_DEV)": { - "size": 444281, - "gzip": 107443 + "size": 444239, + "gzip": 107440 }, "ReactDOMServerStack-prod.js (FB_PROD)": { "size": 334166, "gzip": 80444 }, "ReactARTStack-dev.js (FB_DEV)": { - "size": 142986, - "gzip": 32714 + "size": 142944, + "gzip": 32705 }, "ReactARTStack-prod.js (FB_PROD)": { "size": 101143, "gzip": 22993 }, "react-art.development.js (NODE_DEV)": { - "size": 265052, - "gzip": 56927 + "size": 265008, + "gzip": 56923 }, "react-art.production.min.js (NODE_PROD)": { "size": 56628, "gzip": 17152 }, "ReactARTFiber-dev.js (FB_DEV)": { - "size": 264230, - "gzip": 56736 + "size": 264186, + "gzip": 56732 }, "ReactARTFiber-prod.js (FB_PROD)": { "size": 205336, @@ -122,20 +122,32 @@ "gzip": 84001 }, "ReactTestRendererFiber-dev.js (FB_DEV)": { - "size": 262139, - "gzip": 55704 + "size": 262095, + "gzip": 55698 }, "ReactTestRendererStack-dev.js (FB_DEV)": { - "size": 151521, - "gzip": 34765 + "size": 151479, + "gzip": 34749 }, "react-noop-renderer.development.js (NODE_DEV)": { - "size": 254136, - "gzip": 53682 + "size": 254092, + "gzip": 53674 }, "react-test-renderer.development.js (NODE_DEV)": { - "size": 262970, - "gzip": 55891 + "size": 262926, + "gzip": 55887 + }, + "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/scripts/rollup/shims/facebook-www/ReactTestUtils.js b/scripts/rollup/shims/facebook-www/ReactTestUtils.js deleted file mode 100644 index dafb421d1d1..00000000000 --- a/scripts/rollup/shims/facebook-www/ReactTestUtils.js +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * 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'); - -module.exports = __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactTestUtils; diff --git a/src/fb/ReactDOMFBEntry.js b/src/fb/ReactDOMFBEntry.js index 754febaf363..c4e8c003fc8 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 188b9c71248..9ecaa6fe078 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/src/isomorphic/classic/types/checkPropTypes.js b/src/fb/ReactTestUtilsFBEntry.js similarity index 77% rename from src/isomorphic/classic/types/checkPropTypes.js rename to src/fb/ReactTestUtilsFBEntry.js index 32d9ecc6774..11c3f04d942 100644 --- a/src/isomorphic/classic/types/checkPropTypes.js +++ b/src/fb/ReactTestUtilsFBEntry.js @@ -5,10 +5,8 @@ * 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 checkPropTypes */ 'use strict'; -module.exports = require('prop-types/checkPropTypes'); +module.exports = require('react-dom/test-utils'); diff --git a/src/isomorphic/React.js b/src/isomorphic/React.js index 807a1c369f4..2d6baadb5f3 100644 --- a/src/isomorphic/React.js +++ b/src/isomorphic/React.js @@ -19,7 +19,7 @@ var ReactPropTypes = require('ReactPropTypes'); var ReactVersion = require('ReactVersion'); var onlyChild = require('onlyChild'); -var checkPropTypes = require('checkPropTypes'); +var checkPropTypes = require('prop-types/checkPropTypes'); var createReactClass = require('createClass'); var createElement = ReactElement.createElement; diff --git a/src/isomorphic/classic/element/ReactElementValidator.js b/src/isomorphic/classic/element/ReactElementValidator.js index 9840ba3a59b..cf2682168b6 100644 --- a/src/isomorphic/classic/element/ReactElementValidator.js +++ b/src/isomorphic/classic/element/ReactElementValidator.js @@ -26,7 +26,7 @@ var getComponentName = require('getComponentName'); var getIteratorFn = require('getIteratorFn'); if (__DEV__) { - var checkPropTypes = require('checkPropTypes'); + var checkPropTypes = require('prop-types/checkPropTypes'); var warning = require('fbjs/lib/warning'); var ReactDebugCurrentFrame = require('ReactDebugCurrentFrame'); var { diff --git a/src/isomorphic/classic/types/__tests__/ReactPropTypes-test.js b/src/isomorphic/classic/types/__tests__/ReactPropTypes-test.js index edcaca7a6f9..ce4c2e18337 100644 --- a/src/isomorphic/classic/types/__tests__/ReactPropTypes-test.js +++ b/src/isomorphic/classic/types/__tests__/ReactPropTypes-test.js @@ -21,7 +21,7 @@ var MyComponent; function resetWarningCache() { jest.resetModules(); - checkPropTypes = require('checkPropTypes'); + checkPropTypes = require('prop-types/checkPropTypes'); } function getPropTypeWarningMessage(propTypes, object, componentName) { diff --git a/src/node_modules/react/lib/checkPropTypes.js b/src/node_modules/react/lib/checkPropTypes.js deleted file mode 100644 index 083e4df83ad..00000000000 --- a/src/node_modules/react/lib/checkPropTypes.js +++ /dev/null @@ -1,9 +0,0 @@ -/** - * Copyright 2016-present Facebook. All Rights Reserved. - * - * @flow - */ - -'use strict'; - -module.exports = require('checkPropTypes'); diff --git a/src/renderers/dom/ReactDOM.js b/src/renderers/dom/ReactDOM.js index f5f976ea7d4..2ddf727c88f 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 80598dfb690..d9b14490834 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/renderers/shared/fiber/ReactFiberContext.js b/src/renderers/shared/fiber/ReactFiberContext.js index b2104d19e90..4d669a8611b 100644 --- a/src/renderers/shared/fiber/ReactFiberContext.js +++ b/src/renderers/shared/fiber/ReactFiberContext.js @@ -15,7 +15,7 @@ import type {Fiber} from 'ReactFiber'; import type {StackCursor} from 'ReactFiberStack'; -var checkPropTypes = require('checkPropTypes'); +var checkPropTypes = require('prop-types/checkPropTypes'); var emptyObject = require('fbjs/lib/emptyObject'); var getComponentName = require('getComponentName'); var invariant = require('fbjs/lib/invariant'); diff --git a/src/renderers/shared/stack/reconciler/ReactCompositeComponent.js b/src/renderers/shared/stack/reconciler/ReactCompositeComponent.js index 2ad0d4b4031..ec117977dc0 100644 --- a/src/renderers/shared/stack/reconciler/ReactCompositeComponent.js +++ b/src/renderers/shared/stack/reconciler/ReactCompositeComponent.js @@ -27,7 +27,7 @@ if (__DEV__) { var warningAboutMissingGetChildContext = {}; } -var checkPropTypes = require('checkPropTypes'); +var checkPropTypes = require('prop-types/checkPropTypes'); var emptyObject = require('fbjs/lib/emptyObject'); var invariant = require('fbjs/lib/invariant'); var shallowEqual = require('fbjs/lib/shallowEqual'); diff --git a/src/test/ReactTestUtils.js b/src/test/ReactTestUtils.js index f320be4bd12..f0179ab9a7a 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: {},