Skip to content

Commit 94e396e

Browse files
committed
make testing builds for React/ReactDOM
This PR introduces UMD_TESTING, NODE_TESTING, and FB_WWW_TESTING build types for `react` and `react-dom`. - changes infra to generate these builds - uses __TEST__ in the work loop for a branch (we can change this, I added it to verify it works) - exports act on ReactDOM in these testing builds - uses the new test builds in fixtures/dom In the next PR, we'll switch out all our own internal tests to use this new testing build
1 parent cf00812 commit 94e396e

File tree

18 files changed

+440
-76
lines changed

18 files changed

+440
-76
lines changed

.eslintrc.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,7 @@ module.exports = {
168168
__PROFILE__: true,
169169
__UMD__: true,
170170
__EXPERIMENTAL__: true,
171+
__TEST__: true,
171172
trustedTypes: true,
172173
},
173174
};

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

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,21 @@
88
*/
99

1010
let React;
11-
let TestUtils;
11+
let ReactDOM;
1212
let TestRenderer;
1313

1414
global.__DEV__ = process.env.NODE_ENV !== 'production';
1515

16+
jest.mock('react', () => require.requireActual('react/testing'));
17+
jest.mock('react-dom', () => require.requireActual('react-dom/testing'));
18+
1619
expect.extend(require('../toWarnDev'));
1720

1821
describe('unmocked scheduler', () => {
1922
beforeEach(() => {
2023
jest.resetModules();
2124
React = require('react');
22-
TestUtils = require('react-dom/test-utils');
25+
ReactDOM = require('react-dom');
2326
TestRenderer = require('react-test-renderer');
2427
});
2528

@@ -33,7 +36,7 @@ describe('unmocked scheduler', () => {
3336
}
3437
// in legacy mode, this tests whether an act only flushes its own effects
3538
TestRenderer.act(() => {
36-
TestUtils.act(() => {
39+
ReactDOM.act(() => {
3740
TestRenderer.create(<Effecty />);
3841
});
3942
expect(log).toEqual([]);
@@ -42,7 +45,7 @@ describe('unmocked scheduler', () => {
4245

4346
log = [];
4447
// for doublechecking, we flip it inside out, and assert on the outermost
45-
TestUtils.act(() => {
48+
ReactDOM.act(() => {
4649
TestRenderer.act(() => {
4750
TestRenderer.create(<Effecty />);
4851
});
@@ -59,7 +62,7 @@ describe('mocked scheduler', () => {
5962
require.requireActual('scheduler/unstable_mock')
6063
);
6164
React = require('react');
62-
TestUtils = require('react-dom/test-utils');
65+
ReactDOM = require('react-dom');
6366
TestRenderer = require('react-test-renderer');
6467
});
6568

@@ -77,7 +80,7 @@ describe('mocked scheduler', () => {
7780
}
7881
// with a mocked scheduler, this tests whether it flushes all work only on the outermost act
7982
TestRenderer.act(() => {
80-
TestUtils.act(() => {
83+
ReactDOM.act(() => {
8184
TestRenderer.create(<Effecty />);
8285
});
8386
expect(log).toEqual([]);
@@ -86,7 +89,7 @@ describe('mocked scheduler', () => {
8689

8790
log = [];
8891
// for doublechecking, we flip it inside out, and assert on the outermost
89-
TestUtils.act(() => {
92+
ReactDOM.act(() => {
9093
TestRenderer.act(() => {
9194
TestRenderer.create(<Effecty />);
9295
});

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

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,15 @@ let ReactDOM;
1212
let ReactART;
1313
let ARTSVGMode;
1414
let ARTCurrentMode;
15-
let TestUtils;
1615
let TestRenderer;
1716
let ARTTest;
1817

1918
global.__DEV__ = process.env.NODE_ENV !== 'production';
2019
global.__EXPERIMENTAL__ = process.env.RELEASE_CHANNEL === 'experimental';
2120

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

2426
function App(props) {
@@ -32,7 +34,6 @@ beforeEach(() => {
3234
ReactART = require('react-art');
3335
ARTSVGMode = require('art/modes/svg');
3436
ARTCurrentMode = require('art/modes/current');
35-
TestUtils = require('react-dom/test-utils');
3637
TestRenderer = require('react-test-renderer');
3738

3839
ARTCurrentMode.setCurrent(ARTSVGMode);
@@ -70,8 +71,8 @@ beforeEach(() => {
7071
});
7172

7273
it("doesn't warn when you use the right act + renderer: dom", () => {
73-
TestUtils.act(() => {
74-
TestUtils.renderIntoDocument(<App />);
74+
ReactDOM.act(() => {
75+
ReactDOM.render(<App />, document.createElement('div'));
7576
});
7677
});
7778

@@ -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 />);
@@ -99,7 +100,7 @@ it('resets correctly across renderers', () => {
99100
it('warns when using the wrong act version - test + dom: render', () => {
100101
expect(() => {
101102
TestRenderer.act(() => {
102-
TestUtils.renderIntoDocument(<App />);
103+
ReactDOM.render(<App />, document.createElement('div'));
103104
});
104105
}).toWarnDev(["It looks like you're using the wrong act()"], {
105106
withoutStack: true,
@@ -113,7 +114,7 @@ it('warns when using the wrong act version - test + dom: updates', () => {
113114
setCtr = _setCtr;
114115
return ctr;
115116
}
116-
TestUtils.renderIntoDocument(<Counter />);
117+
ReactDOM.render(<Counter />, document.createElement('div'));
117118
expect(() => {
118119
TestRenderer.act(() => {
119120
setCtr(1);
@@ -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,15 +152,15 @@ 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-
TestUtils.renderIntoDocument(<ARTTest />);
162+
ReactDOM.act(() => {
163+
ReactDOM.render(<ARTTest />, document.createElement('div'));
163164
});
164165
});
165166

@@ -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-dom/npm/testing.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
'use strict';
2+
3+
module.exports = require('./cjs/react-dom.testing.js');

packages/react-dom/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
"server.js",
3535
"server.browser.js",
3636
"server.node.js",
37+
"testing.js",
3738
"test-utils.js",
3839
"unstable-fire.js",
3940
"unstable-fizz.js",

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -721,7 +721,7 @@ function runActTests(label, render, unmount, rerender) {
721721
});
722722

723723
describe('suspense', () => {
724-
if (__DEV__ && __EXPERIMENTAL__) {
724+
if (__TEST__ && __EXPERIMENTAL__) {
725725
it('triggers fallbacks if available', async () => {
726726
let resolved = false;
727727
let resolve;

0 commit comments

Comments
 (0)