Skip to content

Commit 6d32457

Browse files
authored
fix: prevent crashing on elements without parentElement (#871)
1 parent cb70902 commit 6d32457

File tree

2 files changed

+15
-0
lines changed

2 files changed

+15
-0
lines changed

src/__tests__/wait-for-element-to-be-removed.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,20 @@ test('requires an element to exist first', () => {
4242
)
4343
})
4444

45+
test("requires element's parent to exist first", () => {
46+
const {getByTestId} = renderIntoDocument(`
47+
<div data-testid="div">asd</div>
48+
`)
49+
const div = getByTestId('div')
50+
div.parentElement.removeChild(div)
51+
52+
return expect(
53+
waitForElementToBeRemoved(div),
54+
).rejects.toThrowErrorMatchingInlineSnapshot(
55+
`"The element(s) given to waitForElementToBeRemoved are already removed. waitForElementToBeRemoved requires that the element(s) exist(s) before waiting for removal."`,
56+
)
57+
})
58+
4559
test('requires an unempty array of elements to exist first', () => {
4660
return expect(
4761
waitForElementToBeRemoved([]),

src/wait-for-element-to-be-removed.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ async function waitForElementToBeRemoved(callback, options) {
2020
const elements = Array.isArray(callback) ? callback : [callback]
2121
const getRemainingElements = elements.map(element => {
2222
let parent = element.parentElement
23+
if(parent === null) return () => null
2324
while (parent.parentElement) parent = parent.parentElement
2425
return () => (parent.contains(element) ? element : null)
2526
})

0 commit comments

Comments
 (0)