From 480dd28cbc4ac2e0a6517df7d88f2269c20f4d99 Mon Sep 17 00:00:00 2001 From: Kacper Wiszczuk Date: Wed, 10 Oct 2018 21:45:32 +0200 Subject: [PATCH] feat: Add Typescript types to waitForElement (#21) Fix types for Flow too --- README.md | 2 +- src/waitForElement.js | 4 ++-- typings/__tests__/index.test.tsx | 16 +++++++++++++++- typings/index.d.ts | 7 +++++++ 4 files changed, 25 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index c25ee6b5..8aaa92a2 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 af08e2b1..f8008c5d 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 7a73f256..e5e03ac7 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 49aff95c..bbf57539 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;