Define global __WWW__ = true flag during www tests (#21504)
Define global __WWW__ = true flag during www tests (#21504) * Define global __WWW__ = true flag during www tests We already do that for __PERSISTENT__. * Use @gate www in ReactSuspenseCallback This allows it to not be internal anymore. We test it against the www build.
Sebastian Markbåge committed
Jun 1, 2021 at 13:16 UTC
efbd69b27e530cb26f0c055265a624242a32305b
4 files changed
+31
-30
packages/react-reconciler/src/__tests__/ReactSuspenseCallback-test.js
renamed
+27
-25
@@ -10,15 +10,12 @@
10
'use strict';
11
12
let React;
13
-let ReactFeatureFlags;
13
let ReactNoop;
14
let Scheduler;
15
16
describe('ReactSuspense', () => {
17
beforeEach(() => {
18
jest.resetModules();
20
- ReactFeatureFlags = require('shared/ReactFeatureFlags');
21
- ReactFeatureFlags.enableSuspenseCallback = true;
19
20
React = require('react');
21
ReactNoop = require('react-noop-renderer');
@@ -47,30 +44,34 @@ describe('ReactSuspense', () => {
44
return {promise, resolve, PromiseComp};
45
}
46
50
- it('check type', () => {
51
- const {PromiseComp} = createThenable();
47
+ if (__DEV__) {
48
+ // @gate www
49
+ it('check type', () => {
50
+ const {PromiseComp} = createThenable();
51
53
- const elementBadType = (
54
- <React.Suspense suspenseCallback={1} fallback={'Waiting'}>
55
- <PromiseComp />
56
- </React.Suspense>
57
- );
52
+ const elementBadType = (
53
+ <React.Suspense suspenseCallback={1} fallback={'Waiting'}>
54
+ <PromiseComp />
55
+ </React.Suspense>
56
+ );
57
59
- ReactNoop.render(elementBadType);
60
- expect(() => Scheduler.unstable_flushAll()).toErrorDev([
61
- 'Warning: Unexpected type for suspenseCallback.',
62
- ]);
58
+ ReactNoop.render(elementBadType);
59
+ expect(() => Scheduler.unstable_flushAll()).toErrorDev([
60
+ 'Warning: Unexpected type for suspenseCallback.',
61
+ ]);
62
64
- const elementMissingCallback = (
65
- <React.Suspense fallback={'Waiting'}>
66
- <PromiseComp />
67
- </React.Suspense>
68
- );
63
+ const elementMissingCallback = (
64
+ <React.Suspense fallback={'Waiting'}>
65
+ <PromiseComp />
66
+ </React.Suspense>
67
+ );
68
70
- ReactNoop.render(elementMissingCallback);
71
- expect(() => Scheduler.unstable_flushAll()).toErrorDev([]);
72
- });
69
+ ReactNoop.render(elementMissingCallback);
70
+ expect(() => Scheduler.unstable_flushAll()).toErrorDev([]);
71
+ });
72
+ }
73
74
+ // @gate www
75
it('1 then 0 suspense callback', async () => {
76
const {promise, resolve, PromiseComp} = createThenable();
77
@@ -97,6 +98,7 @@ describe('ReactSuspense', () => {
98
expect(ops).toEqual([]);
99
});
100
101
+ // @gate www
102
it('2 then 1 then 0 suspense callback', async () => {
103
const {
104
promise: promise1,
@@ -143,6 +145,7 @@ describe('ReactSuspense', () => {
145
expect(ops).toEqual([]);
146
});
147
148
+ // @gate www
149
it('nested suspense promises are reported only for their tier', () => {
150
const {promise, PromiseComp} = createThenable();
151
@@ -174,6 +177,7 @@ describe('ReactSuspense', () => {
177
expect(ops2).toEqual([new Set([promise])]);
178
});
179
180
+ // @gate www
181
it('competing suspense promises', async () => {
182
const {
183
promise: promise1,
@@ -242,6 +246,7 @@ describe('ReactSuspense', () => {
246
});
247
248
if (__DEV__) {
249
+ // @gate www
250
it('regression test for #16215 that relies on implementation details', async () => {
251
// Regression test for https://github.com/facebook/react/pull/16215.
252
// The bug only happens if there's an error earlier in the commit phase.
@@ -272,9 +277,6 @@ describe('ReactSuspense', () => {
277
},
278
}));
279
275
- ReactFeatureFlags = require('shared/ReactFeatureFlags');
276
- ReactFeatureFlags.enableSuspenseCallback = true;
277
-
280
React = require('react');
281
ReactNoop = require('react-noop-renderer');
282
Scheduler = require('scheduler');
scripts/jest/TestFlags.js
+1
-4
@@ -56,10 +56,7 @@ function getTestFlags() {
56
// not to but there are exceptions.
57
const featureFlags = require('shared/ReactFeatureFlags');
58
59
- // TODO: This is a heuristic to detect the release channel by checking a flag
60
- // that is known to only be enabled in www. What we should do instead is set
61
- // the release channel explicitly in the each test config file.
62
- const www = featureFlags.enableSuspenseCallback === true;
59
+ const www = global.__WWW__ === true;
60
const releaseChannel = www
61
? __EXPERIMENTAL__
62
? 'modern'
scripts/jest/config.source-www.js
+1
-1
@@ -30,7 +30,7 @@ module.exports = Object.assign({}, baseConfig, {
30
],
31
setupFiles: [
32
...baseConfig.setupFiles,
33
- require.resolve('./setupHostConfigs.js'),
33
require.resolve('./setupTests.www.js'),
34
+ require.resolve('./setupHostConfigs.js'),
35
],
36
});
scripts/jest/setupTests.www.js
+2
@@ -19,3 +19,5 @@ jest.mock('shared/ReactFeatureFlags', () => {
19
20
return wwwFlags;
21
});
22
+
23
+global.__WWW__ = true;