@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,327 +0,0 @@
1
- import * as React from 'react';
2
- import { Text, TouchableOpacity, View, Pressable } from 'react-native';
3
- import { fireEvent, render, waitFor, configure } from '..';
4
-
5
- class Banana extends React.Component<any> {
6
- changeFresh = () => {
7
- this.props.onChangeFresh();
8
- };
9
-
10
- render() {
11
- return (
12
- <View>
13
- {this.props.fresh && <Text>Fresh</Text>}
14
- <TouchableOpacity onPress={this.changeFresh}>
15
- <Text>Change freshness!</Text>
16
- </TouchableOpacity>
17
- </View>
18
- );
19
- }
20
- }
21
-
22
- class BananaContainer extends React.Component<{}, any> {
23
- state = { fresh: false };
24
-
25
- onChangeFresh = async () => {
26
- await new Promise((resolve) => setTimeout(resolve, 300));
27
- this.setState({ fresh: true });
28
- };
29
-
30
- render() {
31
- return (
32
- <Banana onChangeFresh={this.onChangeFresh} fresh={this.state.fresh} />
33
- );
34
- }
35
- }
36
-
37
- afterEach(() => {
38
- jest.useRealTimers();
39
- });
40
-
41
- test('waits for element until it stops throwing', async () => {
42
- const { getByText, queryByText } = render(<BananaContainer />);
43
-
44
- fireEvent.press(getByText('Change freshness!'));
45
-
46
- expect(queryByText('Fresh')).toBeNull();
47
-
48
- const freshBananaText = await waitFor(() => getByText('Fresh'));
49
-
50
- expect(freshBananaText.props.children).toBe('Fresh');
51
- });
52
-
53
- test('waits for element until timeout is met', async () => {
54
- const { getByText } = render(<BananaContainer />);
55
-
56
- fireEvent.press(getByText('Change freshness!'));
57
-
58
- await expect(
59
- waitFor(() => getByText('Fresh'), { timeout: 100 })
60
- ).rejects.toThrow();
61
-
62
- // Async action ends after 300ms and we only waited 100ms, so we need to wait
63
- // for the remaining async actions to finish
64
- await waitFor(() => getByText('Fresh'));
65
- });
66
-
67
- test('waitFor defaults to asyncWaitTimeout config option', async () => {
68
- configure({ asyncUtilTimeout: 100 });
69
- const { getByText } = render(<BananaContainer />);
70
-
71
- fireEvent.press(getByText('Change freshness!'));
72
- await expect(waitFor(() => getByText('Fresh'))).rejects.toThrow();
73
-
74
- // Async action ends after 300ms and we only waited 100ms, so we need to wait
75
- // for the remaining async actions to finish
76
- await waitFor(() => getByText('Fresh'), { timeout: 1000 });
77
- });
78
-
79
- test('waitFor timeout option takes precendence over `asyncWaitTimeout` config option', async () => {
80
- configure({ asyncUtilTimeout: 2000 });
81
- const { getByText } = render(<BananaContainer />);
82
-
83
- fireEvent.press(getByText('Change freshness!'));
84
- await expect(
85
- waitFor(() => getByText('Fresh'), { timeout: 100 })
86
- ).rejects.toThrow();
87
-
88
- // Async action ends after 300ms and we only waited 100ms, so we need to wait
89
- // for the remaining async actions to finish
90
- await waitFor(() => getByText('Fresh'));
91
- });
92
-
93
- test('waits for element with custom interval', async () => {
94
- const mockFn = jest.fn(() => {
95
- throw Error('test');
96
- });
97
-
98
- try {
99
- await waitFor(() => mockFn(), { timeout: 400, interval: 200 });
100
- } catch (e) {
101
- // suppress
102
- }
103
-
104
- expect(mockFn).toHaveBeenCalledTimes(2);
105
- });
106
-
107
- // this component is convoluted on purpose. It is not a good react pattern, but it is valid
108
- // react code that will run differently between different react versions (17 and 18), so we need
109
- // explicit tests for it
110
- const Comp = ({ onPress }: { onPress: () => void }) => {
111
- const [state, setState] = React.useState(false);
112
-
113
- React.useEffect(() => {
114
- if (state) {
115
- onPress();
116
- }
117
- }, [state, onPress]);
118
-
119
- return (
120
- <Pressable
121
- onPress={async () => {
122
- await Promise.resolve();
123
- setState(true);
124
- }}
125
- >
126
- <Text>Trigger</Text>
127
- </Pressable>
128
- );
129
- };
130
-
131
- test('waits for async event with fireEvent', async () => {
132
- const spy = jest.fn();
133
- const { getByText } = render(<Comp onPress={spy} />);
134
-
135
- fireEvent.press(getByText('Trigger'));
136
-
137
- await waitFor(() => {
138
- expect(spy).toHaveBeenCalled();
139
- });
140
- });
141
-
142
- test.each([false, true])(
143
- 'waits for element until it stops throwing using fake timers (legacyFakeTimers = %s)',
144
- async (legacyFakeTimers) => {
145
- jest.useFakeTimers({ legacyFakeTimers });
146
- const { getByText, queryByText } = render(<BananaContainer />);
147
-
148
- fireEvent.press(getByText('Change freshness!'));
149
- expect(queryByText('Fresh')).toBeNull();
150
-
151
- jest.advanceTimersByTime(300);
152
- const freshBananaText = await waitFor(() => getByText('Fresh'));
153
-
154
- expect(freshBananaText.props.children).toBe('Fresh');
155
- }
156
- );
157
-
158
- test.each([false, true])(
159
- 'waits for assertion until timeout is met with fake timers (legacyFakeTimers = %s)',
160
- async (legacyFakeTimers) => {
161
- jest.useFakeTimers({ legacyFakeTimers });
162
-
163
- const mockFn = jest.fn(() => {
164
- throw Error('test');
165
- });
166
-
167
- try {
168
- await waitFor(() => mockFn(), { timeout: 400, interval: 200 });
169
- } catch (error) {
170
- // suppress
171
- }
172
-
173
- expect(mockFn).toHaveBeenCalledTimes(3);
174
- }
175
- );
176
-
177
- test.each([false, true])(
178
- 'waits for assertion until timeout is met with fake timers (legacyFakeTimers = %s)',
179
- async (legacyFakeTimers) => {
180
- jest.useFakeTimers({ legacyFakeTimers });
181
-
182
- const mockErrorFn = jest.fn(() => {
183
- throw Error('test');
184
- });
185
-
186
- const mockHandleFn = jest.fn((e) => e);
187
-
188
- try {
189
- await waitFor(() => mockErrorFn(), {
190
- timeout: 400,
191
- interval: 200,
192
- onTimeout: mockHandleFn,
193
- });
194
- } catch (error) {
195
- // suppress
196
- }
197
-
198
- expect(mockErrorFn).toHaveBeenCalledTimes(3);
199
- expect(mockHandleFn).toHaveBeenCalledTimes(1);
200
- }
201
- );
202
-
203
- const blockThread = (timeToBlockThread: number, legacyFakeTimers: boolean) => {
204
- jest.useRealTimers();
205
- let end = Date.now() + timeToBlockThread;
206
-
207
- while (Date.now() < end) {
208
- // do nothing
209
- }
210
-
211
- jest.useFakeTimers({ legacyFakeTimers });
212
- };
213
-
214
- test.each([true, false])(
215
- 'it should not depend on real time when using fake timers (legacyFakeTimers = %s)',
216
- async (legacyFakeTimers) => {
217
- jest.useFakeTimers({ legacyFakeTimers });
218
- const WAIT_FOR_INTERVAL = 20;
219
- const WAIT_FOR_TIMEOUT = WAIT_FOR_INTERVAL * 5;
220
-
221
- const mockErrorFn = jest.fn(() => {
222
- // Wait 2 times interval so that check time is longer than interval
223
- blockThread(WAIT_FOR_INTERVAL * 2, legacyFakeTimers);
224
- throw new Error('test');
225
- });
226
-
227
- await expect(
228
- async () =>
229
- await waitFor(mockErrorFn, {
230
- timeout: WAIT_FOR_TIMEOUT,
231
- interval: WAIT_FOR_INTERVAL,
232
- })
233
- ).rejects.toThrow();
234
-
235
- // Verify that the `waitFor` callback has been called the expected number of times
236
- // (timeout / interval + 1), so it confirms that the real duration of callback did not
237
- // cause the real clock timeout when running using fake timers.
238
- expect(mockErrorFn).toHaveBeenCalledTimes(
239
- WAIT_FOR_TIMEOUT / WAIT_FOR_INTERVAL + 1
240
- );
241
- }
242
- );
243
-
244
- test.each([false, true])(
245
- 'awaiting something that succeeds before timeout works with fake timers (legacyFakeTimers = %s)',
246
- async (legacyFakeTimers) => {
247
- jest.useFakeTimers({ legacyFakeTimers });
248
-
249
- let calls = 0;
250
- const mockFn = jest.fn(() => {
251
- calls += 1;
252
- if (calls < 3) {
253
- throw Error('test');
254
- }
255
- });
256
-
257
- try {
258
- await waitFor(() => mockFn(), { timeout: 400, interval: 200 });
259
- } catch (error) {
260
- // suppress
261
- }
262
-
263
- expect(mockFn).toHaveBeenCalledTimes(3);
264
- }
265
- );
266
-
267
- test.each([
268
- [false, false],
269
- [true, false],
270
- [true, true],
271
- ])(
272
- 'flushes scheduled updates before returning (fakeTimers = %s, legacyFakeTimers = %s)',
273
- async (fakeTimers, legacyFakeTimers) => {
274
- if (fakeTimers) {
275
- jest.useFakeTimers({ legacyFakeTimers });
276
- }
277
-
278
- function Apple({ onPress }: { onPress: (color: string) => void }) {
279
- const [color, setColor] = React.useState('green');
280
- const [syncedColor, setSyncedColor] = React.useState(color);
281
-
282
- // On mount, set the color to "red" in a promise microtask
283
- React.useEffect(() => {
284
- // eslint-disable-next-line promise/prefer-await-to-then, promise/catch-or-return
285
- Promise.resolve('red').then((c) => setColor(c));
286
- }, []);
287
-
288
- // Sync the `color` state to `syncedColor` state, but with a delay caused by the effect
289
- React.useEffect(() => {
290
- setSyncedColor(color);
291
- }, [color]);
292
-
293
- return (
294
- <View testID="root">
295
- <Text>{color}</Text>
296
- <Pressable onPress={() => onPress(syncedColor)}>
297
- <Text>Trigger</Text>
298
- </Pressable>
299
- </View>
300
- );
301
- }
302
-
303
- const onPress = jest.fn();
304
- const view = render(<Apple onPress={onPress} />);
305
-
306
- // Required: this `waitFor` will succeed on first check, because the "root" view is there
307
- // since the initial mount.
308
- await waitFor(() => view.getByTestId('root'));
309
-
310
- // This `waitFor` will also succeed on first check, because the promise that sets the
311
- // `color` state to "red" resolves right after the previous `await waitFor` statement.
312
- await waitFor(() => view.getByText('red'));
313
-
314
- // Check that the `onPress` callback is called with the already-updated value of `syncedColor`.
315
- fireEvent.press(view.getByText('Trigger'));
316
- expect(onPress).toHaveBeenCalledWith('red');
317
- }
318
- );
319
-
320
- test('waitFor throws if expectation is not a function', async () => {
321
- await expect(
322
- // @ts-expect-error intentionally passing non-function
323
- waitFor('not a function')
324
- ).rejects.toThrowErrorMatchingInlineSnapshot(
325
- `"Received \`expectation\` arg must be a function"`
326
- );
327
- });
@@ -1,151 +0,0 @@
1
- import React, { useState } from 'react';
2
- import { View, Text, TouchableOpacity } from 'react-native';
3
- import { render, fireEvent, waitForElementToBeRemoved } from '..';
4
-
5
- const TestSetup = ({ shouldUseDelay = true }) => {
6
- const [isAdded, setIsAdded] = useState(true);
7
-
8
- const removeElement = async () => {
9
- if (shouldUseDelay) {
10
- setTimeout(() => setIsAdded(false), 300);
11
- } else {
12
- setIsAdded(false);
13
- }
14
- };
15
-
16
- return (
17
- <View>
18
- {isAdded && <Text>Observed Element</Text>}
19
-
20
- <TouchableOpacity onPress={removeElement}>
21
- <Text>Remove Element</Text>
22
- </TouchableOpacity>
23
- </View>
24
- );
25
- };
26
-
27
- afterEach(() => {
28
- jest.useRealTimers();
29
- });
30
-
31
- test('waits when using getBy query', async () => {
32
- const screen = render(<TestSetup />);
33
-
34
- fireEvent.press(screen.getByText('Remove Element'));
35
- const element = screen.getByText('Observed Element');
36
- expect(element).toBeTruthy();
37
-
38
- const result = await waitForElementToBeRemoved(() =>
39
- screen.getByText('Observed Element')
40
- );
41
- expect(screen.queryByText('Observed Element')).toBeNull();
42
- expect(result).toEqual(element);
43
- });
44
-
45
- test('waits when using getAllBy query', async () => {
46
- const screen = render(<TestSetup />);
47
-
48
- fireEvent.press(screen.getByText('Remove Element'));
49
- const elements = screen.getAllByText('Observed Element');
50
- expect(elements).toBeTruthy();
51
-
52
- const result = await waitForElementToBeRemoved(() =>
53
- screen.getAllByText('Observed Element')
54
- );
55
- expect(screen.queryByText('Observed Element')).toBeNull();
56
- expect(result).toEqual(elements);
57
- });
58
-
59
- test('waits when using queryBy query', async () => {
60
- const screen = render(<TestSetup />);
61
-
62
- fireEvent.press(screen.getByText('Remove Element'));
63
- const element = screen.getByText('Observed Element');
64
- expect(element).toBeTruthy();
65
-
66
- const result = await waitForElementToBeRemoved(() =>
67
- screen.queryByText('Observed Element')
68
- );
69
- expect(screen.queryByText('Observed Element')).toBeNull();
70
- expect(result).toEqual(element);
71
- });
72
-
73
- test('waits when using queryAllBy query', async () => {
74
- const screen = render(<TestSetup />);
75
-
76
- fireEvent.press(screen.getByText('Remove Element'));
77
- const elements = screen.getAllByText('Observed Element');
78
- expect(elements).toBeTruthy();
79
-
80
- const result = await waitForElementToBeRemoved(() =>
81
- screen.queryAllByText('Observed Element')
82
- );
83
- expect(screen.queryByText('Observed Element')).toBeNull();
84
- expect(result).toEqual(elements);
85
- });
86
-
87
- test('checks if elements exist at start', async () => {
88
- const screen = render(<TestSetup shouldUseDelay={false} />);
89
-
90
- fireEvent.press(screen.getByText('Remove Element'));
91
- expect(screen.queryByText('Observed Element')).toBeNull();
92
-
93
- await expect(
94
- waitForElementToBeRemoved(() => screen.queryByText('Observed Element'))
95
- ).rejects.toThrow(
96
- 'The element(s) given to waitForElementToBeRemoved are already removed. waitForElementToBeRemoved requires that the element(s) exist(s) before waiting for removal.'
97
- );
98
- });
99
-
100
- test('waits until timeout', async () => {
101
- const screen = render(<TestSetup />);
102
-
103
- fireEvent.press(screen.getByText('Remove Element'));
104
- expect(screen.getByText('Observed Element')).toBeTruthy();
105
-
106
- await expect(
107
- waitForElementToBeRemoved(() => screen.getByText('Observed Element'), {
108
- timeout: 100,
109
- })
110
- ).rejects.toThrow('Timed out in waitForElementToBeRemoved.');
111
-
112
- // Async action ends after 300ms and we only waited 100ms, so we need to wait for the remaining
113
- // async actions to finish
114
- await waitForElementToBeRemoved(() => screen.getByText('Observed Element'));
115
- });
116
-
117
- test('waits with custom interval', async () => {
118
- const mockFn = jest.fn(() => <View />);
119
-
120
- try {
121
- await waitForElementToBeRemoved(() => mockFn(), {
122
- timeout: 600,
123
- interval: 200,
124
- });
125
- } catch (e) {
126
- // Suppress expected error
127
- }
128
-
129
- expect(mockFn).toHaveBeenCalledTimes(4);
130
- });
131
-
132
- test.each([false, true])(
133
- 'works with fake timers (legacyFakeTimers = %s)',
134
- async (legacyFakeTimers) => {
135
- jest.useFakeTimers({ legacyFakeTimers });
136
-
137
- const mockFn = jest.fn(() => <View />);
138
-
139
- try {
140
- await waitForElementToBeRemoved(() => mockFn(), {
141
- timeout: 400,
142
- interval: 200,
143
- });
144
- } catch (e) {
145
- // Suppress expected error
146
- }
147
-
148
- // waitForElementToBeRemoved runs an initial call of the expectation
149
- expect(mockFn).toHaveBeenCalledTimes(4);
150
- }
151
- );
@@ -1,96 +0,0 @@
1
- import * as React from 'react';
2
- import { View, Text, TextInput } from 'react-native';
3
- import { render, within, getQueriesForElement } from '..';
4
-
5
- test('within() exposes basic queries', async () => {
6
- const rootQueries = render(
7
- <View>
8
- <View accessibilityHint="first">
9
- <Text>Same Text</Text>
10
- <TextInput value="Same Value" placeholder="Same Placeholder" />
11
- </View>
12
- <View accessibilityHint="second">
13
- <Text>Same Text</Text>
14
- <TextInput value="Same Value" placeholder="Same Placeholder" />
15
- </View>
16
- </View>
17
- );
18
-
19
- expect(rootQueries.getAllByText('Same Text')).toHaveLength(2);
20
- expect(rootQueries.getAllByDisplayValue('Same Value')).toHaveLength(2);
21
- expect(rootQueries.getAllByPlaceholderText('Same Placeholder')).toHaveLength(
22
- 2
23
- );
24
-
25
- const firstQueries = within(rootQueries.getByA11yHint('first'));
26
- expect(firstQueries.getAllByText('Same Text')).toHaveLength(1);
27
- expect(firstQueries.getByText('Same Text')).toBeTruthy();
28
- expect(firstQueries.queryAllByText('Same Text')).toHaveLength(1);
29
- expect(firstQueries.queryByText('Same Text')).toBeTruthy();
30
- expect(firstQueries.getByDisplayValue('Same Value')).toBeTruthy();
31
- expect(firstQueries.getByPlaceholderText('Same Placeholder')).toBeTruthy();
32
- await expect(
33
- firstQueries.findByDisplayValue('Same Value')
34
- ).resolves.toBeTruthy();
35
- await expect(
36
- firstQueries.findAllByPlaceholderText('Same Placeholder')
37
- ).resolves.toHaveLength(1);
38
-
39
- const secondQueries = within(rootQueries.getByA11yHint('second'));
40
- expect(secondQueries.getAllByText('Same Text')).toHaveLength(1);
41
- expect(secondQueries.getByText('Same Text')).toBeTruthy();
42
- expect(secondQueries.queryAllByText('Same Text')).toHaveLength(1);
43
- expect(secondQueries.queryByText('Same Text')).toBeTruthy();
44
- expect(secondQueries.getByDisplayValue('Same Value')).toBeTruthy();
45
- expect(secondQueries.getByPlaceholderText('Same Placeholder')).toBeTruthy();
46
- });
47
-
48
- test('within() exposes a11y queries', async () => {
49
- const rootQueries = render(
50
- <View>
51
- <View accessibilityHint="first">
52
- <TextInput
53
- value="Same Value"
54
- accessibilityLabel="Same Label"
55
- accessibilityHint="Same Hint"
56
- />
57
- </View>
58
- <View accessibilityHint="second">
59
- <TextInput
60
- value="Same Value"
61
- accessibilityLabel="Same Label"
62
- accessibilityHint="Same Hint"
63
- />
64
- </View>
65
- </View>
66
- );
67
-
68
- expect(rootQueries.getAllByLabelText('Same Label')).toHaveLength(2);
69
- expect(rootQueries.getAllByA11yHint('Same Hint')).toHaveLength(2);
70
-
71
- const firstQueries = within(rootQueries.getByA11yHint('first'));
72
- expect(firstQueries.getByLabelText('Same Label')).toBeTruthy();
73
- expect(firstQueries.getByA11yHint('Same Hint')).toBeTruthy();
74
- expect(firstQueries.queryByLabelText('Same Label')).toBeTruthy();
75
- expect(firstQueries.queryByA11yHint('Same Hint')).toBeTruthy();
76
- await expect(
77
- firstQueries.findByLabelText('Same Label')
78
- ).resolves.toBeTruthy();
79
- await expect(firstQueries.findByA11yHint('Same Hint')).resolves.toBeTruthy();
80
-
81
- const secondQueries = within(rootQueries.getByA11yHint('second'));
82
- expect(secondQueries.getAllByLabelText('Same Label')).toHaveLength(1);
83
- expect(secondQueries.getAllByA11yHint('Same Hint')).toHaveLength(1);
84
- expect(secondQueries.queryAllByLabelText('Same Label')).toHaveLength(1);
85
- expect(secondQueries.queryAllByA11yHint('Same Hint')).toHaveLength(1);
86
- await expect(
87
- secondQueries.findAllByLabelText('Same Label')
88
- ).resolves.toHaveLength(1);
89
- await expect(
90
- secondQueries.findAllByA11yHint('Same Hint')
91
- ).resolves.toHaveLength(1);
92
- });
93
-
94
- test('getQueriesForElement is alias to within', () => {
95
- expect(getQueriesForElement).toBe(within);
96
- });
package/src/act.ts DELETED
@@ -1,86 +0,0 @@
1
- // This file and the act() implementation is sourced from react-testing-library
2
- // https://github.com/testing-library/react-testing-library/blob/c80809a956b0b9f3289c4a6fa8b5e8cc72d6ef6d/src/act-compat.js
3
- import { act as reactTestRendererAct } from 'react-test-renderer';
4
- import { checkReactVersionAtLeast } from './react-versions';
5
-
6
- type ReactAct = typeof reactTestRendererAct;
7
-
8
- // See https://github.com/reactwg/react-18/discussions/102 for more context on global.IS_REACT_ACT_ENVIRONMENT
9
- declare global {
10
- var IS_REACT_ACT_ENVIRONMENT: boolean | undefined;
11
- }
12
-
13
- function setIsReactActEnvironment(isReactActEnvironment: boolean | undefined) {
14
- globalThis.IS_REACT_ACT_ENVIRONMENT = isReactActEnvironment;
15
- }
16
-
17
- function getIsReactActEnvironment() {
18
- return globalThis.IS_REACT_ACT_ENVIRONMENT;
19
- }
20
-
21
- function withGlobalActEnvironment(actImplementation: ReactAct) {
22
- return (callback: Parameters<ReactAct>[0]) => {
23
- const previousActEnvironment = getIsReactActEnvironment();
24
- setIsReactActEnvironment(true);
25
-
26
- // this code is riddled with eslint disabling comments because this doesn't use real promises but eslint thinks we do
27
- try {
28
- // The return value of `act` is always a thenable.
29
- let callbackNeedsToBeAwaited = false;
30
- const actResult = actImplementation(() => {
31
- const result = callback();
32
- if (
33
- result !== null &&
34
- typeof result === 'object' &&
35
- // @ts-expect-error this should be a promise or thenable
36
- // eslint-disable-next-line promise/prefer-await-to-then
37
- typeof result.then === 'function'
38
- ) {
39
- callbackNeedsToBeAwaited = true;
40
- }
41
- return result;
42
- });
43
-
44
- if (callbackNeedsToBeAwaited) {
45
- const thenable = actResult;
46
- return {
47
- then: (
48
- resolve: (value: never) => never,
49
- reject: (value: never) => never
50
- ) => {
51
- // eslint-disable-next-line
52
- thenable.then(
53
- // eslint-disable-next-line promise/always-return
54
- (returnValue) => {
55
- setIsReactActEnvironment(previousActEnvironment);
56
- resolve(returnValue);
57
- },
58
- (error) => {
59
- setIsReactActEnvironment(previousActEnvironment);
60
- reject(error);
61
- }
62
- );
63
- },
64
- };
65
- } else {
66
- setIsReactActEnvironment(previousActEnvironment);
67
- return actResult;
68
- }
69
- } catch (error) {
70
- // Can't be a `finally {}` block since we don't know if we have to immediately restore IS_REACT_ACT_ENVIRONMENT
71
- // or if we have to await the callback first.
72
- setIsReactActEnvironment(previousActEnvironment);
73
- throw error;
74
- }
75
- };
76
- }
77
-
78
- const act: ReactAct = checkReactVersionAtLeast(18, 0)
79
- ? (withGlobalActEnvironment(reactTestRendererAct) as ReactAct)
80
- : reactTestRendererAct;
81
-
82
- export default act;
83
- export {
84
- setIsReactActEnvironment as setReactActEnvironment,
85
- getIsReactActEnvironment,
86
- };
package/src/cleanup.ts DELETED
@@ -1,15 +0,0 @@
1
- import * as React from 'react';
2
- import { clearRenderResult } from './screen';
3
-
4
- type CleanUpFunction = (nextElement?: React.ReactElement<any>) => void;
5
- let cleanupQueue = new Set<CleanUpFunction>();
6
-
7
- export default function cleanup() {
8
- clearRenderResult();
9
- cleanupQueue.forEach((fn) => fn());
10
- cleanupQueue.clear();
11
- }
12
-
13
- export function addToCleanupQueue(fn: CleanUpFunction) {
14
- cleanupQueue.add(fn);
15
- }