@testing-library/react-native 12.2.0 → 12.2.2

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.
Files changed (486) hide show
  1. package/build/fireEvent.js +1 -1
  2. package/build/fireEvent.js.map +1 -1
  3. package/build/helpers/component-tree.d.ts +11 -5
  4. package/build/helpers/component-tree.js +5 -1
  5. package/build/helpers/component-tree.js.map +1 -1
  6. package/build/helpers/findAll.d.ts +2 -1
  7. package/build/helpers/findAll.js +2 -1
  8. package/build/helpers/findAll.js.map +1 -1
  9. package/build/helpers/host-component-names.d.ts +11 -2
  10. package/build/helpers/host-component-names.js +10 -0
  11. package/build/helpers/host-component-names.js.map +1 -1
  12. package/build/helpers/matchers/matchLabelText.js +1 -1
  13. package/build/helpers/matchers/matchLabelText.js.map +1 -1
  14. package/build/queries/a11yState.js +1 -1
  15. package/build/queries/a11yState.js.map +1 -1
  16. package/build/queries/a11yValue.js +1 -1
  17. package/build/queries/a11yValue.js.map +1 -1
  18. package/build/queries/displayValue.js +5 -6
  19. package/build/queries/displayValue.js.map +1 -1
  20. package/build/queries/hintText.js +1 -1
  21. package/build/queries/hintText.js.map +1 -1
  22. package/build/queries/labelText.js +1 -1
  23. package/build/queries/labelText.js.map +1 -1
  24. package/build/queries/placeholderText.js +3 -4
  25. package/build/queries/placeholderText.js.map +1 -1
  26. package/build/queries/role.js +1 -1
  27. package/build/queries/role.js.map +1 -1
  28. package/build/queries/testId.js +3 -3
  29. package/build/queries/testId.js.map +1 -1
  30. package/build/queries/text.js +1 -2
  31. package/build/queries/text.js.map +1 -1
  32. package/build/render.js.map +1 -1
  33. package/build/user-event/clear.d.ts +3 -0
  34. package/build/user-event/clear.js +41 -0
  35. package/build/user-event/clear.js.map +1 -0
  36. package/build/user-event/index.d.ts +1 -0
  37. package/build/user-event/index.js +2 -1
  38. package/build/user-event/index.js.map +1 -1
  39. package/build/user-event/press/press.js +1 -4
  40. package/build/user-event/press/press.js.map +1 -1
  41. package/build/user-event/setup/setup.d.ts +14 -2
  42. package/build/user-event/setup/setup.js +3 -1
  43. package/build/user-event/setup/setup.js.map +1 -1
  44. package/build/user-event/type/type.d.ts +2 -1
  45. package/build/user-event/type/type.js +8 -4
  46. package/build/user-event/type/type.js.map +1 -1
  47. package/build/user-event/utils/host-components.d.ts +2 -0
  48. package/build/user-event/utils/host-components.js +11 -0
  49. package/build/user-event/utils/host-components.js.map +1 -0
  50. package/build/user-event/utils/index.d.ts +1 -0
  51. package/build/user-event/utils/index.js +11 -0
  52. package/build/user-event/utils/index.js.map +1 -1
  53. package/build/user-event/utils/text-range.d.ts +0 -1
  54. package/build/user-event/utils/text-range.js +0 -11
  55. package/build/user-event/utils/text-range.js.map +1 -1
  56. package/package.json +5 -4
  57. package/.DS_Store +0 -0
  58. package/.codecov.yml +0 -9
  59. package/.eslintcache +0 -1
  60. package/.eslintignore +0 -2
  61. package/.eslintrc +0 -19
  62. package/.flowconfig +0 -63
  63. package/.github/ISSUE_TEMPLATE/bug_report.md +0 -38
  64. package/.github/ISSUE_TEMPLATE/feature_request.md +0 -14
  65. package/.github/ISSUE_TEMPLATE/question.md +0 -9
  66. package/.github/PULL_REQUEST_TEMPLATE.md +0 -10
  67. package/.github/actions/setup-deps/action.yml +0 -22
  68. package/.github/actions/setup-website-deps/action.yml +0 -22
  69. package/.github/dependabot.yml +0 -10
  70. package/.github/workflows/deploy-website.yml +0 -36
  71. package/.github/workflows/example-apps.yml +0 -25
  72. package/.github/workflows/main.yml +0 -103
  73. package/.gitignore +0 -11
  74. package/.prettierrc.js +0 -5
  75. package/CODE_OF_CONDUCT.md +0 -73
  76. package/CONTRIBUTING.md +0 -64
  77. package/babel.config.js +0 -22
  78. package/build/helpers/filterNodeByType.d.ts +0 -3
  79. package/build/helpers/filterNodeByType.js +0 -9
  80. package/build/helpers/filterNodeByType.js.map +0 -1
  81. package/coverage/clover.xml +0 -1176
  82. package/coverage/coverage-final.json +0 -70
  83. package/coverage/lcov-report/base.css +0 -224
  84. package/coverage/lcov-report/block-navigation.js +0 -87
  85. package/coverage/lcov-report/favicon.png +0 -0
  86. package/coverage/lcov-report/index.html +0 -266
  87. package/coverage/lcov-report/prettify.css +0 -1
  88. package/coverage/lcov-report/prettify.js +0 -2
  89. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  90. package/coverage/lcov-report/sorter.js +0 -196
  91. package/coverage/lcov-report/src/act.ts.html +0 -343
  92. package/coverage/lcov-report/src/cleanup.ts.html +0 -130
  93. package/coverage/lcov-report/src/config.ts.html +0 -301
  94. package/coverage/lcov-report/src/fireEvent.ts.html +0 -559
  95. package/coverage/lcov-report/src/flushMicroTasks.ts.html +0 -124
  96. package/coverage/lcov-report/src/helpers/accessiblity.ts.html +0 -412
  97. package/coverage/lcov-report/src/helpers/component-tree.ts.html +0 -352
  98. package/coverage/lcov-report/src/helpers/debugDeep.ts.html +0 -166
  99. package/coverage/lcov-report/src/helpers/debugShallow.ts.html +0 -151
  100. package/coverage/lcov-report/src/helpers/deprecation.ts.html +0 -244
  101. package/coverage/lcov-report/src/helpers/errors.ts.html +0 -283
  102. package/coverage/lcov-report/src/helpers/filterNodeByType.ts.html +0 -106
  103. package/coverage/lcov-report/src/helpers/findAll.ts.html +0 -289
  104. package/coverage/lcov-report/src/helpers/format-default.ts.html +0 -301
  105. package/coverage/lcov-report/src/helpers/format.ts.html +0 -226
  106. package/coverage/lcov-report/src/helpers/getTextContent.ts.html +0 -145
  107. package/coverage/lcov-report/src/helpers/host-component-names.tsx.html +0 -286
  108. package/coverage/lcov-report/src/helpers/index.html +0 -326
  109. package/coverage/lcov-report/src/helpers/matchers/accessibilityState.ts.html +0 -229
  110. package/coverage/lcov-report/src/helpers/matchers/accessibilityValue.ts.html +0 -157
  111. package/coverage/lcov-report/src/helpers/matchers/index.html +0 -206
  112. package/coverage/lcov-report/src/helpers/matchers/matchArrayProp.ts.html +0 -148
  113. package/coverage/lcov-report/src/helpers/matchers/matchLabelText.ts.html +0 -238
  114. package/coverage/lcov-report/src/helpers/matchers/matchObjectProp.ts.html +0 -160
  115. package/coverage/lcov-report/src/helpers/matchers/matchStringProp.ts.html +0 -154
  116. package/coverage/lcov-report/src/helpers/matchers/matchTextContent.ts.html +0 -145
  117. package/coverage/lcov-report/src/helpers/query-name.ts.html +0 -97
  118. package/coverage/lcov-report/src/helpers/stringValidation.ts.html +0 -193
  119. package/coverage/lcov-report/src/helpers/timers.ts.html +0 -382
  120. package/coverage/lcov-report/src/index.html +0 -356
  121. package/coverage/lcov-report/src/index.ts.html +0 -184
  122. package/coverage/lcov-report/src/matches.ts.html +0 -232
  123. package/coverage/lcov-report/src/pure.ts.html +0 -157
  124. package/coverage/lcov-report/src/queries/a11yState.ts.html +0 -478
  125. package/coverage/lcov-report/src/queries/a11yValue.ts.html +0 -478
  126. package/coverage/lcov-report/src/queries/displayValue.ts.html +0 -319
  127. package/coverage/lcov-report/src/queries/hintText.ts.html +0 -421
  128. package/coverage/lcov-report/src/queries/index.html +0 -281
  129. package/coverage/lcov-report/src/queries/labelText.ts.html +0 -262
  130. package/coverage/lcov-report/src/queries/makeQueries.ts.html +0 -850
  131. package/coverage/lcov-report/src/queries/placeholderText.ts.html +0 -322
  132. package/coverage/lcov-report/src/queries/role.ts.html +0 -481
  133. package/coverage/lcov-report/src/queries/testId.ts.html +0 -298
  134. package/coverage/lcov-report/src/queries/text.ts.html +0 -283
  135. package/coverage/lcov-report/src/queries/unsafeProps.ts.html +0 -313
  136. package/coverage/lcov-report/src/queries/unsafeType.ts.html +0 -304
  137. package/coverage/lcov-report/src/react-versions.ts.html +0 -118
  138. package/coverage/lcov-report/src/render-act.ts.html +0 -142
  139. package/coverage/lcov-report/src/render.tsx.html +0 -592
  140. package/coverage/lcov-report/src/renderHook.tsx.html +0 -262
  141. package/coverage/lcov-report/src/screen.ts.html +0 -454
  142. package/coverage/lcov-report/src/shallow.ts.html +0 -139
  143. package/coverage/lcov-report/src/test-utils/events.ts.html +0 -145
  144. package/coverage/lcov-report/src/test-utils/index.html +0 -131
  145. package/coverage/lcov-report/src/test-utils/index.ts.html +0 -88
  146. package/coverage/lcov-report/src/user-event/event-builder/common.ts.html +0 -229
  147. package/coverage/lcov-report/src/user-event/event-builder/index.html +0 -146
  148. package/coverage/lcov-report/src/user-event/event-builder/index.ts.html +0 -106
  149. package/coverage/lcov-report/src/user-event/event-builder/test-input.ts.html +0 -343
  150. package/coverage/lcov-report/src/user-event/event-builder/text-input.ts.html +0 -343
  151. package/coverage/lcov-report/src/user-event/index.html +0 -116
  152. package/coverage/lcov-report/src/user-event/index.ts.html +0 -121
  153. package/coverage/lcov-report/src/user-event/press/index.html +0 -131
  154. package/coverage/lcov-report/src/user-event/press/index.ts.html +0 -88
  155. package/coverage/lcov-report/src/user-event/press/press.ts.html +0 -133
  156. package/coverage/lcov-report/src/user-event/setup/index.html +0 -131
  157. package/coverage/lcov-report/src/user-event/setup/index.ts.html +0 -91
  158. package/coverage/lcov-report/src/user-event/setup/setup.ts.html +0 -358
  159. package/coverage/lcov-report/src/user-event/type/index.html +0 -146
  160. package/coverage/lcov-report/src/user-event/type/index.ts.html +0 -88
  161. package/coverage/lcov-report/src/user-event/type/parseKeys.ts.html +0 -208
  162. package/coverage/lcov-report/src/user-event/type/type.ts.html +0 -484
  163. package/coverage/lcov-report/src/user-event/utils/content-size.ts.html +0 -160
  164. package/coverage/lcov-report/src/user-event/utils/dispatch-event.ts.html +0 -367
  165. package/coverage/lcov-report/src/user-event/utils/events.ts.html +0 -247
  166. package/coverage/lcov-report/src/user-event/utils/index.html +0 -176
  167. package/coverage/lcov-report/src/user-event/utils/index.ts.html +0 -97
  168. package/coverage/lcov-report/src/user-event/utils/text-range.ts.html +0 -118
  169. package/coverage/lcov-report/src/user-event/utils/wait.ts.html +0 -130
  170. package/coverage/lcov-report/src/waitFor.ts.html +0 -772
  171. package/coverage/lcov-report/src/waitForElementToBeRemoved.ts.html +0 -211
  172. package/coverage/lcov-report/src/within.ts.html +0 -175
  173. package/coverage/lcov.info +0 -2614
  174. package/examples/.DS_Store +0 -0
  175. package/examples/basic/.expo/README.md +0 -17
  176. package/examples/basic/.expo/devices.json +0 -3
  177. package/examples/basic/.expo/packager-info.json +0 -4
  178. package/examples/basic/.expo/settings.json +0 -8
  179. package/examples/basic/.expo-shared/assets.json +0 -4
  180. package/examples/basic/.gitignore +0 -14
  181. package/examples/basic/App.tsx +0 -20
  182. package/examples/basic/README.md +0 -11
  183. package/examples/basic/__tests__/App.test.tsx +0 -119
  184. package/examples/basic/app.json +0 -31
  185. package/examples/basic/assets/adaptive-icon.png +0 -0
  186. package/examples/basic/assets/favicon.png +0 -0
  187. package/examples/basic/assets/icon.png +0 -0
  188. package/examples/basic/assets/splash.png +0 -0
  189. package/examples/basic/babel.config.js +0 -6
  190. package/examples/basic/components/Home.tsx +0 -28
  191. package/examples/basic/components/LoginForm.tsx +0 -138
  192. package/examples/basic/jest-setup.ts +0 -7
  193. package/examples/basic/jest.config.js +0 -5
  194. package/examples/basic/package.json +0 -30
  195. package/examples/basic/tsconfig.json +0 -7
  196. package/examples/basic/yarn-error.log +0 -8083
  197. package/examples/basic/yarn.lock +0 -8878
  198. package/examples/react-navigation/README.md +0 -16
  199. package/examples/react-navigation/babel.config.js +0 -4
  200. package/examples/react-navigation/jest-setup.js +0 -11
  201. package/examples/react-navigation/jest.config.js +0 -10
  202. package/examples/react-navigation/package.json +0 -31
  203. package/examples/react-navigation/src/App.js +0 -21
  204. package/examples/react-navigation/src/DrawerNavigator.js +0 -15
  205. package/examples/react-navigation/src/DrawerNavigator.test.js +0 -42
  206. package/examples/react-navigation/src/NativeStackNavigator.js +0 -15
  207. package/examples/react-navigation/src/NativeStackNavigator.test.js +0 -34
  208. package/examples/react-navigation/src/StackNavigator.js +0 -15
  209. package/examples/react-navigation/src/StackNavigator.test.js +0 -34
  210. package/examples/react-navigation/src/TabNavigator.js +0 -15
  211. package/examples/react-navigation/src/TabNavigator.test.js +0 -21
  212. package/examples/react-navigation/src/screens/DetailsScreen.js +0 -43
  213. package/examples/react-navigation/src/screens/DetailsScreen.test.js +0 -27
  214. package/examples/react-navigation/src/screens/DrawerHomeScreen.js +0 -26
  215. package/examples/react-navigation/src/screens/HomeScreen.js +0 -48
  216. package/examples/react-navigation/src/screens/SettingsScreen.js +0 -20
  217. package/examples/react-navigation/src/test-utils.js +0 -12
  218. package/examples/react-navigation/yarn.lock +0 -5610
  219. package/examples/redux/App.js +0 -27
  220. package/examples/redux/README.md +0 -5
  221. package/examples/redux/actions/todoActions.js +0 -25
  222. package/examples/redux/babel.config.js +0 -6
  223. package/examples/redux/components/AddTodo.js +0 -73
  224. package/examples/redux/components/AddTodo.test.js +0 -27
  225. package/examples/redux/components/TodoElem.js +0 -25
  226. package/examples/redux/components/TodoList.js +0 -29
  227. package/examples/redux/components/TodoList.test.js +0 -34
  228. package/examples/redux/index.js +0 -8
  229. package/examples/redux/jest-setup.js +0 -2
  230. package/examples/redux/jest.config.js +0 -4
  231. package/examples/redux/package.json +0 -23
  232. package/examples/redux/reducers/index.js +0 -6
  233. package/examples/redux/reducers/todoReducer.js +0 -27
  234. package/examples/redux/store.js +0 -10
  235. package/examples/redux/test-utils.js +0 -11
  236. package/examples/redux/yarn-error.log +0 -8083
  237. package/examples/redux/yarn.lock +0 -8423
  238. package/experiments-app/.expo/README.md +0 -15
  239. package/experiments-app/.expo/devices.json +0 -3
  240. package/experiments-app/.expo/settings.json +0 -10
  241. package/experiments-app/.gitignore +0 -17
  242. package/experiments-app/.prettierrc.js +0 -5
  243. package/experiments-app/app.json +0 -30
  244. package/experiments-app/assets/adaptive-icon.png +0 -0
  245. package/experiments-app/assets/favicon.png +0 -0
  246. package/experiments-app/assets/icon.png +0 -0
  247. package/experiments-app/assets/splash.png +0 -0
  248. package/experiments-app/babel.config.js +0 -6
  249. package/experiments-app/index.js +0 -4
  250. package/experiments-app/package.json +0 -31
  251. package/experiments-app/src/App.tsx +0 -31
  252. package/experiments-app/src/MainScreen.tsx +0 -51
  253. package/experiments-app/src/experiments.ts +0 -17
  254. package/experiments-app/src/screens/TextInputEventPropagation.tsx +0 -54
  255. package/experiments-app/src/screens/TextInputEvents.tsx +0 -60
  256. package/experiments-app/src/utils/helpers.ts +0 -8
  257. package/experiments-app/tsconfig.json +0 -6
  258. package/experiments-app/yarn.lock +0 -6913
  259. package/flow-typed/npm/jest_v26.x.x.js +0 -1218
  260. package/flow-typed/npm/react-test-renderer_v16.x.x.js +0 -81
  261. package/jest-setup.ts +0 -10
  262. package/renovate.json +0 -19
  263. package/scripts/test_react_17 +0 -12
  264. package/src/.DS_Store +0 -0
  265. package/src/__tests__/.DS_Store +0 -0
  266. package/src/__tests__/__snapshots__/render-debug.test.tsx.snap +0 -548
  267. package/src/__tests__/__snapshots__/render.test.tsx.snap +0 -39
  268. package/src/__tests__/act.test.tsx +0 -56
  269. package/src/__tests__/auto-cleanup-skip.test.tsx +0 -39
  270. package/src/__tests__/auto-cleanup.test.tsx +0 -50
  271. package/src/__tests__/cleanup.test.tsx +0 -26
  272. package/src/__tests__/config.test.ts +0 -55
  273. package/src/__tests__/fireEvent-textInput.test.tsx +0 -154
  274. package/src/__tests__/fireEvent.test.tsx +0 -485
  275. package/src/__tests__/host-component-names.test.tsx +0 -109
  276. package/src/__tests__/host-text-nesting.test.tsx +0 -90
  277. package/src/__tests__/jest-native.test.tsx +0 -84
  278. package/src/__tests__/questionsBoard.test.tsx +0 -62
  279. package/src/__tests__/react-native-api.test.tsx +0 -126
  280. package/src/__tests__/render-debug.test.tsx +0 -207
  281. package/src/__tests__/render-stringValidation.test.tsx +0 -157
  282. package/src/__tests__/render.test.tsx +0 -256
  283. package/src/__tests__/renderHook.test.tsx +0 -114
  284. package/src/__tests__/screen.test.tsx +0 -66
  285. package/src/__tests__/timerUtils.ts +0 -7
  286. package/src/__tests__/timers.test.ts +0 -27
  287. package/src/__tests__/waitFor.test.tsx +0 -327
  288. package/src/__tests__/waitForElementToBeRemoved.test.tsx +0 -151
  289. package/src/__tests__/within.test.tsx +0 -96
  290. package/src/act.ts +0 -86
  291. package/src/cleanup.ts +0 -15
  292. package/src/config.ts +0 -72
  293. package/src/fireEvent.ts +0 -159
  294. package/src/flush-micro-tasks.ts +0 -30
  295. package/src/helpers/__tests__/accessiblity.test.tsx +0 -373
  296. package/src/helpers/__tests__/component-tree.test.tsx +0 -226
  297. package/src/helpers/__tests__/format-default.tsx +0 -114
  298. package/src/helpers/__tests__/getTextContent.test.tsx +0 -49
  299. package/src/helpers/__tests__/includeHiddenElements.test.tsx +0 -39
  300. package/src/helpers/__tests__/query-name.test.ts +0 -10
  301. package/src/helpers/__tests__/timers.test.ts +0 -8
  302. package/src/helpers/accessiblity.ts +0 -108
  303. package/src/helpers/component-tree.ts +0 -89
  304. package/src/helpers/debugDeep.ts +0 -27
  305. package/src/helpers/debugShallow.ts +0 -22
  306. package/src/helpers/deprecation.ts +0 -53
  307. package/src/helpers/errors.ts +0 -66
  308. package/src/helpers/filterNodeByType.ts +0 -7
  309. package/src/helpers/findAll.ts +0 -68
  310. package/src/helpers/format-default.ts +0 -72
  311. package/src/helpers/format.ts +0 -47
  312. package/src/helpers/getTextContent.ts +0 -20
  313. package/src/helpers/host-component-names.tsx +0 -75
  314. package/src/helpers/matchers/__tests__/matchArrayValue.test.ts +0 -34
  315. package/src/helpers/matchers/__tests__/matchObject.test.ts +0 -37
  316. package/src/helpers/matchers/__tests__/matchStringValue.test.ts +0 -15
  317. package/src/helpers/matchers/accessibilityState.ts +0 -48
  318. package/src/helpers/matchers/accessibilityValue.ts +0 -24
  319. package/src/helpers/matchers/matchArrayProp.ts +0 -21
  320. package/src/helpers/matchers/matchLabelText.ts +0 -51
  321. package/src/helpers/matchers/matchObjectProp.ts +0 -25
  322. package/src/helpers/matchers/matchStringProp.ts +0 -23
  323. package/src/helpers/matchers/matchTextContent.ts +0 -20
  324. package/src/helpers/pointer-events.ts +0 -27
  325. package/src/helpers/query-name.ts +0 -4
  326. package/src/helpers/stringValidation.ts +0 -36
  327. package/src/helpers/timers.ts +0 -98
  328. package/src/index.ts +0 -33
  329. package/src/matches.ts +0 -49
  330. package/src/pure.ts +0 -27
  331. package/src/queries/__tests__/a11yState.test.tsx +0 -439
  332. package/src/queries/__tests__/a11yValue.test.tsx +0 -309
  333. package/src/queries/__tests__/displayValue.test.tsx +0 -221
  334. package/src/queries/__tests__/hintText.test.tsx +0 -177
  335. package/src/queries/__tests__/labelText.test.tsx +0 -242
  336. package/src/queries/__tests__/makeQueries.test.tsx +0 -235
  337. package/src/queries/__tests__/placeholderText.test.tsx +0 -136
  338. package/src/queries/__tests__/role-value.test.tsx +0 -176
  339. package/src/queries/__tests__/role.test.tsx +0 -824
  340. package/src/queries/__tests__/testId.test.tsx +0 -200
  341. package/src/queries/__tests__/text.test.tsx +0 -556
  342. package/src/queries/a11yState.ts +0 -131
  343. package/src/queries/a11yValue.ts +0 -131
  344. package/src/queries/displayValue.ts +0 -78
  345. package/src/queries/hintText.ts +0 -112
  346. package/src/queries/labelText.ts +0 -59
  347. package/src/queries/makeQueries.ts +0 -255
  348. package/src/queries/options.ts +0 -14
  349. package/src/queries/placeholderText.ts +0 -79
  350. package/src/queries/role.ts +0 -132
  351. package/src/queries/testId.ts +0 -71
  352. package/src/queries/text.ts +0 -66
  353. package/src/queries/unsafeProps.ts +0 -76
  354. package/src/queries/unsafeType.ts +0 -73
  355. package/src/react-versions.ts +0 -11
  356. package/src/render-act.ts +0 -19
  357. package/src/render.tsx +0 -183
  358. package/src/renderHook.tsx +0 -56
  359. package/src/screen.ts +0 -123
  360. package/src/shallow.ts +0 -18
  361. package/src/test-utils/events.ts +0 -24
  362. package/src/test-utils/index.ts +0 -1
  363. package/src/user-event/event-builder/common.ts +0 -66
  364. package/src/user-event/event-builder/index.ts +0 -7
  365. package/src/user-event/event-builder/text-input.ts +0 -86
  366. package/src/user-event/index.ts +0 -17
  367. package/src/user-event/press/__tests__/longPress.real-timers.test.tsx +0 -117
  368. package/src/user-event/press/__tests__/longPress.test.tsx +0 -157
  369. package/src/user-event/press/__tests__/press.real-timers.test.tsx +0 -320
  370. package/src/user-event/press/__tests__/press.test.tsx +0 -457
  371. package/src/user-event/press/constants.ts +0 -7
  372. package/src/user-event/press/index.ts +0 -1
  373. package/src/user-event/press/press.ts +0 -169
  374. package/src/user-event/setup/index.ts +0 -2
  375. package/src/user-event/setup/setup.ts +0 -127
  376. package/src/user-event/type/__tests__/__snapshots__/type-managed.test.tsx.snap +0 -339
  377. package/src/user-event/type/__tests__/__snapshots__/type.test.tsx.snap +0 -668
  378. package/src/user-event/type/__tests__/parseKeys.test.ts +0 -23
  379. package/src/user-event/type/__tests__/type-managed.test.tsx +0 -121
  380. package/src/user-event/type/__tests__/type.test.tsx +0 -336
  381. package/src/user-event/type/index.ts +0 -1
  382. package/src/user-event/type/parseKeys.ts +0 -41
  383. package/src/user-event/type/type.ts +0 -135
  384. package/src/user-event/utils/__tests__/dispatch-event.test.tsx +0 -41
  385. package/src/user-event/utils/__tests__/wait.test.ts +0 -63
  386. package/src/user-event/utils/content-size.ts +0 -25
  387. package/src/user-event/utils/dispatch-event.ts +0 -38
  388. package/src/user-event/utils/index.ts +0 -5
  389. package/src/user-event/utils/text-range.ts +0 -11
  390. package/src/user-event/utils/wait.ts +0 -15
  391. package/src/user-event/utils/warn-about-real-timers.ts +0 -13
  392. package/src/waitFor.ts +0 -228
  393. package/src/waitForElementToBeRemoved.ts +0 -42
  394. package/src/within.ts +0 -30
  395. package/tsconfig.json +0 -17
  396. package/tsconfig.release.json +0 -8
  397. package/website/.DS_Store +0 -0
  398. package/website/.docusaurus/DONT-EDIT-THIS-FOLDER +0 -5
  399. package/website/.docusaurus/client-modules.js +0 -6
  400. package/website/.docusaurus/codeTranslations.json +0 -1
  401. package/website/.docusaurus/docusaurus-plugin-content-blog/default/blog-post-list-prop-default.json +0 -4
  402. package/website/.docusaurus/docusaurus-plugin-content-blog/default/plugin-route-context-module-100.json +0 -4
  403. package/website/.docusaurus/docusaurus-plugin-content-docs/default/plugin-route-context-module-100.json +0 -4
  404. package/website/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-api-md-c82.json +0 -27
  405. package/website/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-eslint-p-llugin-testing-library-md-d24.json +0 -27
  406. package/website/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-faq-md-ad8.json +0 -27
  407. package/website/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-getting-started-md-8a6.json +0 -23
  408. package/website/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-how-should-i-query-md-f2d.json +0 -27
  409. package/website/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-migration-v-11-md-add.json +0 -27
  410. package/website/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-migration-v-12-md-14f.json +0 -27
  411. package/website/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-migration-v-2-md-698.json +0 -27
  412. package/website/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-migration-v-7-md-6bb.json +0 -27
  413. package/website/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-migration-v-9-md-f69.json +0 -27
  414. package/website/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-queries-md-7ad.json +0 -27
  415. package/website/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-react-navigation-md-1bd.json +0 -27
  416. package/website/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-redux-integration-md-77b.json +0 -23
  417. package/website/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-testing-environment-md-1c6.json +0 -27
  418. package/website/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-troubleshooting-md-01d.json +0 -27
  419. package/website/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-understanding-act-md-aa9.json +0 -27
  420. package/website/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-user-event-md-501.json +0 -27
  421. package/website/.docusaurus/docusaurus-plugin-content-docs/default/version-current-metadata-prop-751.json +0 -268
  422. package/website/.docusaurus/docusaurus-plugin-content-docs/react-native-testing-library-docs-route-96e.json +0 -115
  423. package/website/.docusaurus/docusaurus-plugin-content-docs/site-docs-api-md-c82.json +0 -19
  424. package/website/.docusaurus/docusaurus-plugin-content-docs/site-docs-eslint-p-llugin-testing-library-md-d24.json +0 -19
  425. package/website/.docusaurus/docusaurus-plugin-content-docs/site-docs-faq-md-ad8.json +0 -19
  426. package/website/.docusaurus/docusaurus-plugin-content-docs/site-docs-getting-started-md-8a6.json +0 -15
  427. package/website/.docusaurus/docusaurus-plugin-content-docs/site-docs-how-should-i-query-md-f2d.json +0 -19
  428. package/website/.docusaurus/docusaurus-plugin-content-docs/site-docs-migration-v-11-md-add.json +0 -19
  429. package/website/.docusaurus/docusaurus-plugin-content-docs/site-docs-migration-v-2-md-698.json +0 -19
  430. package/website/.docusaurus/docusaurus-plugin-content-docs/site-docs-migration-v-7-md-6bb.json +0 -19
  431. package/website/.docusaurus/docusaurus-plugin-content-docs/site-docs-migration-v-9-md-f69.json +0 -19
  432. package/website/.docusaurus/docusaurus-plugin-content-docs/site-docs-queries-md-7ad.json +0 -19
  433. package/website/.docusaurus/docusaurus-plugin-content-docs/site-docs-react-navigation-md-1bd.json +0 -19
  434. package/website/.docusaurus/docusaurus-plugin-content-docs/site-docs-redux-integration-md-77b.json +0 -15
  435. package/website/.docusaurus/docusaurus-plugin-content-docs/site-docs-troubleshooting-md-01d.json +0 -19
  436. package/website/.docusaurus/docusaurus-plugin-content-docs/site-docs-understanding-act-md-aa9.json +0 -19
  437. package/website/.docusaurus/docusaurus-plugin-content-pages/default/plugin-route-context-module-100.json +0 -4
  438. package/website/.docusaurus/docusaurus-plugin-debug/default/docusaurus-debug-all-content-673.json +0 -623
  439. package/website/.docusaurus/docusaurus-plugin-debug/default/plugin-route-context-module-100.json +0 -4
  440. package/website/.docusaurus/docusaurus-theme-search-algolia/default/plugin-route-context-module-100.json +0 -4
  441. package/website/.docusaurus/docusaurus.config.js +0 -267
  442. package/website/.docusaurus/docusaurus.config.mjs +0 -365
  443. package/website/.docusaurus/globalData.json +0 -113
  444. package/website/.docusaurus/i18n.json +0 -17
  445. package/website/.docusaurus/registry.js +0 -35
  446. package/website/.docusaurus/routes.js +0 -162
  447. package/website/.docusaurus/routesChunkNames.json +0 -133
  448. package/website/.docusaurus/site-metadata.json +0 -36
  449. package/website/.gitignore +0 -20
  450. package/website/README.md +0 -33
  451. package/website/docker/.dockerignore +0 -3
  452. package/website/docker/Dockerfile +0 -9
  453. package/website/docker/docker-compose.yml +0 -11
  454. package/website/docs/API.md +0 -940
  455. package/website/docs/EslintPLluginTestingLibrary.md +0 -28
  456. package/website/docs/FAQ.md +0 -44
  457. package/website/docs/GettingStarted.md +0 -100
  458. package/website/docs/HowShouldIQuery.md +0 -21
  459. package/website/docs/MigrationV11.md +0 -64
  460. package/website/docs/MigrationV12.md +0 -67
  461. package/website/docs/MigrationV2.md +0 -126
  462. package/website/docs/MigrationV7.md +0 -119
  463. package/website/docs/MigrationV9.md +0 -67
  464. package/website/docs/Queries.md +0 -567
  465. package/website/docs/ReactNavigation.md +0 -371
  466. package/website/docs/ReduxIntegration.md +0 -137
  467. package/website/docs/TestingEnvironment.md +0 -154
  468. package/website/docs/Troubleshooting.md +0 -44
  469. package/website/docs/UnderstandingAct.md +0 -227
  470. package/website/docs/UserEvent.md +0 -143
  471. package/website/docusaurus.config.js +0 -114
  472. package/website/package.json +0 -31
  473. package/website/sidebars.js +0 -20
  474. package/website/src/components/Feature.js +0 -31
  475. package/website/src/css/custom.css +0 -13
  476. package/website/src/css/index.module.css +0 -77
  477. package/website/src/pages/index.js +0 -82
  478. package/website/static/.nojekyll +0 -0
  479. package/website/static/css/custom.css +0 -28
  480. package/website/static/img/hit.png +0 -0
  481. package/website/static/img/locomotive.png +0 -0
  482. package/website/static/img/owl.png +0 -0
  483. package/website/static/img/tools.png +0 -0
  484. package/website/yarn.lock +0 -7669
  485. package/yarn-error.log +0 -10613
  486. package/yarn.lock +0 -7765
