Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 8e536f8

Browse files
authored
feat: Enable "missing act" warnings in React 18 by default (#994)
1 parent d8c6b4d commit 8e536f8

File tree

3 files changed

+27
-15
lines changed

3 files changed

+27
-15
lines changed

‎src/act-compat.js‎

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ function getGlobalThis() {
3232
throw new Error('unable to locate global object')
3333
}
3434

35-
function setReactActEnvironment(isReactActEnvironment) {
35+
function setIsReactActEnvironment(isReactActEnvironment) {
3636
getGlobalThis().IS_REACT_ACT_ENVIRONMENT = isReactActEnvironment
3737
}
3838

@@ -43,7 +43,7 @@ function getIsReactActEnvironment() {
4343
function withGlobalActEnvironment(actImplementation) {
4444
return callback => {
4545
const previousActEnvironment = getIsReactActEnvironment()
46-
setReactActEnvironment(true)
46+
setIsReactActEnvironment(true)
4747
try {
4848
// The return value of `act` is always a thenable.
4949
let callbackNeedsToBeAwaited = false
@@ -64,24 +64,24 @@ function withGlobalActEnvironment(actImplementation) {
6464
then: (resolve, reject) => {
6565
thenable.then(
6666
returnValue => {
67-
setReactActEnvironment(previousActEnvironment)
67+
setIsReactActEnvironment(previousActEnvironment)
6868
resolve(returnValue)
6969
},
7070
error => {
71-
setReactActEnvironment(previousActEnvironment)
71+
setIsReactActEnvironment(previousActEnvironment)
7272
reject(error)
7373
},
7474
)
7575
},
7676
}
7777
} else {
78-
setReactActEnvironment(previousActEnvironment)
78+
setIsReactActEnvironment(previousActEnvironment)
7979
return actResult
8080
}
8181
} catch (error) {
8282
// Can't be a `finally {}` block since we don't know if we have to immediately restore IS_REACT_ACT_ENVIRONMENT
8383
// or if we have to await the callback first.
84-
setReactActEnvironment(previousActEnvironment)
84+
setIsReactActEnvironment(previousActEnvironment)
8585
throw error
8686
}
8787
}
@@ -203,6 +203,10 @@ function asyncAct(cb) {
203203
}
204204

205205
export default act
206-
export {asyncAct, setReactActEnvironment, getIsReactActEnvironment}
206+
export {
207+
asyncAct,
208+
setIsReactActEnvironment as setReactActEnvironment,
209+
getIsReactActEnvironment,
210+
}
207211

208212
/* eslint no-console:0 */

‎src/index.js‎

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import {getIsReactActEnvironment, setReactActEnvironment} from './act-compat'
12
import {cleanup} from './pure'
23

34
// if we're running in a test runner that supports afterEach
@@ -20,6 +21,21 @@ if (typeof process === 'undefined' || !process.env?.RTL_SKIP_AUTO_CLEANUP) {
2021
cleanup()
2122
})
2223
}
24+
25+
// No test setup with other test runners available
26+
/* istanbul ignore else */
27+
if (typeof beforeAll === 'function' && typeof afterAll === 'function') {
28+
// This matches the behavior of React < 18.
29+
let previousIsReactActEnvironment = getIsReactActEnvironment()
30+
beforeAll(() => {
31+
previousIsReactActEnvironment = getIsReactActEnvironment()
32+
setReactActEnvironment(true)
33+
})
34+
35+
afterAll(() => {
36+
setReactActEnvironment(previousIsReactActEnvironment)
37+
})
38+
}
2339
}
2440

2541
export * from './pure'

‎tests/setup-env.js‎

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1 @@
11
import '@testing-library/jest-dom/extend-expect'
2-
3-
beforeEach(() => {
4-
global.IS_REACT_ACT_ENVIRONMENT = true
5-
})
6-
7-
afterEach(() => {
8-
global.IS_REACT_ACT_ENVIRONMENT = false
9-
})

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /