Skip to content

Commit 50ba7e1

Browse files
committed
Bring back OSS testing builds
We removed this in facebook#18138 to unblock 16.13. This PR brings it back, with some changes - - testing builds are prefixed with `unstable-`, i.e - `react-dom/unstable-testing` - added back to `bundles.js` - reintroduces the `isTestEnvironment`feature flag. Not used to generate the actual builds, but is used for test specific logic - flushes suspense fallbacks in prod for testing builds - changes tests in TestUtilsAct to reflect this - adds a testing build for react as well - and finally removes the testing sigils from prod builds. nice. - misc test config changes
1 parent 7e83af1 commit 50ba7e1

38 files changed

+3185
-206
lines changed

.eslintrc.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,7 @@ module.exports = {
171171
__PROFILE__: true,
172172
__UMD__: true,
173173
__EXPERIMENTAL__: true,
174+
__TESTING__: true,
174175
trustedTypes: true,
175176
},
176177
};

fixtures/dom/src/__tests__/nested-act-test.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,15 @@ let TestAct;
1515
global.__DEV__ = process.env.NODE_ENV !== 'production';
1616

1717
expect.extend(require('../toWarnDev'));
18+
jest.mock('react-dom', () =>
19+
require.requireActual('react-dom/unstable-testing')
20+
);
1821