@@ -1,121 +0,0 @@
1
- import * as React from 'react';
2
- import { TextInput } from 'react-native';
3
- import { createEventLogger } from '../../../test-utils/events';
4
- import { render } from '../../..';
5
- import { userEvent } from '../..';
6
-
7
- beforeEach(() => {
8
- jest.useRealTimers();
9
- jest.clearAllMocks();
10
- });
11
-
12
- interface ManagedTextInputProps {
13
- valueTransformer?: (text: string) => string;
14
- logEvent: (name: string) => (event: any) => void;
15
- initialValue?: string;
16
- }
17
-
18
- function ManagedTextInput({
19
- logEvent,
20
- valueTransformer,
21
- initialValue = '',
22
- }: ManagedTextInputProps) {
23
- const [value, setValue] = React.useState(initialValue);
24
-
25
- const handleChangeText = (text: string) => {
26
- logEvent('changeText')(text);
27
- const newValue = valueTransformer?.(text) ?? text;
28
- setValue(newValue);
29
- };
30
-
31
- return (
32
- <TextInput
33
- testID="input"
34
- value={value}
35
- onChangeText={handleChangeText}
36
- onFocus={logEvent('focus')}
37
- onBlur={logEvent('blur')}
38
- onPressIn={logEvent('pressIn')}
39
- onPressOut={logEvent('pressOut')}
40
- onChange={logEvent('change')}
41
- onKeyPress={logEvent('keyPress')}
42
- onTextInput={logEvent('textInput')}
43
- onSelectionChange={logEvent('selectionChange')}
44
- onSubmitEditing={logEvent('submitEditing')}
45
- onEndEditing={logEvent('endEditing')}
46
- onContentSizeChange={logEvent('contentSizeChange')}
47
- />
48
- );
49
- }
50
-
51
- describe('type() for managed TextInput', () => {
52
- it('supports basic case', async () => {
53
- jest.spyOn(Date, 'now').mockImplementation(() => 100100100100);
54
- const { events, logEvent } = createEventLogger();
55
- const screen = render(<ManagedTextInput logEvent={logEvent} />);
56
-
57
- const user = userEvent.setup();
58
- await user.type(screen.getByTestId('input'), 'Wow');
59
-
60
- const eventNames = events.map((e) => e.name);
61
- expect(eventNames).toEqual([
62
- 'pressIn',
63
- 'focus',
64
- 'pressOut',
65
- 'keyPress',
66
- 'change',
67
- 'changeText',
68
- 'selectionChange',
69
- 'keyPress',
70
- 'change',
71
- 'changeText',
72
- 'selectionChange',
73
- 'keyPress',
74
- 'change',
75
- 'changeText',
76
- 'selectionChange',
77
- 'endEditing',
78
- 'blur',
79
- ]);
80
-
81
- expect(events).toMatchSnapshot('input: "Wow"');
82
- });
83
-
84
- test('supports rejecting TextInput', async () => {
85
- jest.spyOn(Date, 'now').mockImplementation(() => 100100100100);
86
- const { events, logEvent } = createEventLogger();
87
- const screen = render(
88
- <ManagedTextInput
89
- initialValue="XXX"
90
- logEvent={logEvent}
91
- valueTransformer={() => 'XXX'}
92
- />
93
- );
94
-
95
- const user = userEvent.setup();
96
- await user.type(screen.getByTestId('input'), 'ABC');
97
-
98
- const eventNames = events.map((e) => e.name);
99
- expect(eventNames).toEqual([
100
- 'pressIn',
101
- 'focus',
102
- 'pressOut',
103
- 'keyPress',
104
- 'change',
105
- 'changeText',
106
- 'selectionChange',
107
- 'keyPress',
108
- 'change',
109
- 'changeText',
110
- 'selectionChange',
111
- 'keyPress',
112
- 'change',
113
- 'changeText',
114
- 'selectionChange',
115
- 'endEditing',
116
- 'blur',
117
- ]);
118
-
119
- expect(events).toMatchSnapshot('input: "ABC", value: "XXX"');
120
- });
121
- });
@@ -1,336 +0,0 @@
1
- import * as React from 'react';
2
- import { View, TextInput, TextInputProps } from 'react-native';
3
- import { createEventLogger } from '../../../test-utils/events';
4
- import { render } from '../../..';
5
- import { userEvent } from '../..';
6
-
7
- beforeEach(() => {
8
- jest.useRealTimers();
9
- jest.clearAllMocks();
10
- });
11
-
12
- function renderTextInputWithToolkit(props: TextInputProps = {}) {
13
- const { events, logEvent } = createEventLogger();
14
-
15
- const screen = render(
16
- <TextInput
17
- testID="input"
18
- onFocus={logEvent('focus')}
19
- onBlur={logEvent('blur')}
20
- onPressIn={logEvent('pressIn')}
21
- onPressOut={logEvent('pressOut')}
22
- onChange={logEvent('change')}
23
- onChangeText={logEvent('changeText')}
24
- onKeyPress={logEvent('keyPress')}
25
- onTextInput={logEvent('textInput')}
26
- onSelectionChange={logEvent('selectionChange')}
27
- onSubmitEditing={logEvent('submitEditing')}
28
- onEndEditing={logEvent('endEditing')}
29
- onContentSizeChange={logEvent('contentSizeChange')}
30
- {...props}
31
- />
32
- );
33
-
34
- return {
35
- ...screen,
36
- events,
37
- };
38
- }
39
-
40
- describe('type()', () => {
41
- it('supports basic case', async () => {
42
- jest.spyOn(Date, 'now').mockImplementation(() => 100100100100);
43
- const { events, ...queries } = renderTextInputWithToolkit();
44
-
45
- const user = userEvent.setup();
46
- await user.type(queries.getByTestId('input'), 'abc');
47
-
48
- const eventNames = events.map((e) => e.name);
49
- expect(eventNames).toEqual([
50
- 'pressIn',
51
- 'focus',
52
- 'pressOut',
53
- 'keyPress',
54
- 'change',
55
- 'changeText',
56
- 'selectionChange',
57
- 'keyPress',
58
- 'change',
59
- 'changeText',
60
- 'selectionChange',
61
- 'keyPress',
62
- 'change',
63
- 'changeText',
64
- 'selectionChange',
65
- 'endEditing',
66
- 'blur',
67
- ]);
68
-
69
- expect(events).toMatchSnapshot('input: "abc"');
70
- });
71
-
72
- it.each(['modern', 'legacy'])('works with %s fake timers', async (type) => {
73
- jest.useFakeTimers({ legacyFakeTimers: type === 'legacy' });
74
- const { events, ...queries } = renderTextInputWithToolkit();
75
-
76
- const user = userEvent.setup();
77
- await user.type(queries.getByTestId('input'), 'abc');
78
-
79
- const eventNames = events.map((e) => e.name);
80
- expect(eventNames).toEqual([
81
- 'pressIn',
82
- 'focus',
83
- 'pressOut',
84
- 'keyPress',
85
- 'change',
86
- 'changeText',
87
- 'selectionChange',
88
- 'keyPress',
89
- 'change',
90
- 'changeText',
91
- 'selectionChange',
92
- 'keyPress',
93
- 'change',
94
- 'changeText',
95
- 'selectionChange',
96
- 'endEditing',
97
- 'blur',
98
- ]);
99
- });
100
-
101
- it('supports defaultValue prop', async () => {
102
- const { events, ...queries } = renderTextInputWithToolkit({
103
- defaultValue: 'xxx',
104
- });
105
-
106
- const user = userEvent.setup();
107
- await user.type(queries.getByTestId('input'), 'ab');
108
-
109
- const eventNames = events.map((e) => e.name);
110
- expect(eventNames).toEqual([
111
- 'pressIn',
112
- 'focus',
113
- 'pressOut',
114
- 'keyPress',
115
- 'change',
116
- 'changeText',
117
- 'selectionChange',
118
- 'keyPress',
119
- 'change',
120
- 'changeText',
121
- 'selectionChange',
122
- 'endEditing',
123
- 'blur',
124
- ]);
125
-
126
- expect(events).toMatchSnapshot('input: "ab", defaultValue: "xxx"');
127
- });
128
-
129
- it('does respect editable prop', async () => {
130
- const { events, ...queries } = renderTextInputWithToolkit({
131
- editable: false,
132
- });
133
-
134
- const user = userEvent.setup();
135
- await user.type(queries.getByTestId('input'), 'ab');
136
-
137
- const eventNames = events.map((e) => e.name);
138
- expect(eventNames).toEqual([]);
139
- });
140
-
141
- it('supports backspace', async () => {
142
- const { events, ...queries } = renderTextInputWithToolkit({
143
- defaultValue: 'xxx',
144
- });
145
-
146
- const user = userEvent.setup();
147
- await user.type(queries.getByTestId('input'), '{Backspace}a');
148
-
149
- const eventNames = events.map((e) => e.name);
150
- expect(eventNames).toEqual([
151
- 'pressIn',
152
- 'focus',
153
- 'pressOut',
154
- 'keyPress',
155
- 'change',
156
- 'changeText',
157
- 'selectionChange',
158
- 'keyPress',
159
- 'change',
160
- 'changeText',
161
- 'selectionChange',
162
- 'endEditing',
163
- 'blur',
164
- ]);
165
-
166
- expect(events).toMatchSnapshot(
167
- 'input: "{Backspace}a", defaultValue: "xxx"'
168
- );
169
- });
170
-
171
- it('supports multiline', async () => {
172
- const { events, ...queries } = renderTextInputWithToolkit({
173
- multiline: true,
174
- });
175
-
176
- const user = userEvent.setup();
177
- await user.type(queries.getByTestId('input'), '{Enter}\n');
178
-
179
- const eventNames = events.map((e) => e.name);
180
- expect(eventNames).toEqual([
181
- 'pressIn',
182
- 'focus',
183
- 'pressOut',
184
- 'keyPress',
185
- 'textInput',
186
- 'change',
187
- 'changeText',
188
- 'selectionChange',
189
- 'contentSizeChange',
190
- 'keyPress',
191
- 'textInput',
192
- 'change',
193
- 'changeText',
194
- 'selectionChange',
195
- 'contentSizeChange',
196
- 'endEditing',
197
- 'blur',
198
- ]);
199
-
200
- expect(events).toMatchSnapshot('input: "{Enter}\\n", multiline: true');
201
- });
202
-
203
- test('skips press events when `skipPress: true`', async () => {
204
- const { events, ...queries } = renderTextInputWithToolkit();
205
-
206
- const user = userEvent.setup();
207
- await user.type(queries.getByTestId('input'), 'a', {
208
- skipPress: true,
209
- });
210
-
211
- const eventNames = events.map((e) => e.name);
212
- expect(eventNames).not.toContainEqual('pressIn');
213
- expect(eventNames).not.toContainEqual('pressOut');
214
- expect(eventNames).toEqual([
215
- 'focus',
216
- 'keyPress',
217
- 'change',
218
- 'changeText',
219
- 'selectionChange',
220
- 'endEditing',
221
- 'blur',
222
- ]);
223
- });
224
-
225
- it('triggers submit event with `submitEditing: true`', async () => {
226
- const { events, ...queries } = renderTextInputWithToolkit();
227
-
228
- const user = userEvent.setup();
229
- await user.type(queries.getByTestId('input'), 'a', {
230
- submitEditing: true,
231
- });
232
-
233
- const eventNames = events.map((e) => e.name);
234
- expect(eventNames).toEqual([
235
- 'pressIn',
236
- 'focus',
237
- 'pressOut',
238
- 'keyPress',
239
- 'change',
240
- 'changeText',
241
- 'selectionChange',
242
- 'submitEditing',
243
- 'endEditing',
244
- 'blur',
245
- ]);
246
-
247
- expect(events[7].name).toBe('submitEditing');
248
- expect(events[7].payload).toEqual({
249
- nativeEvent: { text: 'a', target: 0 },
250
- });
251
- });
252
-
253
- it('works when not all events have handlers', async () => {
254
- const { events, logEvent } = createEventLogger();
255
- const screen = render(
256
- <TextInput
257
- testID="input"
258
- onChangeText={logEvent('changeText')}
259
- onEndEditing={logEvent('endEditing')}
260
- />
261
- );
262
-
263
- const user = userEvent.setup();
264
- await user.type(screen.getByTestId('input'), 'abc');
265
-
266
- const eventNames = events.map((e) => e.name);
267
- expect(eventNames).toEqual([
268
- 'changeText',
269
- 'changeText',
270
- 'changeText',
271
- 'endEditing',
272
- ]);
273
-
274
- expect(events).toMatchSnapshot('input: "abc"');
275
- });
276
-
277
- it('does NOT work on View', async () => {
278
- const screen = render(<View testID="input" />);
279
-
280
- const user = userEvent.setup();
281
- await expect(
282
- user.type(screen.getByTestId('input'), 'abc')
283
- ).rejects.toThrowErrorMatchingInlineSnapshot(
284
- `"type() works only with host "TextInput" elements. Passed element has type "View"."`
285
- );
286
- });
287
-
288
- // View that ignores props type checking
289
- const AnyView = View as React.ComponentType<any>;
290
-
291
- it('does NOT bubble up', async () => {
292
- const parentHandler = jest.fn();
293
- const screen = render(
294
- <AnyView
295
- onChangeText={parentHandler}
296
- onChange={parentHandler}
297
- onKeyPress={parentHandler}
298
- onTextInput={parentHandler}
299
- onFocus={parentHandler}
300
- onBlur={parentHandler}
301
- onEndEditing={parentHandler}
302
- onPressIn={parentHandler}
303
- onPressOut={parentHandler}
304
- >
305
- <TextInput testID="input" />
306
- </AnyView>
307
- );
308
-
309
- const user = userEvent.setup();
310
- await user.type(screen.getByTestId('input'), 'abc');
311
- expect(parentHandler).not.toHaveBeenCalled();
312
- });
313
-
314
- it('supports direct access', async () => {
315
- const { events, logEvent } = createEventLogger();
316
- const screen = render(
317
- <TextInput
318
- testID="input"
319
- onChangeText={logEvent('changeText')}
320
- onFocus={logEvent('focus')}
321
- onBlur={logEvent('blur')}
322
- />
323
- );
324
-
325
- await userEvent.type(screen.getByTestId('input'), 'abc');
326
-
327
- const eventNames = events.map((event) => event.name);
328
- expect(eventNames).toEqual([
329
- 'focus',
330
- 'changeText',
331
- 'changeText',
332
- 'changeText',
333
- 'blur',
334
- ]);
335
- });
336
- });
@@ -1 +0,0 @@
1
- export { type, TypeOptions } from './type';
@@ -1,41 +0,0 @@
1
- const knownKeys = new Set(['Enter', 'Backspace']);
2
-
3
- export function parseKeys(text: string) {
4
- const result = [];
5
-
6
- let remainingText = text;
7
- while (remainingText) {
8
- const [token, rest] = getNextToken(remainingText);
9
- if (token.length > 1 && !knownKeys.has(token)) {
10
- throw new Error(`Unknown key "${token}" in "${text}"`);
11
- }
12
-
13
- result.push(token);
14
- remainingText = rest;
15
- }
16
-
17
- return result;
18
- }
19
-
20
- function getNextToken(text: string): [string, string] {
21
- // Detect `{{` => escaped `{`
22
- if (text[0] === '{' && text[1] === '{') {
23
- return ['{', text.slice(2)];
24
- }
25
-
26
- // Detect `{key}` => special key
27
- if (text[0] === '{') {
28
- const endIndex = text.indexOf('}');
29
- if (endIndex === -1) {
30
- throw new Error(`Invalid key sequence "${text}"`);
31
- }
32
-
33
- return [text.slice(1, endIndex), text.slice(endIndex + 1)];
34
- }
35
-
36
- if (text[0] === '\n') {
37
- return ['Enter', text.slice(1)];
38
- }
39
-
40
- return [text[0], text.slice(1)];
41
- }
@@ -1,135 +0,0 @@
1
- import { ReactTestInstance } from 'react-test-renderer';
2
- import { isHostTextInput } from '../../helpers/host-component-names';
3
- import { EventBuilder } from '../event-builder';
4
- import { ErrorWithStack } from '../../helpers/errors';
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';
13
-
14
- import { parseKeys } from './parseKeys';
15
-
16
- export interface TypeOptions {
17
- skipPress?: boolean;
18
- submitEditing?: boolean;
19
- }
20
-
21
- export async function type(
22
- this: UserEventInstance,
23
- element: ReactTestInstance,
24
- text: string,
25
- options?: TypeOptions
26
- ): Promise<void> {
27
- if (!isHostTextInput(element)) {
28
- throw new ErrorWithStack(
29
- `type() works only with host "TextInput" elements. Passed element has type "${element.type}".`,
30
- type
31
- );
32
- }
33
-
34
- // Skip events if the element is disabled
35
- if (element.props.editable === false || !isPointerEventEnabled(element)) {
36
- return;
37
- }
38
-
39
- const keys = parseKeys(text);
40
-
41
- if (!options?.skipPress) {
42
- dispatchEvent(element, 'pressIn', EventBuilder.Common.touch());
43
- }
44
-
45
- dispatchEvent(element, 'focus', EventBuilder.Common.focus());
46
-
47
- if (!options?.skipPress) {
48
- await wait(this.config);
49
- dispatchEvent(element, 'pressOut', EventBuilder.Common.touch());
50
- }
51
-
52
- let currentText = element.props.value ?? element.props.defaultValue ?? '';
53
- for (const key of keys) {
54
- const previousText = element.props.value ?? currentText;
55
- currentText = applyKey(previousText, key);
56
-
57
- await wait(this.config);
58
- emitTypingEvents(element, key, currentText, previousText);
59
- }
60
-
61
- const finalText = element.props.value ?? currentText;
62
-
63
- await wait(this.config);
64
-
65
- if (options?.submitEditing) {
66
- dispatchEvent(
67
- element,
68
- 'submitEditing',
69
- EventBuilder.TextInput.submitEditing(finalText)
70
- );
71
- }
72
-
73
- dispatchEvent(
74
- element,
75
- 'endEditing',
76
- EventBuilder.TextInput.endEditing(finalText)
77
- );
78
-
79
- dispatchEvent(element, 'blur', EventBuilder.Common.blur());
80
- }
81
-
82
- async function emitTypingEvents(
83
- element: ReactTestInstance,
84
- key: string,
85
- currentText: string,
86
- previousText: string
87
- ) {
88
- const isMultiline = element.props.multiline === true;
89
-
90
- dispatchEvent(element, 'keyPress', EventBuilder.TextInput.keyPress(key));
91
-
92
- // According to the docs only multiline TextInput emits textInput event
93
- // @see: https://github.com/facebook/react-native/blob/42a2898617da1d7a98ef574a5b9e500681c8f738/packages/react-native/Libraries/Components/TextInput/TextInput.d.ts#L754
94
- if (isMultiline) {
95
- dispatchEvent(
96
- element,
97
- 'textInput',
98
- EventBuilder.TextInput.textInput(currentText, previousText)
99
- );
100
- }
101
-
102
- dispatchEvent(element, 'change', EventBuilder.TextInput.change(currentText));
103
-
104
- dispatchEvent(element, 'changeText', currentText);
105
-
106
- const selectionRange = getTextRange(currentText);
107
- dispatchEvent(
108
- element,
109
- 'selectionChange',
110
- EventBuilder.TextInput.selectionChange(selectionRange)
111
- );
112
-
113
- // According to the docs only multiline TextInput emits contentSizeChange event
114
- // @see: https://reactnative.dev/docs/textinput#oncontentsizechange
115
- if (isMultiline) {
116
- const contentSize = getTextContentSize(currentText);
117
- dispatchEvent(
118
- element,
119
- 'contentSizeChange',
120
- EventBuilder.TextInput.contentSizeChange(contentSize)
121
- );
122
- }
123
- }
124
-
125
- function applyKey(text: string, key: string) {
126
- if (key === 'Enter') {
127
- return `${text}\n`;
128
- }
129
-
130
- if (key === 'Backspace') {
131
- return text.slice(0, -1);
132
- }
133
-
134
- return text + key;
135
- }
@@ -1,41 +0,0 @@
1
- import * as React from 'react';
2
- import { Text } from 'react-native';
3
- import render from '../../../render';
4
- import { dispatchEvent } from '../dispatch-event';
5
- import { EventBuilder } from '../../event-builder';
6
-
7
- const TOUCH_EVENT = EventBuilder.Common.touch();
8
-
9
- describe('dispatchEvent', () => {
10
- it('does dispatch event', () => {
11
- const onPress = jest.fn();
12
- const screen = render(<Text testID="text" onPress={onPress} />);
13
-
14
- dispatchEvent(screen.getByTestId('text'), 'press', TOUCH_EVENT);
15
- expect(onPress).toHaveBeenCalledTimes(1);
16
- });
17
-
18
- it('does not dispatch event to parent host component', () => {
19
- const onPressParent = jest.fn();
20
- const screen = render(
21
- <Text onPress={onPressParent}>
22
- <Text testID="text" />
23
- </Text>
24
- );
25
-
26
- dispatchEvent(screen.getByTestId('text'), 'press', TOUCH_EVENT);
27
- expect(onPressParent).not.toHaveBeenCalled();
28
- });
29
-
30
- it('does NOT throw if no handler found', () => {
31
- const screen = render(
32
- <Text>
33
- <Text testID="text" />
34
- </Text>
35
- );
36
-
37
- expect(() =>
38
- dispatchEvent(screen.getByTestId('text'), 'press', TOUCH_EVENT)
39
- ).not.toThrow();
40
- });
41
- });