Skip to content

Commit e0f89aa

Browse files
authored
Clean up Scheduler forks (#20915)
* Clean up Scheduler forks * Un-shadow variables * Use timer globals directly, add a test for overrides * Remove more window references * Don't crash for undefined globals + tests * Update lint config globals * Fix test by using async act * Add test fixture * Delete test fixture
1 parent 1a2d792 commit e0f89aa

24 files changed

+119
-1535
lines changed

.codesandbox/ci.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"packages": ["packages/react", "packages/react-dom", "packages/scheduler"],
3-
"buildCommand": "build --type=NODE react/index,react-dom/index,react-dom/server,react-dom/test-utils,scheduler/index,scheduler/unstable_no_dom,react/jsx-runtime,react/jsx-dev-runtime",
3+
"buildCommand": "build --type=NODE react/index,react-dom/index,react-dom/server,react-dom/test-utils,scheduler/index,react/jsx-runtime,react/jsx-dev-runtime",
44
"node": "12",
55
"publishDirectory": {
66
"react": "build/node_modules/react",

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

+2-2
Original file line numberDiff line numberDiff line change
@@ -81,12 +81,12 @@ it("doesn't warn when you use the right act + renderer: test", () => {
8181
});
8282
});
8383

84-
it('resets correctly across renderers', () => {
84+
it('resets correctly across renderers', async () => {
8585
function Effecty() {
8686
React.useEffect(() => {}, []);
8787
return null;
8888
}
89-
TestUtils.act(() => {
89+
await TestUtils.act(async () => {
9090
TestRenderer.act(() => {});
9191
expect(() => {
9292
TestRenderer.create(<Effecty />);

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

+1-3
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,7 @@ function unmount(dom) {
3333

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

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ function App() {
1717

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

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

+1-3
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,7 @@ function App() {
1616

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

packages/scheduler/index.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,4 @@
77

88
'use strict';
99

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

packages/scheduler/npm/index.js

+1-3
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
'use strict';
22

3-
if (typeof window === 'undefined' || typeof MessageChannel !== 'function') {
4-
module.exports = require('./unstable_no_dom');
5-
} else if (process.env.NODE_ENV === 'production') {
3+
if (process.env.NODE_ENV === 'production') {
64
module.exports = require('./cjs/scheduler.production.min.js');
75
} else {
86
module.exports = require('./cjs/scheduler.development.js');

packages/scheduler/npm/unstable_no_dom.js

-7
This file was deleted.

packages/scheduler/package.json

-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
"build-info.json",
2727
"index.js",
2828
"unstable_mock.js",
29-
"unstable_no_dom.js",
3029
"unstable_post_task.js",
3130
"cjs/",
3231
"umd/"

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

+6-13
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,9 @@ let NormalPriority;
3232
describe('SchedulerBrowser', () => {
3333
beforeEach(() => {
3434
jest.resetModules();
35-
36-
// Un-mock scheduler
37-
jest.mock('scheduler', () => require.requireActual('scheduler'));
38-
3935
runtime = installMockBrowserRuntime();
36+
jest.unmock('scheduler');
37+
4038
performance = global.performance;
4139
Scheduler = require('scheduler');
4240
cancelCallback = Scheduler.unstable_cancelCallback;
@@ -68,21 +66,16 @@ describe('SchedulerBrowser', () => {
6866
},
6967
};
7068

71-
const window = {};
72-
global.window = window;
73-
74-
// TODO: Scheduler no longer requires these methods to be polyfilled. But
75-
// maybe we want to continue warning if they don't exist, to preserve the
76-
// option to rely on it in the future?
77-
window.requestAnimationFrame = window.cancelAnimationFrame = () => {};
69+
// Delete node provide setImmediate so we fall through to MessageChannel.
70+
delete global.setImmediate;
7871

79-
window.setTimeout = (cb, delay) => {
72+
global.setTimeout = (cb, delay) => {
8073
const id = timerIDCounter++;
8174
log(`Set Timer`);
8275
// TODO
8376
return id;
8477
};
85-
window.clearTimeout = id => {
78+
global.clearTimeout = id => {
8679
// TODO
8780
};
8881

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

-2
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,6 @@ let IdlePriority;
3030
describe('SchedulerPostTask', () => {
3131
beforeEach(() => {
3232
jest.resetModules();
33-
34-
// Un-mock scheduler
3533
jest.mock('scheduler', () =>
3634
require.requireActual('scheduler/unstable_post_task'),
3735
);

0 commit comments

Comments
 (0)