@samitouri / QOS-React / commits / efbd69b27e

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;