1922
describe('unmocked scheduler', () => {
2023
beforeEach(() => {
2124
jest.resetModules();
2225
React = require('react');
23-
DOMAct = require('react-dom/test-utils').act;
26+
DOMAct = require('react-dom').act;
2427
TestRenderer = require('react-test-renderer');
2528
TestAct = TestRenderer.act;
2629
});

fixtures/dom/src/__tests__/wrong-act-test.js

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
let React;
1111
let ReactDOM;
1212
let ReactART;
13-
let TestUtils;
1413
let ARTSVGMode;
1514
let ARTCurrentMode;
1615
let TestRenderer;
@@ -20,6 +19,9 @@ global.__DEV__ = process.env.NODE_ENV !== 'production';
2019
global.__EXPERIMENTAL__ = process.env.RELEASE_CHANNEL === 'experimental';
2120

2221
expect.extend(require('../toWarnDev'));
22+
jest.mock('react-dom', () =>
23+
require.requireActual('react-dom/unstable-testing')
24+
);
2325

2426
function App(props) {
2527
return 'hello world';
@@ -29,7 +31,6 @@ beforeEach(() => {
2931
jest.resetModules();
3032
React = require('react');
3133
ReactDOM = require('react-dom');
32-
TestUtils = require('react-dom/test-utils');
3334
ReactART = require('react-art');
3435
ARTSVGMode = require('art/modes/svg');
3536
ARTCurrentMode = require('art/modes/current');
@@ -70,7 +71,7 @@ beforeEach(() => {
7071
});
7172

7273
it("doesn't warn when you use the right act + renderer: dom", () => {
73-
TestUtils.act(() => {
74+
ReactDOM.act(() => {
7475
ReactDOM.render(<App />, document.createElement('div'));
7576
});
7677
});
@@ -86,7 +87,7 @@ it('resets correctly across renderers', () => {
8687
React.useEffect(() => {}, []);
8788
return null;
8889
}
89-
TestUtils.act(() => {
90+
ReactDOM.act(() => {
9091
TestRenderer.act(() => {});
9192
expect(() => {
9293
TestRenderer.create(<Effecty />);
@@ -123,7 +124,7 @@ it('warns when using the wrong act version - test + dom: updates', () => {
123124

124125
it('warns when using the wrong act version - dom + test: .create()', () => {
125126
expect(() => {
126-
TestUtils.act(() => {
127+
ReactDOM.act(() => {
127128
TestRenderer.create(<App />);
128129
});
129130
}).toWarnDev(["It looks like you're using the wrong act()"], {
@@ -134,7 +135,7 @@ it('warns when using the wrong act version - dom + test: .create()', () => {
134135
it('warns when using the wrong act version - dom + test: .update()', () => {
135136
const root = TestRenderer.create(<App key="one" />);
136137
expect(() => {
137-
TestUtils.act(() => {
138+
ReactDOM.act(() => {
138139
root.update(<App key="two" />);
139140
});
140141
}).toWarnDev(["It looks like you're using the wrong act()"], {
@@ -151,14 +152,14 @@ it('warns when using the wrong act version - dom + test: updates', () => {
151152
}
152153
TestRenderer.create(<Counter />);
153154
expect(() => {
154-
TestUtils.act(() => {
155+
ReactDOM.act(() => {
155156
setCtr(1);
156157
});
157158
}).toWarnDev(["It looks like you're using the wrong act()"]);
158159
});
159160

160161
it('does not warn when nesting react-act inside react-dom', () => {
161-
TestUtils.act(() => {
162+
ReactDOM.act(() => {
162163
ReactDOM.render(<ARTTest />, document.createElement('div'));
163164
});
164165
});
@@ -171,7 +172,7 @@ it('does not warn when nesting react-act inside react-test-renderer', () => {
171172

172173
it("doesn't warn if you use nested acts from different renderers", () => {
173174
TestRenderer.act(() => {
174-
TestUtils.act(() => {
175+
ReactDOM.act(() => {
175176
TestRenderer.create(<App />);
176177
});
177178
});

packages/react-devtools-shared/src/__tests__/legacy/inspectElement-test.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@ import type {DehydratedData} from 'react-devtools-shared/src/devtools/views/Comp
1212
import type {FrontendBridge} from 'react-devtools-shared/src/bridge';
1313
import type Store from 'react-devtools-shared/src/devtools/store';
1414

15+
// unmock the testing builds
16+
jest.unmock('react');
17+
jest.unmock('react-dom');
18+
1519
describe('InspectedElementContext', () => {
1620
let React;
1721
let ReactDOM;

packages/react-devtools-shared/src/__tests__/legacy/storeLegacy-v15-test.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@
77
* @flow
88
*/
99

10+
// unmock the testing builds
11+
jest.unmock('react');
12+
jest.unmock('react-dom');
13+
1014
describe('Store (legacy)', () => {
1115
let React;
1216
let ReactDOM;

packages/react-dom/npm/testing.js

Lines changed: 0 additions & 38 deletions
This file was deleted.
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
'use strict';
2+
3+
if (process.env.NODE_ENV === 'production') {
4+
module.exports = require('./cjs/react-dom-unstable-testing.production.min.js');
5+
} else {
6+
module.exports = require('./cjs/react-dom-unstable-testing.development.js');
7+
}

packages/react-dom/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
"unstable-fizz.browser.js",
4040
"unstable-fizz.node.js",
4141
"unstable-native-dependencies.js",
42+
"unstable-testing.js",
4243
"cjs/",
4344
"umd/"
4445
],

packages/react-dom/src/__tests__/ReactTestUtilsAct-test.js

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99

1010
let React;
1111
let ReactDOM;
12-
let ReactTestUtils;
1312
let SchedulerTracing;
1413
let Scheduler;
1514
let act;
@@ -25,7 +24,7 @@ function sleep(period) {
2524
});
2625
}
2726

28-
describe('ReactTestUtils.act()', () => {
27+
describe('act()', () => {
2928
// first we run all the tests with concurrent mode
3029
if (__EXPERIMENTAL__) {
3130
let concurrentRoot = null;
@@ -155,10 +154,9 @@ function runActTests(label, render, unmount, rerender) {
155154
jest.resetModules();
156155
React = require('react');
157156
ReactDOM = require('react-dom');
158-
ReactTestUtils = require('react-dom/test-utils');
159157
SchedulerTracing = require('scheduler/tracing');
160158
Scheduler = require('scheduler');
161-
act = ReactTestUtils.act;
159+
act = ReactDOM.act;
162160
container = document.createElement('div');
163161
document.body.appendChild(container);
164162
});
@@ -721,7 +719,7 @@ function runActTests(label, render, unmount, rerender) {
721719
});
722720

723721
describe('suspense', () => {
724-
if (__DEV__ && __EXPERIMENTAL__) {
722+
if (__EXPERIMENTAL__) {
725723
// todo - remove __DEV__ check once we start using testing builds
726724
it('triggers fallbacks if available', async () => {
727725
let resolved = false;
@@ -792,7 +790,7 @@ function runActTests(label, render, unmount, rerender) {
792790
}
793791
});
794792
describe('warn in prod mode', () => {
795-
it('warns if you try to use act() in prod mode', () => {
793+
xit('warns if you try to use act() in prod mode', () => {
796794
const spy = spyOnDevAndProd(console, 'error');
797795

798796
act(() => {});

0 commit comments

Comments
 (0)