diff --git a/scripts/jest/environment.js b/scripts/jest/environment.js index edc810072c56..6b0c38fe49d7 100644 --- a/scripts/jest/environment.js +++ b/scripts/jest/environment.js @@ -1,2 +1,11 @@ /* eslint-disable */ global.__DEV__ = true; + +// For testing DOM Fiber, we synchronously invoke all the scheduling. +global.requestAnimationFrame = function(callback) { + callback(); +}; + +global.requestIdleCallback = function(callback) { + callback({ timeRemaining() { return Infinity; } }); +}; diff --git a/scripts/jest/test-framework-setup.js b/scripts/jest/test-framework-setup.js index 141b0fa8366f..f90d4cbe4895 100644 --- a/scripts/jest/test-framework-setup.js +++ b/scripts/jest/test-framework-setup.js @@ -1,5 +1,9 @@ 'use strict'; +// We want to globally mock this but jest doesn't let us do that by default +// for a file that already exists. So we have to explicitly mock it. +jest.mock('ReactDOM'); + var env = jasmine.getEnv(); var callCount = 0; diff --git a/src/renderers/dom/__mocks__/ReactDOM.js b/src/renderers/dom/__mocks__/ReactDOM.js new file mode 100644 index 000000000000..00d14eb7f1ce --- /dev/null +++ b/src/renderers/dom/__mocks__/ReactDOM.js @@ -0,0 +1,17 @@ +/** + * Copyright 2013-2015, 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. + */ + +'use strict'; + +var ReactDOMFeatureFlags = require('ReactDOMFeatureFlags'); + +var useFiber = ReactDOMFeatureFlags.useFiber; + +module.exports = + useFiber ? require('ReactDOMFiber') : require.requireActual('ReactDOM'); diff --git a/src/renderers/dom/shared/ReactDOMFeatureFlags.js b/src/renderers/dom/shared/ReactDOMFeatureFlags.js index f27e8541903c..5e9d93267cf9 100644 --- a/src/renderers/dom/shared/ReactDOMFeatureFlags.js +++ b/src/renderers/dom/shared/ReactDOMFeatureFlags.js @@ -13,6 +13,7 @@ var ReactDOMFeatureFlags = { useCreateElement: true, + useFiber: false, }; module.exports = ReactDOMFeatureFlags;