diff --git a/README.md b/README.md index c25ee6b53..8aaa92a2b 100644 --- a/README.md +++ b/README.md @@ -259,7 +259,7 @@ fireEvent.scroll(getByTestId('scroll-view'), eventData); Defined as: ```jsx -function waitForExpect( +function waitForExpect( expectation: () => T, timeout: number = 4500, interval: number = 50 diff --git a/src/waitForElement.js b/src/waitForElement.js index af08e2b15..f8008c5de 100644 --- a/src/waitForElement.js +++ b/src/waitForElement.js @@ -1,9 +1,9 @@ // @flow -export default function waitForExpect( +export default function waitForExpect( expectation: () => T, timeout: number = 4500, interval: number = 50 -) { +): Promise { const startTime = Date.now(); return new Promise((resolve, reject) => { const rejectOrRerun = error => { diff --git a/typings/__tests__/index.test.tsx b/typings/__tests__/index.test.tsx index 7a73f256b..e5e03ac7d 100644 --- a/typings/__tests__/index.test.tsx +++ b/typings/__tests__/index.test.tsx @@ -1,6 +1,13 @@ import * as React from 'react'; import { ReactTestInstance } from 'react-test-renderer'; -import { render, fireEvent, shallow, flushMicrotasksQueue, debug } from '../..'; +import { + render, + fireEvent, + shallow, + flushMicrotasksQueue, + debug, + waitForElement, +} from '../..'; const View = props => props.children; const Text = props => props.children; @@ -77,3 +84,10 @@ const waitForFlush: Promise = flushMicrotasksQueue(); debug(); debug(getByNameString); + +const waitBy: Promise = waitForElement( + () => tree.getByName('View') +); +const waitByAll: Promise> = waitForElement< + Array +>(() => tree.getAllByName('View'), 1000, 50); diff --git a/typings/index.d.ts b/typings/index.d.ts index 49aff95cb..bbf57539e 100644 --- a/typings/index.d.ts +++ b/typings/index.d.ts @@ -45,6 +45,12 @@ export type FireEventAPI = FireEventFunction & { scroll: (element: ReactTestInstance, data?: any) => any; }; +export type WaitForElementFunction = ( + expectation: () => T, + timeout?: number, + interval?: number +) => Promise; + export declare const render: ( component: React.ReactElement, options?: RenderOptions @@ -57,3 +63,4 @@ export declare const debug: ( instance: ReactTestInstance | React.ReactElement ) => void; export declare const fireEvent: FireEventAPI; +export declare const waitForElement: WaitForElementFunction;