Skip to content

Commit 46c0741

Browse files
committed
pass failing test, fixes another
- a test was failing in ReactDOMServerIntegrationHooks while testing an effect; the behaviour of yields was different from browser and server when wrapped with act(). further, because of how we initialized modules, act() around renders wasn't working corrrectly. solved by passing in ReactTestUtils in initModules, and checking on the finally yielded values in the specific test. - in ReactUpdates, while testing an infinite recursion detection, the test needed to be wrapped in an act(), which would have caused the recusrsion error to throw. solived by rethrowing the error from inside the act().
1 parent bad37b8 commit 46c0741

23 files changed

+103
-30
lines changed

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ const ReactDOMServerIntegrationUtils = require('./utils/ReactDOMServerIntegratio
1313

1414
let React;
1515
let ReactDOM;
16+
let ReactTestUtils;
1617
let ReactDOMServer;
1718

1819
function initModules() {
@@ -21,11 +22,13 @@ function initModules() {
2122
React = require('react');
2223
ReactDOM = require('react-dom');
2324
ReactDOMServer = require('react-dom/server');
25+
ReactTestUtils = require('react-dom/test-utils');
2426

2527
// Make them available to the helpers.
2628
return {
2729
ReactDOM,
2830
ReactDOMServer,
31+
ReactTestUtils,
2932
};
3033
}
3134

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,18 +16,21 @@ const TEXT_NODE_TYPE = 3;
1616
let React;
1717
let ReactDOM;
1818
let ReactDOMServer;
19+
let ReactTestUtils;
1920

2021
function initModules() {
2122
// Reset warning cache.
2223
jest.resetModuleRegistry();
2324
React = require('react');
2425
ReactDOM = require('react-dom');
2526
ReactDOMServer = require('react-dom/server');
27+
ReactTestUtils = require('react-dom/test-utils');
2628

2729
// Make them available to the helpers.
2830
return {
2931
ReactDOM,
3032
ReactDOMServer,
33+
ReactTestUtils,
3134
};
3235
}
3336

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,18 +16,21 @@ const {disableInputAttributeSyncing} = require('shared/ReactFeatureFlags');
1616
let React;
1717
let ReactDOM;
1818
let ReactDOMServer;
19+
let ReactTestUtils;
1920

2021
function initModules() {
2122
// Reset warning cache.
2223
jest.resetModuleRegistry();
2324
React = require('react');
2425
ReactDOM = require('react-dom');
2526
ReactDOMServer = require('react-dom/server');
27+
ReactTestUtils = require('react-dom/test-utils');
2628

2729
// Make them available to the helpers.
2830
return {
2931
ReactDOM,
3032
ReactDOMServer,
33+
ReactTestUtils,
3134
};
3235
}
3336

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,18 +14,21 @@ const ReactDOMServerIntegrationUtils = require('./utils/ReactDOMServerIntegratio
1414
let React;
1515
let ReactDOM;
1616
let ReactDOMServer;
17+
let ReactTestUtils;
1718

1819
function initModules() {
1920
// Reset warning cache.
2021
jest.resetModuleRegistry();
2122
React = require('react');
2223
ReactDOM = require('react-dom');
2324
ReactDOMServer = require('react-dom/server');
25+
ReactTestUtils = require('react-dom/test-utils');
2426

2527
// Make them available to the helpers.
2628
return {
2729
ReactDOM,
2830
ReactDOMServer,
31+
ReactTestUtils,
2932
};
3033
}
3134

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,17 +16,20 @@ const TEXT_NODE_TYPE = 3;
1616
let React;
1717
let ReactDOM;
1818
let ReactDOMServer;
19+
let ReactTestUtils;
1920

2021
function initModules() {
2122
jest.resetModuleRegistry();
2223
React = require('react');
2324
ReactDOM = require('react-dom');
2425
ReactDOMServer = require('react-dom/server');
26+
ReactTestUtils = require('react-dom/test-utils');
2527

2628
// Make them available to the helpers.
2729
return {
2830
ReactDOM,
2931
ReactDOMServer,
32+
ReactTestUtils,
3033
};
3134
}
3235

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,18 +14,21 @@ const ReactDOMServerIntegrationUtils = require('./utils/ReactDOMServerIntegratio
1414
let React;
1515
let ReactDOM;
1616
let ReactDOMServer;
17+
let ReactTestUtils;
1718

1819
function initModules() {
1920
// Reset warning cache.
2021
jest.resetModuleRegistry();
2122
React = require('react');
2223
ReactDOM = require('react-dom');
2324
ReactDOMServer = require('react-dom/server');
25+
ReactTestUtils = require('react-dom/test-utils');
2426

2527
// Make them available to the helpers.
2628
return {
2729
ReactDOM,
2830
ReactDOMServer,
31+
ReactTestUtils,
2932
};
3033
}
3134

packages/react-dom/src/__tests__/ReactDOMServerIntegrationHooks-test.internal.js

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ let React;
1717
let ReactFeatureFlags;
1818
let ReactDOM;
1919
let ReactDOMServer;
20-
let act;
20+
let ReactTestUtils;
2121
let useState;
2222
let useReducer;
2323
let useEffect;
@@ -42,7 +42,7 @@ function initModules() {
4242
React = require('react');
4343
ReactDOM = require('react-dom');
4444
ReactDOMServer = require('react-dom/server');
45-
act = require('react-dom/test-utils').act;
45+
ReactTestUtils = require('react-dom/test-utils');
4646
useState = React.useState;
4747
useReducer = React.useReducer;
4848
useEffect = React.useEffect;
@@ -69,6 +69,7 @@ function initModules() {
6969
return {
7070
ReactDOM,
7171
ReactDOMServer,
72+
ReactTestUtils,
7273
};
7374
}
7475

@@ -541,19 +542,29 @@ describe('ReactDOMServerHooks', () => {
541542
});
542543

543544
describe('useEffect', () => {
545+
const yields = [];
544546
itRenders('should ignore effects on the server', async render => {
545547
function Counter(props) {
546548
useEffect(() => {
547-
yieldValue('should not be invoked');
549+
yieldValue('invoked on client');
548550
});
549551
return <Text text={'Count: ' + props.count} />;
550552
}
551-
await act(async () => {
552-
const domNode = await render(<Counter count={0} />);
553-
expect(clearYields()).toEqual(['Count: 0']);
554-
expect(domNode.tagName).toEqual('SPAN');
555-
expect(domNode.textContent).toEqual('Count: 0');
556-
});
553+
554+
const domNode = await render(<Counter count={0} />);
555+
yields.push(clearYields());
556+
expect(domNode.tagName).toEqual('SPAN');
557+
expect(domNode.textContent).toEqual('Count: 0');
558+
});
559+
560+
it('verifies yields in order', () => {
561+
expect(yields).toEqual([
562+
['Count: 0'], // server render
563+
['Count: 0'], // server stream
564+
['Count: 0', 'invoked on client'], // clean render
565+
['Count: 0', 'invoked on client'], // hydrated render
566+
// nothing yielded for bad markup
567+
]);
557568
});
558569
});
559570

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,18 +16,21 @@ const {disableInputAttributeSyncing} = require('shared/ReactFeatureFlags');
1616
let React;
1717
let ReactDOM;
1818
let ReactDOMServer;
19+
let ReactTestUtils;
1920

2021
function initModules() {
2122
// Reset warning cache.
2223
jest.resetModuleRegistry();
2324
React = require('react');
2425
ReactDOM = require('react-dom');
2526
ReactDOMServer = require('react-dom/server');
27+
ReactTestUtils = require('react-dom/test-utils');
2628

2729
// Make them available to the helpers.
2830
return {
2931
ReactDOM,
3032
ReactDOMServer,
33+
ReactTestUtils,
3134
};
3235
}
3336

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ let PropTypes;
1515
let React;
1616
let ReactDOM;
1717
let ReactDOMServer;
18+
let ReactTestUtils;
1819

1920
function initModules() {
2021
// Reset warning cache.
@@ -23,11 +24,13 @@ function initModules() {
2324
React = require('react');
2425
ReactDOM = require('react-dom');
2526
ReactDOMServer = require('react-dom/server');
27+
ReactTestUtils = require('react-dom/test-utils');
2628

2729
// Make them available to the helpers.
2830
return {
2931
ReactDOM,
3032
ReactDOMServer,
33+
ReactTestUtils,
3134
};
3235
}
3336

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,18 +14,21 @@ const ReactDOMServerIntegrationUtils = require('./utils/ReactDOMServerIntegratio
1414
let React;
1515
let ReactDOM;
1616
let ReactDOMServer;
17+
let ReactTestUtils;
1718

1819
function initModules() {
1920
// Reset warning cache.
2021
jest.resetModuleRegistry();
2122
React = require('react');
2223
ReactDOM = require('react-dom');
2324
ReactDOMServer = require('react-dom/server');
25+
ReactTestUtils = require('react-dom/test-utils');
2426

2527
// Make them available to the helpers.
2628
return {
2729
ReactDOM,
2830
ReactDOMServer,
31+
ReactTestUtils,
2932
};
3033
}
3134

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,18 +14,21 @@ const ReactDOMServerIntegrationUtils = require('./utils/ReactDOMServerIntegratio
1414
let React;
1515
let ReactDOM;
1616
let ReactDOMServer;
17+
let ReactTestUtils;
1718

1819
function initModules() {
1920
// Reset warning cache.
2021
jest.resetModuleRegistry();
2122
React = require('react');
2223
ReactDOM = require('react-dom');
2324
ReactDOMServer = require('react-dom/server');
25+
ReactTestUtils = require('react-dom/test-utils');
2426

2527
// Make them available to the helpers.
2628
return {
2729
ReactDOM,
2830
ReactDOMServer,
31+
ReactTestUtils,
2932
};
3033
}
3134

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ const ReactDOMServerIntegrationUtils = require('./utils/ReactDOMServerIntegratio
1414
let React;
1515
let ReactDOM;
1616
let ReactDOMServer;
17+
let ReactTestUtils;
1718

1819
function initModules() {
1920
// Reset warning cache.
@@ -22,11 +23,13 @@ function initModules() {
2223
React = require('react');
2324
ReactDOM = require('react-dom');
2425
ReactDOMServer = require('react-dom/server');
26+
ReactTestUtils = require('react-dom/test-utils');
2527

2628
// Make them available to the helpers.
2729
return {
2830
ReactDOM,
2931
ReactDOMServer,
32+
ReactTestUtils,
3033
};
3134
}
3235

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,18 +14,21 @@ const ReactDOMServerIntegrationUtils = require('./utils/ReactDOMServerIntegratio
1414
let React;
1515
let ReactDOM;
1616
let ReactDOMServer;
17+
let ReactTestUtils;
1718

1819
function initModules() {
1920
// Reset warning cache.
2021
jest.resetModuleRegistry();
2122
React = require('react');
2223
ReactDOM = require('react-dom');
2324
ReactDOMServer = require('react-dom/server');
25+
ReactTestUtils = require('react-dom/test-utils');
2426

2527
// Make them available to the helpers.
2628
return {
2729
ReactDOM,
2830
ReactDOMServer,
31+
ReactTestUtils,
2932
};
3033
}
3134

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,18 +14,21 @@ const ReactDOMServerIntegrationUtils = require('./utils/ReactDOMServerIntegratio
1414
let React;
1515
let ReactDOM;
1616
let ReactDOMServer;
17+
let ReactTestUtils;
1718

1819
function initModules() {
1920
// Reset warning cache.
2021
jest.resetModuleRegistry();
2122
React = require('react');
2223
ReactDOM = require('react-dom');
2324
ReactDOMServer = require('react-dom/server');
25+
ReactTestUtils = require('react-dom/test-utils');
2426

2527
// Make them available to the helpers.
2628
return {
2729
ReactDOM,
2830
ReactDOMServer,
31+
ReactTestUtils,
2932
};
3033
}
3134

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ const ReactDOMServerIntegrationUtils = require('./utils/ReactDOMServerIntegratio
1414
let React;
1515
let ReactDOM;
1616
let ReactDOMServer;
17+
let ReactTestUtils;
1718
let forwardRef;
1819
let memo;
1920
let yieldedValues;
@@ -26,6 +27,7 @@ function initModules() {
2627
React = require('react');
2728
ReactDOM = require('react-dom');
2829
ReactDOMServer = require('react-dom/server');
30+
ReactTestUtils = require('react-dom/test-utils');
2931
forwardRef = React.forwardRef;
3032
memo = React.memo;
3133

@@ -43,6 +45,7 @@ function initModules() {
4345
return {
4446
ReactDOM,
4547
ReactDOMServer,
48+
ReactTestUtils,
4649
};
4750
}
4851

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,18 +14,21 @@ const ReactDOMServerIntegrationUtils = require('./utils/ReactDOMServerIntegratio
1414
let React;
1515
let ReactDOM;
1616
let ReactDOMServer;
17+
let ReactTestUtils;
1718

1819
function initModules() {
1920
// Reset warning cache.
2021
jest.resetModuleRegistry();
2122
React = require('react');
2223
ReactDOM = require('react-dom');
2324
ReactDOMServer = require('react-dom/server');
25+
ReactTestUtils = require('react-dom/test-utils');
2426

2527
// Make them available to the helpers.
2628
return {
2729
ReactDOM,
2830
ReactDOMServer,
31+
ReactTestUtils,
2932
};
3033
}
3134

0 commit comments

Comments
 (0)