@testing-library/react-native 12.2.0 → 12.2.1
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/.eslintcache +1 -1
- package/.eslintignore +1 -0
- package/build/fireEvent.js +1 -1
- package/build/fireEvent.js.map +1 -1
- package/build/helpers/component-tree.d.ts +11 -5
- package/build/helpers/component-tree.js +5 -1
- package/build/helpers/component-tree.js.map +1 -1
- package/build/helpers/findAll.d.ts +2 -1
- package/build/helpers/findAll.js +2 -1
- package/build/helpers/findAll.js.map +1 -1
- package/build/helpers/host-component-names.d.ts +11 -2
- package/build/helpers/host-component-names.js +10 -0
- package/build/helpers/host-component-names.js.map +1 -1
- package/build/helpers/matchers/matchLabelText.js +1 -1
- package/build/helpers/matchers/matchLabelText.js.map +1 -1
- package/build/queries/a11yState.js +1 -1
- package/build/queries/a11yState.js.map +1 -1
- package/build/queries/a11yValue.js +1 -1
- package/build/queries/a11yValue.js.map +1 -1
- package/build/queries/displayValue.js +5 -6
- package/build/queries/displayValue.js.map +1 -1
- package/build/queries/hintText.js +1 -1
- package/build/queries/hintText.js.map +1 -1
- package/build/queries/labelText.js +1 -1
- package/build/queries/labelText.js.map +1 -1
- package/build/queries/placeholderText.js +3 -4
- package/build/queries/placeholderText.js.map +1 -1
- package/build/queries/role.js +1 -1
- package/build/queries/role.js.map +1 -1
- package/build/queries/testId.js +3 -3
- package/build/queries/testId.js.map +1 -1
- package/build/queries/text.js +1 -2
- package/build/queries/text.js.map +1 -1
- package/build/render.js.map +1 -1
- package/build/user-event/clear.d.ts +3 -0
- package/build/user-event/clear.js +41 -0
- package/build/user-event/clear.js.map +1 -0
- package/build/user-event/index.d.ts +1 -0
- package/build/user-event/index.js +2 -1
- package/build/user-event/index.js.map +1 -1
- package/build/user-event/press/press.js +1 -4
- package/build/user-event/press/press.js.map +1 -1
- package/build/user-event/setup/setup.d.ts +14 -2
- package/build/user-event/setup/setup.js +3 -1
- package/build/user-event/setup/setup.js.map +1 -1
- package/build/user-event/type/type.d.ts +2 -1
- package/build/user-event/type/type.js +8 -4
- package/build/user-event/type/type.js.map +1 -1
- package/build/user-event/utils/host-components.d.ts +2 -0
- package/build/user-event/utils/host-components.js +11 -0
- package/build/user-event/utils/host-components.js.map +1 -0
- package/build/user-event/utils/index.d.ts +1 -0
- package/build/user-event/utils/index.js +11 -0
- package/build/user-event/utils/index.js.map +1 -1
- package/build/user-event/utils/text-range.d.ts +0 -1
- package/build/user-event/utils/text-range.js +0 -11
- package/build/user-event/utils/text-range.js.map +1 -1
- package/examples/basic/.expo/README.md +4 -6
- package/examples/basic/.expo/settings.json +2 -0
- package/examples/basic/__tests__/App.test.tsx +30 -12
- package/examples/basic/package.json +1 -1
- package/examples/basic/yarn.lock +2095 -3474
- package/examples/react-navigation/yarn.lock +1657 -2249
- package/examples/redux/yarn.lock +1772 -5376
- package/experiments-app/.expo/packager-info.json +9 -0
- package/experiments-app/.expo/settings.json +1 -2
- package/experiments-app/package.json +7 -9
- package/experiments-app/src/MainScreen.tsx +1 -0
- package/experiments-app/src/experiments.ts +20 -2
- package/experiments-app/src/screens/FlatListEvents.tsx +57 -0
- package/experiments-app/src/screens/ScrollViewEvents.tsx +65 -0
- package/experiments-app/src/screens/SectionListEvents.tsx +91 -0
- package/experiments-app/src/screens/TextInputEventPropagation.tsx +5 -17
- package/experiments-app/src/screens/TextInputEvents.tsx +13 -25
- package/experiments-app/src/utils/helpers.ts +13 -3
- package/experiments-app/yarn.lock +901 -1105
- package/experiments-rtl/.babelrc +8 -0
- package/experiments-rtl/.eslintrc.json +3 -0
- package/experiments-rtl/.gitignore +35 -0
- package/experiments-rtl/README.md +34 -0
- package/experiments-rtl/jest-setup.js +1 -0
- package/experiments-rtl/jest.config.js +4 -0
- package/experiments-rtl/next.config.js +4 -0
- package/experiments-rtl/package.json +38 -0
- package/experiments-rtl/postcss.config.js +6 -0
- package/experiments-rtl/public/next.svg +1 -0
- package/experiments-rtl/public/vercel.svg +1 -0
- package/experiments-rtl/src/app/__tests__/click.test.tsx +31 -0
- package/experiments-rtl/src/app/__tests__/managed-text-input.test.tsx +51 -0
- package/experiments-rtl/src/app/globals.css +27 -0
- package/experiments-rtl/src/app/layout.tsx +22 -0
- package/experiments-rtl/src/app/page.tsx +113 -0
- package/experiments-rtl/tailwind.config.ts +20 -0
- package/experiments-rtl/tsconfig.json +28 -0
- package/experiments-rtl/yarn.lock +5418 -0
- package/package.json +4 -2
- package/src/fireEvent.ts +1 -1
- package/src/helpers/component-tree.ts +14 -9
- package/src/helpers/findAll.ts +6 -4
- package/src/helpers/host-component-names.tsx +15 -2
- package/src/helpers/matchers/matchLabelText.ts +0 -1
- package/src/queries/a11yState.ts +2 -6
- package/src/queries/a11yValue.ts +2 -6
- package/src/queries/displayValue.ts +7 -14
- package/src/queries/hintText.ts +2 -7
- package/src/queries/labelText.ts +1 -3
- package/src/queries/placeholderText.ts +6 -13
- package/src/queries/role.ts +1 -2
- package/src/queries/testId.ts +5 -10
- package/src/queries/text.ts +3 -6
- package/src/render.tsx +1 -1
- package/src/user-event/__tests__/__snapshots__/clear.test.tsx.snap +269 -0
- package/src/user-event/__tests__/clear.test.tsx +217 -0
- package/src/user-event/clear.ts +59 -0
- package/src/user-event/index.ts +1 -0
- package/src/user-event/press/press.ts +8 -14
- package/src/user-event/setup/setup.ts +17 -2
- package/src/user-event/type/__tests__/type-managed.test.tsx +0 -1
- package/src/user-event/type/__tests__/type.test.tsx +0 -1
- package/src/user-event/type/type.ts +16 -13
- package/src/user-event/utils/__tests__/wait.test.ts +0 -1
- package/src/user-event/utils/host-components.ts +6 -0
- package/src/user-event/utils/index.ts +1 -0
- package/src/user-event/utils/text-range.ts +0 -7
- package/website/docs/Queries.md +64 -59
- package/website/docs/UserEvent.md +48 -0
- package/build/helpers/filterNodeByType.d.ts +0 -3
- package/build/helpers/filterNodeByType.js +0 -9
- package/build/helpers/filterNodeByType.js.map +0 -1
- package/coverage/clover.xml +0 -1176
- package/coverage/coverage-final.json +0 -70
- package/coverage/lcov-report/base.css +0 -224
- package/coverage/lcov-report/block-navigation.js +0 -87
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/index.html +0 -266
- package/coverage/lcov-report/prettify.css +0 -1
- package/coverage/lcov-report/prettify.js +0 -2
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +0 -196
- package/coverage/lcov-report/src/act.ts.html +0 -343
- package/coverage/lcov-report/src/cleanup.ts.html +0 -130
- package/coverage/lcov-report/src/config.ts.html +0 -301
- package/coverage/lcov-report/src/fireEvent.ts.html +0 -559
- package/coverage/lcov-report/src/flushMicroTasks.ts.html +0 -124
- package/coverage/lcov-report/src/helpers/accessiblity.ts.html +0 -412
- package/coverage/lcov-report/src/helpers/component-tree.ts.html +0 -352
- package/coverage/lcov-report/src/helpers/debugDeep.ts.html +0 -166
- package/coverage/lcov-report/src/helpers/debugShallow.ts.html +0 -151
- package/coverage/lcov-report/src/helpers/deprecation.ts.html +0 -244
- package/coverage/lcov-report/src/helpers/errors.ts.html +0 -283
- package/coverage/lcov-report/src/helpers/filterNodeByType.ts.html +0 -106
- package/coverage/lcov-report/src/helpers/findAll.ts.html +0 -289
- package/coverage/lcov-report/src/helpers/format-default.ts.html +0 -301
- package/coverage/lcov-report/src/helpers/format.ts.html +0 -226
- package/coverage/lcov-report/src/helpers/getTextContent.ts.html +0 -145
- package/coverage/lcov-report/src/helpers/host-component-names.tsx.html +0 -286
- package/coverage/lcov-report/src/helpers/index.html +0 -326
- package/coverage/lcov-report/src/helpers/matchers/accessibilityState.ts.html +0 -229
- package/coverage/lcov-report/src/helpers/matchers/accessibilityValue.ts.html +0 -157
- package/coverage/lcov-report/src/helpers/matchers/index.html +0 -206
- package/coverage/lcov-report/src/helpers/matchers/matchArrayProp.ts.html +0 -148
- package/coverage/lcov-report/src/helpers/matchers/matchLabelText.ts.html +0 -238
- package/coverage/lcov-report/src/helpers/matchers/matchObjectProp.ts.html +0 -160
- package/coverage/lcov-report/src/helpers/matchers/matchStringProp.ts.html +0 -154
- package/coverage/lcov-report/src/helpers/matchers/matchTextContent.ts.html +0 -145
- package/coverage/lcov-report/src/helpers/query-name.ts.html +0 -97
- package/coverage/lcov-report/src/helpers/stringValidation.ts.html +0 -193
- package/coverage/lcov-report/src/helpers/timers.ts.html +0 -382
- package/coverage/lcov-report/src/index.html +0 -356
- package/coverage/lcov-report/src/index.ts.html +0 -184
- package/coverage/lcov-report/src/matches.ts.html +0 -232
- package/coverage/lcov-report/src/pure.ts.html +0 -157
- package/coverage/lcov-report/src/queries/a11yState.ts.html +0 -478
- package/coverage/lcov-report/src/queries/a11yValue.ts.html +0 -478
- package/coverage/lcov-report/src/queries/displayValue.ts.html +0 -319
- package/coverage/lcov-report/src/queries/hintText.ts.html +0 -421
- package/coverage/lcov-report/src/queries/index.html +0 -281
- package/coverage/lcov-report/src/queries/labelText.ts.html +0 -262
- package/coverage/lcov-report/src/queries/makeQueries.ts.html +0 -850
- package/coverage/lcov-report/src/queries/placeholderText.ts.html +0 -322
- package/coverage/lcov-report/src/queries/role.ts.html +0 -481
- package/coverage/lcov-report/src/queries/testId.ts.html +0 -298
- package/coverage/lcov-report/src/queries/text.ts.html +0 -283
- package/coverage/lcov-report/src/queries/unsafeProps.ts.html +0 -313
- package/coverage/lcov-report/src/queries/unsafeType.ts.html +0 -304
- package/coverage/lcov-report/src/react-versions.ts.html +0 -118
- package/coverage/lcov-report/src/render-act.ts.html +0 -142
- package/coverage/lcov-report/src/render.tsx.html +0 -592
- package/coverage/lcov-report/src/renderHook.tsx.html +0 -262
- package/coverage/lcov-report/src/screen.ts.html +0 -454
- package/coverage/lcov-report/src/shallow.ts.html +0 -139
- package/coverage/lcov-report/src/test-utils/events.ts.html +0 -145
- package/coverage/lcov-report/src/test-utils/index.html +0 -131
- package/coverage/lcov-report/src/test-utils/index.ts.html +0 -88
- package/coverage/lcov-report/src/user-event/event-builder/common.ts.html +0 -229
- package/coverage/lcov-report/src/user-event/event-builder/index.html +0 -146
- package/coverage/lcov-report/src/user-event/event-builder/index.ts.html +0 -106
- package/coverage/lcov-report/src/user-event/event-builder/test-input.ts.html +0 -343
- package/coverage/lcov-report/src/user-event/event-builder/text-input.ts.html +0 -343
- package/coverage/lcov-report/src/user-event/index.html +0 -116
- package/coverage/lcov-report/src/user-event/index.ts.html +0 -121
- package/coverage/lcov-report/src/user-event/press/index.html +0 -131
- package/coverage/lcov-report/src/user-event/press/index.ts.html +0 -88
- package/coverage/lcov-report/src/user-event/press/press.ts.html +0 -133
- package/coverage/lcov-report/src/user-event/setup/index.html +0 -131
- package/coverage/lcov-report/src/user-event/setup/index.ts.html +0 -91
- package/coverage/lcov-report/src/user-event/setup/setup.ts.html +0 -358
- package/coverage/lcov-report/src/user-event/type/index.html +0 -146
- package/coverage/lcov-report/src/user-event/type/index.ts.html +0 -88
- package/coverage/lcov-report/src/user-event/type/parseKeys.ts.html +0 -208
- package/coverage/lcov-report/src/user-event/type/type.ts.html +0 -484
- package/coverage/lcov-report/src/user-event/utils/content-size.ts.html +0 -160
- package/coverage/lcov-report/src/user-event/utils/dispatch-event.ts.html +0 -367
- package/coverage/lcov-report/src/user-event/utils/events.ts.html +0 -247
- package/coverage/lcov-report/src/user-event/utils/index.html +0 -176
- package/coverage/lcov-report/src/user-event/utils/index.ts.html +0 -97
- package/coverage/lcov-report/src/user-event/utils/text-range.ts.html +0 -118
- package/coverage/lcov-report/src/user-event/utils/wait.ts.html +0 -130
- package/coverage/lcov-report/src/waitFor.ts.html +0 -772
- package/coverage/lcov-report/src/waitForElementToBeRemoved.ts.html +0 -211
- package/coverage/lcov-report/src/within.ts.html +0 -175
- package/coverage/lcov.info +0 -2614
- package/examples/.DS_Store +0 -0
- package/examples/basic/.expo/devices.json +0 -3
- package/examples/basic/yarn-error.log +0 -8083
- package/examples/redux/yarn-error.log +0 -8083
- package/src/.DS_Store +0 -0
- package/src/__tests__/.DS_Store +0 -0
- package/src/helpers/filterNodeByType.ts +0 -7
- package/website/.DS_Store +0 -0
- package/website/.docusaurus/DONT-EDIT-THIS-FOLDER +0 -5
- package/website/.docusaurus/client-modules.js +0 -6
- package/website/.docusaurus/codeTranslations.json +0 -1
- package/website/.docusaurus/docusaurus-plugin-content-blog/default/blog-post-list-prop-default.json +0 -4
- package/website/.docusaurus/docusaurus-plugin-content-blog/default/plugin-route-context-module-100.json +0 -4
- package/website/.docusaurus/docusaurus-plugin-content-docs/default/plugin-route-context-module-100.json +0 -4
- package/website/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-api-md-c82.json +0 -27
- package/website/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-eslint-p-llugin-testing-library-md-d24.json +0 -27
- package/website/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-faq-md-ad8.json +0 -27
- package/website/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-getting-started-md-8a6.json +0 -23
- package/website/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-how-should-i-query-md-f2d.json +0 -27
- package/website/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-migration-v-11-md-add.json +0 -27
- package/website/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-migration-v-12-md-14f.json +0 -27
- package/website/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-migration-v-2-md-698.json +0 -27
- package/website/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-migration-v-7-md-6bb.json +0 -27
- package/website/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-migration-v-9-md-f69.json +0 -27
- package/website/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-queries-md-7ad.json +0 -27
- package/website/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-react-navigation-md-1bd.json +0 -27
- package/website/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-redux-integration-md-77b.json +0 -23
- package/website/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-testing-environment-md-1c6.json +0 -27
- package/website/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-troubleshooting-md-01d.json +0 -27
- package/website/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-understanding-act-md-aa9.json +0 -27
- package/website/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-user-event-md-501.json +0 -27
- package/website/.docusaurus/docusaurus-plugin-content-docs/default/version-current-metadata-prop-751.json +0 -268
- package/website/.docusaurus/docusaurus-plugin-content-docs/react-native-testing-library-docs-route-96e.json +0 -115
- package/website/.docusaurus/docusaurus-plugin-content-docs/site-docs-api-md-c82.json +0 -19
- package/website/.docusaurus/docusaurus-plugin-content-docs/site-docs-eslint-p-llugin-testing-library-md-d24.json +0 -19
- package/website/.docusaurus/docusaurus-plugin-content-docs/site-docs-faq-md-ad8.json +0 -19
- package/website/.docusaurus/docusaurus-plugin-content-docs/site-docs-getting-started-md-8a6.json +0 -15
- package/website/.docusaurus/docusaurus-plugin-content-docs/site-docs-how-should-i-query-md-f2d.json +0 -19
- package/website/.docusaurus/docusaurus-plugin-content-docs/site-docs-migration-v-11-md-add.json +0 -19
- package/website/.docusaurus/docusaurus-plugin-content-docs/site-docs-migration-v-2-md-698.json +0 -19
- package/website/.docusaurus/docusaurus-plugin-content-docs/site-docs-migration-v-7-md-6bb.json +0 -19
- package/website/.docusaurus/docusaurus-plugin-content-docs/site-docs-migration-v-9-md-f69.json +0 -19
- package/website/.docusaurus/docusaurus-plugin-content-docs/site-docs-queries-md-7ad.json +0 -19
- package/website/.docusaurus/docusaurus-plugin-content-docs/site-docs-react-navigation-md-1bd.json +0 -19
- package/website/.docusaurus/docusaurus-plugin-content-docs/site-docs-redux-integration-md-77b.json +0 -15
- package/website/.docusaurus/docusaurus-plugin-content-docs/site-docs-troubleshooting-md-01d.json +0 -19
- package/website/.docusaurus/docusaurus-plugin-content-docs/site-docs-understanding-act-md-aa9.json +0 -19
- package/website/.docusaurus/docusaurus-plugin-content-pages/default/plugin-route-context-module-100.json +0 -4
- package/website/.docusaurus/docusaurus-plugin-debug/default/docusaurus-debug-all-content-673.json +0 -623
- package/website/.docusaurus/docusaurus-plugin-debug/default/plugin-route-context-module-100.json +0 -4
- package/website/.docusaurus/docusaurus-theme-search-algolia/default/plugin-route-context-module-100.json +0 -4
- package/website/.docusaurus/docusaurus.config.js +0 -267
- package/website/.docusaurus/docusaurus.config.mjs +0 -365
- package/website/.docusaurus/globalData.json +0 -113
- package/website/.docusaurus/i18n.json +0 -17
- package/website/.docusaurus/registry.js +0 -35
- package/website/.docusaurus/routes.js +0 -162
- package/website/.docusaurus/routesChunkNames.json +0 -133
- package/website/.docusaurus/site-metadata.json +0 -36
- package/yarn-error.log +0 -10613
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@testing-library/react-native",
|
|
3
|
-
"version": "12.2.
|
|
3
|
+
"version": "12.2.1",
|
|
4
4
|
"description": "Simple and complete React Native testing utilities that encourage good testing practices.",
|
|
5
5
|
"main": "build/index.js",
|
|
6
6
|
"types": "build/index.d.ts",
|
|
@@ -97,7 +97,9 @@
|
|
|
97
97
|
],
|
|
98
98
|
"testPathIgnorePatterns": [
|
|
99
99
|
"timerUtils",
|
|
100
|
-
"examples/"
|
|
100
|
+
"examples/",
|
|
101
|
+
"experiments-app/",
|
|
102
|
+
"experiments-rtl/"
|
|
101
103
|
],
|
|
102
104
|
"testTimeout": 60000,
|
|
103
105
|
"transformIgnorePatterns": [
|
package/src/fireEvent.ts
CHANGED
|
@@ -7,9 +7,9 @@ import {
|
|
|
7
7
|
ScrollViewProps,
|
|
8
8
|
} from 'react-native';
|
|
9
9
|
import act from './act';
|
|
10
|
-
import { isPointerEventEnabled } from './helpers/pointer-events';
|
|
11
10
|
import { isHostElement } from './helpers/component-tree';
|
|
12
11
|
import { isHostTextInput } from './helpers/host-component-names';
|
|
12
|
+
import { isPointerEventEnabled } from './helpers/pointer-events';
|
|
13
13
|
|
|
14
14
|
type EventHandler = (...args: unknown[]) => unknown;
|
|
15
15
|
|
|
@@ -1,10 +1,17 @@
|
|
|
1
1
|
import { ReactTestInstance } from 'react-test-renderer';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* ReactTestInstance referring to host element.
|
|
5
|
+
*/
|
|
6
|
+
export type HostTestInstance = ReactTestInstance & { type: string };
|
|
7
|
+
|
|
3
8
|
/**
|
|
4
9
|
* Checks if the given element is a host element.
|
|
5
10
|
* @param element The element to check.
|
|
6
11
|
*/
|
|
7
|
-
export function isHostElement(
|
|
12
|
+
export function isHostElement(
|
|
13
|
+
element?: ReactTestInstance | null
|
|
14
|
+
): element is HostTestInstance {
|
|
8
15
|
return typeof element?.type === 'string';
|
|
9
16
|
}
|
|
10
17
|
|
|
@@ -14,7 +21,7 @@ export function isHostElement(element?: ReactTestInstance | null) {
|
|
|
14
21
|
*/
|
|
15
22
|
export function getHostParent(
|
|
16
23
|
element: ReactTestInstance | null
|
|
17
|
-
):
|
|
24
|
+
): HostTestInstance | null {
|
|
18
25
|
if (element == null) {
|
|
19
26
|
return null;
|
|
20
27
|
}
|
|
@@ -37,12 +44,12 @@ export function getHostParent(
|
|
|
37
44
|
*/
|
|
38
45
|
export function getHostChildren(
|
|
39
46
|
element: ReactTestInstance | null
|
|
40
|
-
):
|
|
47
|
+
): HostTestInstance[] {
|
|
41
48
|
if (element == null) {
|
|
42
49
|
return [];
|
|
43
50
|
}
|
|
44
51
|
|
|
45
|
-
const hostChildren:
|
|
52
|
+
const hostChildren: HostTestInstance[] = [];
|
|
46
53
|
|
|
47
54
|
element.children.forEach((child) => {
|
|
48
55
|
if (typeof child !== 'object') {
|
|
@@ -68,10 +75,8 @@ export function getHostChildren(
|
|
|
68
75
|
*/
|
|
69
76
|
export function getHostSelves(
|
|
70
77
|
element: ReactTestInstance | null
|
|
71
|
-
):
|
|
72
|
-
return
|
|
73
|
-
? [element]
|
|
74
|
-
: getHostChildren(element);
|
|
78
|
+
): HostTestInstance[] {
|
|
79
|
+
return isHostElement(element) ? [element] : getHostChildren(element);
|
|
75
80
|
}
|
|
76
81
|
|
|
77
82
|
/**
|
|
@@ -80,7 +85,7 @@ export function getHostSelves(
|
|
|
80
85
|
*/
|
|
81
86
|
export function getHostSiblings(
|
|
82
87
|
element: ReactTestInstance | null
|
|
83
|
-
):
|
|
88
|
+
): HostTestInstance[] {
|
|
84
89
|
const hostParent = getHostParent(element);
|
|
85
90
|
const hostSelves = getHostSelves(element);
|
|
86
91
|
return getHostChildren(hostParent).filter(
|
package/src/helpers/findAll.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { ReactTestInstance } from 'react-test-renderer';
|
|
2
2
|
import { getConfig } from '../config';
|
|
3
3
|
import { isHiddenFromAccessibility } from './accessiblity';
|
|
4
|
+
import { HostTestInstance, isHostElement } from './component-tree';
|
|
4
5
|
|
|
5
6
|
interface FindAllOptions {
|
|
6
7
|
/** Match elements hidden from accessibility */
|
|
@@ -17,7 +18,7 @@ export function findAll(
|
|
|
17
18
|
root: ReactTestInstance,
|
|
18
19
|
predicate: (element: ReactTestInstance) => boolean,
|
|
19
20
|
options?: FindAllOptions
|
|
20
|
-
) {
|
|
21
|
+
): HostTestInstance[] {
|
|
21
22
|
const results = findAllInternal(root, predicate, options);
|
|
22
23
|
|
|
23
24
|
const includeHiddenElements =
|
|
@@ -41,11 +42,11 @@ function findAllInternal(
|
|
|
41
42
|
root: ReactTestInstance,
|
|
42
43
|
predicate: (element: ReactTestInstance) => boolean,
|
|
43
44
|
options?: FindAllOptions
|
|
44
|
-
):
|
|
45
|
-
const results:
|
|
45
|
+
): HostTestInstance[] {
|
|
46
|
+
const results: HostTestInstance[] = [];
|
|
46
47
|
|
|
47
48
|
// Match descendants first but do not add them to results yet.
|
|
48
|
-
const matchingDescendants:
|
|
49
|
+
const matchingDescendants: HostTestInstance[] = [];
|
|
49
50
|
root.children.forEach((child) => {
|
|
50
51
|
if (typeof child === 'string') {
|
|
51
52
|
return;
|
|
@@ -56,6 +57,7 @@ function findAllInternal(
|
|
|
56
57
|
if (
|
|
57
58
|
// When matchDeepestOnly = true: add current element only if no descendants match
|
|
58
59
|
(!options?.matchDeepestOnly || matchingDescendants.length === 0) &&
|
|
60
|
+
isHostElement(root) &&
|
|
59
61
|
predicate(root)
|
|
60
62
|
) {
|
|
61
63
|
results.push(root);
|
|
@@ -3,6 +3,7 @@ import { ReactTestInstance } from 'react-test-renderer';
|
|
|
3
3
|
import { Switch, Text, TextInput, View } from 'react-native';
|
|
4
4
|
import { configureInternal, getConfig, HostComponentNames } from '../config';
|
|
5
5
|
import { renderWithAct } from '../render-act';
|
|
6
|
+
import { HostTestInstance } from './component-tree';
|
|
6
7
|
|
|
7
8
|
const userConfigErrorMessage = `There seems to be an issue with your configuration that prevents React Native Testing Library from working correctly.
|
|
8
9
|
Please check if you are using compatible versions of React Native and React Native Testing Library.`;
|
|
@@ -66,10 +67,22 @@ function getByTestId(instance: ReactTestInstance, testID: string) {
|
|
|
66
67
|
return nodes[0];
|
|
67
68
|
}
|
|
68
69
|
|
|
69
|
-
|
|
70
|
+
/**
|
|
71
|
+
* Checks if the given element is a host Text.
|
|
72
|
+
* @param element The element to check.
|
|
73
|
+
*/
|
|
74
|
+
export function isHostText(
|
|
75
|
+
element?: ReactTestInstance | null
|
|
76
|
+
): element is HostTestInstance {
|
|
70
77
|
return element?.type === getHostComponentNames().text;
|
|
71
78
|
}
|
|
72
79
|
|
|
73
|
-
|
|
80
|
+
/**
|
|
81
|
+
* Checks if the given element is a host TextInput.
|
|
82
|
+
* @param element The element to check.
|
|
83
|
+
*/
|
|
84
|
+
export function isHostTextInput(
|
|
85
|
+
element?: ReactTestInstance | null
|
|
86
|
+
): element is HostTestInstance {
|
|
74
87
|
return element?.type === getHostComponentNames().textInput;
|
|
75
88
|
}
|
package/src/queries/a11yState.ts
CHANGED
|
@@ -19,15 +19,11 @@ import { CommonQueryOptions } from './options';
|
|
|
19
19
|
|
|
20
20
|
const queryAllByA11yState = (
|
|
21
21
|
instance: ReactTestInstance
|
|
22
|
-
):
|
|
23
|
-
matcher: AccessibilityStateMatcher,
|
|
24
|
-
queryOptions?: CommonQueryOptions
|
|
25
|
-
) => Array<ReactTestInstance>) =>
|
|
22
|
+
): QueryAllByQuery<AccessibilityStateMatcher, CommonQueryOptions> =>
|
|
26
23
|
function queryAllByA11yStateFn(matcher, queryOptions) {
|
|
27
24
|
return findAll(
|
|
28
25
|
instance,
|
|
29
|
-
(node) =>
|
|
30
|
-
typeof node.type === 'string' && matchAccessibilityState(node, matcher),
|
|
26
|
+
(node) => matchAccessibilityState(node, matcher),
|
|
31
27
|
queryOptions
|
|
32
28
|
);
|
|
33
29
|
};
|
package/src/queries/a11yValue.ts
CHANGED
|
@@ -19,15 +19,11 @@ import { CommonQueryOptions } from './options';
|
|
|
19
19
|
|
|
20
20
|
const queryAllByA11yValue = (
|
|
21
21
|
instance: ReactTestInstance
|
|
22
|
-
):
|
|
23
|
-
value: AccessibilityValueMatcher,
|
|
24
|
-
queryOptions?: CommonQueryOptions
|
|
25
|
-
) => Array<ReactTestInstance>) =>
|
|
22
|
+
): QueryAllByQuery<AccessibilityValueMatcher, CommonQueryOptions> =>
|
|
26
23
|
function queryAllByA11yValueFn(value, queryOptions) {
|
|
27
24
|
return findAll(
|
|
28
25
|
instance,
|
|
29
|
-
(node) =>
|
|
30
|
-
typeof node.type === 'string' && matchAccessibilityValue(node, value),
|
|
26
|
+
(node) => matchAccessibilityValue(node, value),
|
|
31
27
|
queryOptions
|
|
32
28
|
);
|
|
33
29
|
};
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import type { ReactTestInstance } from 'react-test-renderer';
|
|
2
|
-
import { filterNodeByType } from '../helpers/filterNodeByType';
|
|
3
2
|
import { findAll } from '../helpers/findAll';
|
|
3
|
+
import { isHostTextInput } from '../helpers/host-component-names';
|
|
4
4
|
import { matches, TextMatch, TextMatchOptions } from '../matches';
|
|
5
|
-
import { getHostComponentNames } from '../helpers/host-component-names';
|
|
6
5
|
import { makeQueries } from './makeQueries';
|
|
7
6
|
import type {
|
|
8
7
|
FindAllByQuery,
|
|
@@ -16,32 +15,26 @@ import type { CommonQueryOptions } from './options';
|
|
|
16
15
|
|
|
17
16
|
type ByDisplayValueOptions = CommonQueryOptions & TextMatchOptions;
|
|
18
17
|
|
|
19
|
-
const
|
|
18
|
+
const matchDisplayValue = (
|
|
20
19
|
node: ReactTestInstance,
|
|
21
20
|
value: TextMatch,
|
|
22
21
|
options: TextMatchOptions = {}
|
|
23
22
|
) => {
|
|
24
23
|
const { exact, normalizer } = options;
|
|
25
|
-
const nodeValue =
|
|
26
|
-
node.props.value !== undefined ? node.props.value : node.props.defaultValue;
|
|
24
|
+
const nodeValue = node.props.value ?? node.props.defaultValue;
|
|
27
25
|
|
|
28
|
-
return (
|
|
29
|
-
filterNodeByType(node, getHostComponentNames().textInput) &&
|
|
30
|
-
matches(value, nodeValue, normalizer, exact)
|
|
31
|
-
);
|
|
26
|
+
return matches(value, nodeValue, normalizer, exact);
|
|
32
27
|
};
|
|
33
28
|
|
|
34
29
|
const queryAllByDisplayValue = (
|
|
35
30
|
instance: ReactTestInstance
|
|
36
|
-
):
|
|
37
|
-
displayValue: TextMatch,
|
|
38
|
-
queryOptions?: ByDisplayValueOptions
|
|
39
|
-
) => Array<ReactTestInstance>) =>
|
|
31
|
+
): QueryAllByQuery<TextMatch, ByDisplayValueOptions> =>
|
|
40
32
|
function queryAllByDisplayValueFn(displayValue, queryOptions) {
|
|
41
33
|
return findAll(
|
|
42
34
|
instance,
|
|
43
35
|
(node) =>
|
|
44
|
-
|
|
36
|
+
isHostTextInput(node) &&
|
|
37
|
+
matchDisplayValue(node, displayValue, queryOptions),
|
|
45
38
|
queryOptions
|
|
46
39
|
);
|
|
47
40
|
};
|
package/src/queries/hintText.ts
CHANGED
|
@@ -25,16 +25,11 @@ const getNodeByHintText = (
|
|
|
25
25
|
|
|
26
26
|
const queryAllByHintText = (
|
|
27
27
|
instance: ReactTestInstance
|
|
28
|
-
):
|
|
29
|
-
hint: TextMatch,
|
|
30
|
-
queryOptions?: ByHintTextOptions
|
|
31
|
-
) => Array<ReactTestInstance>) =>
|
|
28
|
+
): QueryAllByQuery<TextMatch, ByHintTextOptions> =>
|
|
32
29
|
function queryAllByA11yHintFn(hint, queryOptions) {
|
|
33
30
|
return findAll(
|
|
34
31
|
instance,
|
|
35
|
-
(node) =>
|
|
36
|
-
typeof node.type === 'string' &&
|
|
37
|
-
getNodeByHintText(node, hint, queryOptions),
|
|
32
|
+
(node) => getNodeByHintText(node, hint, queryOptions),
|
|
38
33
|
queryOptions
|
|
39
34
|
);
|
|
40
35
|
};
|
package/src/queries/labelText.ts
CHANGED
|
@@ -19,9 +19,7 @@ function queryAllByLabelText(instance: ReactTestInstance) {
|
|
|
19
19
|
return (text: TextMatch, queryOptions?: ByLabelTextOptions) => {
|
|
20
20
|
return findAll(
|
|
21
21
|
instance,
|
|
22
|
-
(node) =>
|
|
23
|
-
typeof node.type === 'string' &&
|
|
24
|
-
matchLabelText(instance, node, text, queryOptions),
|
|
22
|
+
(node) => matchLabelText(instance, node, text, queryOptions),
|
|
25
23
|
queryOptions
|
|
26
24
|
);
|
|
27
25
|
};
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import type { ReactTestInstance } from 'react-test-renderer';
|
|
2
2
|
import { findAll } from '../helpers/findAll';
|
|
3
3
|
import { matches, TextMatch, TextMatchOptions } from '../matches';
|
|
4
|
-
import {
|
|
5
|
-
import { getHostComponentNames } from '../helpers/host-component-names';
|
|
4
|
+
import { isHostTextInput } from '../helpers/host-component-names';
|
|
6
5
|
import { makeQueries } from './makeQueries';
|
|
7
6
|
import type {
|
|
8
7
|
FindAllByQuery,
|
|
@@ -16,30 +15,24 @@ import type { CommonQueryOptions } from './options';
|
|
|
16
15
|
|
|
17
16
|
type ByPlaceholderTextOptions = CommonQueryOptions & TextMatchOptions;
|
|
18
17
|
|
|
19
|
-
const
|
|
18
|
+
const matchPlaceholderText = (
|
|
20
19
|
node: ReactTestInstance,
|
|
21
20
|
placeholder: TextMatch,
|
|
22
21
|
options: TextMatchOptions = {}
|
|
23
22
|
) => {
|
|
24
23
|
const { exact, normalizer } = options;
|
|
25
|
-
|
|
26
|
-
return (
|
|
27
|
-
filterNodeByType(node, getHostComponentNames().textInput) &&
|
|
28
|
-
matches(placeholder, node.props.placeholder, normalizer, exact)
|
|
29
|
-
);
|
|
24
|
+
return matches(placeholder, node.props.placeholder, normalizer, exact);
|
|
30
25
|
};
|
|
31
26
|
|
|
32
27
|
const queryAllByPlaceholderText = (
|
|
33
28
|
instance: ReactTestInstance
|
|
34
|
-
):
|
|
35
|
-
placeholder: TextMatch,
|
|
36
|
-
queryOptions?: ByPlaceholderTextOptions
|
|
37
|
-
) => Array<ReactTestInstance>) =>
|
|
29
|
+
): QueryAllByQuery<TextMatch, ByPlaceholderTextOptions> =>
|
|
38
30
|
function queryAllByPlaceholderFn(placeholder, queryOptions) {
|
|
39
31
|
return findAll(
|
|
40
32
|
instance,
|
|
41
33
|
(node) =>
|
|
42
|
-
|
|
34
|
+
isHostTextInput(node) &&
|
|
35
|
+
matchPlaceholderText(node, placeholder, queryOptions),
|
|
43
36
|
queryOptions
|
|
44
37
|
);
|
|
45
38
|
};
|
package/src/queries/role.ts
CHANGED
|
@@ -61,13 +61,12 @@ const matchAccessibilityValueIfNeeded = (
|
|
|
61
61
|
|
|
62
62
|
const queryAllByRole = (
|
|
63
63
|
instance: ReactTestInstance
|
|
64
|
-
):
|
|
64
|
+
): QueryAllByQuery<TextMatch, ByRoleOptions> =>
|
|
65
65
|
function queryAllByRoleFn(role, options) {
|
|
66
66
|
return findAll(
|
|
67
67
|
instance,
|
|
68
68
|
(node) =>
|
|
69
69
|
// run the cheapest checks first, and early exit to avoid unneeded computations
|
|
70
|
-
typeof node.type === 'string' &&
|
|
71
70
|
isAccessibilityElement(node) &&
|
|
72
71
|
matchStringProp(node.props.accessibilityRole, role) &&
|
|
73
72
|
matchAccessibleStateIfNeeded(node, options) &&
|
package/src/queries/testId.ts
CHANGED
|
@@ -14,27 +14,22 @@ import type { CommonQueryOptions } from './options';
|
|
|
14
14
|
|
|
15
15
|
type ByTestIdOptions = CommonQueryOptions & TextMatchOptions;
|
|
16
16
|
|
|
17
|
-
const
|
|
17
|
+
const matchTestId = (
|
|
18
18
|
node: ReactTestInstance,
|
|
19
|
-
|
|
19
|
+
testId: TextMatch,
|
|
20
20
|
options: TextMatchOptions = {}
|
|
21
21
|
) => {
|
|
22
22
|
const { exact, normalizer } = options;
|
|
23
|
-
return matches(
|
|
23
|
+
return matches(testId, node.props.testID, normalizer, exact);
|
|
24
24
|
};
|
|
25
25
|
|
|
26
26
|
const queryAllByTestId = (
|
|
27
27
|
instance: ReactTestInstance
|
|
28
|
-
):
|
|
29
|
-
testId: TextMatch,
|
|
30
|
-
queryOptions?: ByTestIdOptions
|
|
31
|
-
) => Array<ReactTestInstance>) =>
|
|
28
|
+
): QueryAllByQuery<TextMatch, ByTestIdOptions> =>
|
|
32
29
|
function queryAllByTestIdFn(testId, queryOptions) {
|
|
33
30
|
return findAll(
|
|
34
31
|
instance,
|
|
35
|
-
(node) =>
|
|
36
|
-
typeof node.type === 'string' &&
|
|
37
|
-
getNodeByTestId(node, testId, queryOptions),
|
|
32
|
+
(node) => matchTestId(node, testId, queryOptions),
|
|
38
33
|
queryOptions
|
|
39
34
|
);
|
|
40
35
|
};
|
package/src/queries/text.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import type { ReactTestInstance } from 'react-test-renderer';
|
|
2
|
-
import { filterNodeByType } from '../helpers/filterNodeByType';
|
|
3
2
|
import { findAll } from '../helpers/findAll';
|
|
4
|
-
import {
|
|
3
|
+
import { isHostText } from '../helpers/host-component-names';
|
|
5
4
|
import { matchTextContent } from '../helpers/matchers/matchTextContent';
|
|
6
5
|
import { TextMatch, TextMatchOptions } from '../matches';
|
|
7
6
|
import { makeQueries } from './makeQueries';
|
|
@@ -19,13 +18,11 @@ type ByTextOptions = CommonQueryOptions & TextMatchOptions;
|
|
|
19
18
|
|
|
20
19
|
const queryAllByText = (
|
|
21
20
|
instance: ReactTestInstance
|
|
22
|
-
):
|
|
21
|
+
): QueryAllByQuery<TextMatch, ByTextOptions> =>
|
|
23
22
|
function queryAllByTextFn(text, options = {}) {
|
|
24
23
|
return findAll(
|
|
25
24
|
instance,
|
|
26
|
-
(node) =>
|
|
27
|
-
filterNodeByType(node, getHostComponentNames().text) &&
|
|
28
|
-
matchTextContent(node, text, options),
|
|
25
|
+
(node) => isHostText(node) && matchTextContent(node, text, options),
|
|
29
26
|
{
|
|
30
27
|
...options,
|
|
31
28
|
matchDeepestOnly: true,
|
package/src/render.tsx
CHANGED
|
@@ -117,7 +117,7 @@ function buildRenderResult(
|
|
|
117
117
|
rerender: update, // alias for `update`
|
|
118
118
|
toJSON: renderer.toJSON,
|
|
119
119
|
debug: debug(instance, renderer),
|
|
120
|
-
get root() {
|
|
120
|
+
get root(): ReactTestInstance {
|
|
121
121
|
return getHostChildren(instance)[0];
|
|
122
122
|
},
|
|
123
123
|
UNSAFE_root: instance,
|