diff --git a/src/__tests__/wait-for-element-to-be-removed.js b/src/__tests__/wait-for-element-to-be-removed.js index 8d13f723..f29bf86b 100644 --- a/src/__tests__/wait-for-element-to-be-removed.js +++ b/src/__tests__/wait-for-element-to-be-removed.js @@ -77,6 +77,18 @@ test('requires an unempty array of elements to exist first (function form)', () ) }) +test('after successful removal, fullfills promise with empty value (undefined)', () => { + const {getByTestId} = renderIntoDocument(` +
+`) + const div = getByTestId('div') + const waitResult = waitForElementToBeRemoved(() => getByTestId('div'), { + timeout: 100, + }) + div.parentElement.removeChild(div) + return expect(waitResult).resolves.toBeUndefined() +}) + describe('timers', () => { const expectElementToBeRemoved = async () => { const importedWaitForElementToBeRemoved = importModule() diff --git a/src/wait-for-element-to-be-removed.js b/src/wait-for-element-to-be-removed.js index 0703b575..d69974f4 100644 --- a/src/wait-for-element-to-be-removed.js +++ b/src/wait-for-element-to-be-removed.js @@ -34,14 +34,14 @@ async function waitForElementToBeRemoved(callback, options) { result = callback() } catch (error) { if (error.name === 'TestingLibraryElementError') { - return true + return undefined } throw error } if (!isRemoved(result)) { throw timeoutError } - return true + return undefined }, options) } diff --git a/types/wait-for-element-to-be-removed.d.ts b/types/wait-for-element-to-be-removed.d.ts index b6b1e1bb..d0daae53 100644 --- a/types/wait-for-element-to-be-removed.d.ts +++ b/types/wait-for-element-to-be-removed.d.ts @@ -3,4 +3,4 @@ import { waitForOptions } from "./wait-for"; export function waitForElementToBeRemoved( callback: (() => T) | T, options?: waitForOptions, -): Promise; +): Promise;