Skip to content

Commit 9a5996a

Browse files
authored
[flags] Cleanup enableHalt (#35708)
1 parent 1c66ac7 commit 9a5996a

20 files changed

Lines changed: 61 additions & 311 deletions

‎packages/react-dom/src/__tests__/ReactDOMFizzServer-test.js‎

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6710,7 +6710,6 @@ describe('ReactDOMFizzServer', () => {
67106710
},
67116711
);
67126712

6713-
// @gate enableHalt
67146713
it('can resume a prerender that was aborted',async()=>{
67156714
constpromise=newPromise(r=>{});
67166715

‎packages/react-dom/src/__tests__/ReactDOMFizzStatic-test.js‎

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -230,9 +230,7 @@ describe('ReactDOMFizzStatic', () => {
230230

231231
constresult=awaitpromise;
232232

233-
expect(result.postponed).toBe(
234-
gate(flags=>flags.enableHalt) ? null : undefined,
235-
);
233+
expect(result.postponed).toBe(null);
236234

237235
awaitact(async()=>{
238236
result.prelude.pipe(writable);
@@ -362,7 +360,6 @@ describe('ReactDOMFizzStatic', () => {
362360
);
363361
});
364362

365-
// @gate enableHalt
366363
it('will halt a prerender when aborting with an error during a render',async()=>{
367364
constcontroller=newAbortController();
368365
functionApp(){
@@ -384,7 +381,6 @@ describe('ReactDOMFizzStatic', () => {
384381
expect(getVisibleChildren(container)).toEqual(undefined);
385382
});
386383

387-
// @gate enableHalt
388384
it('will halt a prerender when aborting with an error in a microtask',async()=>{
389385
consterrors=[];
390386

‎packages/react-dom/src/__tests__/ReactDOMFizzStaticBrowser-test.js‎

Lines changed: 7 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -309,40 +309,6 @@ describe('ReactDOMFizzStaticBrowser', () => {
309309
expect(errors).toEqual(['This operation was aborted']);
310310
});
311311

312-
// @gate !enableHalt
313-
it('should reject if aborting before the shell is complete and enableHalt is disabled',async()=>{
314-
consterrors=[];
315-
constcontroller=newAbortController();
316-
constpromise=serverAct(()=>
317-
ReactDOMFizzStatic.prerender(
318-
<div>
319-
<InfiniteSuspend/>
320-
</div>,
321-
{
322-
signal: controller.signal,
323-
onError(x){
324-
errors.push(x.message);
325-
},
326-
},
327-
),
328-
);
329-
330-
awaitjest.runAllTimers();
331-
332-
consttheReason=newError('aborted for reasons');
333-
controller.abort(theReason);
334-
335-
letcaughtError=null;
336-
try{
337-
awaitpromise;
338-
}catch(error){
339-
caughtError=error;
340-
}
341-
expect(caughtError).toBe(theReason);
342-
expect(errors).toEqual(['aborted for reasons']);
343-
});
344-
345-
// @gate enableHalt
346312
it('should resolve an empty prelude if aborting before the shell is complete',async()=>{
347313
consterrors=[];
348314
constcontroller=newAbortController();
@@ -403,59 +369,12 @@ describe('ReactDOMFizzStaticBrowser', () => {
403369
),
404370
);
405371

406-
if(gate(flags=>flags.enableHalt)){
407-
const{prelude}=awaitstreamPromise;
408-
constcontent=awaitreadContent(prelude);
409-
expect(errors).toEqual(['This operation was aborted']);
410-
expect(content).toBe('');
411-
}else{
412-
letcaughtError=null;
413-
try{
414-
awaitstreamPromise;
415-
}catch(error){
416-
caughtError=error;
417-
}
418-
expect(caughtError.message).toBe('This operation was aborted');
419-
expect(errors).toEqual(['This operation was aborted']);
420-
}
421-
});
422-
423-
// @gate !enableHalt
424-
it('should reject if passing an already aborted signal and enableHalt is disabled',async()=>{
425-
consterrors=[];
426-
constcontroller=newAbortController();
427-
consttheReason=newError('aborted for reasons');
428-
controller.abort(theReason);
429-
430-
constpromise=serverAct(()=>
431-
ReactDOMFizzStatic.prerender(
432-
<div>
433-
<Suspensefallback={<div>Loading</div>}>
434-
<InfiniteSuspend/>
435-
</Suspense>
436-
</div>,
437-
{
438-
signal: controller.signal,
439-
onError(x){
440-
errors.push(x.message);
441-
},
442-
},
443-
),
444-
);
445-
446-
// Technically we could still continue rendering the shell but currently the
447-
// semantics mean that we also abort any pending CPU work.
448-
letcaughtError=null;
449-
try{
450-
awaitpromise;
451-
}catch(error){
452-
caughtError=error;
453-
}
454-
expect(caughtError).toBe(theReason);
455-
expect(errors).toEqual(['aborted for reasons']);
372+
const{prelude}=awaitstreamPromise;
373+
constcontent=awaitreadContent(prelude);
374+
expect(errors).toEqual(['This operation was aborted']);
375+
expect(content).toBe('');
456376
});
457377

458-
// @gate enableHalt
459378
it('should resolve an empty prelude if passing an already aborted signal',async()=>{
460379
consterrors=[];
461380
constcontroller=newAbortController();
@@ -593,16 +512,13 @@ describe('ReactDOMFizzStaticBrowser', () => {
593512
onError,
594513
}),
595514
);
596-
expect(prerendered.postponed).toBe(
597-
gate(flags=>flags.enableHalt) ? null : undefined,
598-
);
515+
expect(prerendered.postponed).toBe(null);
599516
expect(errors).toEqual(['bad onHeaders']);
600517

601518
awaitreadIntoContainer(prerendered.prelude);
602519
expect(getVisibleChildren(container)).toEqual(<div>hello</div>);
603520
});
604521

605-
// @gate enableHalt
606522
it('can resume render of a prerender',async()=>{
607523
consterrors=[];
608524

@@ -689,7 +605,6 @@ describe('ReactDOMFizzStaticBrowser', () => {
689605
expect(getVisibleChildren(container)).toEqual(<div>Hello</div>);
690606
});
691607

692-
// @gate enableHalt
693608
it('can prerender a preamble',async()=>{
694609
consterrors=[];
695610

@@ -850,7 +765,6 @@ describe('ReactDOMFizzStaticBrowser', () => {
850765
expect(errors).toEqual(['boom']);
851766
});
852767

853-
// @gate enableHalt
854768
it('will render fallback Document when erroring a boundary above the body',async()=>{
855769
letisPrerendering=true;
856770
constpromise=newPromise(()=>{});
@@ -927,7 +841,6 @@ describe('ReactDOMFizzStaticBrowser', () => {
927841
);
928842
});
929843

930-
// @gate enableHalt
931844
it('can omit a preamble with an empty shell if no preamble is ready when prerendering finishes',async()=>{
932845
consterrors=[];
933846

@@ -1027,7 +940,7 @@ describe('ReactDOMFizzStaticBrowser', () => {
1027940
);
1028941
});
1029942

1030-
// @gateenableHalt && enableSuspenseList
943+
// @gate enableSuspenseList
1031944
it('can resume a partially prerendered SuspenseList',async()=>{
1032945
consterrors=[];
1033946

@@ -1112,7 +1025,7 @@ describe('ReactDOMFizzStaticBrowser', () => {
11121025
);
11131026
});
11141027

1115-
// @gateenableHalt && enableOptimisticKey
1028+
// @gate enableOptimisticKey
11161029
it('can resume an optimistic keyed slot',async()=>{
11171030
consterrors=[];
11181031

‎packages/react-dom/src/__tests__/ReactDOMFizzStaticNode-test.js‎

Lines changed: 4 additions & 95 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,6 @@ describe('ReactDOMFizzStaticNode', () => {
5656
}
5757
}
5858

59-
// @gate enableHalt
6059
it('should call prerenderToNodeStream',async()=>{
6160
constresult=awaitReactDOMFizzStatic.prerenderToNodeStream(
6261
<div>hello world</div>,
@@ -65,14 +64,12 @@ describe('ReactDOMFizzStaticNode', () => {
6564
expect(prelude).toMatchInlineSnapshot(`"<div>hello world</div>"`);
6665
});
6766

68-
// @gate enableHalt
6967
it('should suppport web streams',async()=>{
7068
constresult=awaitReactDOMFizzStatic.prerender(<div>hello world</div>);
7169
constprelude=awaitreadContentWeb(result.prelude);
7270
expect(prelude).toMatchInlineSnapshot(`"<div>hello world</div>"`);
7371
});
7472

75-
// @gate enableHalt
7673
it('should emit DOCTYPE at the root of the document',async()=>{
7774
constresult=awaitReactDOMFizzStatic.prerenderToNodeStream(
7875
<html>
@@ -91,7 +88,6 @@ describe('ReactDOMFizzStaticNode', () => {
9188
}
9289
});
9390

94-
// @gate enableHalt
9591
it('should emit bootstrap script src at the end',async()=>{
9692
constresult=awaitReactDOMFizzStatic.prerenderToNodeStream(
9793
<div>hello world</div>,
@@ -107,7 +103,6 @@ describe('ReactDOMFizzStaticNode', () => {
107103
);
108104
});
109105

110-
// @gate enableHalt
111106
it('emits all HTML as one unit',async()=>{
112107
lethasLoaded=false;
113108
letresolve;
@@ -137,7 +132,6 @@ describe('ReactDOMFizzStaticNode', () => {
137132
expect(prelude).toMatchInlineSnapshot(`"<div><!--$-->Done<!--/$--></div>"`);
138133
});
139134

140-
// @gate enableHalt
141135
it('should reject the promise when an error is thrown at the root',async()=>{
142136
constreportedErrors=[];
143137
letcaughtError=null;
@@ -159,7 +153,6 @@ describe('ReactDOMFizzStaticNode', () => {
159153
expect(reportedErrors).toEqual([theError]);
160154
});
161155

162-
// @gate enableHalt
163156
it('should reject the promise when an error is thrown inside a fallback',async()=>{
164157
constreportedErrors=[];
165158
letcaughtError=null;
@@ -183,7 +176,6 @@ describe('ReactDOMFizzStaticNode', () => {
183176
expect(reportedErrors).toEqual([theError]);
184177
});
185178

186-
// @gate enableHalt
187179
it('should not error the stream when an error is thrown inside suspense boundary',async()=>{
188180
constreportedErrors=[];
189181
constresult=awaitReactDOMFizzStatic.prerenderToNodeStream(
@@ -204,7 +196,6 @@ describe('ReactDOMFizzStaticNode', () => {
204196
expect(reportedErrors).toEqual([theError]);
205197
});
206198

207-
// @gate enableHalt
208199
it('should be able to complete by aborting even if the promise never resolves',async()=>{
209200
consterrors=[];
210201
constcontroller=newAbortController();
@@ -234,39 +225,6 @@ describe('ReactDOMFizzStaticNode', () => {
234225
expect(errors).toEqual(['This operation was aborted']);
235226
});
236227

237-
// @gate enableHalt
238-
// @gate !enableHalt
239-
it('should reject if aborting before the shell is complete and enableHalt is disabled',async()=>{
240-
consterrors=[];
241-
constcontroller=newAbortController();
242-
constpromise=ReactDOMFizzStatic.prerenderToNodeStream(
243-
<div>
244-
<InfiniteSuspend/>
245-
</div>,
246-
{
247-
signal: controller.signal,
248-
onError(x){
249-
errors.push(x.message);
250-
},
251-
},
252-
);
253-
254-
awaitjest.runAllTimers();
255-
256-
consttheReason=newError('aborted for reasons');
257-
controller.abort(theReason);
258-
259-
letcaughtError=null;
260-
try{
261-
awaitpromise;
262-
}catch(error){
263-
caughtError=error;
264-
}
265-
expect(caughtError).toBe(theReason);
266-
expect(errors).toEqual(['aborted for reasons']);
267-
});
268-
269-
// @gate enableHalt
270228
it('should resolve an empty shell if aborting before the shell is complete',async()=>{
271229
consterrors=[];
272230
constcontroller=newAbortController();
@@ -300,7 +258,6 @@ describe('ReactDOMFizzStaticNode', () => {
300258
expect(content).toBe('');
301259
});
302260

303-
// @gate enableHalt
304261
it('should be able to abort before something suspends',async()=>{
305262
consterrors=[];
306263
constcontroller=newAbortController();
@@ -324,58 +281,12 @@ describe('ReactDOMFizzStaticNode', () => {
324281
},
325282
);
326283

327-
if(gate(flags=>flags.enableHalt)){
328-
const{prelude}=awaitstreamPromise;
329-
constcontent=awaitreadContent(prelude);
330-
expect(errors).toEqual(['This operation was aborted']);
331-
expect(content).toBe('');
332-
}else{
333-
letcaughtError=null;
334-
try{
335-
awaitstreamPromise;
336-
}catch(error){
337-
caughtError=error;
338-
}
339-
expect(caughtError.message).toBe('This operation was aborted');
340-
expect(errors).toEqual(['This operation was aborted']);
341-
}
342-
});
343-
344-
// @gate enableHalt
345-
// @gate !enableHalt
346-
it('should reject if passing an already aborted signal and enableHalt is disabled',async()=>{
347-
consterrors=[];
348-
constcontroller=newAbortController();
349-
consttheReason=newError('aborted for reasons');
350-
controller.abort(theReason);
351-
352-
constpromise=ReactDOMFizzStatic.prerenderToNodeStream(
353-
<div>
354-
<Suspensefallback={<div>Loading</div>}>
355-
<InfiniteSuspend/>
356-
</Suspense>
357-
</div>,
358-
{
359-
signal: controller.signal,
360-
onError(x){
361-
errors.push(x.message);
362-
},
363-
},
364-
);
365-
366-
// Technically we could still continue rendering the shell but currently the
367-
// semantics mean that we also abort any pending CPU work.
368-
letcaughtError=null;
369-
try{
370-
awaitpromise;
371-
}catch(error){
372-
caughtError=error;
373-
}
374-
expect(caughtError).toBe(theReason);
375-
expect(errors).toEqual(['aborted for reasons']);
284+
const{prelude}=awaitstreamPromise;
285+
constcontent=awaitreadContent(prelude);
286+
expect(errors).toEqual(['This operation was aborted']);
287+
expect(content).toBe('');
376288
});
377289

378-
// @gate enableHalt
379290
it('should resolve with an empty prelude if passing an already aborted signal',async()=>{
380291
consterrors=[];
381292
constcontroller=newAbortController();
@@ -412,7 +323,6 @@ describe('ReactDOMFizzStaticNode', () => {
412323
expect(content).toBe('');
413324
});
414325

415-
// @gate enableHalt
416326
it('supports custom abort reasons with a string',async()=>{
417327
constpromise=newPromise(r=>{});
418328
functionWait(){
@@ -454,7 +364,6 @@ describe('ReactDOMFizzStaticNode', () => {
454364
expect(errors).toEqual(['foobar','foobar']);
455365
});
456366

457-
// @gate enableHalt
458367
it('supports custom abort reasons with an Error',async()=>{
459368
constpromise=newPromise(r=>{});
460369
functionWait(){

0 commit comments

Comments
 (0)
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
[flags] Cleanup `enableHalt` (#35708) · react/react@9a5996a · GitHub
Skip to content

Commit 9a5996a

Browse files
authored
[flags] Cleanup enableHalt (#35708)
1 parent 1c66ac7 commit 9a5996a

20 files changed

Lines changed: 61 additions & 311 deletions

‎packages/react-dom/src/__tests__/ReactDOMFizzServer-test.js‎

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6710,7 +6710,6 @@ describe('ReactDOMFizzServer', () => {
67106710
},
67116711
);
67126712

6713-
// @gate enableHalt
67146713
it('can resume a prerender that was aborted',async()=>{
67156714
constpromise=newPromise(r=>{});
67166715

‎packages/react-dom/src/__tests__/ReactDOMFizzStatic-test.js‎

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -230,9 +230,7 @@ describe('ReactDOMFizzStatic', () => {
230230

231231
constresult=awaitpromise;
232232

233-
expect(result.postponed).toBe(
234-
gate(flags=>flags.enableHalt) ? null : undefined,
235-
);
233+
expect(result.postponed).toBe(null);
236234

237235
awaitact(async()=>{
238236
result.prelude.pipe(writable);
@@ -362,7 +360,6 @@ describe('ReactDOMFizzStatic', () => {
362360
);
363361
});
364362

365-
// @gate enableHalt
366363
it('will halt a prerender when aborting with an error during a render',async()=>{
367364
constcontroller=newAbortController();
368365
functionApp(){
@@ -384,7 +381,6 @@ describe('ReactDOMFizzStatic', () => {
384381
expect(getVisibleChildren(container)).toEqual(undefined);
385382
});
386383

387-
// @gate enableHalt
388384
it('will halt a prerender when aborting with an error in a microtask',async()=>{
389385
consterrors=[];
390386

‎packages/react-dom/src/__tests__/ReactDOMFizzStaticBrowser-test.js‎

Lines changed: 7 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -309,40 +309,6 @@ describe('ReactDOMFizzStaticBrowser', () => {
309309
expect(errors).toEqual(['This operation was aborted']);
310310
});
311311

312-
// @gate !enableHalt
313-
it('should reject if aborting before the shell is complete and enableHalt is disabled',async()=>{
314-
consterrors=[];
315-
constcontroller=newAbortController();
316-
constpromise=serverAct(()=>
317-
ReactDOMFizzStatic.prerender(
318-
<div>
319-
<InfiniteSuspend/>
320-
</div>,
321-
{
322-
signal: controller.signal,
323-
onError(x){
324-
errors.push(x.message);
325-
},
326-
},
327-
),
328-
);
329-
330-
awaitjest.runAllTimers();
331-
332-
consttheReason=newError('aborted for reasons');
333-
controller.abort(theReason);
334-
335-
letcaughtError=null;
336-
try{
337-
awaitpromise;
338-
}catch(error){
339-
caughtError=error;
340-
}
341-
expect(caughtError).toBe(theReason);
342-
expect(errors).toEqual(['aborted for reasons']);
343-
});
344-
345-
// @gate enableHalt
346312
it('should resolve an empty prelude if aborting before the shell is complete',async()=>{
347313
consterrors=[];
348314
constcontroller=newAbortController();
@@ -403,59 +369,12 @@ describe('ReactDOMFizzStaticBrowser', () => {
403369
),
404370
);
405371

406-
if(gate(flags=>flags.enableHalt)){
407-
const{prelude}=awaitstreamPromise;
408-
constcontent=awaitreadContent(prelude);
409-
expect(errors).toEqual(['This operation was aborted']);
410-
expect(content).toBe('');
411-
}else{
412-
letcaughtError=null;
413-
try{
414-
awaitstreamPromise;
415-
}catch(error){
416-
caughtError=error;
417-
}
418-
expect(caughtError.message).toBe('This operation was aborted');
419-
expect(errors).toEqual(['This operation was aborted']);
420-
}
421-
});
422-
423-
// @gate !enableHalt
424-
it('should reject if passing an already aborted signal and enableHalt is disabled',async()=>{
425-
consterrors=[];
426-
constcontroller=newAbortController();
427-
consttheReason=newError('aborted for reasons');
428-
controller.abort(theReason);
429-
430-
constpromise=serverAct(()=>
431-
ReactDOMFizzStatic.prerender(
432-
<div>
433-
<Suspensefallback={<div>Loading</div>}>
434-
<InfiniteSuspend/>
435-
</Suspense>
436-
</div>,
437-
{
438-
signal: controller.signal,
439-
onError(x){
440-
errors.push(x.message);
441-
},
442-
},
443-
),
444-
);
445-
446-
// Technically we could still continue rendering the shell but currently the
447-
// semantics mean that we also abort any pending CPU work.
448-
letcaughtError=null;
449-
try{
450-
awaitpromise;
451-
}catch(error){
452-
caughtError=error;
453-
}
454-
expect(caughtError).toBe(theReason);
455-
expect(errors).toEqual(['aborted for reasons']);
372+
const{prelude}=awaitstreamPromise;
373+
constcontent=awaitreadContent(prelude);
374+
expect(errors).toEqual(['This operation was aborted']);
375+
expect(content).toBe('');
456376
});
457377

458-
// @gate enableHalt
459378
it('should resolve an empty prelude if passing an already aborted signal',async()=>{
460379
consterrors=[];
461380
constcontroller=newAbortController();
@@ -593,16 +512,13 @@ describe('ReactDOMFizzStaticBrowser', () => {
593512
onError,
594513
}),
595514
);
596-
expect(prerendered.postponed).toBe(
597-
gate(flags=>flags.enableHalt) ? null : undefined,
598-
);
515+
expect(prerendered.postponed).toBe(null);
599516
expect(errors).toEqual(['bad onHeaders']);
600517

601518
awaitreadIntoContainer(prerendered.prelude);
602519
expect(getVisibleChildren(container)).toEqual(<div>hello</div>);
603520
});
604521

605-
// @gate enableHalt
606522
it('can resume render of a prerender',async()=>{
607523
consterrors=[];
608524

@@ -689,7 +605,6 @@ describe('ReactDOMFizzStaticBrowser', () => {
689605
expect(getVisibleChildren(container)).toEqual(<div>Hello</div>);
690606
});
691607

692-
// @gate enableHalt
693608
it('can prerender a preamble',async()=>{
694609
consterrors=[];
695610

@@ -850,7 +765,6 @@ describe('ReactDOMFizzStaticBrowser', () => {
850765
expect(errors).toEqual(['boom']);
851766
});
852767

853-
// @gate enableHalt
854768
it('will render fallback Document when erroring a boundary above the body',async()=>{
855769
letisPrerendering=true;
856770
constpromise=newPromise(()=>{});
@@ -927,7 +841,6 @@ describe('ReactDOMFizzStaticBrowser', () => {
927841
);
928842
});
929843

930-
// @gate enableHalt
931844
it('can omit a preamble with an empty shell if no preamble is ready when prerendering finishes',async()=>{
932845
consterrors=[];
933846

@@ -1027,7 +940,7 @@ describe('ReactDOMFizzStaticBrowser', () => {
1027940
);
1028941
});
1029942

1030-
// @gateenableHalt && enableSuspenseList
943+
// @gate enableSuspenseList
1031944
it('can resume a partially prerendered SuspenseList',async()=>{
1032945
consterrors=[];
1033946

@@ -1112,7 +1025,7 @@ describe('ReactDOMFizzStaticBrowser', () => {
11121025
);
11131026
});
11141027

1115-
// @gateenableHalt && enableOptimisticKey
1028+
// @gate enableOptimisticKey
11161029
it('can resume an optimistic keyed slot',async()=>{
11171030
consterrors=[];
11181031

‎packages/react-dom/src/__tests__/ReactDOMFizzStaticNode-test.js‎

Lines changed: 4 additions & 95 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,6 @@ describe('ReactDOMFizzStaticNode', () => {
5656
}
5757
}
5858

59-
// @gate enableHalt
6059
it('should call prerenderToNodeStream',async()=>{
6160
constresult=awaitReactDOMFizzStatic.prerenderToNodeStream(
6261
<div>hello world</div>,
@@ -65,14 +64,12 @@ describe('ReactDOMFizzStaticNode', () => {
6564
expect(prelude).toMatchInlineSnapshot(`"<div>hello world</div>"`);
6665
});
6766

68-
// @gate enableHalt
6967
it('should suppport web streams',async()=>{
7068
constresult=awaitReactDOMFizzStatic.prerender(<div>hello world</div>);
7169
constprelude=awaitreadContentWeb(result.prelude);
7270
expect(prelude).toMatchInlineSnapshot(`"<div>hello world</div>"`);
7371
});
7472

75-
// @gate enableHalt
7673
it('should emit DOCTYPE at the root of the document',async()=>{
7774
constresult=awaitReactDOMFizzStatic.prerenderToNodeStream(
7875
<html>
@@ -91,7 +88,6 @@ describe('ReactDOMFizzStaticNode', () => {
9188
}
9289
});
9390

94-
// @gate enableHalt
9591
it('should emit bootstrap script src at the end',async()=>{
9692
constresult=awaitReactDOMFizzStatic.prerenderToNodeStream(
9793
<div>hello world</div>,
@@ -107,7 +103,6 @@ describe('ReactDOMFizzStaticNode', () => {
107103
);
108104
});
109105

110-
// @gate enableHalt
111106
it('emits all HTML as one unit',async()=>{
112107
lethasLoaded=false;
113108
letresolve;
@@ -137,7 +132,6 @@ describe('ReactDOMFizzStaticNode', () => {
137132
expect(prelude).toMatchInlineSnapshot(`"<div><!--$-->Done<!--/$--></div>"`);
138133
});
139134

140-
// @gate enableHalt
141135
it('should reject the promise when an error is thrown at the root',async()=>{
142136
constreportedErrors=[];
143137
letcaughtError=null;
@@ -159,7 +153,6 @@ describe('ReactDOMFizzStaticNode', () => {
159153
expect(reportedErrors).toEqual([theError]);
160154
});
161155

162-
// @gate enableHalt
163156
it('should reject the promise when an error is thrown inside a fallback',async()=>{
164157
constreportedErrors=[];
165158
letcaughtError=null;
@@ -183,7 +176,6 @@ describe('ReactDOMFizzStaticNode', () => {
183176
expect(reportedErrors).toEqual([theError]);
184177
});
185178

186-
// @gate enableHalt
187179
it('should not error the stream when an error is thrown inside suspense boundary',async()=>{
188180
constreportedErrors=[];
189181
constresult=awaitReactDOMFizzStatic.prerenderToNodeStream(
@@ -204,7 +196,6 @@ describe('ReactDOMFizzStaticNode', () => {
204196
expect(reportedErrors).toEqual([theError]);
205197
});
206198

207-
// @gate enableHalt
208199
it('should be able to complete by aborting even if the promise never resolves',async()=>{
209200
consterrors=[];
210201
constcontroller=newAbortController();
@@ -234,39 +225,6 @@ describe('ReactDOMFizzStaticNode', () => {
234225
expect(errors).toEqual(['This operation was aborted']);
235226
});
236227

237-
// @gate enableHalt
238-
// @gate !enableHalt
239-
it('should reject if aborting before the shell is complete and enableHalt is disabled',async()=>{
240-
consterrors=[];
241-
constcontroller=newAbortController();
242-
constpromise=ReactDOMFizzStatic.prerenderToNodeStream(
243-
<div>
244-
<InfiniteSuspend/>
245-
</div>,
246-
{
247-
signal: controller.signal,
248-
onError(x){
249-
errors.push(x.message);
250-
},
251-
},
252-
);
253-
254-
awaitjest.runAllTimers();
255-
256-
consttheReason=newError('aborted for reasons');
257-
controller.abort(theReason);
258-
259-
letcaughtError=null;
260-
try{
261-
awaitpromise;
262-
}catch(error){
263-
caughtError=error;
264-
}
265-
expect(caughtError).toBe(theReason);
266-
expect(errors).toEqual(['aborted for reasons']);
267-
});
268-
269-
// @gate enableHalt
270228
it('should resolve an empty shell if aborting before the shell is complete',async()=>{
271229
consterrors=[];
272230
constcontroller=newAbortController();
@@ -300,7 +258,6 @@ describe('ReactDOMFizzStaticNode', () => {
300258
expect(content).toBe('');
301259
});
302260

303-
// @gate enableHalt
304261
it('should be able to abort before something suspends',async()=>{
305262
consterrors=[];
306263
constcontroller=newAbortController();
@@ -324,58 +281,12 @@ describe('ReactDOMFizzStaticNode', () => {
324281
},
325282
);
326283

327-
if(gate(flags=>flags.enableHalt)){
328-
const{prelude}=awaitstreamPromise;
329-
constcontent=awaitreadContent(prelude);
330-
expect(errors).toEqual(['This operation was aborted']);
331-
expect(content).toBe('');
332-
}else{
333-
letcaughtError=null;
334-
try{
335-
awaitstreamPromise;
336-
}catch(error){
337-
caughtError=error;
338-
}
339-
expect(caughtError.message).toBe('This operation was aborted');
340-
expect(errors).toEqual(['This operation was aborted']);
341-
}
342-
});
343-
344-
// @gate enableHalt
345-
// @gate !enableHalt
346-
it('should reject if passing an already aborted signal and enableHalt is disabled',async()=>{
347-
consterrors=[];
348-
constcontroller=newAbortController();
349-
consttheReason=newError('aborted for reasons');
350-
controller.abort(theReason);
351-
352-
constpromise=ReactDOMFizzStatic.prerenderToNodeStream(
353-
<div>
354-
<Suspensefallback={<div>Loading</div>}>
355-
<InfiniteSuspend/>
356-
</Suspense>
357-
</div>,
358-
{
359-
signal: controller.signal,
360-
onError(x){
361-
errors.push(x.message);
362-
},
363-
},
364-
);
365-
366-
// Technically we could still continue rendering the shell but currently the
367-
// semantics mean that we also abort any pending CPU work.
368-
letcaughtError=null;
369-
try{
370-
awaitpromise;
371-
}catch(error){
372-
caughtError=error;
373-
}
374-
expect(caughtError).toBe(theReason);
375-
expect(errors).toEqual(['aborted for reasons']);
284+
const{prelude}=awaitstreamPromise;
285+
constcontent=awaitreadContent(prelude);
286+
expect(errors).toEqual(['This operation was aborted']);
287+
expect(content).toBe('');
376288
});
377289

378-
// @gate enableHalt
379290
it('should resolve with an empty prelude if passing an already aborted signal',async()=>{
380291
consterrors=[];
381292
constcontroller=newAbortController();
@@ -412,7 +323,6 @@ describe('ReactDOMFizzStaticNode', () => {
412323
expect(content).toBe('');
413324
});
414325

415-
// @gate enableHalt
416326
it('supports custom abort reasons with a string',async()=>{
417327
constpromise=newPromise(r=>{});
418328
functionWait(){
@@ -454,7 +364,6 @@ describe('ReactDOMFizzStaticNode', () => {
454364
expect(errors).toEqual(['foobar','foobar']);
455365
});
456366

457-
// @gate enableHalt
458367
it('supports custom abort reasons with an Error',async()=>{
459368
constpromise=newPromise(r=>{});
460369
functionWait(){

0 commit comments

Comments
 (0)
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' [flags] Cleanup `enableHalt` (#35708) · react/react@9a5996a · GitHub
Skip to content

Commit 9a5996a

Browse files
authored
[flags] Cleanup enableHalt (#35708)
1 parent 1c66ac7 commit 9a5996a

20 files changed

Lines changed: 61 additions & 311 deletions

‎packages/react-dom/src/__tests__/ReactDOMFizzServer-test.js‎

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6710,7 +6710,6 @@ describe('ReactDOMFizzServer', () => {
67106710
},
67116711
);
67126712

6713-
// @gate enableHalt
67146713
it('can resume a prerender that was aborted',async()=>{
67156714
constpromise=newPromise(r=>{});
67166715

‎packages/react-dom/src/__tests__/ReactDOMFizzStatic-test.js‎

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -230,9 +230,7 @@ describe('ReactDOMFizzStatic', () => {
230230

231231
constresult=awaitpromise;
232232

233-
expect(result.postponed).toBe(
234-
gate(flags=>flags.enableHalt) ? null : undefined,
235-
);
233+
expect(result.postponed).toBe(null);
236234

237235
awaitact(async()=>{
238236
result.prelude.pipe(writable);
@@ -362,7 +360,6 @@ describe('ReactDOMFizzStatic', () => {
362360
);
363361
});
364362

365-
// @gate enableHalt
366363
it('will halt a prerender when aborting with an error during a render',async()=>{
367364
constcontroller=newAbortController();
368365
functionApp(){
@@ -384,7 +381,6 @@ describe('ReactDOMFizzStatic', () => {
384381
expect(getVisibleChildren(container)).toEqual(undefined);
385382
});
386383

387-
// @gate enableHalt
388384
it('will halt a prerender when aborting with an error in a microtask',async()=>{
389385
consterrors=[];
390386

‎packages/react-dom/src/__tests__/ReactDOMFizzStaticBrowser-test.js‎

Lines changed: 7 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -309,40 +309,6 @@ describe('ReactDOMFizzStaticBrowser', () => {
309309
expect(errors).toEqual(['This operation was aborted']);
310310
});
311311

312-
// @gate !enableHalt
313-
it('should reject if aborting before the shell is complete and enableHalt is disabled',async()=>{
314-
consterrors=[];
315-
constcontroller=newAbortController();
316-
constpromise=serverAct(()=>
317-
ReactDOMFizzStatic.prerender(
318-
<div>
319-
<InfiniteSuspend/>
320-
</div>,
321-
{
322-
signal: controller.signal,
323-
onError(x){
324-
errors.push(x.message);
325-
},
326-
},
327-
),
328-
);
329-
330-
awaitjest.runAllTimers();
331-
332-
consttheReason=newError('aborted for reasons');
333-
controller.abort(theReason);
334-
335-
letcaughtError=null;
336-
try{
337-
awaitpromise;
338-
}catch(error){
339-
caughtError=error;
340-
}
341-
expect(caughtError).toBe(theReason);
342-
expect(errors).toEqual(['aborted for reasons']);
343-
});
344-
345-
// @gate enableHalt
346312
it('should resolve an empty prelude if aborting before the shell is complete',async()=>{
347313
consterrors=[];
348314
constcontroller=newAbortController();
@@ -403,59 +369,12 @@ describe('ReactDOMFizzStaticBrowser', () => {
403369
),
404370
);
405371

406-
if(gate(flags=>flags.enableHalt)){
407-
const{prelude}=awaitstreamPromise;
408-
constcontent=awaitreadContent(prelude);
409-
expect(errors).toEqual(['This operation was aborted']);
410-
expect(content).toBe('');
411-
}else{
412-
letcaughtError=null;
413-
try{
414-
awaitstreamPromise;
415-
}catch(error){
416-
caughtError=error;
417-
}
418-
expect(caughtError.message).toBe('This operation was aborted');
419-
expect(errors).toEqual(['This operation was aborted']);
420-
}
421-
});
422-
423-
// @gate !enableHalt
424-
it('should reject if passing an already aborted signal and enableHalt is disabled',async()=>{
425-
consterrors=[];
426-
constcontroller=newAbortController();
427-
consttheReason=newError('aborted for reasons');
428-
controller.abort(theReason);
429-
430-
constpromise=serverAct(()=>
431-
ReactDOMFizzStatic.prerender(
432-
<div>
433-
<Suspensefallback={<div>Loading</div>}>
434-
<InfiniteSuspend/>
435-
</Suspense>
436-
</div>,
437-
{
438-
signal: controller.signal,
439-
onError(x){
440-
errors.push(x.message);
441-
},
442-
},
443-
),
444-
);
445-
446-
// Technically we could still continue rendering the shell but currently the
447-
// semantics mean that we also abort any pending CPU work.
448-
letcaughtError=null;
449-
try{
450-
awaitpromise;
451-
}catch(error){
452-
caughtError=error;
453-
}
454-
expect(caughtError).toBe(theReason);
455-
expect(errors).toEqual(['aborted for reasons']);
372+
const{prelude}=awaitstreamPromise;
373+
constcontent=awaitreadContent(prelude);
374+
expect(errors).toEqual(['This operation was aborted']);
375+
expect(content).toBe('');
456376
});
457377

458-
// @gate enableHalt
459378
it('should resolve an empty prelude if passing an already aborted signal',async()=>{
460379
consterrors=[];
461380
constcontroller=newAbortController();
@@ -593,16 +512,13 @@ describe('ReactDOMFizzStaticBrowser', () => {
593512
onError,
594513
}),
595514
);
596-
expect(prerendered.postponed).toBe(
597-
gate(flags=>flags.enableHalt) ? null : undefined,
598-
);
515+
expect(prerendered.postponed).toBe(null);
599516
expect(errors).toEqual(['bad onHeaders']);
600517

601518
awaitreadIntoContainer(prerendered.prelude);
602519
expect(getVisibleChildren(container)).toEqual(<div>hello</div>);
603520
});
604521

605-
// @gate enableHalt
606522
it('can resume render of a prerender',async()=>{
607523
consterrors=[];
608524

@@ -689,7 +605,6 @@ describe('ReactDOMFizzStaticBrowser', () => {
689605
expect(getVisibleChildren(container)).toEqual(<div>Hello</div>);
690606
});
691607

692-
// @gate enableHalt
693608
it('can prerender a preamble',async()=>{
694609
consterrors=[];
695610

@@ -850,7 +765,6 @@ describe('ReactDOMFizzStaticBrowser', () => {
850765
expect(errors).toEqual(['boom']);
851766
});
852767

853-
// @gate enableHalt
854768
it('will render fallback Document when erroring a boundary above the body',async()=>{
855769
letisPrerendering=true;
856770
constpromise=newPromise(()=>{});
@@ -927,7 +841,6 @@ describe('ReactDOMFizzStaticBrowser', () => {
927841
);
928842
});
929843

930-
// @gate enableHalt
931844
it('can omit a preamble with an empty shell if no preamble is ready when prerendering finishes',async()=>{
932845
consterrors=[];
933846

@@ -1027,7 +940,7 @@ describe('ReactDOMFizzStaticBrowser', () => {
1027940
);
1028941
});
1029942

1030-
// @gateenableHalt && enableSuspenseList
943+
// @gate enableSuspenseList
1031944
it('can resume a partially prerendered SuspenseList',async()=>{
1032945
consterrors=[];
1033946

@@ -1112,7 +1025,7 @@ describe('ReactDOMFizzStaticBrowser', () => {
11121025
);
11131026
});
11141027

1115-
// @gateenableHalt && enableOptimisticKey
1028+
// @gate enableOptimisticKey
11161029
it('can resume an optimistic keyed slot',async()=>{
11171030
consterrors=[];
11181031

‎packages/react-dom/src/__tests__/ReactDOMFizzStaticNode-test.js‎

Lines changed: 4 additions & 95 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,6 @@ describe('ReactDOMFizzStaticNode', () => {
5656
}
5757
}
5858

59-
// @gate enableHalt
6059
it('should call prerenderToNodeStream',async()=>{
6160
constresult=awaitReactDOMFizzStatic.prerenderToNodeStream(
6261
<div>hello world</div>,
@@ -65,14 +64,12 @@ describe('ReactDOMFizzStaticNode', () => {
6564
expect(prelude).toMatchInlineSnapshot(`"<div>hello world</div>"`);
6665
});
6766

68-
// @gate enableHalt
6967
it('should suppport web streams',async()=>{
7068
constresult=awaitReactDOMFizzStatic.prerender(<div>hello world</div>);
7169
constprelude=awaitreadContentWeb(result.prelude);
7270
expect(prelude).toMatchInlineSnapshot(`"<div>hello world</div>"`);
7371
});
7472

75-
// @gate enableHalt
7673
it('should emit DOCTYPE at the root of the document',async()=>{
7774
constresult=awaitReactDOMFizzStatic.prerenderToNodeStream(
7875
<html>
@@ -91,7 +88,6 @@ describe('ReactDOMFizzStaticNode', () => {
9188
}
9289
});
9390

94-
// @gate enableHalt
9591
it('should emit bootstrap script src at the end',async()=>{
9692
constresult=awaitReactDOMFizzStatic.prerenderToNodeStream(
9793
<div>hello world</div>,
@@ -107,7 +103,6 @@ describe('ReactDOMFizzStaticNode', () => {
107103
);
108104
});
109105

110-
// @gate enableHalt
111106
it('emits all HTML as one unit',async()=>{
112107
lethasLoaded=false;
113108
letresolve;
@@ -137,7 +132,6 @@ describe('ReactDOMFizzStaticNode', () => {
137132
expect(prelude).toMatchInlineSnapshot(`"<div><!--$-->Done<!--/$--></div>"`);
138133
});
139134

140-
// @gate enableHalt
141135
it('should reject the promise when an error is thrown at the root',async()=>{
142136
constreportedErrors=[];
143137
letcaughtError=null;
@@ -159,7 +153,6 @@ describe('ReactDOMFizzStaticNode', () => {
159153
expect(reportedErrors).toEqual([theError]);
160154
});
161155

162-
// @gate enableHalt
163156
it('should reject the promise when an error is thrown inside a fallback',async()=>{
164157
constreportedErrors=[];
165158
letcaughtError=null;
@@ -183,7 +176,6 @@ describe('ReactDOMFizzStaticNode', () => {
183176
expect(reportedErrors).toEqual([theError]);
184177
});
185178

186-
// @gate enableHalt
187179
it('should not error the stream when an error is thrown inside suspense boundary',async()=>{
188180
constreportedErrors=[];
189181
constresult=awaitReactDOMFizzStatic.prerenderToNodeStream(
@@ -204,7 +196,6 @@ describe('ReactDOMFizzStaticNode', () => {
204196
expect(reportedErrors).toEqual([theError]);
205197
});
206198

207-
// @gate enableHalt
208199
it('should be able to complete by aborting even if the promise never resolves',async()=>{
209200
consterrors=[];
210201
constcontroller=newAbortController();
@@ -234,39 +225,6 @@ describe('ReactDOMFizzStaticNode', () => {
234225
expect(errors).toEqual(['This operation was aborted']);
235226
});
236227

237-
// @gate enableHalt
238-
// @gate !enableHalt
239-
it('should reject if aborting before the shell is complete and enableHalt is disabled',async()=>{
240-
consterrors=[];
241-
constcontroller=newAbortController();
242-
constpromise=ReactDOMFizzStatic.prerenderToNodeStream(
243-
<div>
244-
<InfiniteSuspend/>
245-
</div>,
246-
{
247-
signal: controller.signal,
248-
onError(x){
249-
errors.push(x.message);
250-
},
251-
},
252-
);
253-
254-
awaitjest.runAllTimers();
255-
256-
consttheReason=newError('aborted for reasons');
257-
controller.abort(theReason);
258-
259-
letcaughtError=null;
260-
try{
261-
awaitpromise;
262-
}catch(error){
263-
caughtError=error;
264-
}
265-
expect(caughtError).toBe(theReason);
266-
expect(errors).toEqual(['aborted for reasons']);
267-
});
268-
269-
// @gate enableHalt
270228
it('should resolve an empty shell if aborting before the shell is complete',async()=>{
271229
consterrors=[];
272230
constcontroller=newAbortController();
@@ -300,7 +258,6 @@ describe('ReactDOMFizzStaticNode', () => {
300258
expect(content).toBe('');
301259
});
302260

303-
// @gate enableHalt
304261
it('should be able to abort before something suspends',async()=>{
305262
consterrors=[];
306263
constcontroller=newAbortController();
@@ -324,58 +281,12 @@ describe('ReactDOMFizzStaticNode', () => {
324281
},
325282
);
326283

327-
if(gate(flags=>flags.enableHalt)){
328-
const{prelude}=awaitstreamPromise;
329-
constcontent=awaitreadContent(prelude);
330-
expect(errors).toEqual(['This operation was aborted']);
331-
expect(content).toBe('');
332-
}else{
333-
letcaughtError=null;
334-
try{
335-
awaitstreamPromise;
336-
}catch(error){
337-
caughtError=error;
338-
}
339-
expect(caughtError.message).toBe('This operation was aborted');
340-
expect(errors).toEqual(['This operation was aborted']);
341-
}
342-
});
343-
344-
// @gate enableHalt
345-
// @gate !enableHalt
346-
it('should reject if passing an already aborted signal and enableHalt is disabled',async()=>{
347-
consterrors=[];
348-
constcontroller=newAbortController();
349-
consttheReason=newError('aborted for reasons');
350-
controller.abort(theReason);
351-
352-
constpromise=ReactDOMFizzStatic.prerenderToNodeStream(
353-
<div>
354-
<Suspensefallback={<div>Loading</div>}>
355-
<InfiniteSuspend/>
356-
</Suspense>
357-
</div>,
358-
{
359-
signal: controller.signal,
360-
onError(x){
361-
errors.push(x.message);
362-
},
363-
},
364-
);
365-
366-
// Technically we could still continue rendering the shell but currently the
367-
// semantics mean that we also abort any pending CPU work.
368-
letcaughtError=null;
369-
try{
370-
awaitpromise;
371-
}catch(error){
372-
caughtError=error;
373-
}
374-
expect(caughtError).toBe(theReason);
375-
expect(errors).toEqual(['aborted for reasons']);
284+
const{prelude}=awaitstreamPromise;
285+
constcontent=awaitreadContent(prelude);
286+
expect(errors).toEqual(['This operation was aborted']);
287+
expect(content).toBe('');
376288
});
377289

378-
// @gate enableHalt
379290
it('should resolve with an empty prelude if passing an already aborted signal',async()=>{
380291
consterrors=[];
381292
constcontroller=newAbortController();
@@ -412,7 +323,6 @@ describe('ReactDOMFizzStaticNode', () => {
412323
expect(content).toBe('');
413324
});
414325

415-
// @gate enableHalt
416326
it('supports custom abort reasons with a string',async()=>{
417327
constpromise=newPromise(r=>{});
418328
functionWait(){
@@ -454,7 +364,6 @@ describe('ReactDOMFizzStaticNode', () => {
454364
expect(errors).toEqual(['foobar','foobar']);
455365
});
456366

457-
// @gate enableHalt
458367
it('supports custom abort reasons with an Error',async()=>{
459368
constpromise=newPromise(r=>{});
460369
functionWait(){

0 commit comments

Comments
 (0)
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' [flags] Cleanup `enableHalt` (#35708) · react/react@9a5996a · GitHub
Skip to content

Commit 9a5996a

Browse files
authored
[flags] Cleanup enableHalt (#35708)
1 parent 1c66ac7 commit 9a5996a

20 files changed

Lines changed: 61 additions & 311 deletions

‎packages/react-dom/src/__tests__/ReactDOMFizzServer-test.js‎

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6710,7 +6710,6 @@ describe('ReactDOMFizzServer', () => {
67106710
},
67116711
);
67126712

6713-
// @gate enableHalt
67146713
it('can resume a prerender that was aborted',async()=>{
67156714
constpromise=newPromise(r=>{});
67166715

‎packages/react-dom/src/__tests__/ReactDOMFizzStatic-test.js‎

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -230,9 +230,7 @@ describe('ReactDOMFizzStatic', () => {
230230

231231
constresult=awaitpromise;
232232

233-
expect(result.postponed).toBe(
234-
gate(flags=>flags.enableHalt) ? null : undefined,
235-
);
233+
expect(result.postponed).toBe(null);
236234

237235
awaitact(async()=>{
238236
result.prelude.pipe(writable);
@@ -362,7 +360,6 @@ describe('ReactDOMFizzStatic', () => {
362360
);
363361
});
364362

365-
// @gate enableHalt
366363
it('will halt a prerender when aborting with an error during a render',async()=>{
367364
constcontroller=newAbortController();
368365
functionApp(){
@@ -384,7 +381,6 @@ describe('ReactDOMFizzStatic', () => {
384381
expect(getVisibleChildren(container)).toEqual(undefined);
385382
});
386383

387-
// @gate enableHalt
388384
it('will halt a prerender when aborting with an error in a microtask',async()=>{
389385
consterrors=[];
390386

‎packages/react-dom/src/__tests__/ReactDOMFizzStaticBrowser-test.js‎

Lines changed: 7 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -309,40 +309,6 @@ describe('ReactDOMFizzStaticBrowser', () => {
309309
expect(errors).toEqual(['This operation was aborted']);
310310
});
311311

312-
// @gate !enableHalt
313-
it('should reject if aborting before the shell is complete and enableHalt is disabled',async()=>{
314-
consterrors=[];
315-
constcontroller=newAbortController();
316-
constpromise=serverAct(()=>
317-
ReactDOMFizzStatic.prerender(
318-
<div>
319-
<InfiniteSuspend/>
320-
</div>,
321-
{
322-
signal: controller.signal,
323-
onError(x){
324-
errors.push(x.message);
325-
},
326-
},
327-
),
328-
);
329-
330-
awaitjest.runAllTimers();
331-
332-
consttheReason=newError('aborted for reasons');
333-
controller.abort(theReason);
334-
335-
letcaughtError=null;
336-
try{
337-
awaitpromise;
338-
}catch(error){
339-
caughtError=error;
340-
}
341-
expect(caughtError).toBe(theReason);
342-
expect(errors).toEqual(['aborted for reasons']);
343-
});
344-
345-
// @gate enableHalt
346312
it('should resolve an empty prelude if aborting before the shell is complete',async()=>{
347313
consterrors=[];
348314
constcontroller=newAbortController();
@@ -403,59 +369,12 @@ describe('ReactDOMFizzStaticBrowser', () => {
403369
),
404370
);
405371

406-
if(gate(flags=>flags.enableHalt)){
407-
const{prelude}=awaitstreamPromise;
408-
constcontent=awaitreadContent(prelude);
409-
expect(errors).toEqual(['This operation was aborted']);
410-
expect(content).toBe('');
411-
}else{
412-
letcaughtError=null;
413-
try{
414-
awaitstreamPromise;
415-
}catch(error){
416-
caughtError=error;
417-
}
418-
expect(caughtError.message).toBe('This operation was aborted');
419-
expect(errors).toEqual(['This operation was aborted']);
420-
}
421-
});
422-
423-
// @gate !enableHalt
424-
it('should reject if passing an already aborted signal and enableHalt is disabled',async()=>{
425-
consterrors=[];
426-
constcontroller=newAbortController();
427-
consttheReason=newError('aborted for reasons');
428-
controller.abort(theReason);
429-
430-
constpromise=serverAct(()=>
431-
ReactDOMFizzStatic.prerender(
432-
<div>
433-
<Suspensefallback={<div>Loading</div>}>
434-
<InfiniteSuspend/>
435-
</Suspense>
436-
</div>,
437-
{
438-
signal: controller.signal,
439-
onError(x){
440-
errors.push(x.message);
441-
},
442-
},
443-
),
444-
);
445-
446-
// Technically we could still continue rendering the shell but currently the
447-
// semantics mean that we also abort any pending CPU work.
448-
letcaughtError=null;
449-
try{
450-
awaitpromise;
451-
}catch(error){
452-
caughtError=error;
453-
}
454-
expect(caughtError).toBe(theReason);
455-
expect(errors).toEqual(['aborted for reasons']);
372+
const{prelude}=awaitstreamPromise;
373+
constcontent=awaitreadContent(prelude);
374+
expect(errors).toEqual(['This operation was aborted']);
375+
expect(content).toBe('');
456376
});
457377

458-
// @gate enableHalt
459378
it('should resolve an empty prelude if passing an already aborted signal',async()=>{
460379
consterrors=[];
461380
constcontroller=newAbortController();
@@ -593,16 +512,13 @@ describe('ReactDOMFizzStaticBrowser', () => {
593512
onError,
594513
}),
595514
);
596-
expect(prerendered.postponed).toBe(
597-
gate(flags=>flags.enableHalt) ? null : undefined,
598-
);
515+
expect(prerendered.postponed).toBe(null);
599516
expect(errors).toEqual(['bad onHeaders']);
600517

601518
awaitreadIntoContainer(prerendered.prelude);
602519
expect(getVisibleChildren(container)).toEqual(<div>hello</div>);
603520
});
604521

605-
// @gate enableHalt
606522
it('can resume render of a prerender',async()=>{
607523
consterrors=[];
608524

@@ -689,7 +605,6 @@ describe('ReactDOMFizzStaticBrowser', () => {
689605
expect(getVisibleChildren(container)).toEqual(<div>Hello</div>);
690606
});
691607

692-
// @gate enableHalt
693608
it('can prerender a preamble',async()=>{
694609
consterrors=[];
695610

@@ -850,7 +765,6 @@ describe('ReactDOMFizzStaticBrowser', () => {
850765
expect(errors).toEqual(['boom']);
851766
});
852767

853-
// @gate enableHalt
854768
it('will render fallback Document when erroring a boundary above the body',async()=>{
855769
letisPrerendering=true;
856770
constpromise=newPromise(()=>{});
@@ -927,7 +841,6 @@ describe('ReactDOMFizzStaticBrowser', () => {
927841
);
928842
});
929843

930-
// @gate enableHalt
931844
it('can omit a preamble with an empty shell if no preamble is ready when prerendering finishes',async()=>{
932845
consterrors=[];
933846

@@ -1027,7 +940,7 @@ describe('ReactDOMFizzStaticBrowser', () => {
1027940
);
1028941
});
1029942

1030-
// @gateenableHalt && enableSuspenseList
943+
// @gate enableSuspenseList
1031944
it('can resume a partially prerendered SuspenseList',async()=>{
1032945
consterrors=[];
1033946

@@ -1112,7 +1025,7 @@ describe('ReactDOMFizzStaticBrowser', () => {
11121025
);
11131026
});
11141027

1115-
// @gateenableHalt && enableOptimisticKey
1028+
// @gate enableOptimisticKey
11161029
it('can resume an optimistic keyed slot',async()=>{
11171030
consterrors=[];
11181031

‎packages/react-dom/src/__tests__/ReactDOMFizzStaticNode-test.js‎

Lines changed: 4 additions & 95 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,6 @@ describe('ReactDOMFizzStaticNode', () => {
5656
}
5757
}
5858

59-
// @gate enableHalt
6059
it('should call prerenderToNodeStream',async()=>{
6160
constresult=awaitReactDOMFizzStatic.prerenderToNodeStream(
6261
<div>hello world</div>,
@@ -65,14 +64,12 @@ describe('ReactDOMFizzStaticNode', () => {
6564
expect(prelude).toMatchInlineSnapshot(`"<div>hello world</div>"`);
6665
});
6766

68-
// @gate enableHalt
6967
it('should suppport web streams',async()=>{
7068
constresult=awaitReactDOMFizzStatic.prerender(<div>hello world</div>);
7169
constprelude=awaitreadContentWeb(result.prelude);
7270
expect(prelude).toMatchInlineSnapshot(`"<div>hello world</div>"`);
7371
});
7472

75-
// @gate enableHalt
7673
it('should emit DOCTYPE at the root of the document',async()=>{
7774
constresult=awaitReactDOMFizzStatic.prerenderToNodeStream(
7875
<html>
@@ -91,7 +88,6 @@ describe('ReactDOMFizzStaticNode', () => {
9188
}
9289
});
9390

94-
// @gate enableHalt
9591
it('should emit bootstrap script src at the end',async()=>{
9692
constresult=awaitReactDOMFizzStatic.prerenderToNodeStream(
9793
<div>hello world</div>,
@@ -107,7 +103,6 @@ describe('ReactDOMFizzStaticNode', () => {
107103
);
108104
});
109105

110-
// @gate enableHalt
111106
it('emits all HTML as one unit',async()=>{
112107
lethasLoaded=false;
113108
letresolve;
@@ -137,7 +132,6 @@ describe('ReactDOMFizzStaticNode', () => {
137132
expect(prelude).toMatchInlineSnapshot(`"<div><!--$-->Done<!--/$--></div>"`);
138133
});
139134

140-
// @gate enableHalt
141135
it('should reject the promise when an error is thrown at the root',async()=>{
142136
constreportedErrors=[];
143137
letcaughtError=null;
@@ -159,7 +153,6 @@ describe('ReactDOMFizzStaticNode', () => {
159153
expect(reportedErrors).toEqual([theError]);
160154
});
161155

162-
// @gate enableHalt
163156
it('should reject the promise when an error is thrown inside a fallback',async()=>{
164157
constreportedErrors=[];
165158
letcaughtError=null;
@@ -183,7 +176,6 @@ describe('ReactDOMFizzStaticNode', () => {
183176
expect(reportedErrors).toEqual([theError]);
184177
});
185178

186-
// @gate enableHalt
187179
it('should not error the stream when an error is thrown inside suspense boundary',async()=>{
188180
constreportedErrors=[];
189181
constresult=awaitReactDOMFizzStatic.prerenderToNodeStream(
@@ -204,7 +196,6 @@ describe('ReactDOMFizzStaticNode', () => {
204196
expect(reportedErrors).toEqual([theError]);
205197
});
206198

207-
// @gate enableHalt
208199
it('should be able to complete by aborting even if the promise never resolves',async()=>{
209200
consterrors=[];
210201
constcontroller=newAbortController();
@@ -234,39 +225,6 @@ describe('ReactDOMFizzStaticNode', () => {
234225
expect(errors).toEqual(['This operation was aborted']);
235226
});
236227

237-
// @gate enableHalt
238-
// @gate !enableHalt
239-
it('should reject if aborting before the shell is complete and enableHalt is disabled',async()=>{
240-
consterrors=[];
241-
constcontroller=newAbortController();
242-
constpromise=ReactDOMFizzStatic.prerenderToNodeStream(
243-
<div>
244-
<InfiniteSuspend/>
245-
</div>,
246-
{
247-
signal: controller.signal,
248-
onError(x){
249-
errors.push(x.message);
250-
},
251-
},
252-
);
253-
254-
awaitjest.runAllTimers();
255-
256-
consttheReason=newError('aborted for reasons');
257-
controller.abort(theReason);
258-
259-
letcaughtError=null;
260-
try{
261-
awaitpromise;
262-
}catch(error){
263-
caughtError=error;
264-
}
265-
expect(caughtError).toBe(theReason);
266-
expect(errors).toEqual(['aborted for reasons']);
267-
});
268-
269-
// @gate enableHalt
270228
it('should resolve an empty shell if aborting before the shell is complete',async()=>{
271229
consterrors=[];
272230
constcontroller=newAbortController();
@@ -300,7 +258,6 @@ describe('ReactDOMFizzStaticNode', () => {
300258
expect(content).toBe('');
301259
});
302260

303-
// @gate enableHalt
304261
it('should be able to abort before something suspends',async()=>{
305262
consterrors=[];
306263
constcontroller=newAbortController();
@@ -324,58 +281,12 @@ describe('ReactDOMFizzStaticNode', () => {
324281
},
325282
);
326283

327-
if(gate(flags=>flags.enableHalt)){
328-
const{prelude}=awaitstreamPromise;
329-
constcontent=awaitreadContent(prelude);
330-
expect(errors).toEqual(['This operation was aborted']);
331-
expect(content).toBe('');
332-
}else{
333-
letcaughtError=null;
334-
try{
335-
awaitstreamPromise;
336-
}catch(error){
337-
caughtError=error;
338-
}
339-
expect(caughtError.message).toBe('This operation was aborted');
340-
expect(errors).toEqual(['This operation was aborted']);
341-
}
342-
});
343-
344-
// @gate enableHalt
345-
// @gate !enableHalt
346-
it('should reject if passing an already aborted signal and enableHalt is disabled',async()=>{
347-
consterrors=[];
348-
constcontroller=newAbortController();
349-
consttheReason=newError('aborted for reasons');
350-
controller.abort(theReason);
351-
352-
constpromise=ReactDOMFizzStatic.prerenderToNodeStream(
353-
<div>
354-
<Suspensefallback={<div>Loading</div>}>
355-
<InfiniteSuspend/>
356-
</Suspense>
357-
</div>,
358-
{
359-
signal: controller.signal,
360-
onError(x){
361-
errors.push(x.message);
362-
},
363-
},
364-
);
365-
366-
// Technically we could still continue rendering the shell but currently the
367-
// semantics mean that we also abort any pending CPU work.
368-
letcaughtError=null;
369-
try{
370-
awaitpromise;
371-
}catch(error){
372-
caughtError=error;
373-
}
374-
expect(caughtError).toBe(theReason);
375-
expect(errors).toEqual(['aborted for reasons']);
284+
const{prelude}=awaitstreamPromise;
285+
constcontent=awaitreadContent(prelude);
286+
expect(errors).toEqual(['This operation was aborted']);
287+
expect(content).toBe('');
376288
});
377289

378-
// @gate enableHalt
379290
it('should resolve with an empty prelude if passing an already aborted signal',async()=>{
380291
consterrors=[];
381292
constcontroller=newAbortController();
@@ -412,7 +323,6 @@ describe('ReactDOMFizzStaticNode', () => {
412323
expect(content).toBe('');
413324
});
414325

415-
// @gate enableHalt
416326
it('supports custom abort reasons with a string',async()=>{
417327
constpromise=newPromise(r=>{});
418328
functionWait(){
@@ -454,7 +364,6 @@ describe('ReactDOMFizzStaticNode', () => {
454364
expect(errors).toEqual(['foobar','foobar']);
455365
});
456366

457-
// @gate enableHalt
458367
it('supports custom abort reasons with an Error',async()=>{
459368
constpromise=newPromise(r=>{});
460369
functionWait(){

0 commit comments

Comments
 (0)
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' [flags] Cleanup `enableHalt` (#35708) · react/react@9a5996a · GitHub
Skip to content

Commit 9a5996a

Browse files
authored
[flags] Cleanup enableHalt (#35708)
1 parent 1c66ac7 commit 9a5996a

20 files changed

Lines changed: 61 additions & 311 deletions

‎packages/react-dom/src/__tests__/ReactDOMFizzServer-test.js‎

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6710,7 +6710,6 @@ describe('ReactDOMFizzServer', () => {
67106710
},
67116711
);
67126712

6713-
// @gate enableHalt
67146713
it('can resume a prerender that was aborted',async()=>{
67156714
constpromise=newPromise(r=>{});
67166715

‎packages/react-dom/src/__tests__/ReactDOMFizzStatic-test.js‎

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -230,9 +230,7 @@ describe('ReactDOMFizzStatic', () => {
230230

231231
constresult=awaitpromise;
232232

233-
expect(result.postponed).toBe(
234-
gate(flags=>flags.enableHalt) ? null : undefined,
235-
);
233+
expect(result.postponed).toBe(null);
236234

237235
awaitact(async()=>{
238236
result.prelude.pipe(writable);
@@ -362,7 +360,6 @@ describe('ReactDOMFizzStatic', () => {
362360
);
363361
});
364362

365-
// @gate enableHalt
366363
it('will halt a prerender when aborting with an error during a render',async()=>{
367364
constcontroller=newAbortController();
368365
functionApp(){
@@ -384,7 +381,6 @@ describe('ReactDOMFizzStatic', () => {
384381
expect(getVisibleChildren(container)).toEqual(undefined);
385382
});
386383

387-
// @gate enableHalt
388384
it('will halt a prerender when aborting with an error in a microtask',async()=>{
389385
consterrors=[];
390386

‎packages/react-dom/src/__tests__/ReactDOMFizzStaticBrowser-test.js‎

Lines changed: 7 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -309,40 +309,6 @@ describe('ReactDOMFizzStaticBrowser', () => {
309309
expect(errors).toEqual(['This operation was aborted']);
310310
});
311311

312-
// @gate !enableHalt
313-
it('should reject if aborting before the shell is complete and enableHalt is disabled',async()=>{
314-
consterrors=[];
315-
constcontroller=newAbortController();
316-
constpromise=serverAct(()=>
317-
ReactDOMFizzStatic.prerender(
318-
<div>
319-
<InfiniteSuspend/>
320-
</div>,
321-
{
322-
signal: controller.signal,
323-
onError(x){
324-
errors.push(x.message);
325-
},
326-
},
327-
),
328-
);
329-
330-
awaitjest.runAllTimers();
331-
332-
consttheReason=newError('aborted for reasons');
333-
controller.abort(theReason);
334-
335-
letcaughtError=null;
336-
try{
337-
awaitpromise;
338-
}catch(error){
339-
caughtError=error;
340-
}
341-
expect(caughtError).toBe(theReason);
342-
expect(errors).toEqual(['aborted for reasons']);
343-
});
344-
345-
// @gate enableHalt
346312
it('should resolve an empty prelude if aborting before the shell is complete',async()=>{
347313
consterrors=[];
348314
constcontroller=newAbortController();
@@ -403,59 +369,12 @@ describe('ReactDOMFizzStaticBrowser', () => {
403369
),
404370
);
405371

406-
if(gate(flags=>flags.enableHalt)){
407-
const{prelude}=awaitstreamPromise;
408-
constcontent=awaitreadContent(prelude);
409-
expect(errors).toEqual(['This operation was aborted']);
410-
expect(content).toBe('');
411-
}else{
412-
letcaughtError=null;
413-
try{
414-
awaitstreamPromise;
415-
}catch(error){
416-
caughtError=error;
417-
}
418-
expect(caughtError.message).toBe('This operation was aborted');
419-
expect(errors).toEqual(['This operation was aborted']);
420-
}
421-
});
422-
423-
// @gate !enableHalt
424-
it('should reject if passing an already aborted signal and enableHalt is disabled',async()=>{
425-
consterrors=[];
426-
constcontroller=newAbortController();
427-
consttheReason=newError('aborted for reasons');
428-
controller.abort(theReason);
429-
430-
constpromise=serverAct(()=>
431-
ReactDOMFizzStatic.prerender(
432-
<div>
433-
<Suspensefallback={<div>Loading</div>}>
434-
<InfiniteSuspend/>
435-
</Suspense>
436-
</div>,
437-
{
438-
signal: controller.signal,
439-
onError(x){
440-
errors.push(x.message);
441-
},
442-
},
443-
),
444-
);
445-
446-
// Technically we could still continue rendering the shell but currently the
447-
// semantics mean that we also abort any pending CPU work.
448-
letcaughtError=null;
449-
try{
450-
awaitpromise;
451-
}catch(error){
452-
caughtError=error;
453-
}
454-
expect(caughtError).toBe(theReason);
455-
expect(errors).toEqual(['aborted for reasons']);
372+
const{prelude}=awaitstreamPromise;
373+
constcontent=awaitreadContent(prelude);
374+
expect(errors).toEqual(['This operation was aborted']);
375+
expect(content).toBe('');
456376
});
457377

458-
// @gate enableHalt
459378
it('should resolve an empty prelude if passing an already aborted signal',async()=>{
460379
consterrors=[];
461380
constcontroller=newAbortController();
@@ -593,16 +512,13 @@ describe('ReactDOMFizzStaticBrowser', () => {
593512
onError,
594513
}),
595514
);
596-
expect(prerendered.postponed).toBe(
597-
gate(flags=>flags.enableHalt) ? null : undefined,
598-
);
515+
expect(prerendered.postponed).toBe(null);
599516
expect(errors).toEqual(['bad onHeaders']);
600517

601518
awaitreadIntoContainer(prerendered.prelude);
602519
expect(getVisibleChildren(container)).toEqual(<div>hello</div>);
603520
});
604521

605-
// @gate enableHalt
606522
it('can resume render of a prerender',async()=>{
607523
consterrors=[];
608524

@@ -689,7 +605,6 @@ describe('ReactDOMFizzStaticBrowser', () => {
689605
expect(getVisibleChildren(container)).toEqual(<div>Hello</div>);
690606
});
691607

692-
// @gate enableHalt
693608
it('can prerender a preamble',async()=>{
694609
consterrors=[];
695610

@@ -850,7 +765,6 @@ describe('ReactDOMFizzStaticBrowser', () => {
850765
expect(errors).toEqual(['boom']);
851766
});
852767

853-
// @gate enableHalt
854768
it('will render fallback Document when erroring a boundary above the body',async()=>{
855769
letisPrerendering=true;
856770
constpromise=newPromise(()=>{});
@@ -927,7 +841,6 @@ describe('ReactDOMFizzStaticBrowser', () => {
927841
);
928842
});
929843

930-
// @gate enableHalt
931844
it('can omit a preamble with an empty shell if no preamble is ready when prerendering finishes',async()=>{
932845
consterrors=[];
933846

@@ -1027,7 +940,7 @@ describe('ReactDOMFizzStaticBrowser', () => {
1027940
);
1028941
});
1029942

1030-
// @gateenableHalt && enableSuspenseList
943+
// @gate enableSuspenseList
1031944
it('can resume a partially prerendered SuspenseList',async()=>{
1032945
consterrors=[];
1033946

@@ -1112,7 +1025,7 @@ describe('ReactDOMFizzStaticBrowser', () => {
11121025
);
11131026
});
11141027

1115-
// @gateenableHalt && enableOptimisticKey
1028+
// @gate enableOptimisticKey
11161029
it('can resume an optimistic keyed slot',async()=>{
11171030
consterrors=[];
11181031

‎packages/react-dom/src/__tests__/ReactDOMFizzStaticNode-test.js‎

Lines changed: 4 additions & 95 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,6 @@ describe('ReactDOMFizzStaticNode', () => {
5656
}
5757
}
5858

59-
// @gate enableHalt
6059
it('should call prerenderToNodeStream',async()=>{
6160
constresult=awaitReactDOMFizzStatic.prerenderToNodeStream(
6261
<div>hello world</div>,
@@ -65,14 +64,12 @@ describe('ReactDOMFizzStaticNode', () => {
6564
expect(prelude).toMatchInlineSnapshot(`"<div>hello world</div>"`);
6665
});
6766

68-
// @gate enableHalt
6967
it('should suppport web streams',async()=>{
7068
constresult=awaitReactDOMFizzStatic.prerender(<div>hello world</div>);
7169
constprelude=awaitreadContentWeb(result.prelude);
7270
expect(prelude).toMatchInlineSnapshot(`"<div>hello world</div>"`);
7371
});
7472

75-
// @gate enableHalt
7673
it('should emit DOCTYPE at the root of the document',async()=>{
7774
constresult=awaitReactDOMFizzStatic.prerenderToNodeStream(
7875
<html>
@@ -91,7 +88,6 @@ describe('ReactDOMFizzStaticNode', () => {
9188
}
9289
});
9390

94-
// @gate enableHalt
9591
it('should emit bootstrap script src at the end',async()=>{
9692
constresult=awaitReactDOMFizzStatic.prerenderToNodeStream(
9793
<div>hello world</div>,
@@ -107,7 +103,6 @@ describe('ReactDOMFizzStaticNode', () => {
107103
);
108104
});
109105

110-
// @gate enableHalt
111106
it('emits all HTML as one unit',async()=>{
112107
lethasLoaded=false;
113108
letresolve;
@@ -137,7 +132,6 @@ describe('ReactDOMFizzStaticNode', () => {
137132
expect(prelude).toMatchInlineSnapshot(`"<div><!--$-->Done<!--/$--></div>"`);
138133
});
139134

140-
// @gate enableHalt
141135
it('should reject the promise when an error is thrown at the root',async()=>{
142136
constreportedErrors=[];
143137
letcaughtError=null;
@@ -159,7 +153,6 @@ describe('ReactDOMFizzStaticNode', () => {
159153
expect(reportedErrors).toEqual([theError]);
160154
});
161155

162-
// @gate enableHalt
163156
it('should reject the promise when an error is thrown inside a fallback',async()=>{
164157
constreportedErrors=[];
165158
letcaughtError=null;
@@ -183,7 +176,6 @@ describe('ReactDOMFizzStaticNode', () => {
183176
expect(reportedErrors).toEqual([theError]);
184177
});
185178

186-
// @gate enableHalt
187179
it('should not error the stream when an error is thrown inside suspense boundary',async()=>{
188180
constreportedErrors=[];
189181
constresult=awaitReactDOMFizzStatic.prerenderToNodeStream(
@@ -204,7 +196,6 @@ describe('ReactDOMFizzStaticNode', () => {
204196
expect(reportedErrors).toEqual([theError]);
205197
});
206198

207-
// @gate enableHalt
208199
it('should be able to complete by aborting even if the promise never resolves',async()=>{
209200
consterrors=[];
210201
constcontroller=newAbortController();
@@ -234,39 +225,6 @@ describe('ReactDOMFizzStaticNode', () => {
234225
expect(errors).toEqual(['This operation was aborted']);
235226
});
236227

237-
// @gate enableHalt
238-
// @gate !enableHalt
239-
it('should reject if aborting before the shell is complete and enableHalt is disabled',async()=>{
240-
consterrors=[];
241-
constcontroller=newAbortController();
242-
constpromise=ReactDOMFizzStatic.prerenderToNodeStream(
243-
<div>
244-
<InfiniteSuspend/>
245-
</div>,
246-
{
247-
signal: controller.signal,
248-
onError(x){
249-
errors.push(x.message);
250-
},
251-
},
252-
);
253-
254-
awaitjest.runAllTimers();
255-
256-
consttheReason=newError('aborted for reasons');
257-
controller.abort(theReason);
258-
259-
letcaughtError=null;
260-
try{
261-
awaitpromise;
262-
}catch(error){
263-
caughtError=error;
264-
}
265-
expect(caughtError).toBe(theReason);
266-
expect(errors).toEqual(['aborted for reasons']);
267-
});
268-
269-
// @gate enableHalt
270228
it('should resolve an empty shell if aborting before the shell is complete',async()=>{
271229
consterrors=[];
272230
constcontroller=newAbortController();
@@ -300,7 +258,6 @@ describe('ReactDOMFizzStaticNode', () => {
300258
expect(content).toBe('');
301259
});
302260

303-
// @gate enableHalt
304261
it('should be able to abort before something suspends',async()=>{
305262
consterrors=[];
306263
constcontroller=newAbortController();
@@ -324,58 +281,12 @@ describe('ReactDOMFizzStaticNode', () => {
324281
},
325282
);
326283

327-
if(gate(flags=>flags.enableHalt)){
328-
const{prelude}=awaitstreamPromise;
329-
constcontent=awaitreadContent(prelude);
330-
expect(errors).toEqual(['This operation was aborted']);
331-
expect(content).toBe('');
332-
}else{
333-
letcaughtError=null;
334-
try{
335-
awaitstreamPromise;
336-
}catch(error){
337-
caughtError=error;
338-
}
339-
expect(caughtError.message).toBe('This operation was aborted');
340-
expect(errors).toEqual(['This operation was aborted']);
341-
}
342-
});
343-
344-
// @gate enableHalt
345-
// @gate !enableHalt
346-
it('should reject if passing an already aborted signal and enableHalt is disabled',async()=>{
347-
consterrors=[];
348-
constcontroller=newAbortController();
349-
consttheReason=newError('aborted for reasons');
350-
controller.abort(theReason);
351-
352-
constpromise=ReactDOMFizzStatic.prerenderToNodeStream(
353-
<div>
354-
<Suspensefallback={<div>Loading</div>}>
355-
<InfiniteSuspend/>
356-
</Suspense>
357-
</div>,
358-
{
359-
signal: controller.signal,
360-
onError(x){
361-
errors.push(x.message);
362-
},
363-
},
364-
);
365-
366-
// Technically we could still continue rendering the shell but currently the
367-
// semantics mean that we also abort any pending CPU work.
368-
letcaughtError=null;
369-
try{
370-
awaitpromise;
371-
}catch(error){
372-
caughtError=error;
373-
}
374-
expect(caughtError).toBe(theReason);
375-
expect(errors).toEqual(['aborted for reasons']);
284+
const{prelude}=awaitstreamPromise;
285+
constcontent=awaitreadContent(prelude);
286+
expect(errors).toEqual(['This operation was aborted']);
287+
expect(content).toBe('');
376288
});
377289

378-
// @gate enableHalt
379290
it('should resolve with an empty prelude if passing an already aborted signal',async()=>{
380291
consterrors=[];
381292
constcontroller=newAbortController();
@@ -412,7 +323,6 @@ describe('ReactDOMFizzStaticNode', () => {
412323
expect(content).toBe('');
413324
});
414325

415-
// @gate enableHalt
416326
it('supports custom abort reasons with a string',async()=>{
417327
constpromise=newPromise(r=>{});
418328
functionWait(){
@@ -454,7 +364,6 @@ describe('ReactDOMFizzStaticNode', () => {
454364
expect(errors).toEqual(['foobar','foobar']);
455365
});
456366

457-
// @gate enableHalt
458367
it('supports custom abort reasons with an Error',async()=>{
459368
constpromise=newPromise(r=>{});
460369
functionWait(){

0 commit comments

Comments
 (0)
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' [flags] Cleanup `enableHalt` (#35708) · react/react@9a5996a · GitHub
Skip to content

Commit 9a5996a

Browse files
authored
[flags] Cleanup enableHalt (#35708)
1 parent 1c66ac7 commit 9a5996a

20 files changed

Lines changed: 61 additions & 311 deletions

‎packages/react-dom/src/__tests__/ReactDOMFizzServer-test.js‎

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6710,7 +6710,6 @@ describe('ReactDOMFizzServer', () => {
67106710
},
67116711
);
67126712

6713-
// @gate enableHalt
67146713
it('can resume a prerender that was aborted',async()=>{
67156714
constpromise=newPromise(r=>{});
67166715

‎packages/react-dom/src/__tests__/ReactDOMFizzStatic-test.js‎

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -230,9 +230,7 @@ describe('ReactDOMFizzStatic', () => {
230230

231231
constresult=awaitpromise;
232232

233-
expect(result.postponed).toBe(
234-
gate(flags=>flags.enableHalt) ? null : undefined,
235-
);
233+
expect(result.postponed).toBe(null);
236234

237235
awaitact(async()=>{
238236
result.prelude.pipe(writable);
@@ -362,7 +360,6 @@ describe('ReactDOMFizzStatic', () => {
362360
);
363361
});
364362

365-
// @gate enableHalt
366363
it('will halt a prerender when aborting with an error during a render',async()=>{
367364
constcontroller=newAbortController();
368365
functionApp(){
@@ -384,7 +381,6 @@ describe('ReactDOMFizzStatic', () => {
384381
expect(getVisibleChildren(container)).toEqual(undefined);
385382
});
386383

387-
// @gate enableHalt
388384
it('will halt a prerender when aborting with an error in a microtask',async()=>{
389385
consterrors=[];
390386

‎packages/react-dom/src/__tests__/ReactDOMFizzStaticBrowser-test.js‎

Lines changed: 7 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -309,40 +309,6 @@ describe('ReactDOMFizzStaticBrowser', () => {
309309
expect(errors).toEqual(['This operation was aborted']);
310310
});
311311

312-
// @gate !enableHalt
313-
it('should reject if aborting before the shell is complete and enableHalt is disabled',async()=>{
314-
consterrors=[];
315-
constcontroller=newAbortController();
316-
constpromise=serverAct(()=>
317-
ReactDOMFizzStatic.prerender(
318-
<div>
319-
<InfiniteSuspend/>
320-
</div>,
321-
{
322-
signal: controller.signal,
323-
onError(x){
324-
errors.push(x.message);
325-
},
326-
},
327-
),
328-
);
329-
330-
awaitjest.runAllTimers();
331-
332-
consttheReason=newError('aborted for reasons');
333-
controller.abort(theReason);
334-
335-
letcaughtError=null;
336-
try{
337-
awaitpromise;
338-
}catch(error){
339-
caughtError=error;
340-
}
341-
expect(caughtError).toBe(theReason);
342-
expect(errors).toEqual(['aborted for reasons']);
343-
});
344-
345-
// @gate enableHalt
346312
it('should resolve an empty prelude if aborting before the shell is complete',async()=>{
347313
consterrors=[];
348314
constcontroller=newAbortController();
@@ -403,59 +369,12 @@ describe('ReactDOMFizzStaticBrowser', () => {
403369
),
404370
);
405371

406-
if(gate(flags=>flags.enableHalt)){
407-
const{prelude}=awaitstreamPromise;
408-
constcontent=awaitreadContent(prelude);
409-
expect(errors).toEqual(['This operation was aborted']);
410-
expect(content).toBe('');
411-
}else{
412-
letcaughtError=null;
413-
try{
414-
awaitstreamPromise;
415-
}catch(error){
416-
caughtError=error;
417-
}
418-
expect(caughtError.message).toBe('This operation was aborted');
419-
expect(errors).toEqual(['This operation was aborted']);
420-
}
421-
});
422-
423-
// @gate !enableHalt
424-
it('should reject if passing an already aborted signal and enableHalt is disabled',async()=>{
425-
consterrors=[];
426-
constcontroller=newAbortController();
427-
consttheReason=newError('aborted for reasons');
428-
controller.abort(theReason);
429-
430-
constpromise=serverAct(()=>
431-
ReactDOMFizzStatic.prerender(
432-
<div>
433-
<Suspensefallback={<div>Loading</div>}>
434-
<InfiniteSuspend/>
435-
</Suspense>
436-
</div>,
437-
{
438-
signal: controller.signal,
439-
onError(x){
440-
errors.push(x.message);
441-
},
442-
},
443-
),
444-
);
445-
446-
// Technically we could still continue rendering the shell but currently the
447-
// semantics mean that we also abort any pending CPU work.
448-
letcaughtError=null;
449-
try{
450-
awaitpromise;
451-
}catch(error){
452-
caughtError=error;
453-
}
454-
expect(caughtError).toBe(theReason);
455-
expect(errors).toEqual(['aborted for reasons']);
372+
const{prelude}=awaitstreamPromise;
373+
constcontent=awaitreadContent(prelude);
374+
expect(errors).toEqual(['This operation was aborted']);
375+
expect(content).toBe('');
456376
});
457377

458-
// @gate enableHalt
459378
it('should resolve an empty prelude if passing an already aborted signal',async()=>{
460379
consterrors=[];
461380
constcontroller=newAbortController();
@@ -593,16 +512,13 @@ describe('ReactDOMFizzStaticBrowser', () => {
593512
onError,
594513
}),
595514
);
596-
expect(prerendered.postponed).toBe(
597-
gate(flags=>flags.enableHalt) ? null : undefined,
598-
);
515+
expect(prerendered.postponed).toBe(null);
599516
expect(errors).toEqual(['bad onHeaders']);
600517

601518
awaitreadIntoContainer(prerendered.prelude);
602519
expect(getVisibleChildren(container)).toEqual(<div>hello</div>);
603520
});
604521

605-
// @gate enableHalt
606522
it('can resume render of a prerender',async()=>{
607523
consterrors=[];
608524

@@ -689,7 +605,6 @@ describe('ReactDOMFizzStaticBrowser', () => {
689605
expect(getVisibleChildren(container)).toEqual(<div>Hello</div>);
690606
});
691607

692-
// @gate enableHalt
693608
it('can prerender a preamble',async()=>{
694609
consterrors=[];
695610

@@ -850,7 +765,6 @@ describe('ReactDOMFizzStaticBrowser', () => {
850765
expect(errors).toEqual(['boom']);
851766
});
852767

853-
// @gate enableHalt
854768
it('will render fallback Document when erroring a boundary above the body',async()=>{
855769
letisPrerendering=true;
856770
constpromise=newPromise(()=>{});
@@ -927,7 +841,6 @@ describe('ReactDOMFizzStaticBrowser', () => {
927841
);
928842
});
929843

930-
// @gate enableHalt
931844
it('can omit a preamble with an empty shell if no preamble is ready when prerendering finishes',async()=>{
932845
consterrors=[];
933846

@@ -1027,7 +940,7 @@ describe('ReactDOMFizzStaticBrowser', () => {
1027940
);
1028941
});
1029942

1030-
// @gateenableHalt && enableSuspenseList
943+
// @gate enableSuspenseList
1031944
it('can resume a partially prerendered SuspenseList',async()=>{
1032945
consterrors=[];
1033946

@@ -1112,7 +1025,7 @@ describe('ReactDOMFizzStaticBrowser', () => {
11121025
);
11131026
});
11141027

1115-
// @gateenableHalt && enableOptimisticKey
1028+
// @gate enableOptimisticKey
11161029
it('can resume an optimistic keyed slot',async()=>{
11171030
consterrors=[];
11181031

‎packages/react-dom/src/__tests__/ReactDOMFizzStaticNode-test.js‎

Lines changed: 4 additions & 95 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,6 @@ describe('ReactDOMFizzStaticNode', () => {
5656
}
5757
}
5858

59-
// @gate enableHalt
6059
it('should call prerenderToNodeStream',async()=>{
6160
constresult=awaitReactDOMFizzStatic.prerenderToNodeStream(
6261
<div>hello world</div>,
@@ -65,14 +64,12 @@ describe('ReactDOMFizzStaticNode', () => {
6564
expect(prelude).toMatchInlineSnapshot(`"<div>hello world</div>"`);
6665
});
6766

68-
// @gate enableHalt
6967
it('should suppport web streams',async()=>{
7068
constresult=awaitReactDOMFizzStatic.prerender(<div>hello world</div>);
7169
constprelude=awaitreadContentWeb(result.prelude);
7270
expect(prelude).toMatchInlineSnapshot(`"<div>hello world</div>"`);
7371
});
7472

75-
// @gate enableHalt
7673
it('should emit DOCTYPE at the root of the document',async()=>{
7774
constresult=awaitReactDOMFizzStatic.prerenderToNodeStream(
7875
<html>
@@ -91,7 +88,6 @@ describe('ReactDOMFizzStaticNode', () => {
9188
}
9289
});
9390

94-
// @gate enableHalt
9591
it('should emit bootstrap script src at the end',async()=>{
9692
constresult=awaitReactDOMFizzStatic.prerenderToNodeStream(
9793
<div>hello world</div>,
@@ -107,7 +103,6 @@ describe('ReactDOMFizzStaticNode', () => {
107103
);
108104
});
109105

110-
// @gate enableHalt
111106
it('emits all HTML as one unit',async()=>{
112107
lethasLoaded=false;
113108
letresolve;
@@ -137,7 +132,6 @@ describe('ReactDOMFizzStaticNode', () => {
137132
expect(prelude).toMatchInlineSnapshot(`"<div><!--$-->Done<!--/$--></div>"`);
138133
});
139134

140-
// @gate enableHalt
141135
it('should reject the promise when an error is thrown at the root',async()=>{
142136
constreportedErrors=[];
143137
letcaughtError=null;
@@ -159,7 +153,6 @@ describe('ReactDOMFizzStaticNode', () => {
159153
expect(reportedErrors).toEqual([theError]);
160154
});
161155

162-
// @gate enableHalt
163156
it('should reject the promise when an error is thrown inside a fallback',async()=>{
164157
constreportedErrors=[];
165158
letcaughtError=null;
@@ -183,7 +176,6 @@ describe('ReactDOMFizzStaticNode', () => {
183176
expect(reportedErrors).toEqual([theError]);
184177
});
185178

186-
// @gate enableHalt
187179
it('should not error the stream when an error is thrown inside suspense boundary',async()=>{
188180
constreportedErrors=[];
189181
constresult=awaitReactDOMFizzStatic.prerenderToNodeStream(
@@ -204,7 +196,6 @@ describe('ReactDOMFizzStaticNode', () => {
204196
expect(reportedErrors).toEqual([theError]);
205197
});
206198

207-
// @gate enableHalt
208199
it('should be able to complete by aborting even if the promise never resolves',async()=>{
209200
consterrors=[];
210201
constcontroller=newAbortController();
@@ -234,39 +225,6 @@ describe('ReactDOMFizzStaticNode', () => {
234225
expect(errors).toEqual(['This operation was aborted']);
235226
});
236227

237-
// @gate enableHalt
238-
// @gate !enableHalt
239-
it('should reject if aborting before the shell is complete and enableHalt is disabled',async()=>{
240-
consterrors=[];
241-
constcontroller=newAbortController();
242-
constpromise=ReactDOMFizzStatic.prerenderToNodeStream(
243-
<div>
244-
<InfiniteSuspend/>
245-
</div>,
246-
{
247-
signal: controller.signal,
248-
onError(x){
249-
errors.push(x.message);
250-
},
251-
},
252-
);
253-
254-
awaitjest.runAllTimers();
255-
256-
consttheReason=newError('aborted for reasons');
257-
controller.abort(theReason);
258-
259-
letcaughtError=null;
260-
try{
261-
awaitpromise;
262-
}catch(error){
263-
caughtError=error;
264-
}
265-
expect(caughtError).toBe(theReason);
266-
expect(errors).toEqual(['aborted for reasons']);
267-
});
268-
269-
// @gate enableHalt
270228
it('should resolve an empty shell if aborting before the shell is complete',async()=>{
271229
consterrors=[];
272230
constcontroller=newAbortController();
@@ -300,7 +258,6 @@ describe('ReactDOMFizzStaticNode', () => {
300258
expect(content).toBe('');
301259
});
302260

303-
// @gate enableHalt
304261
it('should be able to abort before something suspends',async()=>{
305262
consterrors=[];
306263
constcontroller=newAbortController();
@@ -324,58 +281,12 @@ describe('ReactDOMFizzStaticNode', () => {
324281
},
325282
);
326283

327-
if(gate(flags=>flags.enableHalt)){
328-
const{prelude}=awaitstreamPromise;
329-
constcontent=awaitreadContent(prelude);
330-
expect(errors).toEqual(['This operation was aborted']);
331-
expect(content).toBe('');
332-
}else{
333-
letcaughtError=null;
334-
try{
335-
awaitstreamPromise;
336-
}catch(error){
337-
caughtError=error;
338-
}
339-
expect(caughtError.message).toBe('This operation was aborted');
340-
expect(errors).toEqual(['This operation was aborted']);
341-
}
342-
});
343-
344-
// @gate enableHalt
345-
// @gate !enableHalt
346-
it('should reject if passing an already aborted signal and enableHalt is disabled',async()=>{
347-
consterrors=[];
348-
constcontroller=newAbortController();
349-
consttheReason=newError('aborted for reasons');
350-
controller.abort(theReason);
351-
352-
constpromise=ReactDOMFizzStatic.prerenderToNodeStream(
353-
<div>
354-
<Suspensefallback={<div>Loading</div>}>
355-
<InfiniteSuspend/>
356-
</Suspense>
357-
</div>,
358-
{
359-
signal: controller.signal,
360-
onError(x){
361-
errors.push(x.message);
362-
},
363-
},
364-
);
365-
366-
// Technically we could still continue rendering the shell but currently the
367-
// semantics mean that we also abort any pending CPU work.
368-
letcaughtError=null;
369-
try{
370-
awaitpromise;
371-
}catch(error){
372-
caughtError=error;
373-
}
374-
expect(caughtError).toBe(theReason);
375-
expect(errors).toEqual(['aborted for reasons']);
284+
const{prelude}=awaitstreamPromise;
285+
constcontent=awaitreadContent(prelude);
286+
expect(errors).toEqual(['This operation was aborted']);
287+
expect(content).toBe('');
376288
});
377289

378-
// @gate enableHalt
379290
it('should resolve with an empty prelude if passing an already aborted signal',async()=>{
380291
consterrors=[];
381292
constcontroller=newAbortController();
@@ -412,7 +323,6 @@ describe('ReactDOMFizzStaticNode', () => {
412323
expect(content).toBe('');
413324
});
414325

415-
// @gate enableHalt
416326
it('supports custom abort reasons with a string',async()=>{
417327
constpromise=newPromise(r=>{});
418328
functionWait(){
@@ -454,7 +364,6 @@ describe('ReactDOMFizzStaticNode', () => {
454364
expect(errors).toEqual(['foobar','foobar']);
455365
});
456366

457-
// @gate enableHalt
458367
it('supports custom abort reasons with an Error',async()=>{
459368
constpromise=newPromise(r=>{});
460369
functionWait(){

0 commit comments

Comments
 (0)
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' [flags] Cleanup `enableHalt` (#35708) · react/react@9a5996a · GitHub
Skip to content

Commit 9a5996a

Browse files
authored
[flags] Cleanup enableHalt (#35708)
1 parent 1c66ac7 commit 9a5996a

20 files changed

Lines changed: 61 additions & 311 deletions

‎packages/react-dom/src/__tests__/ReactDOMFizzServer-test.js‎

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6710,7 +6710,6 @@ describe('ReactDOMFizzServer', () => {
67106710
},
67116711
);
67126712

6713-
// @gate enableHalt
67146713
it('can resume a prerender that was aborted',async()=>{
67156714
constpromise=newPromise(r=>{});
67166715

‎packages/react-dom/src/__tests__/ReactDOMFizzStatic-test.js‎

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -230,9 +230,7 @@ describe('ReactDOMFizzStatic', () => {
230230

231231
constresult=awaitpromise;
232232

233-
expect(result.postponed).toBe(
234-
gate(flags=>flags.enableHalt) ? null : undefined,
235-
);
233+
expect(result.postponed).toBe(null);
236234

237235
awaitact(async()=>{
238236
result.prelude.pipe(writable);
@@ -362,7 +360,6 @@ describe('ReactDOMFizzStatic', () => {
362360
);
363361
});
364362

365-
// @gate enableHalt
366363
it('will halt a prerender when aborting with an error during a render',async()=>{
367364
constcontroller=newAbortController();
368365
functionApp(){
@@ -384,7 +381,6 @@ describe('ReactDOMFizzStatic', () => {
384381
expect(getVisibleChildren(container)).toEqual(undefined);
385382
});
386383

387-
// @gate enableHalt
388384
it('will halt a prerender when aborting with an error in a microtask',async()=>{
389385
consterrors=[];
390386

‎packages/react-dom/src/__tests__/ReactDOMFizzStaticBrowser-test.js‎

Lines changed: 7 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -309,40 +309,6 @@ describe('ReactDOMFizzStaticBrowser', () => {
309309
expect(errors).toEqual(['This operation was aborted']);
310310
});
311311

312-
// @gate !enableHalt
313-
it('should reject if aborting before the shell is complete and enableHalt is disabled',async()=>{
314-
consterrors=[];
315-
constcontroller=newAbortController();
316-
constpromise=serverAct(()=>
317-
ReactDOMFizzStatic.prerender(
318-
<div>
319-
<InfiniteSuspend/>
320-
</div>,
321-
{
322-
signal: controller.signal,
323-
onError(x){
324-
errors.push(x.message);
325-
},
326-
},
327-
),
328-
);
329-
330-
awaitjest.runAllTimers();
331-
332-
consttheReason=newError('aborted for reasons');
333-
controller.abort(theReason);
334-
335-
letcaughtError=null;
336-
try{
337-
awaitpromise;
338-
}catch(error){
339-
caughtError=error;
340-
}
341-
expect(caughtError).toBe(theReason);
342-
expect(errors).toEqual(['aborted for reasons']);
343-
});
344-
345-
// @gate enableHalt
346312
it('should resolve an empty prelude if aborting before the shell is complete',async()=>{
347313
consterrors=[];
348314
constcontroller=newAbortController();
@@ -403,59 +369,12 @@ describe('ReactDOMFizzStaticBrowser', () => {
403369
),
404370
);
405371

406-
if(gate(flags=>flags.enableHalt)){
407-
const{prelude}=awaitstreamPromise;
408-
constcontent=awaitreadContent(prelude);
409-
expect(errors).toEqual(['This operation was aborted']);
410-
expect(content).toBe('');
411-
}else{
412-
letcaughtError=null;
413-
try{
414-
awaitstreamPromise;
415-
}catch(error){
416-
caughtError=error;
417-
}
418-
expect(caughtError.message).toBe('This operation was aborted');
419-
expect(errors).toEqual(['This operation was aborted']);
420-
}
421-
});
422-
423-
// @gate !enableHalt
424-
it('should reject if passing an already aborted signal and enableHalt is disabled',async()=>{
425-
consterrors=[];
426-
constcontroller=newAbortController();
427-
consttheReason=newError('aborted for reasons');
428-
controller.abort(theReason);
429-
430-
constpromise=serverAct(()=>
431-
ReactDOMFizzStatic.prerender(
432-
<div>
433-
<Suspensefallback={<div>Loading</div>}>
434-
<InfiniteSuspend/>
435-
</Suspense>
436-
</div>,
437-
{
438-
signal: controller.signal,
439-
onError(x){
440-
errors.push(x.message);
441-
},
442-
},
443-
),
444-
);
445-
446-
// Technically we could still continue rendering the shell but currently the
447-
// semantics mean that we also abort any pending CPU work.
448-
letcaughtError=null;
449-
try{
450-
awaitpromise;
451-
}catch(error){
452-
caughtError=error;
453-
}
454-
expect(caughtError).toBe(theReason);
455-
expect(errors).toEqual(['aborted for reasons']);
372+
const{prelude}=awaitstreamPromise;
373+
constcontent=awaitreadContent(prelude);
374+
expect(errors).toEqual(['This operation was aborted']);
375+
expect(content).toBe('');
456376
});
457377

458-
// @gate enableHalt
459378
it('should resolve an empty prelude if passing an already aborted signal',async()=>{
460379
consterrors=[];
461380
constcontroller=newAbortController();
@@ -593,16 +512,13 @@ describe('ReactDOMFizzStaticBrowser', () => {
593512
onError,
594513
}),
595514
);
596-
expect(prerendered.postponed).toBe(
597-
gate(flags=>flags.enableHalt) ? null : undefined,
598-
);
515+
expect(prerendered.postponed).toBe(null);
599516
expect(errors).toEqual(['bad onHeaders']);
600517

601518
awaitreadIntoContainer(prerendered.prelude);
602519
expect(getVisibleChildren(container)).toEqual(<div>hello</div>);
603520
});
604521

605-
// @gate enableHalt
606522
it('can resume render of a prerender',async()=>{
607523
consterrors=[];
608524

@@ -689,7 +605,6 @@ describe('ReactDOMFizzStaticBrowser', () => {
689605
expect(getVisibleChildren(container)).toEqual(<div>Hello</div>);
690606
});
691607

692-
// @gate enableHalt
693608
it('can prerender a preamble',async()=>{
694609
consterrors=[];
695610

@@ -850,7 +765,6 @@ describe('ReactDOMFizzStaticBrowser', () => {
850765
expect(errors).toEqual(['boom']);
851766
});
852767

853-
// @gate enableHalt
854768
it('will render fallback Document when erroring a boundary above the body',async()=>{
855769
letisPrerendering=true;
856770
constpromise=newPromise(()=>{});
@@ -927,7 +841,6 @@ describe('ReactDOMFizzStaticBrowser', () => {
927841
);
928842
});
929843

930-
// @gate enableHalt
931844
it('can omit a preamble with an empty shell if no preamble is ready when prerendering finishes',async()=>{
932845
consterrors=[];
933846

@@ -1027,7 +940,7 @@ describe('ReactDOMFizzStaticBrowser', () => {
1027940
);
1028941
});
1029942

1030-
// @gateenableHalt && enableSuspenseList
943+
// @gate enableSuspenseList
1031944
it('can resume a partially prerendered SuspenseList',async()=>{
1032945
consterrors=[];
1033946

@@ -1112,7 +1025,7 @@ describe('ReactDOMFizzStaticBrowser', () => {
11121025
);
11131026
});
11141027

1115-
// @gateenableHalt && enableOptimisticKey
1028+
// @gate enableOptimisticKey
11161029
it('can resume an optimistic keyed slot',async()=>{
11171030
consterrors=[];
11181031

‎packages/react-dom/src/__tests__/ReactDOMFizzStaticNode-test.js‎

Lines changed: 4 additions & 95 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,6 @@ describe('ReactDOMFizzStaticNode', () => {
5656
}
5757
}
5858

59-
// @gate enableHalt
6059
it('should call prerenderToNodeStream',async()=>{
6160
constresult=awaitReactDOMFizzStatic.prerenderToNodeStream(
6261
<div>hello world</div>,
@@ -65,14 +64,12 @@ describe('ReactDOMFizzStaticNode', () => {
6564
expect(prelude).toMatchInlineSnapshot(`"<div>hello world</div>"`);
6665
});
6766

68-
// @gate enableHalt
6967
it('should suppport web streams',async()=>{
7068
constresult=awaitReactDOMFizzStatic.prerender(<div>hello world</div>);
7169
constprelude=awaitreadContentWeb(result.prelude);
7270
expect(prelude).toMatchInlineSnapshot(`"<div>hello world</div>"`);
7371
});
7472

75-
// @gate enableHalt
7673
it('should emit DOCTYPE at the root of the document',async()=>{
7774
constresult=awaitReactDOMFizzStatic.prerenderToNodeStream(
7875
<html>
@@ -91,7 +88,6 @@ describe('ReactDOMFizzStaticNode', () => {
9188
}
9289
});
9390

94-
// @gate enableHalt
9591
it('should emit bootstrap script src at the end',async()=>{
9692
constresult=awaitReactDOMFizzStatic.prerenderToNodeStream(
9793
<div>hello world</div>,
@@ -107,7 +103,6 @@ describe('ReactDOMFizzStaticNode', () => {
107103
);
108104
});
109105

110-
// @gate enableHalt
111106
it('emits all HTML as one unit',async()=>{
112107
lethasLoaded=false;
113108
letresolve;
@@ -137,7 +132,6 @@ describe('ReactDOMFizzStaticNode', () => {
137132
expect(prelude).toMatchInlineSnapshot(`"<div><!--$-->Done<!--/$--></div>"`);
138133
});
139134

140-
// @gate enableHalt
141135
it('should reject the promise when an error is thrown at the root',async()=>{
142136
constreportedErrors=[];
143137
letcaughtError=null;
@@ -159,7 +153,6 @@ describe('ReactDOMFizzStaticNode', () => {
159153
expect(reportedErrors).toEqual([theError]);
160154
});
161155

162-
// @gate enableHalt
163156
it('should reject the promise when an error is thrown inside a fallback',async()=>{
164157
constreportedErrors=[];
165158
letcaughtError=null;
@@ -183,7 +176,6 @@ describe('ReactDOMFizzStaticNode', () => {
183176
expect(reportedErrors).toEqual([theError]);
184177
});
185178

186-
// @gate enableHalt
187179
it('should not error the stream when an error is thrown inside suspense boundary',async()=>{
188180
constreportedErrors=[];
189181
constresult=awaitReactDOMFizzStatic.prerenderToNodeStream(
@@ -204,7 +196,6 @@ describe('ReactDOMFizzStaticNode', () => {
204196
expect(reportedErrors).toEqual([theError]);
205197
});
206198

207-
// @gate enableHalt
208199
it('should be able to complete by aborting even if the promise never resolves',async()=>{
209200
consterrors=[];
210201
constcontroller=newAbortController();
@@ -234,39 +225,6 @@ describe('ReactDOMFizzStaticNode', () => {
234225
expect(errors).toEqual(['This operation was aborted']);
235226
});
236227

237-
// @gate enableHalt
238-
// @gate !enableHalt
239-
it('should reject if aborting before the shell is complete and enableHalt is disabled',async()=>{
240-
consterrors=[];
241-
constcontroller=newAbortController();
242-
constpromise=ReactDOMFizzStatic.prerenderToNodeStream(
243-
<div>
244-
<InfiniteSuspend/>
245-
</div>,
246-
{
247-
signal: controller.signal,
248-
onError(x){
249-
errors.push(x.message);
250-
},
251-
},
252-
);
253-
254-
awaitjest.runAllTimers();
255-
256-
consttheReason=newError('aborted for reasons');
257-
controller.abort(theReason);
258-
259-
letcaughtError=null;
260-
try{
261-
awaitpromise;
262-
}catch(error){
263-
caughtError=error;
264-
}
265-
expect(caughtError).toBe(theReason);
266-
expect(errors).toEqual(['aborted for reasons']);
267-
});
268-
269-
// @gate enableHalt
270228
it('should resolve an empty shell if aborting before the shell is complete',async()=>{
271229
consterrors=[];
272230
constcontroller=newAbortController();
@@ -300,7 +258,6 @@ describe('ReactDOMFizzStaticNode', () => {
300258
expect(content).toBe('');
301259
});
302260

303-
// @gate enableHalt
304261
it('should be able to abort before something suspends',async()=>{
305262
consterrors=[];
306263
constcontroller=newAbortController();
@@ -324,58 +281,12 @@ describe('ReactDOMFizzStaticNode', () => {
324281
},
325282
);
326283

327-
if(gate(flags=>flags.enableHalt)){
328-
const{prelude}=awaitstreamPromise;
329-
constcontent=awaitreadContent(prelude);
330-
expect(errors).toEqual(['This operation was aborted']);
331-
expect(content).toBe('');
332-
}else{
333-
letcaughtError=null;
334-
try{
335-
awaitstreamPromise;
336-
}catch(error){
337-
caughtError=error;
338-
}
339-
expect(caughtError.message).toBe('This operation was aborted');
340-
expect(errors).toEqual(['This operation was aborted']);
341-
}
342-
});
343-
344-
// @gate enableHalt
345-
// @gate !enableHalt
346-
it('should reject if passing an already aborted signal and enableHalt is disabled',async()=>{
347-
consterrors=[];
348-
constcontroller=newAbortController();
349-
consttheReason=newError('aborted for reasons');
350-
controller.abort(theReason);
351-
352-
constpromise=ReactDOMFizzStatic.prerenderToNodeStream(
353-
<div>
354-
<Suspensefallback={<div>Loading</div>}>
355-
<InfiniteSuspend/>
356-
</Suspense>
357-
</div>,
358-
{
359-
signal: controller.signal,
360-
onError(x){
361-
errors.push(x.message);
362-
},
363-
},
364-
);
365-
366-
// Technically we could still continue rendering the shell but currently the
367-
// semantics mean that we also abort any pending CPU work.
368-
letcaughtError=null;
369-
try{
370-
awaitpromise;
371-
}catch(error){
372-
caughtError=error;
373-
}
374-
expect(caughtError).toBe(theReason);
375-
expect(errors).toEqual(['aborted for reasons']);
284+
const{prelude}=awaitstreamPromise;
285+
constcontent=awaitreadContent(prelude);
286+
expect(errors).toEqual(['This operation was aborted']);
287+
expect(content).toBe('');
376288
});
377289

378-
// @gate enableHalt
379290
it('should resolve with an empty prelude if passing an already aborted signal',async()=>{
380291
consterrors=[];
381292
constcontroller=newAbortController();
@@ -412,7 +323,6 @@ describe('ReactDOMFizzStaticNode', () => {
412323
expect(content).toBe('');
413324
});
414325

415-
// @gate enableHalt
416326
it('supports custom abort reasons with a string',async()=>{
417327
constpromise=newPromise(r=>{});
418328
functionWait(){
@@ -454,7 +364,6 @@ describe('ReactDOMFizzStaticNode', () => {
454364
expect(errors).toEqual(['foobar','foobar']);
455365
});
456366

457-
// @gate enableHalt
458367
it('supports custom abort reasons with an Error',async()=>{
459368
constpromise=newPromise(r=>{});
460369
functionWait(){

0 commit comments

Comments
 (0)
, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); [flags] Cleanup `enableHalt` (#35708) · react/react@9a5996a · GitHub
Skip to content

Commit 9a5996a

Browse files
authored
[flags] Cleanup enableHalt (#35708)
1 parent 1c66ac7 commit 9a5996a

20 files changed

Lines changed: 61 additions & 311 deletions

‎packages/react-dom/src/__tests__/ReactDOMFizzServer-test.js‎

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6710,7 +6710,6 @@ describe('ReactDOMFizzServer', () => {
67106710
},
67116711
);
67126712

6713-
// @gate enableHalt
67146713
it('can resume a prerender that was aborted',async()=>{
67156714
constpromise=newPromise(r=>{});
67166715

‎packages/react-dom/src/__tests__/ReactDOMFizzStatic-test.js‎

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -230,9 +230,7 @@ describe('ReactDOMFizzStatic', () => {
230230

231231
constresult=awaitpromise;
232232

233-
expect(result.postponed).toBe(
234-
gate(flags=>flags.enableHalt) ? null : undefined,
235-
);
233+
expect(result.postponed).toBe(null);
236234

237235
awaitact(async()=>{
238236
result.prelude.pipe(writable);
@@ -362,7 +360,6 @@ describe('ReactDOMFizzStatic', () => {
362360
);
363361
});
364362

365-
// @gate enableHalt
366363
it('will halt a prerender when aborting with an error during a render',async()=>{
367364
constcontroller=newAbortController();
368365
functionApp(){
@@ -384,7 +381,6 @@ describe('ReactDOMFizzStatic', () => {
384381
expect(getVisibleChildren(container)).toEqual(undefined);
385382
});
386383

387-
// @gate enableHalt
388384
it('will halt a prerender when aborting with an error in a microtask',async()=>{
389385
consterrors=[];
390386

‎packages/react-dom/src/__tests__/ReactDOMFizzStaticBrowser-test.js‎

Lines changed: 7 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -309,40 +309,6 @@ describe('ReactDOMFizzStaticBrowser', () => {
309309
expect(errors).toEqual(['This operation was aborted']);
310310
});
311311

312-
// @gate !enableHalt
313-
it('should reject if aborting before the shell is complete and enableHalt is disabled',async()=>{
314-
consterrors=[];
315-
constcontroller=newAbortController();
316-
constpromise=serverAct(()=>
317-
ReactDOMFizzStatic.prerender(
318-
<div>
319-
<InfiniteSuspend/>
320-
</div>,
321-
{
322-
signal: controller.signal,
323-
onError(x){
324-
errors.push(x.message);
325-
},
326-
},
327-
),
328-
);
329-
330-
awaitjest.runAllTimers();
331-
332-
consttheReason=newError('aborted for reasons');
333-
controller.abort(theReason);
334-
335-
letcaughtError=null;
336-
try{
337-
awaitpromise;
338-
}catch(error){
339-
caughtError=error;
340-
}
341-
expect(caughtError).toBe(theReason);
342-
expect(errors).toEqual(['aborted for reasons']);
343-
});
344-
345-
// @gate enableHalt
346312
it('should resolve an empty prelude if aborting before the shell is complete',async()=>{
347313
consterrors=[];
348314
constcontroller=newAbortController();
@@ -403,59 +369,12 @@ describe('ReactDOMFizzStaticBrowser', () => {
403369
),
404370
);
405371

406-
if(gate(flags=>flags.enableHalt)){
407-
const{prelude}=awaitstreamPromise;
408-
constcontent=awaitreadContent(prelude);
409-
expect(errors).toEqual(['This operation was aborted']);
410-
expect(content).toBe('');
411-
}else{
412-
letcaughtError=null;
413-
try{
414-
awaitstreamPromise;
415-
}catch(error){
416-
caughtError=error;
417-
}
418-
expect(caughtError.message).toBe('This operation was aborted');
419-
expect(errors).toEqual(['This operation was aborted']);
420-
}
421-
});
422-
423-
// @gate !enableHalt
424-
it('should reject if passing an already aborted signal and enableHalt is disabled',async()=>{
425-
consterrors=[];
426-
constcontroller=newAbortController();
427-
consttheReason=newError('aborted for reasons');
428-
controller.abort(theReason);
429-
430-
constpromise=serverAct(()=>
431-
ReactDOMFizzStatic.prerender(
432-
<div>
433-
<Suspensefallback={<div>Loading</div>}>
434-
<InfiniteSuspend/>
435-
</Suspense>
436-
</div>,
437-
{
438-
signal: controller.signal,
439-
onError(x){
440-
errors.push(x.message);
441-
},
442-
},
443-
),
444-
);
445-
446-
// Technically we could still continue rendering the shell but currently the
447-
// semantics mean that we also abort any pending CPU work.
448-
letcaughtError=null;
449-
try{
450-
awaitpromise;
451-
}catch(error){
452-
caughtError=error;
453-
}
454-
expect(caughtError).toBe(theReason);
455-
expect(errors).toEqual(['aborted for reasons']);
372+
const{prelude}=awaitstreamPromise;
373+
constcontent=awaitreadContent(prelude);
374+
expect(errors).toEqual(['This operation was aborted']);
375+
expect(content).toBe('');
456376
});
457377

458-
// @gate enableHalt
459378
it('should resolve an empty prelude if passing an already aborted signal',async()=>{
460379
consterrors=[];
461380
constcontroller=newAbortController();
@@ -593,16 +512,13 @@ describe('ReactDOMFizzStaticBrowser', () => {
593512
onError,
594513
}),
595514
);
596-
expect(prerendered.postponed).toBe(
597-
gate(flags=>flags.enableHalt) ? null : undefined,
598-
);
515+
expect(prerendered.postponed).toBe(null);
599516
expect(errors).toEqual(['bad onHeaders']);
600517

601518
awaitreadIntoContainer(prerendered.prelude);
602519
expect(getVisibleChildren(container)).toEqual(<div>hello</div>);
603520
});
604521

605-
// @gate enableHalt
606522
it('can resume render of a prerender',async()=>{
607523
consterrors=[];
608524

@@ -689,7 +605,6 @@ describe('ReactDOMFizzStaticBrowser', () => {
689605
expect(getVisibleChildren(container)).toEqual(<div>Hello</div>);
690606
});
691607

692-
// @gate enableHalt
693608
it('can prerender a preamble',async()=>{
694609
consterrors=[];
695610

@@ -850,7 +765,6 @@ describe('ReactDOMFizzStaticBrowser', () => {
850765
expect(errors).toEqual(['boom']);
851766
});
852767

853-
// @gate enableHalt
854768
it('will render fallback Document when erroring a boundary above the body',async()=>{
855769
letisPrerendering=true;
856770
constpromise=newPromise(()=>{});
@@ -927,7 +841,6 @@ describe('ReactDOMFizzStaticBrowser', () => {
927841
);
928842
});
929843

930-
// @gate enableHalt
931844
it('can omit a preamble with an empty shell if no preamble is ready when prerendering finishes',async()=>{
932845
consterrors=[];
933846

@@ -1027,7 +940,7 @@ describe('ReactDOMFizzStaticBrowser', () => {
1027940
);
1028941
});
1029942

1030-
// @gateenableHalt && enableSuspenseList
943+
// @gate enableSuspenseList
1031944
it('can resume a partially prerendered SuspenseList',async()=>{
1032945
consterrors=[];
1033946

@@ -1112,7 +1025,7 @@ describe('ReactDOMFizzStaticBrowser', () => {
11121025
);
11131026
});
11141027

1115-
// @gateenableHalt && enableOptimisticKey
1028+
// @gate enableOptimisticKey
11161029
it('can resume an optimistic keyed slot',async()=>{
11171030
consterrors=[];
11181031

‎packages/react-dom/src/__tests__/ReactDOMFizzStaticNode-test.js‎

Lines changed: 4 additions & 95 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,6 @@ describe('ReactDOMFizzStaticNode', () => {
5656
}
5757
}
5858

59-
// @gate enableHalt
6059
it('should call prerenderToNodeStream',async()=>{
6160
constresult=awaitReactDOMFizzStatic.prerenderToNodeStream(
6261
<div>hello world</div>,
@@ -65,14 +64,12 @@ describe('ReactDOMFizzStaticNode', () => {
6564
expect(prelude).toMatchInlineSnapshot(`"<div>hello world</div>"`);
6665
});
6766

68-
// @gate enableHalt
6967
it('should suppport web streams',async()=>{
7068
constresult=awaitReactDOMFizzStatic.prerender(<div>hello world</div>);
7169
constprelude=awaitreadContentWeb(result.prelude);
7270
expect(prelude).toMatchInlineSnapshot(`"<div>hello world</div>"`);
7371
});
7472

75-
// @gate enableHalt
7673
it('should emit DOCTYPE at the root of the document',async()=>{
7774
constresult=awaitReactDOMFizzStatic.prerenderToNodeStream(
7875
<html>
@@ -91,7 +88,6 @@ describe('ReactDOMFizzStaticNode', () => {
9188
}
9289
});
9390

94-
// @gate enableHalt
9591
it('should emit bootstrap script src at the end',async()=>{
9692
constresult=awaitReactDOMFizzStatic.prerenderToNodeStream(
9793
<div>hello world</div>,
@@ -107,7 +103,6 @@ describe('ReactDOMFizzStaticNode', () => {
107103
);
108104
});
109105

110-
// @gate enableHalt
111106
it('emits all HTML as one unit',async()=>{
112107
lethasLoaded=false;
113108
letresolve;
@@ -137,7 +132,6 @@ describe('ReactDOMFizzStaticNode', () => {
137132
expect(prelude).toMatchInlineSnapshot(`"<div><!--$-->Done<!--/$--></div>"`);
138133
});
139134

140-
// @gate enableHalt
141135
it('should reject the promise when an error is thrown at the root',async()=>{
142136
constreportedErrors=[];
143137
letcaughtError=null;
@@ -159,7 +153,6 @@ describe('ReactDOMFizzStaticNode', () => {
159153
expect(reportedErrors).toEqual([theError]);
160154
});
161155

162-
// @gate enableHalt
163156
it('should reject the promise when an error is thrown inside a fallback',async()=>{
164157
constreportedErrors=[];
165158
letcaughtError=null;
@@ -183,7 +176,6 @@ describe('ReactDOMFizzStaticNode', () => {
183176
expect(reportedErrors).toEqual([theError]);
184177
});
185178

186-
// @gate enableHalt
187179
it('should not error the stream when an error is thrown inside suspense boundary',async()=>{
188180
constreportedErrors=[];
189181
constresult=awaitReactDOMFizzStatic.prerenderToNodeStream(
@@ -204,7 +196,6 @@ describe('ReactDOMFizzStaticNode', () => {
204196
expect(reportedErrors).toEqual([theError]);
205197
});
206198

207-
// @gate enableHalt
208199
it('should be able to complete by aborting even if the promise never resolves',async()=>{
209200
consterrors=[];
210201
constcontroller=newAbortController();
@@ -234,39 +225,6 @@ describe('ReactDOMFizzStaticNode', () => {
234225
expect(errors).toEqual(['This operation was aborted']);
235226
});
236227

237-
// @gate enableHalt
238-
// @gate !enableHalt
239-
it('should reject if aborting before the shell is complete and enableHalt is disabled',async()=>{
240-
consterrors=[];
241-
constcontroller=newAbortController();
242-
constpromise=ReactDOMFizzStatic.prerenderToNodeStream(
243-
<div>
244-
<InfiniteSuspend/>
245-
</div>,
246-
{
247-
signal: controller.signal,
248-
onError(x){
249-
errors.push(x.message);
250-
},
251-
},
252-
);
253-
254-
awaitjest.runAllTimers();
255-
256-
consttheReason=newError('aborted for reasons');
257-
controller.abort(theReason);
258-
259-
letcaughtError=null;
260-
try{
261-
awaitpromise;
262-
}catch(error){
263-
caughtError=error;
264-
}
265-
expect(caughtError).toBe(theReason);
266-
expect(errors).toEqual(['aborted for reasons']);
267-
});
268-
269-
// @gate enableHalt
270228
it('should resolve an empty shell if aborting before the shell is complete',async()=>{
271229
consterrors=[];
272230
constcontroller=newAbortController();
@@ -300,7 +258,6 @@ describe('ReactDOMFizzStaticNode', () => {
300258
expect(content).toBe('');
301259
});
302260

303-
// @gate enableHalt
304261
it('should be able to abort before something suspends',async()=>{
305262
consterrors=[];
306263
constcontroller=newAbortController();
@@ -324,58 +281,12 @@ describe('ReactDOMFizzStaticNode', () => {
324281
},
325282
);
326283

327-
if(gate(flags=>flags.enableHalt)){
328-
const{prelude}=awaitstreamPromise;
329-
constcontent=awaitreadContent(prelude);
330-
expect(errors).toEqual(['This operation was aborted']);
331-
expect(content).toBe('');
332-
}else{
333-
letcaughtError=null;
334-
try{
335-
awaitstreamPromise;
336-
}catch(error){
337-
caughtError=error;
338-
}
339-
expect(caughtError.message).toBe('This operation was aborted');
340-
expect(errors).toEqual(['This operation was aborted']);
341-
}
342-
});
343-
344-
// @gate enableHalt
345-
// @gate !enableHalt
346-
it('should reject if passing an already aborted signal and enableHalt is disabled',async()=>{
347-
consterrors=[];
348-
constcontroller=newAbortController();
349-
consttheReason=newError('aborted for reasons');
350-
controller.abort(theReason);
351-
352-
constpromise=ReactDOMFizzStatic.prerenderToNodeStream(
353-
<div>
354-
<Suspensefallback={<div>Loading</div>}>
355-
<InfiniteSuspend/>
356-
</Suspense>
357-
</div>,
358-
{
359-
signal: controller.signal,
360-
onError(x){
361-
errors.push(x.message);
362-
},
363-
},
364-
);
365-
366-
// Technically we could still continue rendering the shell but currently the
367-
// semantics mean that we also abort any pending CPU work.
368-
letcaughtError=null;
369-
try{
370-
awaitpromise;
371-
}catch(error){
372-
caughtError=error;
373-
}
374-
expect(caughtError).toBe(theReason);
375-
expect(errors).toEqual(['aborted for reasons']);
284+
const{prelude}=awaitstreamPromise;
285+
constcontent=awaitreadContent(prelude);
286+
expect(errors).toEqual(['This operation was aborted']);
287+
expect(content).toBe('');
376288
});
377289

378-
// @gate enableHalt
379290
it('should resolve with an empty prelude if passing an already aborted signal',async()=>{
380291
consterrors=[];
381292
constcontroller=newAbortController();
@@ -412,7 +323,6 @@ describe('ReactDOMFizzStaticNode', () => {
412323
expect(content).toBe('');
413324
});
414325

415-
// @gate enableHalt
416326
it('supports custom abort reasons with a string',async()=>{
417327
constpromise=newPromise(r=>{});
418328
functionWait(){
@@ -454,7 +364,6 @@ describe('ReactDOMFizzStaticNode', () => {
454364
expect(errors).toEqual(['foobar','foobar']);
455365
});
456366

457-
// @gate enableHalt
458367
it('supports custom abort reasons with an Error',async()=>{
459368
constpromise=newPromise(r=>{});
460369
functionWait(){

0 commit comments

Comments
 (0)