Exclude react-dom/unstable_testing entry point from stable releases (#23258)
* Use consistent naming for unstable_testing entry point * Exclude the testing build from non-experimental builds except at FB * FB builds shouldn't contribute to whether we include the npm files * Exclude exports fields if we delete the files entry * Move test to no longer be internal so we can test against the build * Update the bundle artifact names since they've now changed * Gate import since it doesn't exist
Sebastian Markbåge committed
Feb 8, 2022 at 23:12 UTC
a3bde7974c48cfa749b18531700f895c86cbad91
11 files changed
+40
-24
packages/react-dom/npm/unstable_testing.js
+2
-2
@@ -32,7 +32,7 @@ if (process.env.NODE_ENV === 'production') {
32
// DCE check should happen before ReactDOM bundle executes so that
33
// DevTools can report bad minification during injection.
34
checkDCE();
35
- module.exports = require('./cjs/react-dom-testing.production.min.js');
35
+ module.exports = require('./cjs/react-dom-unstable_testing.production.min.js');
36
} else {
37
- module.exports = require('./cjs/react-dom-testing.development.js');
37
+ module.exports = require('./cjs/react-dom-unstable_testing.development.js');
38
}
packages/react-dom/src/__tests__/ReactDOMTestSelectors-test.js
renamed
+16
-14
@@ -31,21 +31,23 @@ describe('ReactDOMTestSelectors', () => {
31
jest.resetModules();
32
33
React = require('react');
34
-
35
- const ReactDOM = require('react-dom/testing');
34
act = React.unstable_act;
37
- createComponentSelector = ReactDOM.createComponentSelector;
38
- createHasPseudoClassSelector = ReactDOM.createHasPseudoClassSelector;
39
- createRoleSelector = ReactDOM.createRoleSelector;
40
- createTextSelector = ReactDOM.createTextSelector;
41
- createTestNameSelector = ReactDOM.createTestNameSelector;
42
- findAllNodes = ReactDOM.findAllNodes;
43
- findBoundingRects = ReactDOM.findBoundingRects;
44
- focusWithin = ReactDOM.focusWithin;
45
- getFindAllNodesFailureDescription =
46
- ReactDOM.getFindAllNodesFailureDescription;
47
- observeVisibleRects = ReactDOM.observeVisibleRects;
48
- render = ReactDOM.render;
35
+
36
+ if (__EXPERIMENTAL__ || global.__WWW__) {
37
+ const ReactDOM = require('react-dom/unstable_testing');
38
+ createComponentSelector = ReactDOM.createComponentSelector;
39
+ createHasPseudoClassSelector = ReactDOM.createHasPseudoClassSelector;
40
+ createRoleSelector = ReactDOM.createRoleSelector;
41
+ createTextSelector = ReactDOM.createTextSelector;
42
+ createTestNameSelector = ReactDOM.createTestNameSelector;
43
+ findAllNodes = ReactDOM.findAllNodes;
44
+ findBoundingRects = ReactDOM.findBoundingRects;
45
+ focusWithin = ReactDOM.focusWithin;
46
+ getFindAllNodesFailureDescription =
47
+ ReactDOM.getFindAllNodesFailureDescription;
48
+ observeVisibleRects = ReactDOM.observeVisibleRects;
49
+ render = ReactDOM.render;
50
+ }
51
52
container = document.createElement('div');
53
document.body.appendChild(container);
packages/react-dom/unstable_testing.classic.fb.js
renamed
packages/react-dom/unstable_testing.experimental.js
renamed
packages/react-dom/unstable_testing.js
renamed
packages/react-dom/unstable_testing.modern.fb.js
renamed
packages/react-dom/unstable_testing.stable.js
renamed
scripts/rollup/bundles.js
+4
-3
@@ -245,12 +245,13 @@ const bundles = [
245
externals: ['react', 'react-dom'],
246
},
247
248
- // TODO: We don't use this bundle anymore
248
/******* React DOM - www - Testing *******/
249
{
250
moduleType: RENDERER,
252
- bundleTypes: [FB_WWW_DEV, FB_WWW_PROD, NODE_DEV, NODE_PROD],
253
- entry: 'react-dom/testing',
251
+ bundleTypes: __EXPERIMENTAL__
252
+ ? [FB_WWW_DEV, FB_WWW_PROD, NODE_DEV, NODE_PROD]
253
+ : [FB_WWW_DEV, FB_WWW_PROD],
254
+ entry: 'react-dom/unstable_testing',
255
global: 'ReactDOMTesting',
256
minifyWithProdErrorCodes: true,
257
wrapWithModuleBoundaries: false,
scripts/rollup/forks.js
+1
-1
@@ -129,7 +129,7 @@ const forks = Object.freeze({
129
return 'shared/forks/ReactFeatureFlags.test-renderer.www.js';
130
}
131
return 'shared/forks/ReactFeatureFlags.test-renderer.js';
132
- case 'react-dom/testing':
132
+ case 'react-dom/unstable_testing':
133
switch (bundleType) {
134
case FB_WWW_DEV:
135
case FB_WWW_PROD:
scripts/rollup/packaging.js
+14
-1
@@ -139,7 +139,11 @@ let entryPointsToHasBundle = new Map();
139
for (const bundle of Bundles.bundles) {
140
let hasBundle = entryPointsToHasBundle.get(bundle.entry);
141
if (!hasBundle) {
142
- entryPointsToHasBundle.set(bundle.entry, bundle.bundleTypes.length > 0);
142
+ const hasNonFBBundleTypes = bundle.bundleTypes.some(
143
+ type =>
144
+ type !== FB_WWW_DEV && type !== FB_WWW_PROD && type !== FB_WWW_PROFILING
145
+ );
146
+ entryPointsToHasBundle.set(bundle.entry, hasNonFBBundleTypes);
147
}
148
}
149
@@ -176,6 +180,15 @@ function filterOutEntrypoints(name) {
180
i--;
181
unlinkSync(`build/node_modules/${name}/${filename}`);
182
changed = true;
183
+ // Remove it from the exports field too if it exists.
184
+ const exportsJSON = packageJSON.exports;
185
+ if (exportsJSON) {
186
+ if (filename === 'index.js') {
187
+ delete exportsJSON['.'];
188
+ } else {
189
+ delete exportsJSON['./' + filename.replace(/\.js$/, '')];
190
+ }
191
+ }
192
}
193
}
194
if (changed) {
scripts/shared/inlinedHostConfigs.js
+3
-3
@@ -11,7 +11,7 @@ module.exports = [
11
shortName: 'dom',
12
entryPoints: [
13
'react-dom',
14
- 'react-dom/testing',
14
+ 'react-dom/unstable_testing',
15
'react-dom/src/server/ReactDOMFizzServerNode',
16
'react-server-dom-webpack/writer.node.server',
17
'react-server-dom-webpack',
@@ -33,14 +33,14 @@ module.exports = [
33
shortName: 'dom-browser',
34
entryPoints: [
35
'react-dom',
36
- 'react-dom/testing',
36
+ 'react-dom/unstable_testing',
37
'react-dom/src/server/ReactDOMFizzServerBrowser',
38
'react-server-dom-webpack/writer.browser.server',
39
'react-server-dom-webpack',
40
],
41
paths: [
42
'react-dom',
43
- 'react-dom/testing',
43
+ 'react-dom/unstable_testing',
44
'react-dom/src/server/ReactDOMFizzServerBrowser.js', // react-dom/server.browser
45
'react-server-dom-webpack',
46
'react-server-dom-webpack/writer.browser.server',