@testing-library/react-native 12.1.1 → 12.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.DS_Store +0 -0
- package/.codecov.yml +9 -0
- package/.eslintcache +1 -0
- package/.eslintignore +2 -0
- package/.eslintrc +19 -0
- package/.flowconfig +63 -0
- package/.github/ISSUE_TEMPLATE/bug_report.md +38 -0
- package/.github/ISSUE_TEMPLATE/feature_request.md +14 -0
- package/.github/ISSUE_TEMPLATE/question.md +9 -0
- package/.github/PULL_REQUEST_TEMPLATE.md +10 -0
- package/.github/actions/setup-deps/action.yml +22 -0
- package/.github/actions/setup-website-deps/action.yml +22 -0
- package/.github/dependabot.yml +10 -0
- package/.github/workflows/deploy-website.yml +36 -0
- package/.github/workflows/example-apps.yml +25 -0
- package/.github/workflows/main.yml +103 -0
- package/.gitignore +11 -0
- package/.prettierrc.js +5 -0
- package/CODE_OF_CONDUCT.md +73 -0
- package/CONTRIBUTING.md +64 -0
- package/README.md +8 -7
- package/babel.config.js +22 -0
- package/build/act.js.map +1 -1
- package/build/cleanup.js.map +1 -1
- package/build/config.d.ts +1 -0
- package/build/config.js.map +1 -1
- package/build/fireEvent.d.ts +13 -5
- package/build/fireEvent.js +57 -48
- package/build/fireEvent.js.map +1 -1
- package/build/flush-micro-tasks.d.ts +19 -0
- package/build/flush-micro-tasks.js +36 -0
- package/build/flush-micro-tasks.js.map +1 -0
- package/build/helpers/accessiblity.js +3 -1
- package/build/helpers/accessiblity.js.map +1 -1
- package/build/helpers/component-tree.d.ts +0 -15
- package/build/helpers/component-tree.js +0 -45
- package/build/helpers/component-tree.js.map +1 -1
- package/build/helpers/deprecation.d.ts +1 -0
- package/build/helpers/deprecation.js +16 -0
- package/build/helpers/deprecation.js.map +1 -1
- package/build/helpers/errors.d.ts +0 -4
- package/build/helpers/errors.js +1 -25
- package/build/helpers/errors.js.map +1 -1
- package/build/helpers/findAll.js.map +1 -1
- package/build/helpers/format-default.js.map +1 -1
- package/build/helpers/format.js.map +1 -1
- package/build/helpers/host-component-names.js +4 -1
- package/build/helpers/host-component-names.js.map +1 -1
- package/build/helpers/matchers/matchLabelText.js.map +1 -1
- package/build/helpers/pointer-events.d.ts +9 -0
- package/build/helpers/pointer-events.js +25 -0
- package/build/helpers/pointer-events.js.map +1 -0
- package/build/helpers/stringValidation.js.map +1 -1
- package/build/helpers/timers.js.map +1 -1
- package/build/index.js +2 -2
- package/build/index.js.map +1 -1
- package/build/matches.js.map +1 -1
- package/build/pure.d.ts +1 -1
- package/build/pure.js.map +1 -1
- package/build/queries/a11yState.js.map +1 -1
- package/build/queries/a11yValue.js.map +1 -1
- package/build/queries/displayValue.js.map +1 -1
- package/build/queries/hintText.js.map +1 -1
- package/build/queries/labelText.js.map +1 -1
- package/build/queries/makeQueries.js.map +1 -1
- package/build/queries/placeholderText.js.map +1 -1
- package/build/queries/role.js.map +1 -1
- package/build/queries/testId.js.map +1 -1
- package/build/queries/text.js.map +1 -1
- package/build/queries/unsafeProps.js.map +1 -1
- package/build/render.d.ts +171 -12
- package/build/render.js +11 -4
- package/build/render.js.map +1 -1
- package/build/renderHook.d.ts +3 -6
- package/build/renderHook.js +4 -3
- package/build/renderHook.js.map +1 -1
- package/build/shallow.js.map +1 -1
- package/build/test-utils/events.d.ts +10 -0
- package/build/test-utils/events.js +27 -0
- package/build/test-utils/events.js.map +1 -0
- package/build/test-utils/index.d.ts +1 -0
- package/build/test-utils/index.js +17 -0
- package/build/test-utils/index.js.map +1 -0
- package/build/user-event/event-builder/common.d.ts +45 -0
- package/build/user-event/event-builder/common.js +58 -0
- package/build/user-event/event-builder/common.js.map +1 -0
- package/build/user-event/event-builder/index.d.ts +32 -0
- package/build/user-event/event-builder/index.js +12 -0
- package/build/user-event/event-builder/index.js.map +1 -0
- package/build/user-event/index.d.ts +9 -0
- package/build/user-event/index.js +16 -0
- package/build/user-event/index.js.map +1 -0
- package/build/user-event/press/constants.d.ts +2 -0
- package/build/user-event/press/constants.js +16 -0
- package/build/user-event/press/constants.js.map +1 -0
- package/build/user-event/press/index.d.ts +1 -0
- package/build/user-event/press/index.js +19 -0
- package/build/user-event/press/index.js.map +1 -0
- package/build/user-event/press/press.d.ts +7 -0
- package/build/user-event/press/press.js +106 -0
- package/build/user-event/press/press.js.map +1 -0
- package/build/user-event/press/utils/warnAboutRealTimers.d.ts +1 -0
- package/build/user-event/press/utils/warnAboutRealTimers.js +14 -0
- package/build/user-event/press/utils/warnAboutRealTimers.js.map +1 -0
- package/build/user-event/setup/index.d.ts +2 -0
- package/build/user-event/setup/index.js +13 -0
- package/build/user-event/setup/index.js.map +1 -0
- package/build/user-event/setup/setup.d.ts +39 -0
- package/build/user-event/setup/setup.js +56 -0
- package/build/user-event/setup/setup.js.map +1 -0
- package/build/user-event/type/index.d.ts +1 -0
- package/build/user-event/type/index.js +13 -0
- package/build/user-event/type/index.js.map +1 -0
- package/build/user-event/type/type.d.ts +3 -0
- package/build/user-event/type/type.js +18 -0
- package/build/user-event/type/type.js.map +1 -0
- package/build/user-event/utils/events.d.ts +9 -0
- package/build/user-event/utils/events.js +44 -0
- package/build/user-event/utils/events.js.map +1 -0
- package/build/user-event/utils/index.d.ts +2 -0
- package/build/user-event/utils/index.js +28 -0
- package/build/user-event/utils/index.js.map +1 -0
- package/build/user-event/utils/wait.d.ts +2 -0
- package/build/user-event/utils/wait.js +14 -0
- package/build/user-event/utils/wait.js.map +1 -0
- package/build/waitFor.js +3 -3
- package/build/waitFor.js.map +1 -1
- package/build/waitForElementToBeRemoved.js.map +1 -1
- package/examples/basic/.expo-shared/assets.json +4 -0
- package/examples/basic/.gitignore +14 -0
- package/examples/basic/App.tsx +20 -0
- package/examples/basic/README.md +11 -0
- package/examples/basic/__tests__/App.test.tsx +119 -0
- package/examples/basic/app.json +31 -0
- package/examples/basic/assets/adaptive-icon.png +0 -0
- package/examples/basic/assets/favicon.png +0 -0
- package/examples/basic/assets/icon.png +0 -0
- package/examples/basic/assets/splash.png +0 -0
- package/examples/basic/babel.config.js +6 -0
- package/examples/basic/components/Home.tsx +28 -0
- package/examples/basic/components/LoginForm.tsx +138 -0
- package/examples/basic/jest-setup.ts +7 -0
- package/examples/basic/jest.config.js +5 -0
- package/examples/basic/package.json +30 -0
- package/examples/basic/tsconfig.json +7 -0
- package/examples/react-navigation/README.md +14 -0
- package/examples/react-navigation/babel.config.js +4 -0
- package/examples/react-navigation/jest-setup.js +11 -0
- package/examples/react-navigation/jest.config.js +10 -0
- package/examples/react-navigation/package.json +31 -0
- package/examples/react-navigation/src/App.js +21 -0
- package/examples/react-navigation/src/DrawerNavigator.js +15 -0
- package/examples/react-navigation/src/DrawerNavigator.test.js +42 -0
- package/examples/react-navigation/src/NativeStackNavigator.js +15 -0
- package/examples/react-navigation/src/NativeStackNavigator.test.js +34 -0
- package/examples/react-navigation/src/StackNavigator.js +15 -0
- package/examples/react-navigation/src/StackNavigator.test.js +34 -0
- package/examples/react-navigation/src/TabNavigator.js +15 -0
- package/examples/react-navigation/src/TabNavigator.test.js +21 -0
- package/examples/react-navigation/src/screens/DetailsScreen.js +43 -0
- package/examples/react-navigation/src/screens/DetailsScreen.test.js +27 -0
- package/examples/react-navigation/src/screens/DrawerHomeScreen.js +26 -0
- package/examples/react-navigation/src/screens/HomeScreen.js +48 -0
- package/examples/react-navigation/src/screens/SettingsScreen.js +20 -0
- package/examples/react-navigation/src/test-utils.js +12 -0
- package/examples/redux/App.js +27 -0
- package/examples/redux/actions/todoActions.js +25 -0
- package/examples/redux/babel.config.js +6 -0
- package/examples/redux/components/AddTodo.js +73 -0
- package/examples/redux/components/AddTodo.test.js +27 -0
- package/examples/redux/components/TodoElem.js +25 -0
- package/examples/redux/components/TodoList.js +29 -0
- package/examples/redux/components/TodoList.test.js +34 -0
- package/examples/redux/index.js +8 -0
- package/examples/redux/jest-setup.js +2 -0
- package/examples/redux/jest.config.js +4 -0
- package/examples/redux/package.json +23 -0
- package/examples/redux/reducers/index.js +6 -0
- package/examples/redux/reducers/todoReducer.js +27 -0
- package/examples/redux/store.js +10 -0
- package/examples/redux/test-utils.js +11 -0
- package/experiments-app/.expo/README.md +15 -0
- package/experiments-app/.expo/devices.json +3 -0
- package/experiments-app/.expo/packager-info.json +9 -0
- package/experiments-app/.expo/settings.json +9 -0
- package/experiments-app/.gitignore +17 -0
- package/experiments-app/.prettierrc.js +5 -0
- package/experiments-app/app.json +30 -0
- package/experiments-app/assets/adaptive-icon.png +0 -0
- package/experiments-app/assets/favicon.png +0 -0
- package/experiments-app/assets/icon.png +0 -0
- package/experiments-app/assets/splash.png +0 -0
- package/experiments-app/babel.config.js +6 -0
- package/experiments-app/index.js +4 -0
- package/experiments-app/package.json +31 -0
- package/experiments-app/src/App.tsx +31 -0
- package/experiments-app/src/MainScreen.tsx +51 -0
- package/experiments-app/src/experiments.ts +17 -0
- package/experiments-app/src/screens/TextInputEventPropagation.tsx +54 -0
- package/experiments-app/src/screens/TextInputEvents.tsx +50 -0
- package/experiments-app/src/utils/helpers.ts +8 -0
- package/experiments-app/tsconfig.json +6 -0
- package/experiments-app/yarn.lock +6913 -0
- package/flow-typed/npm/jest_v26.x.x.js +1218 -0
- package/flow-typed/npm/react-test-renderer_v16.x.x.js +81 -0
- package/jest-setup.ts +10 -0
- package/package.json +6 -6
- package/renovate.json +19 -0
- package/scripts/test_react_17 +12 -0
- package/src/__tests__/__snapshots__/render-debug.test.tsx.snap +548 -0
- package/src/__tests__/__snapshots__/render.test.tsx.snap +39 -0
- package/src/__tests__/act.test.tsx +52 -0
- package/src/__tests__/auto-cleanup-skip.test.tsx +39 -0
- package/src/__tests__/auto-cleanup.test.tsx +50 -0
- package/src/__tests__/cleanup.test.tsx +26 -0
- package/src/__tests__/config.test.ts +55 -0
- package/src/__tests__/fireEvent-textInput.test.tsx +154 -0
- package/src/__tests__/fireEvent.test.tsx +485 -0
- package/src/__tests__/host-component-names.test.tsx +109 -0
- package/src/__tests__/host-text-nesting.test.tsx +90 -0
- package/src/__tests__/jest-native.test.tsx +84 -0
- package/src/__tests__/questionsBoard.test.tsx +62 -0
- package/src/__tests__/react-native-api.test.tsx +126 -0
- package/src/__tests__/render-debug.test.tsx +207 -0
- package/src/__tests__/render-stringValidation.test.tsx +157 -0
- package/src/__tests__/render.test.tsx +256 -0
- package/src/__tests__/renderHook.test.tsx +114 -0
- package/src/__tests__/screen.test.tsx +66 -0
- package/src/__tests__/timerUtils.ts +7 -0
- package/src/__tests__/timers.test.ts +27 -0
- package/src/__tests__/waitFor.test.tsx +327 -0
- package/src/__tests__/waitForElementToBeRemoved.test.tsx +151 -0
- package/src/__tests__/within.test.tsx +96 -0
- package/src/act.ts +86 -0
- package/src/cleanup.ts +15 -0
- package/src/config.ts +72 -0
- package/src/fireEvent.ts +163 -0
- package/src/flush-micro-tasks.ts +30 -0
- package/src/helpers/__tests__/accessiblity.test.tsx +373 -0
- package/src/helpers/__tests__/component-tree.test.tsx +226 -0
- package/src/helpers/__tests__/format-default.tsx +114 -0
- package/src/helpers/__tests__/getTextContent.test.tsx +49 -0
- package/src/helpers/__tests__/includeHiddenElements.test.tsx +39 -0
- package/src/helpers/__tests__/query-name.test.ts +10 -0
- package/src/helpers/__tests__/timers.test.ts +8 -0
- package/src/helpers/accessiblity.ts +108 -0
- package/src/helpers/component-tree.ts +89 -0
- package/src/helpers/debugDeep.ts +27 -0
- package/src/helpers/debugShallow.ts +22 -0
- package/src/helpers/deprecation.ts +53 -0
- package/src/helpers/errors.ts +66 -0
- package/src/helpers/filterNodeByType.ts +7 -0
- package/src/helpers/findAll.ts +68 -0
- package/src/helpers/format-default.ts +72 -0
- package/src/helpers/format.ts +47 -0
- package/src/helpers/getTextContent.ts +20 -0
- package/src/helpers/host-component-names.tsx +67 -0
- package/src/helpers/matchers/__tests__/matchArrayValue.test.ts +34 -0
- package/src/helpers/matchers/__tests__/matchObject.test.ts +37 -0
- package/src/helpers/matchers/__tests__/matchStringValue.test.ts +15 -0
- package/src/helpers/matchers/accessibilityState.ts +48 -0
- package/src/helpers/matchers/accessibilityValue.ts +24 -0
- package/src/helpers/matchers/matchArrayProp.ts +21 -0
- package/src/helpers/matchers/matchLabelText.ts +51 -0
- package/src/helpers/matchers/matchObjectProp.ts +25 -0
- package/src/helpers/matchers/matchStringProp.ts +23 -0
- package/src/helpers/matchers/matchTextContent.ts +20 -0
- package/src/helpers/pointer-events.ts +27 -0
- package/src/helpers/query-name.ts +4 -0
- package/src/helpers/stringValidation.ts +36 -0
- package/src/helpers/timers.ts +98 -0
- package/src/index.ts +33 -0
- package/src/matches.ts +49 -0
- package/src/pure.ts +25 -0
- package/src/queries/__tests__/a11yState.test.tsx +439 -0
- package/src/queries/__tests__/a11yValue.test.tsx +309 -0
- package/src/queries/__tests__/displayValue.test.tsx +221 -0
- package/src/queries/__tests__/hintText.test.tsx +177 -0
- package/src/queries/__tests__/labelText.test.tsx +242 -0
- package/src/queries/__tests__/makeQueries.test.tsx +235 -0
- package/src/queries/__tests__/placeholderText.test.tsx +136 -0
- package/src/queries/__tests__/role-value.test.tsx +176 -0
- package/src/queries/__tests__/role.test.tsx +824 -0
- package/src/queries/__tests__/testId.test.tsx +200 -0
- package/src/queries/__tests__/text.test.tsx +556 -0
- package/src/queries/a11yState.ts +131 -0
- package/src/queries/a11yValue.ts +131 -0
- package/src/queries/displayValue.ts +78 -0
- package/src/queries/hintText.ts +112 -0
- package/src/queries/labelText.ts +59 -0
- package/src/queries/makeQueries.ts +255 -0
- package/src/queries/options.ts +14 -0
- package/src/queries/placeholderText.ts +79 -0
- package/src/queries/role.ts +132 -0
- package/src/queries/testId.ts +71 -0
- package/src/queries/text.ts +66 -0
- package/src/queries/unsafeProps.ts +76 -0
- package/src/queries/unsafeType.ts +73 -0
- package/src/react-versions.ts +11 -0
- package/src/render-act.ts +19 -0
- package/src/render.tsx +183 -0
- package/src/renderHook.tsx +56 -0
- package/src/screen.ts +123 -0
- package/src/shallow.ts +18 -0
- package/src/test-utils/events.ts +24 -0
- package/src/test-utils/index.ts +1 -0
- package/src/user-event/event-builder/common.ts +50 -0
- package/src/user-event/event-builder/index.ts +5 -0
- package/src/user-event/index.ts +14 -0
- package/src/user-event/press/__tests__/longPress.real-timers.test.tsx +115 -0
- package/src/user-event/press/__tests__/longPress.test.tsx +157 -0
- package/src/user-event/press/__tests__/press.real-timers.test.tsx +318 -0
- package/src/user-event/press/__tests__/press.test.tsx +422 -0
- package/src/user-event/press/constants.ts +7 -0
- package/src/user-event/press/index.ts +1 -0
- package/src/user-event/press/press.ts +134 -0
- package/src/user-event/press/utils/warnAboutRealTimers.ts +6 -0
- package/src/user-event/setup/index.ts +2 -0
- package/src/user-event/setup/setup.ts +93 -0
- package/src/user-event/type/__tests__/__snapshots__/type.test.tsx.snap +26 -0
- package/src/user-event/type/__tests__/type.test.tsx +63 -0
- package/src/user-event/type/index.ts +1 -0
- package/src/user-event/type/type.ts +20 -0
- package/src/user-event/utils/__tests__/wait.test.ts +63 -0
- package/src/user-event/utils/events.ts +54 -0
- package/src/user-event/utils/index.ts +2 -0
- package/src/user-event/utils/wait.ts +15 -0
- package/src/waitFor.ts +228 -0
- package/src/waitForElementToBeRemoved.ts +42 -0
- package/src/within.ts +30 -0
- package/tsconfig.json +17 -0
- package/tsconfig.release.json +8 -0
- package/website/.gitignore +20 -0
- package/website/README.md +33 -0
- package/website/docker/.dockerignore +3 -0
- package/website/docker/Dockerfile +9 -0
- package/website/docker/docker-compose.yml +11 -0
- package/website/docs/API.md +946 -0
- package/website/docs/EslintPLluginTestingLibrary.md +28 -0
- package/website/docs/FAQ.md +44 -0
- package/website/docs/GettingStarted.md +100 -0
- package/website/docs/HowShouldIQuery.md +21 -0
- package/website/docs/MigrationV11.md +64 -0
- package/website/docs/MigrationV12.md +67 -0
- package/website/docs/MigrationV2.md +126 -0
- package/website/docs/MigrationV7.md +119 -0
- package/website/docs/MigrationV9.md +67 -0
- package/website/docs/Queries.md +567 -0
- package/website/docs/ReactNavigation.md +371 -0
- package/website/docs/ReduxIntegration.md +137 -0
- package/website/docs/TestingEnvironment.md +154 -0
- package/website/docs/Troubleshooting.md +44 -0
- package/website/docs/UnderstandingAct.md +227 -0
- package/website/docs/UserEvent.md +66 -0
- package/website/docusaurus.config.js +114 -0
- package/website/package.json +31 -0
- package/website/sidebars.js +20 -0
- package/website/src/components/Feature.js +31 -0
- package/website/src/css/custom.css +13 -0
- package/website/src/css/index.module.css +77 -0
- package/website/src/pages/index.js +82 -0
- package/website/static/.nojekyll +0 -0
- package/website/static/css/custom.css +28 -0
- package/website/static/img/hit.png +0 -0
- package/website/static/img/locomotive.png +0 -0
- package/website/static/img/owl.png +0 -0
- package/website/static/img/tools.png +0 -0
- package/website/yarn.lock +7669 -0
- package/yarn.lock +7765 -0
- package/build/flushMicroTasks.d.ts +0 -5
- package/build/flushMicroTasks.js +0 -17
- package/build/flushMicroTasks.js.map +0 -1
|
@@ -0,0 +1,439 @@
|
|
|
1
|
+
/* eslint-disable no-console */
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { View, Text, Pressable, TouchableOpacity } from 'react-native';
|
|
4
|
+
import { render } from '../..';
|
|
5
|
+
|
|
6
|
+
type ConsoleLogMock = jest.Mock<typeof console.log>;
|
|
7
|
+
|
|
8
|
+
beforeEach(() => {
|
|
9
|
+
jest.spyOn(console, 'warn').mockImplementation(() => {});
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
const TEXT_LABEL = 'cool text';
|
|
13
|
+
|
|
14
|
+
const Typography = ({ children, ...rest }: any) => {
|
|
15
|
+
return <Text {...rest}>{children}</Text>;
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
const Button = ({ children }: { children: React.ReactNode }) => (
|
|
19
|
+
<TouchableOpacity>
|
|
20
|
+
<Typography accessibilityState={{ expanded: false, selected: true }}>
|
|
21
|
+
{children}
|
|
22
|
+
</Typography>
|
|
23
|
+
</TouchableOpacity>
|
|
24
|
+
);
|
|
25
|
+
|
|
26
|
+
const Section = () => (
|
|
27
|
+
<>
|
|
28
|
+
<Typography accessibilityState={{ expanded: false }}>Title</Typography>
|
|
29
|
+
<Button>{TEXT_LABEL}</Button>
|
|
30
|
+
</>
|
|
31
|
+
);
|
|
32
|
+
|
|
33
|
+
test('getByA11yState, queryByA11yState, findByA11yState', async () => {
|
|
34
|
+
const { getByA11yState, queryByA11yState, findByA11yState } = render(
|
|
35
|
+
<Section />
|
|
36
|
+
);
|
|
37
|
+
|
|
38
|
+
expect(getByA11yState({ selected: true }).props.accessibilityState).toEqual({
|
|
39
|
+
selected: true,
|
|
40
|
+
expanded: false,
|
|
41
|
+
});
|
|
42
|
+
expect(
|
|
43
|
+
queryByA11yState({ selected: true })?.props.accessibilityState
|
|
44
|
+
).toEqual({
|
|
45
|
+
selected: true,
|
|
46
|
+
expanded: false,
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
expect(() => getByA11yState({ disabled: true })).toThrow(
|
|
50
|
+
'Unable to find an element with disabled state: true'
|
|
51
|
+
);
|
|
52
|
+
expect(queryByA11yState({ disabled: true })).toEqual(null);
|
|
53
|
+
|
|
54
|
+
expect(() => getByA11yState({ expanded: false })).toThrow(
|
|
55
|
+
'Found multiple elements with expanded state: false'
|
|
56
|
+
);
|
|
57
|
+
expect(() => queryByA11yState({ expanded: false })).toThrow(
|
|
58
|
+
'Found multiple elements with expanded state: false'
|
|
59
|
+
);
|
|
60
|
+
|
|
61
|
+
const asyncButton = await findByA11yState({ selected: true });
|
|
62
|
+
expect(asyncButton.props.accessibilityState).toEqual({
|
|
63
|
+
selected: true,
|
|
64
|
+
expanded: false,
|
|
65
|
+
});
|
|
66
|
+
await expect(findByA11yState({ disabled: true })).rejects.toThrow(
|
|
67
|
+
'Unable to find an element with disabled state: true'
|
|
68
|
+
);
|
|
69
|
+
await expect(findByA11yState({ expanded: false })).rejects.toThrow(
|
|
70
|
+
'Found multiple elements with expanded state: false'
|
|
71
|
+
);
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
test('getAllByA11yState, queryAllByA11yState, findAllByA11yState', async () => {
|
|
75
|
+
const { getAllByA11yState, queryAllByA11yState, findAllByA11yState } = render(
|
|
76
|
+
<Section />
|
|
77
|
+
);
|
|
78
|
+
|
|
79
|
+
expect(getAllByA11yState({ selected: true })).toHaveLength(1);
|
|
80
|
+
expect(queryAllByA11yState({ selected: true })).toHaveLength(1);
|
|
81
|
+
|
|
82
|
+
expect(() => getAllByA11yState({ disabled: true })).toThrow(
|
|
83
|
+
'Unable to find an element with disabled state: true'
|
|
84
|
+
);
|
|
85
|
+
expect(queryAllByA11yState({ disabled: true })).toEqual([]);
|
|
86
|
+
|
|
87
|
+
expect(getAllByA11yState({ expanded: false })).toHaveLength(2);
|
|
88
|
+
expect(queryAllByA11yState({ expanded: false })).toHaveLength(2);
|
|
89
|
+
|
|
90
|
+
await expect(findAllByA11yState({ selected: true })).resolves.toHaveLength(1);
|
|
91
|
+
await expect(findAllByA11yState({ disabled: true })).rejects.toThrow(
|
|
92
|
+
'Unable to find an element with disabled state: true'
|
|
93
|
+
);
|
|
94
|
+
await expect(findAllByA11yState({ expanded: false })).resolves.toHaveLength(
|
|
95
|
+
2
|
|
96
|
+
);
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
describe('checked state matching', () => {
|
|
100
|
+
it('handles true', () => {
|
|
101
|
+
const view = render(<View accessibilityState={{ checked: true }} />);
|
|
102
|
+
|
|
103
|
+
expect(view.getByA11yState({ checked: true })).toBeTruthy();
|
|
104
|
+
expect(view.queryByA11yState({ checked: 'mixed' })).toBeFalsy();
|
|
105
|
+
expect(view.queryByA11yState({ checked: false })).toBeFalsy();
|
|
106
|
+
});
|
|
107
|
+
|
|
108
|
+
it('handles mixed', () => {
|
|
109
|
+
const view = render(<View accessibilityState={{ checked: 'mixed' }} />);
|
|
110
|
+
|
|
111
|
+
expect(view.getByA11yState({ checked: 'mixed' })).toBeTruthy();
|
|
112
|
+
expect(view.queryByA11yState({ checked: true })).toBeFalsy();
|
|
113
|
+
expect(view.queryByA11yState({ checked: false })).toBeFalsy();
|
|
114
|
+
});
|
|
115
|
+
|
|
116
|
+
it('handles false', () => {
|
|
117
|
+
const view = render(<View accessibilityState={{ checked: false }} />);
|
|
118
|
+
|
|
119
|
+
expect(view.getByA11yState({ checked: false })).toBeTruthy();
|
|
120
|
+
expect(view.queryByA11yState({ checked: true })).toBeFalsy();
|
|
121
|
+
expect(view.queryByA11yState({ checked: 'mixed' })).toBeFalsy();
|
|
122
|
+
});
|
|
123
|
+
|
|
124
|
+
it('handles default', () => {
|
|
125
|
+
const view = render(<View accessibilityState={{}} />);
|
|
126
|
+
|
|
127
|
+
expect(view.queryByA11yState({ checked: false })).toBeFalsy();
|
|
128
|
+
expect(view.queryByA11yState({ checked: true })).toBeFalsy();
|
|
129
|
+
expect(view.queryByA11yState({ checked: 'mixed' })).toBeFalsy();
|
|
130
|
+
});
|
|
131
|
+
});
|
|
132
|
+
|
|
133
|
+
describe('expanded state matching', () => {
|
|
134
|
+
it('handles true', () => {
|
|
135
|
+
const view = render(<View accessibilityState={{ expanded: true }} />);
|
|
136
|
+
|
|
137
|
+
expect(view.getByA11yState({ expanded: true })).toBeTruthy();
|
|
138
|
+
expect(view.queryByA11yState({ expanded: false })).toBeFalsy();
|
|
139
|
+
});
|
|
140
|
+
|
|
141
|
+
it('handles false', () => {
|
|
142
|
+
const view = render(<View accessibilityState={{ expanded: false }} />);
|
|
143
|
+
|
|
144
|
+
expect(view.getByA11yState({ expanded: false })).toBeTruthy();
|
|
145
|
+
expect(view.queryByA11yState({ expanded: true })).toBeFalsy();
|
|
146
|
+
});
|
|
147
|
+
|
|
148
|
+
it('handles default', () => {
|
|
149
|
+
const view = render(<View accessibilityState={{}} />);
|
|
150
|
+
|
|
151
|
+
expect(view.queryByA11yState({ expanded: false })).toBeFalsy();
|
|
152
|
+
expect(view.queryByA11yState({ expanded: true })).toBeFalsy();
|
|
153
|
+
});
|
|
154
|
+
});
|
|
155
|
+
|
|
156
|
+
describe('disabled state matching', () => {
|
|
157
|
+
it('handles true', () => {
|
|
158
|
+
const view = render(<View accessibilityState={{ disabled: true }} />);
|
|
159
|
+
|
|
160
|
+
expect(view.getByA11yState({ disabled: true })).toBeTruthy();
|
|
161
|
+
expect(view.queryByA11yState({ disabled: false })).toBeFalsy();
|
|
162
|
+
});
|
|
163
|
+
|
|
164
|
+
it('handles false', () => {
|
|
165
|
+
const view = render(<View accessibilityState={{ disabled: false }} />);
|
|
166
|
+
|
|
167
|
+
expect(view.getByA11yState({ disabled: false })).toBeTruthy();
|
|
168
|
+
expect(view.queryByA11yState({ disabled: true })).toBeFalsy();
|
|
169
|
+
});
|
|
170
|
+
|
|
171
|
+
it('handles default', () => {
|
|
172
|
+
const view = render(<View accessibilityState={{}} />);
|
|
173
|
+
|
|
174
|
+
expect(view.getByA11yState({ disabled: false })).toBeTruthy();
|
|
175
|
+
expect(view.queryByA11yState({ disabled: true })).toBeFalsy();
|
|
176
|
+
});
|
|
177
|
+
});
|
|
178
|
+
|
|
179
|
+
describe('busy state matching', () => {
|
|
180
|
+
it('handles true', () => {
|
|
181
|
+
const view = render(<View accessibilityState={{ busy: true }} />);
|
|
182
|
+
|
|
183
|
+
expect(view.getByA11yState({ busy: true })).toBeTruthy();
|
|
184
|
+
expect(view.queryByA11yState({ busy: false })).toBeFalsy();
|
|
185
|
+
});
|
|
186
|
+
|
|
187
|
+
it('handles false', () => {
|
|
188
|
+
const view = render(<View accessibilityState={{ busy: false }} />);
|
|
189
|
+
|
|
190
|
+
expect(view.getByA11yState({ busy: false })).toBeTruthy();
|
|
191
|
+
expect(view.queryByA11yState({ busy: true })).toBeFalsy();
|
|
192
|
+
});
|
|
193
|
+
|
|
194
|
+
it('handles default', () => {
|
|
195
|
+
const view = render(<View accessibilityState={{}} />);
|
|
196
|
+
|
|
197
|
+
expect(view.getByA11yState({ busy: false })).toBeTruthy();
|
|
198
|
+
expect(view.queryByA11yState({ busy: true })).toBeFalsy();
|
|
199
|
+
});
|
|
200
|
+
});
|
|
201
|
+
|
|
202
|
+
describe('selected state matching', () => {
|
|
203
|
+
it('handles true', () => {
|
|
204
|
+
const view = render(<View accessibilityState={{ selected: true }} />);
|
|
205
|
+
|
|
206
|
+
expect(view.getByA11yState({ selected: true })).toBeTruthy();
|
|
207
|
+
expect(view.queryByA11yState({ selected: false })).toBeFalsy();
|
|
208
|
+
});
|
|
209
|
+
|
|
210
|
+
it('handles false', () => {
|
|
211
|
+
const view = render(<View accessibilityState={{ selected: false }} />);
|
|
212
|
+
|
|
213
|
+
expect(view.getByA11yState({ selected: false })).toBeTruthy();
|
|
214
|
+
expect(view.queryByA11yState({ selected: true })).toBeFalsy();
|
|
215
|
+
});
|
|
216
|
+
|
|
217
|
+
it('handles default', () => {
|
|
218
|
+
const view = render(<View accessibilityState={{}} />);
|
|
219
|
+
|
|
220
|
+
expect(view.getByA11yState({ selected: false })).toBeTruthy();
|
|
221
|
+
expect(view.queryByA11yState({ selected: true })).toBeFalsy();
|
|
222
|
+
});
|
|
223
|
+
});
|
|
224
|
+
|
|
225
|
+
test('*ByA11yState on Pressable with "disabled" prop', () => {
|
|
226
|
+
const view = render(<Pressable disabled />);
|
|
227
|
+
expect(view.getByA11yState({ disabled: true })).toBeTruthy();
|
|
228
|
+
expect(view.queryByA11yState({ disabled: false })).toBeFalsy();
|
|
229
|
+
});
|
|
230
|
+
|
|
231
|
+
test('*ByA11yState on TouchableOpacity with "disabled" prop', () => {
|
|
232
|
+
const view = render(<TouchableOpacity disabled />);
|
|
233
|
+
expect(view.getByA11yState({ disabled: true })).toBeTruthy();
|
|
234
|
+
expect(view.queryByA11yState({ disabled: false })).toBeFalsy();
|
|
235
|
+
});
|
|
236
|
+
|
|
237
|
+
test('byA11yState queries support hidden option', () => {
|
|
238
|
+
const { getByA11yState, queryByA11yState } = render(
|
|
239
|
+
<Pressable
|
|
240
|
+
accessibilityState={{ expanded: false }}
|
|
241
|
+
style={{ display: 'none' }}
|
|
242
|
+
>
|
|
243
|
+
<Text>Hidden from accessibility</Text>
|
|
244
|
+
</Pressable>
|
|
245
|
+
);
|
|
246
|
+
|
|
247
|
+
expect(
|
|
248
|
+
getByA11yState({ expanded: false }, { includeHiddenElements: true })
|
|
249
|
+
).toBeTruthy();
|
|
250
|
+
|
|
251
|
+
expect(queryByA11yState({ expanded: false })).toBeFalsy();
|
|
252
|
+
expect(
|
|
253
|
+
queryByA11yState({ expanded: false }, { includeHiddenElements: false })
|
|
254
|
+
).toBeFalsy();
|
|
255
|
+
expect(() =>
|
|
256
|
+
getByA11yState({ expanded: false }, { includeHiddenElements: false })
|
|
257
|
+
).toThrowErrorMatchingInlineSnapshot(`
|
|
258
|
+
"Unable to find an element with expanded state: false
|
|
259
|
+
|
|
260
|
+
<View
|
|
261
|
+
accessibilityState={
|
|
262
|
+
{
|
|
263
|
+
"expanded": false,
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
style={
|
|
267
|
+
{
|
|
268
|
+
"display": "none",
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
>
|
|
272
|
+
<Text>
|
|
273
|
+
Hidden from accessibility
|
|
274
|
+
</Text>
|
|
275
|
+
</View>"
|
|
276
|
+
`);
|
|
277
|
+
});
|
|
278
|
+
|
|
279
|
+
test('*ByA11yState deprecation warnings', () => {
|
|
280
|
+
const mockCalls = (console.warn as ConsoleLogMock).mock.calls;
|
|
281
|
+
const view = render(<View accessibilityState={{ disabled: true }} />);
|
|
282
|
+
|
|
283
|
+
view.getByA11yState({ disabled: true });
|
|
284
|
+
expect(mockCalls[0][0]).toMatchInlineSnapshot(`
|
|
285
|
+
"getByA11yState(...) is deprecated and will be removed in the future.
|
|
286
|
+
|
|
287
|
+
Use getByRole(role, { disabled, selected, checked, busy, expanded }) query or expect(...).toHaveAccessibilityState(...) matcher from "@testing-library/jest-native" package instead."
|
|
288
|
+
`);
|
|
289
|
+
|
|
290
|
+
view.getAllByA11yState({ disabled: true });
|
|
291
|
+
expect(mockCalls[1][0]).toMatchInlineSnapshot(`
|
|
292
|
+
"getAllByA11yState(...) is deprecated and will be removed in the future.
|
|
293
|
+
|
|
294
|
+
Use getAllByRole(role, { disabled, selected, checked, busy, expanded }) query or expect(...).toHaveAccessibilityState(...) matcher from "@testing-library/jest-native" package instead."
|
|
295
|
+
`);
|
|
296
|
+
|
|
297
|
+
view.queryByA11yState({ disabled: true });
|
|
298
|
+
expect(mockCalls[2][0]).toMatchInlineSnapshot(`
|
|
299
|
+
"queryByA11yState(...) is deprecated and will be removed in the future.
|
|
300
|
+
|
|
301
|
+
Use queryByRole(role, { disabled, selected, checked, busy, expanded }) query or expect(...).toHaveAccessibilityState(...) matcher from "@testing-library/jest-native" package instead."
|
|
302
|
+
`);
|
|
303
|
+
|
|
304
|
+
view.queryAllByA11yState({ disabled: true });
|
|
305
|
+
expect(mockCalls[3][0]).toMatchInlineSnapshot(`
|
|
306
|
+
"queryAllByA11yState(...) is deprecated and will be removed in the future.
|
|
307
|
+
|
|
308
|
+
Use queryAllByRole(role, { disabled, selected, checked, busy, expanded }) query or expect(...).toHaveAccessibilityState(...) matcher from "@testing-library/jest-native" package instead."
|
|
309
|
+
`);
|
|
310
|
+
|
|
311
|
+
view.findByA11yState({ disabled: true });
|
|
312
|
+
expect(mockCalls[4][0]).toMatchInlineSnapshot(`
|
|
313
|
+
"findByA11yState(...) is deprecated and will be removed in the future.
|
|
314
|
+
|
|
315
|
+
Use findByRole(role, { disabled, selected, checked, busy, expanded }) query or expect(...).toHaveAccessibilityState(...) matcher from "@testing-library/jest-native" package instead."
|
|
316
|
+
`);
|
|
317
|
+
|
|
318
|
+
view.findAllByA11yState({ disabled: true });
|
|
319
|
+
expect(mockCalls[5][0]).toMatchInlineSnapshot(`
|
|
320
|
+
"findAllByA11yState(...) is deprecated and will be removed in the future.
|
|
321
|
+
|
|
322
|
+
Use findAllByRole(role, { disabled, selected, checked, busy, expanded }) query or expect(...).toHaveAccessibilityState(...) matcher from "@testing-library/jest-native" package instead."
|
|
323
|
+
`);
|
|
324
|
+
});
|
|
325
|
+
|
|
326
|
+
test('*ByAccessibilityState deprecation warnings', () => {
|
|
327
|
+
const mockCalls = (console.warn as ConsoleLogMock).mock.calls;
|
|
328
|
+
const view = render(<View accessibilityState={{ disabled: true }} />);
|
|
329
|
+
|
|
330
|
+
view.getByAccessibilityState({ disabled: true });
|
|
331
|
+
expect(mockCalls[0][0]).toMatchInlineSnapshot(`
|
|
332
|
+
"getByAccessibilityState(...) is deprecated and will be removed in the future.
|
|
333
|
+
|
|
334
|
+
Use getByRole(role, { disabled, selected, checked, busy, expanded }) query or expect(...).toHaveAccessibilityState(...) matcher from "@testing-library/jest-native" package instead."
|
|
335
|
+
`);
|
|
336
|
+
|
|
337
|
+
view.getAllByAccessibilityState({ disabled: true });
|
|
338
|
+
expect(mockCalls[1][0]).toMatchInlineSnapshot(`
|
|
339
|
+
"getAllByAccessibilityState(...) is deprecated and will be removed in the future.
|
|
340
|
+
|
|
341
|
+
Use getAllByRole(role, { disabled, selected, checked, busy, expanded }) query or expect(...).toHaveAccessibilityState(...) matcher from "@testing-library/jest-native" package instead."
|
|
342
|
+
`);
|
|
343
|
+
|
|
344
|
+
view.queryByAccessibilityState({ disabled: true });
|
|
345
|
+
expect(mockCalls[2][0]).toMatchInlineSnapshot(`
|
|
346
|
+
"queryByAccessibilityState(...) is deprecated and will be removed in the future.
|
|
347
|
+
|
|
348
|
+
Use queryByRole(role, { disabled, selected, checked, busy, expanded }) query or expect(...).toHaveAccessibilityState(...) matcher from "@testing-library/jest-native" package instead."
|
|
349
|
+
`);
|
|
350
|
+
|
|
351
|
+
view.queryAllByAccessibilityState({ disabled: true });
|
|
352
|
+
expect(mockCalls[3][0]).toMatchInlineSnapshot(`
|
|
353
|
+
"queryAllByAccessibilityState(...) is deprecated and will be removed in the future.
|
|
354
|
+
|
|
355
|
+
Use queryAllByRole(role, { disabled, selected, checked, busy, expanded }) query or expect(...).toHaveAccessibilityState(...) matcher from "@testing-library/jest-native" package instead."
|
|
356
|
+
`);
|
|
357
|
+
|
|
358
|
+
view.findByAccessibilityState({ disabled: true });
|
|
359
|
+
expect(mockCalls[4][0]).toMatchInlineSnapshot(`
|
|
360
|
+
"findByAccessibilityState(...) is deprecated and will be removed in the future.
|
|
361
|
+
|
|
362
|
+
Use findByRole(role, { disabled, selected, checked, busy, expanded }) query or expect(...).toHaveAccessibilityState(...) matcher from "@testing-library/jest-native" package instead."
|
|
363
|
+
`);
|
|
364
|
+
|
|
365
|
+
view.findAllByAccessibilityState({ disabled: true });
|
|
366
|
+
expect(mockCalls[5][0]).toMatchInlineSnapshot(`
|
|
367
|
+
"findAllByAccessibilityState(...) is deprecated and will be removed in the future.
|
|
368
|
+
|
|
369
|
+
Use findAllByRole(role, { disabled, selected, checked, busy, expanded }) query or expect(...).toHaveAccessibilityState(...) matcher from "@testing-library/jest-native" package instead."
|
|
370
|
+
`);
|
|
371
|
+
});
|
|
372
|
+
|
|
373
|
+
test('error message renders the element tree, preserving only helpful props', async () => {
|
|
374
|
+
const view = render(
|
|
375
|
+
<Text accessibilityState={{ checked: false }} onPress={() => null}>
|
|
376
|
+
Some text
|
|
377
|
+
</Text>
|
|
378
|
+
);
|
|
379
|
+
|
|
380
|
+
expect(() => view.getByA11yState({ checked: true }))
|
|
381
|
+
.toThrowErrorMatchingInlineSnapshot(`
|
|
382
|
+
"Unable to find an element with checked state: true
|
|
383
|
+
|
|
384
|
+
<Text
|
|
385
|
+
accessibilityState={
|
|
386
|
+
{
|
|
387
|
+
"checked": false,
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
>
|
|
391
|
+
Some text
|
|
392
|
+
</Text>"
|
|
393
|
+
`);
|
|
394
|
+
|
|
395
|
+
expect(() => view.getAllByA11yState({ checked: true }))
|
|
396
|
+
.toThrowErrorMatchingInlineSnapshot(`
|
|
397
|
+
"Unable to find an element with checked state: true
|
|
398
|
+
|
|
399
|
+
<Text
|
|
400
|
+
accessibilityState={
|
|
401
|
+
{
|
|
402
|
+
"checked": false,
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
>
|
|
406
|
+
Some text
|
|
407
|
+
</Text>"
|
|
408
|
+
`);
|
|
409
|
+
|
|
410
|
+
await expect(view.findByA11yState({ checked: true })).rejects
|
|
411
|
+
.toThrowErrorMatchingInlineSnapshot(`
|
|
412
|
+
"Unable to find an element with checked state: true
|
|
413
|
+
|
|
414
|
+
<Text
|
|
415
|
+
accessibilityState={
|
|
416
|
+
{
|
|
417
|
+
"checked": false,
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
>
|
|
421
|
+
Some text
|
|
422
|
+
</Text>"
|
|
423
|
+
`);
|
|
424
|
+
|
|
425
|
+
await expect(view.findAllByA11yState({ checked: true })).rejects
|
|
426
|
+
.toThrowErrorMatchingInlineSnapshot(`
|
|
427
|
+
"Unable to find an element with checked state: true
|
|
428
|
+
|
|
429
|
+
<Text
|
|
430
|
+
accessibilityState={
|
|
431
|
+
{
|
|
432
|
+
"checked": false,
|
|
433
|
+
}
|
|
434
|
+
}
|
|
435
|
+
>
|
|
436
|
+
Some text
|
|
437
|
+
</Text>"
|
|
438
|
+
`);
|
|
439
|
+
});
|