import * as React from 'react';
import { AccessibilityState, AccessibilityStates, AccessibilityRole } from 'react-native';
import { ReactTestInstance, ReactTestRendererJSON } from 'react-test-renderer';
export interface GetByAPI {
getByName: (name: React.ReactType | string) => ReactTestInstance;
getByType:
(type: React.ComponentType
) => ReactTestInstance;
getByText: (text: string | RegExp) => ReactTestInstance;
getByPlaceholder: (placeholder: string | RegExp) => ReactTestInstance;
getByDisplayValue: (value: string | RegExp) => ReactTestInstance;
getByProps: (props: Record) => ReactTestInstance;
getByTestId: (testID: string) => ReactTestInstance;
getAllByTestId: (testID: string) => Array;
getAllByName: (name: React.ReactType | string) => Array;
getAllByType: (type: React.ComponentType
) => Array;
getAllByText: (text: string | RegExp) => Array;
getAllByPlaceholder: (
placeholder: string | RegExp
) => Array;
getAllByDisplayValue: (value: string | RegExp) => Array;
getAllByProps: (props: Record) => Array;
// Unsafe aliases
UNSAFE_getByType: (type: React.ComponentType
) => ReactTestInstance,
UNSAFE_getAllByType:
(type: React.ComponentType
) => Array,
UNSAFE_getByProps: (props: Record) => ReactTestInstance,
UNSAFE_getAllByProps: (props: Record) => Array,
}
export interface QueryByAPI {
queryByName: (name: React.ReactType | string) => ReactTestInstance | null;
queryByType: (type: React.ComponentType
) => ReactTestInstance | null;
queryByText: (name: string | RegExp) => ReactTestInstance | null;
queryByPlaceholder: (
placeholder: string | RegExp
) => ReactTestInstance | null;
queryByDisplayValue: (value: string | RegExp) => ReactTestInstance | null;
queryByProps: (props: Record) => ReactTestInstance | null;
queryByTestId: (testID: string) => ReactTestInstance | null;
queryAllByTestId: (testID: string) => Array | null;
queryAllByName: (
name: React.ReactType | string
) => Array | [];
queryAllByType: (
type: React.ComponentType
) => Array | [];
queryAllByText: (text: string | RegExp) => Array | [];
queryAllByPlaceholder: (
placeholder: string | RegExp
) => Array | [];
queryAllByDisplayValue: (
value: string | RegExp
) => Array | [];
queryAllByProps: (
props: Record
) => Array | [];
// Unsafe aliases
UNSAFE_queryByType: (type: React.ComponentType
) => ReactTestInstance | null,
UNSAFE_queryAllByType:
(type: React.ComponentType
) => Array | [],
UNSAFE_queryByProps: (props: Record) => ReactTestInstance | null,
UNSAFE_queryAllByProps: (props: Record) => Array | [],
}
type GetReturn = ReactTestInstance;
type GetAllReturn = Array;
type QueryReturn = ReactTestInstance | null;
type QueryAllReturn = Array | [];
// Not yet available in DefinitelyTyped
export type A11yValue = {
min?: number,
max?: number,
now?: number,
text?: string,
};
type A11yAPI = {
// Label
getByA11yLabel: (matcher: string | RegExp) => GetReturn,
getAllByA11yLabel: (matcher: string | RegExp) => GetAllReturn,
queryByA11yLabel: (matcher: string | RegExp) => QueryReturn,
queryAllByA11yLabel: (matcher: string | RegExp) => QueryAllReturn,
// Hint
getByA11yHint: (matcher: string | RegExp) => GetReturn,
getAllByA11yHint: (matcher: string | RegExp) => GetAllReturn,
queryByA11yHint: (matcher: string | RegExp) => QueryReturn,
queryAllByA11yHint: (matcher: string | RegExp) => QueryAllReturn,
// Role
getByA11yRole: (matcher: AccessibilityRole | RegExp) => GetReturn,
getAllByA11yRole: (matcher: AccessibilityRole | RegExp) => GetAllReturn,
queryByA11yRole: (matcher: AccessibilityRole | RegExp) => QueryReturn,
queryAllByA11yRole: (matcher: AccessibilityRole | RegExp) => QueryAllReturn,
// States
getByA11yStates: (matcher: AccessibilityStates | Array) => GetReturn,
getAllByA11yStates: (matcher: AccessibilityStates | Array) => GetAllReturn,
queryByA11yStates: (matcher: AccessibilityStates | Array) => QueryReturn,
queryAllByA11yStates: (matcher: AccessibilityStates | Array) => QueryAllReturn,
// State
getByA11yState: (matcher: AccessibilityState) => GetReturn,
getAllByA11yState: (matcher: AccessibilityState) => GetAllReturn,
queryByA11yState: (matcher: AccessibilityState) => QueryReturn,
queryAllByA11yState: (matcher: AccessibilityState) => QueryAllReturn,
// Value
getByA11yValue: (matcher: A11yValue) => GetReturn,
getAllByA11yValue: (matcher: A11yValue) => GetAllReturn,
queryByA11yValue: (matcher: A11yValue) => QueryReturn,
queryAllByA11yValue: (matcher: A11yValue) => QueryAllReturn,
};
export interface Thenable {
then: (resolve: () => any, reject?: () => any) => any;
}
export interface RenderOptions {
wrapper?: React.ComponentType;
createNodeMock?: (element: React.ReactElement) => any;
}
export interface RenderAPI extends GetByAPI, QueryByAPI, A11yAPI {
update(nextElement: React.ReactElement): void;
rerender(nextElement: React.ReactElement): void;
unmount(nextElement?: React.ReactElement): void;
toJSON(): ReactTestRendererJSON | null;
debug(message?: string): void;
}
export type FireEventFunction = (
element: ReactTestInstance,
eventName: string,
...data: Array
) => any;
export type FireEventAPI = FireEventFunction & {
press: (element: ReactTestInstance) => any;
changeText: (element: ReactTestInstance, ...data: Array) => any;
scroll: (element: ReactTestInstance, ...data: Array) => any;
};
export type WaitForElementFunction = (
expectation: () => T,
timeout?: number,
interval?: number
) => Promise;
export type DebugFunction = (
instance: ReactTestInstance | React.ReactElement,
message?: string
) => void;
export type DebugAPI = DebugFunction & {
shallow: DebugFunction;
deep: (
instance: React.ReactElement | ReactTestRendererJSON | null,
message?: string
) => void;
};
export declare const render: (
component: React.ReactElement,
options?: RenderOptions
) => RenderAPI;
export declare const shallow: (
instance: ReactTestInstance | React.ReactElement
) => { output: React.ReactElement
};
export declare const flushMicrotasksQueue: () => Promise;
export declare const cleanup: () => void;
export declare const debug: DebugAPI;
export declare const fireEvent: FireEventAPI;
export declare const waitForElement: WaitForElementFunction;
export declare const act: (callback: () => void) => Thenable;