diff --git a/src/queries/__tests__/a11yStates.test.tsx b/src/queries/__tests__/a11yStates.test.tsx deleted file mode 100644 index 7a01b0725..000000000 --- a/src/queries/__tests__/a11yStates.test.tsx +++ /dev/null @@ -1,86 +0,0 @@ -import * as React from 'react'; -import { TouchableOpacity, Text } from 'react-native'; -import { render } from '../..'; - -const TEXT_LABEL = 'cool text'; -// Little hack to make all the methods happy with type -const NO_MATCHES_TEXT: any = 'not-existent-element'; - -const getMultipleInstancesFoundMessage = (value: string) => { - return `Found multiple elements with accessibilityStates: ${value}`; -}; - -const getNoInstancesFoundMessage = (value: string) => { - return `Unable to find an element with accessibilityStates: ${value}`; -}; - -const Typography = ({ children, ...rest }: any) => { - return {children}; -}; - -const Button = ({ children }: { children: React.ReactNode }) => ( - - {children} - -); - -const Section = () => ( - <> - - Title - - - -); - -// TODO: accessibilityStates was removed from RN 0.62 -test.skip('getByA11yStates, queryByA11yStates', () => { - const { getByA11yStates, queryByA11yStates } = render(
); - - expect(getByA11yStates('disabled').props.accessibilityStates).toEqual([ - 'selected', - 'disabled', - ]); - const disabled = queryByA11yStates(['disabled']); - expect(disabled?.props.accessibilityStates).toMatchObject([ - 'selected', - 'disabled', - ]); - const disabledSelected = queryByA11yStates(['selected', 'disabled']); - expect(disabledSelected?.props.accessibilityStates).toEqual([ - 'selected', - 'disabled', - ]); - - expect(() => getByA11yStates(NO_MATCHES_TEXT)).toThrow( - getNoInstancesFoundMessage('accessibilityStates') - ); - expect(queryByA11yStates(NO_MATCHES_TEXT)).toBeNull(); - expect(queryByA11yStates([])).toBeNull(); - - expect(() => getByA11yStates('selected')).toThrow( - getMultipleInstancesFoundMessage('["selected"]') - ); - expect(() => queryByA11yStates('selected')).toThrow( - getMultipleInstancesFoundMessage('["selected"]') - ); -}); - -// TODO: accessibilityStates was removed from RN 0.62 -test.skip('getAllByA11yStates, queryAllByA11yStates', () => { - const { getAllByA11yStates, queryAllByA11yStates } = render(
); - - expect(getAllByA11yStates('selected')).toHaveLength(3); - expect(queryAllByA11yStates(['selected'])).toHaveLength(3); - - expect(() => getAllByA11yStates([])).toThrow( - getNoInstancesFoundMessage('[]') - ); - expect(queryAllByA11yStates(NO_MATCHES_TEXT)).toEqual([]); -}); diff --git a/src/queries/a11yStates.ts b/src/queries/a11yStates.ts deleted file mode 100644 index fbceaa357..000000000 --- a/src/queries/a11yStates.ts +++ /dev/null @@ -1,86 +0,0 @@ -import type { ReactTestInstance } from 'react-test-renderer'; -import { AccessibilityState } from 'react-native'; -import { matchArrayProp } from '../helpers/matchers/matchArrayProp'; -import { makeQueries } from './makeQueries'; -import type { - FindAllByQuery, - FindByQuery, - GetAllByQuery, - GetByQuery, - QueryAllByQuery, - QueryByQuery, -} from './makeQueries'; - -type AccessibilityStateKey = keyof AccessibilityState; -type AccessibilityStateKeys = - | AccessibilityStateKey - | Array; - -const queryAllByA11yStates = ( - instance: ReactTestInstance -): (( - accessibilityStates: AccessibilityStateKeys -) => Array) => - function queryAllByA11yStatesFn(accessibilityStates) { - return instance.findAll( - (node) => - typeof node.type === 'string' && - matchArrayProp(node.props.accessibilityState, accessibilityStates) - ); - }; - -const getMultipleError = (states: AccessibilityStateKeys) => - `Found multiple elements with accessibilityState: ${JSON.stringify(states)}`; -const getMissingError = (states: AccessibilityStateKeys) => - `Unable to find an element with accessibilityState: ${JSON.stringify( - states - )}`; - -const { getBy, getAllBy, queryBy, queryAllBy, findBy, findAllBy } = makeQueries( - queryAllByA11yStates, - getMissingError, - getMultipleError -); - -export type ByA11yStatesQueries = { - getByA11yStates: GetByQuery; - getAllByA11yStates: GetAllByQuery; - queryByA11yStates: QueryByQuery; - queryAllByA11yStates: QueryAllByQuery; - findByA11yStates: FindByQuery; - findAllByA11yStates: FindAllByQuery; - - getByAccessibilityStates: GetByQuery; - getAllByAccessibilityStates: GetAllByQuery; - queryByAccessibilityStates: QueryByQuery; - queryAllByAccessibilityStates: QueryAllByQuery; - findByAccessibilityStates: FindByQuery; - findAllByAccessibilityStates: FindAllByQuery; -}; - -export const bindByA11yStatesQueries = ( - instance: ReactTestInstance -): ByA11yStatesQueries => { - const getByA11yStates = getBy(instance); - const getAllByA11yStates = getAllBy(instance); - const queryByA11yStates = queryBy(instance); - const queryAllByA11yStates = queryAllBy(instance); - const findByA11yStates = findBy(instance); - const findAllByA11yStates = findAllBy(instance); - - return { - getByA11yStates, - getAllByA11yStates, - queryByA11yStates, - queryAllByA11yStates, - findByA11yStates, - findAllByA11yStates, - - getByAccessibilityStates: getByA11yStates, - getAllByAccessibilityStates: getAllByA11yStates, - queryByAccessibilityStates: queryByA11yStates, - queryAllByAccessibilityStates: queryAllByA11yStates, - findByAccessibilityStates: findByA11yStates, - findAllByAccessibilityStates: findAllByA11yStates, - }; -}; diff --git a/src/screen.ts b/src/screen.ts index 5ce85f98d..34a1504d5 100644 --- a/src/screen.ts +++ b/src/screen.ts @@ -51,18 +51,6 @@ const defaultScreen: RenderResult = { queryAllByRole: notImplemented, findByRole: notImplemented, findAllByRole: notImplemented, - getByA11yStates: notImplemented, - getAllByA11yStates: notImplemented, - queryByA11yStates: notImplemented, - queryAllByA11yStates: notImplemented, - findByA11yStates: notImplemented, - findAllByA11yStates: notImplemented, - getByAccessibilityStates: notImplemented, - getAllByAccessibilityStates: notImplemented, - queryByAccessibilityStates: notImplemented, - queryAllByAccessibilityStates: notImplemented, - findByAccessibilityStates: notImplemented, - findAllByAccessibilityStates: notImplemented, getByA11yState: notImplemented, getAllByA11yState: notImplemented, queryByA11yState: notImplemented, diff --git a/src/within.ts b/src/within.ts index e76122202..d4d36751f 100644 --- a/src/within.ts +++ b/src/within.ts @@ -7,7 +7,6 @@ import { bindByLabelTextQueries } from './queries/labelText'; import { bindByHintTextQueries } from './queries/hintText'; import { bindByRoleQueries } from './queries/role'; import { bindByA11yStateQueries } from './queries/a11yState'; -import { bindByA11yStatesQueries } from './queries/a11yStates'; import { bindByA11yValueQueries } from './queries/a11yValue'; import { bindUnsafeByTypeQueries } from './queries/unsafeType'; import { bindUnsafeByPropsQueries } from './queries/unsafeProps'; @@ -22,7 +21,6 @@ export function within(instance: ReactTestInstance) { ...bindByHintTextQueries(instance), ...bindByRoleQueries(instance), ...bindByA11yStateQueries(instance), - ...bindByA11yStatesQueries(instance), ...bindByA11yValueQueries(instance), ...bindUnsafeByTypeQueries(instance), ...bindUnsafeByPropsQueries(instance), diff --git a/typings/index.flow.js b/typings/index.flow.js index ead24d516..f371cc9cc 100644 --- a/typings/index.flow.js +++ b/typings/index.flow.js @@ -56,16 +56,6 @@ declare type A11yState = {| expanded?: boolean, |}; -declare type A11yStates = - | 'disabled' - | 'selected' - | 'checked' - | 'unchecked' - | 'busy' - | 'expanded' - | 'collapsed' - | 'hasPopup'; - declare type A11yValue = { min?: number, max?: number, @@ -266,25 +256,17 @@ interface A11yAPI { waitForOptions?: WaitForOptions ) => FindAllReturn; - // States - getByA11yStates: (matcher: A11yStates | Array) => GetReturn; - getAllByA11yStates: (matcher: A11yStates | Array) => GetAllReturn; - queryByA11yStates: (matcher: A11yStates | Array) => QueryReturn; - queryAllByA11yStates: ( - matcher: A11yStates | Array - ) => QueryAllReturn; - // State - getByA11yState: (matcher: A11yStates) => GetReturn; - getAllByA11yState: (matcher: A11yStates) => GetAllReturn; - queryByA11yState: (matcher: A11yStates) => QueryReturn; - queryAllByA11yState: (matcher: A11yStates) => QueryAllReturn; + getByA11yState: (matcher: A11yState) => GetReturn; + getAllByA11yState: (matcher: A11yState) => GetAllReturn; + queryByA11yState: (matcher: A11yState) => QueryReturn; + queryAllByA11yState: (matcher: A11yState) => QueryAllReturn; findByA11yState: ( - matcher: A11yStates, + matcher: A11yState, waitForOptions?: WaitForOptions ) => FindReturn; findAllByA11yState: ( - matcher: A11yStates, + matcher: A11yState, waitForOptions?: WaitForOptions ) => FindAllReturn; diff --git a/website/docs/API.md b/website/docs/API.md index dc854dde5..dbb20559a 100644 --- a/website/docs/API.md +++ b/website/docs/API.md @@ -97,7 +97,7 @@ See [Queries](./Queries.md) for a complete list. ```jsx import { render } from '@testing-library/react-native'; -const { getByText, queryByA11yStates } = render(); +const { getByText, queryByA11yState } = render(); ``` ### `update` diff --git a/website/docs/Queries.md b/website/docs/Queries.md index d1409e76c..65196a1ea 100644 --- a/website/docs/Queries.md +++ b/website/docs/Queries.md @@ -20,7 +20,6 @@ title: Queries - [`ByTestId`](#bytestid) - [`ByLabelText`](#bylabeltext) - [`ByHintText`, `ByA11yHint`, `ByAccessibilityHint`](#byhinttext-bya11yhint-byaccessibilityhint) - - [`ByA11yStates`, `ByAccessibilityStates`](#bya11ystates-byaccessibilitystates) - [`ByRole`](#byrole) - [`ByA11yState`, `ByAccessibilityState`](#bya11ystate-byaccessibilitystate) - [`ByA11Value`, `ByAccessibilityValue`](#bya11value-byaccessibilityvalue) @@ -177,21 +176,6 @@ const element = screen.getByHintText('Plays a song'); Please consult [Apple guidelines on how `accessibilityHint` should be used](https://developer.apple.com/documentation/objectivec/nsobject/1615093-accessibilityhint). ::: -### `ByA11yStates`, `ByAccessibilityStates` - -> getByA11yStates, getAllByA11yStates, queryByA11yStates, queryAllByA11yStates -> getByAccessibilityStates, getAllByAccessibilityStates, queryByAccessibilityStates, queryAllByAccessibilityStates - -Returns a `ReactTestInstance` with matching `accessibilityStates` prop. - -```jsx -import { render, screen } from '@testing-library/react-native'; - -render(); -const element = screen.getByA11yStates(['checked']); -const element2 = screen.getByA11yStates('checked'); -``` - ### `ByRole` > getByRole, getAllByRole, queryByRole, queryAllByRole, findByRole, findAllByRole