Skip to content

Update gate pragma to detect global error events#28591

Merged
acdlite merged 1 commit into
react:mainfrom
acdlite:update-gate-pragma-error-events
Mar 20, 2024
Merged

Update gate pragma to detect global error events#28591
acdlite merged 1 commit into
react:mainfrom
acdlite:update-gate-pragma-error-events

Conversation

@acdlite

@acdlite acdlite commented Mar 19, 2024

Copy link
Copy Markdown
Collaborator

If a global error event is dispatched during a test, Jest reports that test as a failure.

Our @gate pragma feature should account for this — if the gate condition is false, and the global error event is dispatched, then the test should be reported as a success.

The solution is to install an error event handler right before invoking the test function. Because we install our own handler, Jest will not report the test as a failure if a global error event is dispatched; it's conceptually as if we wrapped the whole test event in a try-catch.

If a global error event is dispatched during a test, Jest reports that
test as a failure.

Our `@gate` pragma feature should account for this — if the gate
condition is false, and the global error event is dispatched, then the
test should be reported as a success.

The solution is to install an error event handler right before invoking
the test function. Because we install our own handler, Jest will not
report the test as a failure if a global error event is dispatched;
it's conceptually as if we wrapped the whole test event in a try-catch.
@acdlite acdlite requested a review from sebmarkbage March 19, 2024 23:45
@facebook-github-bot facebook-github-bot added CLA Signed React Core Team Opened by a member of the React Core Team labels Mar 19, 2024
@react-sizebot

Copy link
Copy Markdown

Comparing: 82c6595...ad6b1c1

Critical size changes

Includes critical production bundles, as well as any change greater than 2%:

Name +/- Base Current +/- gzip Base gzip Current gzip
oss-stable/react-dom/cjs/react-dom.production.min.js = 176.83 kB 176.83 kB = 54.91 kB 54.90 kB
oss-experimental/react-dom/cjs/react-dom.production.min.js = 173.26 kB 173.26 kB = 54.04 kB 54.04 kB
facebook-www/ReactDOM-prod.classic.js = 594.27 kB 594.27 kB = 104.44 kB 104.44 kB
facebook-www/ReactDOM-prod.modern.js = 577.53 kB 577.53 kB = 101.47 kB 101.47 kB
test_utils/ReactAllWarnings.js Deleted 66.48 kB 0.00 kB Deleted 16.26 kB 0.00 kB

Significant size changes

Includes any change greater than 0.2%:

Expand to show
Name +/- Base Current +/- gzip Base gzip Current gzip
test_utils/ReactAllWarnings.js Deleted 66.48 kB 0.00 kB Deleted 16.26 kB 0.00 kB

Generated by 🚫 dangerJS against ad6b1c1

}

const expectTestToFail = async (callback, error) => {
const expectTestToFail = async (callback, errorToThrowIfTestSucceeds) => {

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍🏻

@acdlite acdlite merged commit 29a6ca3 into react:main Mar 20, 2024
gnoff added a commit to gnoff/next.js that referenced this pull request Mar 25, 2024
- react/react#28596
- react/react#28625
- react/react#28616
- react/react#28491
- react/react#28583
- react/react#28427
- react/react#28613
- react/react#28599
- react/react#28611
- react/react#28610
- react/react#28606
- react/react#28598
- react/react#28549
- react/react#28557
- react/react#28467
- react/react#28591
- react/react#28459
- react/react#28590
- react/react#28564
- react/react#28582
- react/react#28579
- react/react#28578
- react/react#28521
- react/react#28550
- react/react#28576
- react/react#28577
- react/react#28571
- react/react#28572
- react/react#28560
- react/react#28569
- react/react#28573
- react/react#28546
- react/react#28568
- react/react#28562
- react/react#28566
- react/react#28565
- react/react#28559
- react/react#28508
- react/react#20432
- react/react#28555
- react/react#24730
- react/react#28472
- react/react#27991
- react/react#28514
- react/react#28548
- react/react#28526
- react/react#28515
- react/react#28533
- react/react#28532
- react/react#28531
- react/react#28407
- react/react#28522
- react/react#28538
- react/react#28509
- react/react#28534
- react/react#28527
- react/react#28528
- react/react#28519
- react/react#28411
- react/react#28520
- react/react#28518
- react/react#28493
- react/react#28504
- react/react#28499
- react/react#28501
- react/react#28496
- react/react#28471
- react/react#28351
- react/react#28486
- react/react#28490
- react/react#28488
- react/react#28468
- react/react#28321
- react/react#28477
- react/react#28479
- react/react#28480
- react/react#28478
- react/react#28464
- react/react#28475
- react/react#28456
- react/react#28319
- react/react#28345
- react/react#28337
- react/react#28335
- react/react#28466
- react/react#28462
- react/react#28322
- react/react#28444
- react/react#28448
- react/react#28449
- react/react#28446
- react/react#28447
- react/react#24580
EdisonVan pushed a commit to EdisonVan/react that referenced this pull request Apr 15, 2024
If a global error event is dispatched during a test, Jest reports that
test as a failure.

Our `@gate` pragma feature should account for this — if the gate
condition is false, and the global error event is dispatched, then the
test should be reported as a success.

The solution is to install an error event handler right before invoking
the test function. Because we install our own handler, Jest will not
report the test as a failure if a global error event is dispatched; it's
conceptually as if we wrapped the whole test event in a try-catch.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA Signed React Core Team Opened by a member of the React Core Team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants