Skip to content

Commit 85f1a19

Browse files
committed
Use MutationObserver in all clocks
Makes for a more consistent elapsed times in fake timers
1 parent 8891120 commit 85f1a19

File tree

1 file changed

+13
-14
lines changed

1 file changed

+13
-14
lines changed

src/wait-for.js

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -43,12 +43,23 @@ function waitFor(
4343
}
4444

4545
return new Promise(async (resolve, reject) => {
46-
let lastError, observer
46+
let lastError
4747
let finished = false
4848
let promiseStatus = 'idle'
4949

5050
const overallTimeout = setTimeout(handleTimeout, timeout)
5151
const intervalId = setInterval(handleInterval, interval)
52+
53+
try {
54+
checkContainerType(container)
55+
} catch (e) {
56+
reject(e)
57+
return
58+
}
59+
const {MutationObserver} = getWindowFromNode(container)
60+
const observer = new MutationObserver(handleInterval)
61+
observer.observe(container, mutationObserverOptions)
62+
5263
checkCallback()
5364

5465
const wasUsingJestFakeTimers = jestFakeTimersAreEnabled()
@@ -83,26 +94,14 @@ function waitFor(
8394
jest.advanceTimersByTime(0)
8495
})
8596
}
86-
} else {
87-
try {
88-
checkContainerType(container)
89-
} catch (e) {
90-
reject(e)
91-
return
92-
}
93-
const {MutationObserver} = getWindowFromNode(container)
94-
observer = new MutationObserver(handleInterval)
95-
observer.observe(container, mutationObserverOptions)
9697
}
9798

9899
function onDone(error, result) {
99100
finished = true
100101
clearTimeout(overallTimeout)
101102
clearInterval(intervalId)
102103

103-
if (observer !== undefined) {
104-
observer.disconnect()
105-
}
104+
observer.disconnect()
106105

107106
if (error) {
108107
reject(error)

0 commit comments

Comments
 (0)