@samitouri / QOS-React-2 / commits / e2453e2007

act: Add test for bypassing queueMicrotask (#21743)

Test for fix added in #21740

Andrew Clark committed Jun 25, 2021 at 15:39 UTC e2453e2007083a67bf93f59c8ef2f39df2aaf636
1 file changed +50
packages/react-reconciler/src/__tests__/ReactIsomorphicAct-test.js new
+50
@@ -0,0 +1,50 @@
1 +/**
2 + * Copyright (c) Facebook, Inc. and its affiliates.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @jest-environment node
8 + */
9 +
10 +// sanity tests for act()
11 +
12 +let React;
13 +let ReactNoop;
14 +let act;
15 +let DiscreteEventPriority;
16 +
17 +describe('isomorphic act()', () => {
18 + beforeEach(() => {
19 + React = require('react');
20 + ReactNoop = require('react-noop-renderer');
21 + DiscreteEventPriority = require('react-reconciler/constants')
22 + .DiscreteEventPriority;
23 + act = React.unstable_act;
24 + });
25 +
26 + // @gate __DEV__
27 + test('bypasses queueMicrotask', async () => {
28 + const root = ReactNoop.createRoot();
29 +
30 + // First test what happens without wrapping in act. This update would
31 + // normally be queued in a microtask.
32 + ReactNoop.unstable_runWithPriority(DiscreteEventPriority, () => {
33 + root.render('A');
34 + });
35 + // Nothing has rendered yet
36 + expect(root).toMatchRenderedOutput(null);
37 + // Flush the microtasks by awaiting
38 + await null;
39 + expect(root).toMatchRenderedOutput('A');
40 +
41 + // Now do the same thing but wrap the update with `act`. No
42 + // `await` necessary.
43 + act(() => {
44 + ReactNoop.unstable_runWithPriority(DiscreteEventPriority, () => {
45 + root.render('B');
46 + });
47 + });
48 + expect(root).toMatchRenderedOutput('B');
49 + });
50 +});