@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
|
@@ -3,13 +3,8 @@ import { isHostTextInput } from '../../helpers/host-component-names';
|
|
|
3
3
|
import { EventBuilder } from '../event-builder';
|
|
4
4
|
import { ErrorWithStack } from '../../helpers/errors';
|
|
5
5
|
import { isPointerEventEnabled } from '../../helpers/pointer-events';
|
|
6
|
-
import { UserEventInstance } from '../setup';
|
|
7
|
-
import {
|
|
8
|
-
dispatchEvent,
|
|
9
|
-
wait,
|
|
10
|
-
getTextRange,
|
|
11
|
-
getTextContentSize,
|
|
12
|
-
} from '../utils';
|
|
6
|
+
import { UserEventConfig, UserEventInstance } from '../setup';
|
|
7
|
+
import { dispatchEvent, wait, getTextContentSize } from '../utils';
|
|
13
8
|
|
|
14
9
|
import { parseKeys } from './parseKeys';
|
|
15
10
|
|
|
@@ -54,12 +49,16 @@ export async function type(
|
|
|
54
49
|
const previousText = element.props.value ?? currentText;
|
|
55
50
|
currentText = applyKey(previousText, key);
|
|
56
51
|
|
|
57
|
-
await
|
|
58
|
-
|
|
52
|
+
await emitTypingEvents(
|
|
53
|
+
this.config,
|
|
54
|
+
element,
|
|
55
|
+
key,
|
|
56
|
+
currentText,
|
|
57
|
+
previousText
|
|
58
|
+
);
|
|
59
59
|
}
|
|
60
60
|
|
|
61
61
|
const finalText = element.props.value ?? currentText;
|
|
62
|
-
|
|
63
62
|
await wait(this.config);
|
|
64
63
|
|
|
65
64
|
if (options?.submitEditing) {
|
|
@@ -79,7 +78,8 @@ export async function type(
|
|
|
79
78
|
dispatchEvent(element, 'blur', EventBuilder.Common.blur());
|
|
80
79
|
}
|
|
81
80
|
|
|
82
|
-
async function emitTypingEvents(
|
|
81
|
+
export async function emitTypingEvents(
|
|
82
|
+
config: UserEventConfig,
|
|
83
83
|
element: ReactTestInstance,
|
|
84
84
|
key: string,
|
|
85
85
|
currentText: string,
|
|
@@ -87,6 +87,7 @@ async function emitTypingEvents(
|
|
|
87
87
|
) {
|
|
88
88
|
const isMultiline = element.props.multiline === true;
|
|
89
89
|
|
|
90
|
+
await wait(config);
|
|
90
91
|
dispatchEvent(element, 'keyPress', EventBuilder.TextInput.keyPress(key));
|
|
91
92
|
|
|
92
93
|
// According to the docs only multiline TextInput emits textInput event
|
|
@@ -100,10 +101,12 @@ async function emitTypingEvents(
|
|
|
100
101
|
}
|
|
101
102
|
|
|
102
103
|
dispatchEvent(element, 'change', EventBuilder.TextInput.change(currentText));
|
|
103
|
-
|
|
104
104
|
dispatchEvent(element, 'changeText', currentText);
|
|
105
105
|
|
|
106
|
-
const selectionRange =
|
|
106
|
+
const selectionRange = {
|
|
107
|
+
start: currentText.length,
|
|
108
|
+
end: currentText.length,
|
|
109
|
+
};
|
|
107
110
|
dispatchEvent(
|
|
108
111
|
element,
|
|
109
112
|
'selectionChange',
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { ReactTestInstance } from 'react-test-renderer';
|
|
2
|
+
import { isHostTextInput } from '../../helpers/host-component-names';
|
|
3
|
+
|
|
4
|
+
export function isEditableTextInput(element: ReactTestInstance) {
|
|
5
|
+
return isHostTextInput(element) && element.props.editable !== false;
|
|
6
|
+
}
|
package/website/docs/Queries.md
CHANGED
|
@@ -14,17 +14,14 @@ title: Queries
|
|
|
14
14
|
- [findAllBy](#findallby)
|
|
15
15
|
- [Queries](#queries)
|
|
16
16
|
- [Options](#options)
|
|
17
|
+
- [`ByRole`](#byrole)
|
|
17
18
|
- [`ByText`](#bytext)
|
|
18
19
|
- [`ByPlaceholderText`](#byplaceholdertext)
|
|
19
20
|
- [`ByDisplayValue`](#bydisplayvalue)
|
|
20
21
|
- [`ByTestId`](#bytestid)
|
|
21
22
|
- [`ByLabelText`](#bylabeltext)
|
|
22
23
|
- [`ByHintText`, `ByA11yHint`, `ByAccessibilityHint`](#byhinttext-bya11yhint-byaccessibilityhint)
|
|
23
|
-
- [`ByRole`](#byrole)
|
|
24
|
-
- [Options](#options-1)
|
|
25
24
|
- [`ByA11yState`, `ByAccessibilityState` (deprecated)](#bya11ystate-byaccessibilitystate-deprecated)
|
|
26
|
-
- [Default state for: `disabled`, `selected`, and `busy` keys](#default-state-for-disabled-selected-and-busy-keys)
|
|
27
|
-
- [Default state for: `checked` and `expanded` keys](#default-state-for-checked-and-expanded-keys)
|
|
28
25
|
- [`ByA11yValue`, `ByAccessibilityValue` (deprecated)](#bya11yvalue-byaccessibilityvalue-deprecated)
|
|
29
26
|
- [Common options](#common-options)
|
|
30
27
|
- [`includeHiddenElements` option](#includehiddenelements-option)
|
|
@@ -32,7 +29,6 @@ title: Queries
|
|
|
32
29
|
- [Examples](#examples)
|
|
33
30
|
- [Precision](#precision)
|
|
34
31
|
- [Normalization](#normalization)
|
|
35
|
-
- [Normalization Examples](#normalization-examples)
|
|
36
32
|
- [Unit testing helpers](#unit-testing-helpers)
|
|
37
33
|
- [`UNSAFE_ByType`](#unsafe_bytype)
|
|
38
34
|
- [`UNSAFE_ByProps`](#unsafe_byprops)
|
|
@@ -95,6 +91,69 @@ type ReactTestInstance = {
|
|
|
95
91
|
|
|
96
92
|
Usually query first argument can be a **string** or a **regex**. All queries take at least the [`hidden`](#hidden-option) option as an optionnal second argument and some queries accept more options which change string matching behaviour. See [TextMatch](#textmatch) for more info.
|
|
97
93
|
|
|
94
|
+
### `ByRole`
|
|
95
|
+
|
|
96
|
+
> getByRole, getAllByRole, queryByRole, queryAllByRole, findByRole, findAllByRole
|
|
97
|
+
|
|
98
|
+
```ts
|
|
99
|
+
getByRole(
|
|
100
|
+
role: TextMatch,
|
|
101
|
+
options?: {
|
|
102
|
+
name?: TextMatch
|
|
103
|
+
disabled?: boolean,
|
|
104
|
+
selected?: boolean,
|
|
105
|
+
checked?: boolean | 'mixed',
|
|
106
|
+
busy?: boolean,
|
|
107
|
+
expanded?: boolean,
|
|
108
|
+
value: {
|
|
109
|
+
min?: number;
|
|
110
|
+
max?: number;
|
|
111
|
+
now?: number;
|
|
112
|
+
text?: TextMatch;
|
|
113
|
+
},
|
|
114
|
+
includeHiddenElements?: boolean;
|
|
115
|
+
}
|
|
116
|
+
): ReactTestInstance;
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
Returns a `ReactTestInstance` with matching `accessibilityRole` prop.
|
|
120
|
+
|
|
121
|
+
:::info
|
|
122
|
+
In order for `*ByRole` queries to match an element it needs to be considered an accessibility element:
|
|
123
|
+
1. `Text`, `TextInput` and `Switch` host elements are these by default.
|
|
124
|
+
2. `View` host elements need an explicit [`accessible`](https://reactnative.dev/docs/accessibility#accessible) prop set to `true`
|
|
125
|
+
3. Some React Native composite components like `Pressable` & `TouchableOpacity` render host `View` element with `accessible` prop already set.
|
|
126
|
+
:::
|
|
127
|
+
|
|
128
|
+
```jsx
|
|
129
|
+
import { render, screen } from '@testing-library/react-native';
|
|
130
|
+
|
|
131
|
+
render(
|
|
132
|
+
<Pressable accessibilityRole="button" disabled>
|
|
133
|
+
<Text>Hello</Text>
|
|
134
|
+
</Pressable>
|
|
135
|
+
);
|
|
136
|
+
const element = screen.getByRole('button');
|
|
137
|
+
const element2 = screen.getByRole('button', { name: 'Hello' });
|
|
138
|
+
const element3 = screen.getByRole('button', { name: 'Hello', disabled: true });
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
#### Options
|
|
142
|
+
|
|
143
|
+
`name`: Finds an element with given `accessibilityRole` and an accessible name (equivalent to `byText` or `byLabelText` query).
|
|
144
|
+
|
|
145
|
+
`disabled`: You can filter elements by their disabled state. The possible values are `true` or `false`. Querying `disabled: false` will also match elements with `disabled: undefined` (see the [wiki](https://github.com/callstack/react-native-testing-library/wiki/Accessibility:-State) for more details). See [React Native's accessibilityState](https://reactnative.dev/docs/accessibility#accessibilitystate) docs to learn more about the `disabled` state.
|
|
146
|
+
|
|
147
|
+
`selected`: You can filter elements by their selected state. The possible values are `true` or `false`. Querying `selected: false` will also match elements with `selected: undefined` (see the [wiki](https://github.com/callstack/react-native-testing-library/wiki/Accessibility:-State) for more details). See [React Native's accessibilityState](https://reactnative.dev/docs/accessibility#accessibilitystate) docs to learn more about the `selected` state.
|
|
148
|
+
|
|
149
|
+
`checked`: You can filter elements by their checked state. The possible values are `true`, `false`, or `"mixed"`. See [React Native's accessibilityState](https://reactnative.dev/docs/accessibility#accessibilitystate) docs to learn more about the `checked` state.
|
|
150
|
+
|
|
151
|
+
`busy`: You can filter elements by their busy state. The possible values are `true` or `false`. Querying `busy: false` will also match elements with `busy: undefined` (see the [wiki](https://github.com/callstack/react-native-testing-library/wiki/Accessibility:-State) for more details). See [React Native's accessibilityState](https://reactnative.dev/docs/accessibility#accessibilitystate) docs to learn more about the `busy` state.
|
|
152
|
+
|
|
153
|
+
`expanded`: You can filter elements by their expanded state. The possible values are `true` or `false`. See [React Native's accessibilityState](https://reactnative.dev/docs/accessibility#accessibilitystate) docs to learn more about the `expanded` state.
|
|
154
|
+
|
|
155
|
+
`value`: Filter elements by their accessibility, available value entries include numeric `min`, `max` & `now`, as well as string or regex `text` key. See React Native [accessibilityValue](https://reactnative.dev/docs/accessibility#accessibilityvalue) docs to learn more about this prop.
|
|
156
|
+
|
|
98
157
|
### `ByText`
|
|
99
158
|
|
|
100
159
|
> getByText, getAllByText, queryByText, queryAllByText, findByText, findAllByText
|
|
@@ -253,61 +312,7 @@ const element = screen.getByHintText('Plays a song');
|
|
|
253
312
|
Please consult [Apple guidelines on how `accessibilityHint` should be used](https://developer.apple.com/documentation/objectivec/nsobject/1615093-accessibilityhint).
|
|
254
313
|
:::
|
|
255
314
|
|
|
256
|
-
### `ByRole`
|
|
257
|
-
|
|
258
|
-
> getByRole, getAllByRole, queryByRole, queryAllByRole, findByRole, findAllByRole
|
|
259
|
-
|
|
260
|
-
```ts
|
|
261
|
-
getByRole(
|
|
262
|
-
role: TextMatch,
|
|
263
|
-
options?: {
|
|
264
|
-
name?: TextMatch
|
|
265
|
-
disabled?: boolean,
|
|
266
|
-
selected?: boolean,
|
|
267
|
-
checked?: boolean | 'mixed',
|
|
268
|
-
busy?: boolean,
|
|
269
|
-
expanded?: boolean,
|
|
270
|
-
value: {
|
|
271
|
-
min?: number;
|
|
272
|
-
max?: number;
|
|
273
|
-
now?: number;
|
|
274
|
-
text?: TextMatch;
|
|
275
|
-
},
|
|
276
|
-
includeHiddenElements?: boolean;
|
|
277
|
-
}
|
|
278
|
-
): ReactTestInstance;
|
|
279
|
-
```
|
|
280
|
-
|
|
281
|
-
Returns a `ReactTestInstance` with matching `accessibilityRole` prop.
|
|
282
315
|
|
|
283
|
-
```jsx
|
|
284
|
-
import { render, screen } from '@testing-library/react-native';
|
|
285
|
-
|
|
286
|
-
render(
|
|
287
|
-
<Pressable accessibilityRole="button" disabled>
|
|
288
|
-
<Text>Hello</Text>
|
|
289
|
-
</Pressable>
|
|
290
|
-
);
|
|
291
|
-
const element = screen.getByRole('button');
|
|
292
|
-
const element2 = screen.getByRole('button', { name: 'Hello' });
|
|
293
|
-
const element3 = screen.getByRole('button', { name: 'Hello', disabled: true });
|
|
294
|
-
```
|
|
295
|
-
|
|
296
|
-
#### Options
|
|
297
|
-
|
|
298
|
-
`name`: Finds an element with given `accessibilityRole` and an accessible name (equivalent to `byText` or `byLabelText` query).
|
|
299
|
-
|
|
300
|
-
`disabled`: You can filter elements by their disabled state. The possible values are `true` or `false`. Querying `disabled: false` will also match elements with `disabled: undefined` (see the [wiki](https://github.com/callstack/react-native-testing-library/wiki/Accessibility:-State) for more details). See [React Native's accessibilityState](https://reactnative.dev/docs/accessibility#accessibilitystate) docs to learn more about the `disabled` state.
|
|
301
|
-
|
|
302
|
-
`selected`: You can filter elements by their selected state. The possible values are `true` or `false`. Querying `selected: false` will also match elements with `selected: undefined` (see the [wiki](https://github.com/callstack/react-native-testing-library/wiki/Accessibility:-State) for more details). See [React Native's accessibilityState](https://reactnative.dev/docs/accessibility#accessibilitystate) docs to learn more about the `selected` state.
|
|
303
|
-
|
|
304
|
-
`checked`: You can filter elements by their checked state. The possible values are `true`, `false`, or `"mixed"`. See [React Native's accessibilityState](https://reactnative.dev/docs/accessibility#accessibilitystate) docs to learn more about the `checked` state.
|
|
305
|
-
|
|
306
|
-
`busy`: You can filter elements by their busy state. The possible values are `true` or `false`. Querying `busy: false` will also match elements with `busy: undefined` (see the [wiki](https://github.com/callstack/react-native-testing-library/wiki/Accessibility:-State) for more details). See [React Native's accessibilityState](https://reactnative.dev/docs/accessibility#accessibilitystate) docs to learn more about the `busy` state.
|
|
307
|
-
|
|
308
|
-
`expanded`: You can filter elements by their expanded state. The possible values are `true` or `false`. See [React Native's accessibilityState](https://reactnative.dev/docs/accessibility#accessibilitystate) docs to learn more about the `expanded` state.
|
|
309
|
-
|
|
310
|
-
`value`: Filter elements by their accessibility, available value entries include numeric `min`, `max` & `now`, as well as string or regex `text` key. See React Native [accessibilityValue](https://reactnative.dev/docs/accessibility#accessibilityvalue) docs to learn more about this prop.
|
|
311
316
|
|
|
312
317
|
### `ByA11yState`, `ByAccessibilityState` (deprecated)
|
|
313
318
|
|
|
@@ -14,6 +14,8 @@ title: User Event
|
|
|
14
14
|
- [`type()`](#type)
|
|
15
15
|
- [Options](#options-2)
|
|
16
16
|
- [Sequence of events](#sequence-of-events)
|
|
17
|
+
- [`clear()`](#clear)
|
|
18
|
+
- [Sequence of events](#sequence-of-events-1)
|
|
17
19
|
|
|
18
20
|
:::caution
|
|
19
21
|
User Event API is in beta stage.
|
|
@@ -108,6 +110,10 @@ This helper simulates user focusing on `TextInput` element, typing `text` one ch
|
|
|
108
110
|
|
|
109
111
|
This function supports only host `TextInput` elements. Passing other element type will result in throwing error.
|
|
110
112
|
|
|
113
|
+
:::note
|
|
114
|
+
This function will add text to the text already present in the text input (as specified by `value` or `defaultValue` props). In order to replace existing text, use [`clear()`](#clear) helper first.
|
|
115
|
+
:::
|
|
116
|
+
|
|
111
117
|
### Options
|
|
112
118
|
- `skipPress` - if true, `pressIn` and `pressOut` events will not be triggered.
|
|
113
119
|
- `submitEditing` - if true, `submitEditing` event will be triggered after typing the text.
|
|
@@ -141,3 +147,45 @@ The `textInput` event is sent only for mutliline text inputs.
|
|
|
141
147
|
|
|
142
148
|
The `submitEditing` event is skipped by default. It can sent by setting `submitEditing: true` option.
|
|
143
149
|
|
|
150
|
+
## `clear()`
|
|
151
|
+
|
|
152
|
+
```ts
|
|
153
|
+
clear(
|
|
154
|
+
element: ReactTestInstance,
|
|
155
|
+
}
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
Example
|
|
159
|
+
```ts
|
|
160
|
+
const user = userEvent.setup();
|
|
161
|
+
await user.clear(textInput);
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
This helper simulates user clearing content of `TextInput` element.
|
|
165
|
+
|
|
166
|
+
This function supports only host `TextInput` elements. Passing other element type will result in throwing error.
|
|
167
|
+
|
|
168
|
+
### Sequence of events
|
|
169
|
+
|
|
170
|
+
The sequence of events depends on `multiline` prop, as well as passed options.
|
|
171
|
+
|
|
172
|
+
Events will not be emitted if `editable` prop is set to `false`.
|
|
173
|
+
|
|
174
|
+
**Entering the element**:
|
|
175
|
+
- `focus`
|
|
176
|
+
|
|
177
|
+
**Selecting all content**:
|
|
178
|
+
- `selectionChange`
|
|
179
|
+
|
|
180
|
+
**Pressing backspace**:
|
|
181
|
+
- `keyPress`
|
|
182
|
+
- `textInput` (optional)
|
|
183
|
+
- `change`
|
|
184
|
+
- `changeText`
|
|
185
|
+
- `selectionChange`
|
|
186
|
+
|
|
187
|
+
The `textInput` event is sent only for mutliline text inputs.
|
|
188
|
+
|
|
189
|
+
**Leaving the element**:
|
|
190
|
+
- `endEditing`
|
|
191
|
+
- `blur`
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.filterNodeByType = void 0;
|
|
7
|
-
const filterNodeByType = (node, type) => node.type === type;
|
|
8
|
-
exports.filterNodeByType = filterNodeByType;
|
|
9
|
-
//# sourceMappingURL=filterNodeByType.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"filterNodeByType.js","names":["filterNodeByType","node","type","exports"],"sources":["../../src/helpers/filterNodeByType.ts"],"sourcesContent":["import type { ReactTestInstance } from 'react-test-renderer';\nimport * as React from 'react';\n\nexport const filterNodeByType = (\n node: ReactTestInstance | React.ReactElement,\n type: React.ElementType | string\n) => node.type === type;\n"],"mappings":";;;;;;AAGO,MAAMA,gBAAgB,GAAGA,CAC9BC,IAA4C,EAC5CC,IAAgC,KAC7BD,IAAI,CAACC,IAAI,KAAKA,IAAI;AAACC,OAAA,CAAAH,gBAAA,GAAAA,gBAAA"}
|