Skip to content

Commit efbd69b

Browse files
authored
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.
1 parent 8f6163c commit efbd69b

File tree

4 files changed

+31
-30
lines changed

4 files changed

+31
-30
lines changed

packages/react-reconciler/src/__tests__/ReactSuspenseCallback-test.internal.js renamed to packages/react-reconciler/src/__tests__/ReactSuspenseCallback-test.js

Lines changed: 27 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,12 @@
1010
'use strict';
1111

1212
let React;
13-
let ReactFeatureFlags;
1413
let ReactNoop;
1514
let Scheduler;
1615

1716
describe('ReactSuspense', () => {
1817
beforeEach(() => {
1918
jest.resetModules();
20-
ReactFeatureFlags = require('shared/ReactFeatureFlags');
21-
ReactFeatureFlags.enableSuspenseCallback = true;
2219

2320
React = require('react');
2421
ReactNoop = require('react-noop-renderer');
@@ -47,30 +44,34 @@ describe('ReactSuspense', () => {
4744
return {promise, resolve, PromiseComp};
4845
}
4946

50-
it('check type', () => {
51-
const {PromiseComp} = createThenable();
47+
if (__DEV__) {
48+
// @gate www
49+
it('check type', () => {
50+
const {PromiseComp} = createThenable();
5251

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+
);
5857

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+
]);
6362

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+
);
6968

70-
ReactNoop.render(elementMissingCallback);
71-
expect(() => Scheduler.unstable_flushAll()).toErrorDev([]);
72-
});
69+
ReactNoop.render(elementMissingCallback);
70+
expect(() => Scheduler.unstable_flushAll()).toErrorDev([]);
71+
});
72+
}
7373

74+
// @gate www
7475
it('1 then 0 suspense callback', async () => {
7576
const {promise, resolve, PromiseComp} = createThenable();
7677

@@ -97,6 +98,7 @@ describe('ReactSuspense', () => {
9798
expect(ops).toEqual([]);
9899
});
99100

101+
// @gate www
100102
it('2 then 1 then 0 suspense callback', async () => {
101103
const {
102104
promise: promise1,
@@ -143,6 +145,7 @@ describe('ReactSuspense', () => {
143145
expect(ops).toEqual([]);
144146
});
145147

148+
// @gate www
146149
it('nested suspense promises are reported only for their tier', () => {
147150
const {promise, PromiseComp} = createThenable();
148151

@@ -174,6 +177,7 @@ describe('ReactSuspense', () => {
174177
expect(ops2).toEqual([new Set([promise])]);
175178
});
176179

180+
// @gate www
177181
it('competing suspense promises', async () => {
178182
const {
179183
promise: promise1,
@@ -242,6 +246,7 @@ describe('ReactSuspense', () => {
242246
});
243247

244248
if (__DEV__) {
249+
// @gate www
245250
it('regression test for #16215 that relies on implementation details', async () => {
246251
// Regression test for https://github.com/facebook/react/pull/16215.
247252
// The bug only happens if there's an error earlier in the commit phase.
@@ -272,9 +277,6 @@ describe('ReactSuspense', () => {
272277
},
273278
}));
274279

275-
ReactFeatureFlags = require('shared/ReactFeatureFlags');
276-
ReactFeatureFlags.enableSuspenseCallback = true;
277-
278280
React = require('react');
279281
ReactNoop = require('react-noop-renderer');
280282
Scheduler = require('scheduler');

scripts/jest/TestFlags.js

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -56,10 +56,7 @@ function getTestFlags() {
5656
// not to but there are exceptions.
5757
const featureFlags = require('shared/ReactFeatureFlags');
5858

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;
6360
const releaseChannel = www
6461
? __EXPERIMENTAL__
6562
? 'modern'

scripts/jest/config.source-www.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ module.exports = Object.assign({}, baseConfig, {
3030
],
3131
setupFiles: [
3232
...baseConfig.setupFiles,
33-
require.resolve('./setupHostConfigs.js'),
3433
require.resolve('./setupTests.www.js'),
34+
require.resolve('./setupHostConfigs.js'),
3535
],
3636
});

scripts/jest/setupTests.www.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,3 +19,5 @@ jest.mock('shared/ReactFeatureFlags', () => {
1919

2020
return wwwFlags;
2121
});
22+
23+
global.__WWW__ = true;

0 commit comments

Comments
 (0)