Skip to content

Commit 454c221

Browse files
authored
Refactor SchedulerHostConfigs (#20025)
* Remove SchedulerHostConfigs * Fix builds * Fix forks * Move SchedulerNoDom check to npm/index.js * Fix tests * Add @GATE source * Gate build-only test to build test runs
1 parent 56e9fee commit 454c221

28 files changed

+1365
-548
lines changed

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,9 @@ function unmount(dom) {
3333

3434
beforeEach(() => {
3535
jest.resetModules();
36-
jest.unmock('scheduler');
36+
jest.mock('scheduler', () =>
37+
require.requireActual('scheduler/unstable_no_dom'),
38+
);
3739
yields = [];
3840
React = require('react');
3941
ReactDOM = require('react-dom');

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ function App() {
1717

1818
beforeEach(() => {
1919
jest.resetModules();
20-
jest.unmock('scheduler');
20+
jest.mock('scheduler', () => require('scheduler/unstable_no_dom'));
2121
React = require('react');
2222
ReactDOM = require('react-dom');
2323
ReactFeatureFlags = require('shared/ReactFeatureFlags');

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,9 @@ function App() {
1616

1717
beforeEach(() => {
1818
jest.resetModules();
19-
jest.unmock('scheduler');
19+
jest.mock('scheduler', () =>
20+
require.requireActual('scheduler/unstable_no_dom'),
21+
);
2022
React = require('react');
2123
ReactDOM = require('react-dom');
2224
});

packages/scheduler/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,4 @@
77

88
'use strict';
99

10-
export * from './src/Scheduler';
10+
export * from './src/forks/SchedulerDOM';

packages/scheduler/npm/index.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
'use strict';
22

3-
if (process.env.NODE_ENV === 'production') {
3+
if (typeof window === 'undefined' || typeof MessageChannel !== 'function') {
4+
module.exports = require('./unstable_no_dom');
5+
} else if (process.env.NODE_ENV === 'production') {
46
module.exports = require('./cjs/scheduler.production.min.js');
57
} else {
68
module.exports = require('./cjs/scheduler.development.js');
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/scheduler-unstable_no_dom.production.min.js');
5+
} else {
6+
module.exports = require('./cjs/scheduler-unstable_no_dom.development.js');
7+
}

packages/scheduler/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
"tracing.js",
2929
"tracing-profiling.js",
3030
"unstable_mock.js",
31+
"unstable_no_dom.js",
3132
"unstable_post_task.js",
3233
"cjs/",
3334
"umd/"

packages/scheduler/src/__tests__/SchedulerBrowser-test.js renamed to packages/scheduler/src/__tests__/SchedulerDOM-test.js

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,6 @@ describe('SchedulerBrowser', () => {
3535

3636
// Un-mock scheduler
3737
jest.mock('scheduler', () => require.requireActual('scheduler'));
38-
jest.mock('scheduler/src/SchedulerHostConfig', () =>
39-
require.requireActual(
40-
'scheduler/src/forks/SchedulerHostConfig.default.js',
41-
),
42-
);
4338

4439
runtime = installMockBrowserRuntime();
4540
performance = global.performance;

packages/scheduler/src/__tests__/SchedulerNoDOM-test.js

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,8 @@ describe('SchedulerNoDOM', () => {
2424
jest.useFakeTimers();
2525

2626
// Un-mock scheduler
27-
jest.mock('scheduler', () => require.requireActual('scheduler'));
28-
jest.mock('scheduler/src/SchedulerHostConfig', () =>
29-
require.requireActual(
30-
'scheduler/src/forks/SchedulerHostConfig.default.js',
31-
),
27+
jest.mock('scheduler', () =>
28+
require.requireActual('scheduler/unstable_no_dom'),
3229
);
3330

3431
Scheduler = require('scheduler');

packages/scheduler/src/__tests__/SchedulerUMDBundle-test.internal.js

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,13 @@
88
*/
99
'use strict';
1010

11+
class MockMessageChannel {
12+
constructor() {
13+
this.port1 = jest.fn();
14+
this.port2 = jest.fn();
15+
}
16+
}
17+
1118
describe('Scheduling UMD bundle', () => {
1219
beforeEach(() => {
1320
// Fool SECRET_INTERNALS object into including UMD forwarding methods.
@@ -16,11 +23,18 @@ describe('Scheduling UMD bundle', () => {
1623
jest.resetModules();
1724

1825
jest.mock('scheduler', () => require.requireActual('scheduler'));
19-
jest.mock('scheduler/src/SchedulerHostConfig', () =>
20-
require.requireActual(
21-
'scheduler/src/forks/SchedulerHostConfig.default.js',
22-
),
23-
);
26+
27+
// Mock a browser environment since we're testing UMD modules.
28+
global.window = {
29+
requestAnimationFrame: jest.fn(),
30+
cancelAnimationFrame: jest.fn(),
31+
};
32+
global.MessageChannel = MockMessageChannel;
33+
});
34+
35+
afterEach(() => {
36+
global.window = undefined;
37+
global.MessageChannel = undefined;
2438
});
2539

2640
function filterPrivateKeys(name) {

0 commit comments

Comments
 (0)