@testing-library/react-native 12.2.1 → 12.3.0

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 (395) hide show
  1. package/build/config.d.ts +1 -0
  2. package/build/config.js.map +1 -1
  3. package/build/fireEvent.js +2 -1
  4. package/build/fireEvent.js.map +1 -1
  5. package/build/helpers/accessiblity.d.ts +7 -0
  6. package/build/helpers/accessiblity.js +73 -2
  7. package/build/helpers/accessiblity.js.map +1 -1
  8. package/build/helpers/component-tree.d.ts +7 -0
  9. package/build/helpers/component-tree.js +18 -0
  10. package/build/helpers/component-tree.js.map +1 -1
  11. package/build/helpers/format-default.d.ts +1 -2
  12. package/build/helpers/format-default.js +22 -13
  13. package/build/helpers/format-default.js.map +1 -1
  14. package/build/helpers/format.js +1 -4
  15. package/build/helpers/format.js.map +1 -1
  16. package/build/helpers/host-component-names.d.ts +5 -0
  17. package/build/helpers/host-component-names.js +13 -1
  18. package/build/helpers/host-component-names.js.map +1 -1
  19. package/build/helpers/matchers/accessibilityState.js +3 -3
  20. package/build/helpers/matchers/accessibilityState.js.map +1 -1
  21. package/build/helpers/matchers/accessibilityValue.js +3 -2
  22. package/build/helpers/matchers/accessibilityValue.js.map +1 -1
  23. package/build/helpers/matchers/matchLabelText.d.ts +1 -1
  24. package/build/helpers/matchers/matchLabelText.js +5 -8
  25. package/build/helpers/matchers/matchLabelText.js.map +1 -1
  26. package/build/helpers/matchers/matchTextContent.js +2 -2
  27. package/build/helpers/matchers/matchTextContent.js.map +1 -1
  28. package/build/helpers/{getTextContent.js → text-content.js} +1 -1
  29. package/build/helpers/text-content.js.map +1 -0
  30. package/build/helpers/text-input.d.ts +3 -0
  31. package/build/helpers/text-input.js +21 -0
  32. package/build/helpers/text-input.js.map +1 -0
  33. package/build/matchers/extend-expect.d.js +2 -0
  34. package/build/matchers/extend-expect.d.js.map +1 -0
  35. package/build/matchers/extend-expect.d.ts +2 -0
  36. package/build/matchers/extend-expect.js +26 -0
  37. package/build/matchers/extend-expect.js.map +1 -0
  38. package/build/matchers/index.d.ts +9 -0
  39. package/build/matchers/index.js +75 -0
  40. package/build/matchers/index.js.map +1 -0
  41. package/build/matchers/to-be-checked.d.ts +6 -0
  42. package/build/matchers/to-be-checked.js +31 -0
  43. package/build/matchers/to-be-checked.js.map +1 -0
  44. package/build/matchers/to-be-disabled.d.ts +10 -0
  45. package/build/matchers/to-be-disabled.js +52 -0
  46. package/build/matchers/to-be-disabled.js.map +1 -0
  47. package/build/matchers/to-be-empty-element.d.ts +6 -0
  48. package/build/matchers/to-be-empty-element.js +20 -0
  49. package/build/matchers/to-be-empty-element.js.map +1 -0
  50. package/build/matchers/to-be-on-the-screen.d.ts +6 -0
  51. package/build/matchers/to-be-on-the-screen.js +29 -0
  52. package/build/matchers/to-be-on-the-screen.js.map +1 -0
  53. package/build/matchers/to-be-partially-checked.d.ts +6 -0
  54. package/build/matchers/to-be-partially-checked.js +28 -0
  55. package/build/matchers/to-be-partially-checked.js.map +1 -0
  56. package/build/matchers/to-be-visible.d.ts +6 -0
  57. package/build/matchers/to-be-visible.js +56 -0
  58. package/build/matchers/to-be-visible.js.map +1 -0
  59. package/build/matchers/to-have-display-value.d.ts +7 -0
  60. package/build/matchers/to-have-display-value.js +26 -0
  61. package/build/matchers/to-have-display-value.js.map +1 -0
  62. package/build/matchers/to-have-prop.d.ts +6 -0
  63. package/build/matchers/to-have-prop.js +35 -0
  64. package/build/matchers/to-have-prop.js.map +1 -0
  65. package/build/matchers/to-have-text-content.d.ts +7 -0
  66. package/build/matchers/to-have-text-content.js +21 -0
  67. package/build/matchers/to-have-text-content.js.map +1 -0
  68. package/build/matchers/utils.d.ts +18 -0
  69. package/build/matchers/utils.js +90 -0
  70. package/build/matchers/utils.js.map +1 -0
  71. package/build/matches.d.ts +1 -1
  72. package/build/matches.js.map +1 -1
  73. package/build/queries/displayValue.js +4 -3
  74. package/build/queries/displayValue.js.map +1 -1
  75. package/build/queries/labelText.js +2 -2
  76. package/build/queries/labelText.js.map +1 -1
  77. package/build/queries/role.js +1 -1
  78. package/build/queries/role.js.map +1 -1
  79. package/build/render.d.ts +12 -48
  80. package/build/user-event/clear.js +2 -1
  81. package/build/user-event/clear.js.map +1 -1
  82. package/build/user-event/press/press.js +2 -1
  83. package/build/user-event/press/press.js.map +1 -1
  84. package/build/user-event/type/type.js +2 -1
  85. package/build/user-event/type/type.js.map +1 -1
  86. package/build/user-event/utils/index.d.ts +0 -1
  87. package/build/user-event/utils/index.js +0 -11
  88. package/build/user-event/utils/index.js.map +1 -1
  89. package/package.json +6 -23
  90. package/.DS_Store +0 -0
  91. package/.codecov.yml +0 -9
  92. package/.eslintcache +0 -1
  93. package/.eslintignore +0 -3
  94. package/.eslintrc +0 -19
  95. package/.flowconfig +0 -63
  96. package/.github/ISSUE_TEMPLATE/bug_report.md +0 -38
  97. package/.github/ISSUE_TEMPLATE/feature_request.md +0 -14
  98. package/.github/ISSUE_TEMPLATE/question.md +0 -9
  99. package/.github/PULL_REQUEST_TEMPLATE.md +0 -10
  100. package/.github/actions/setup-deps/action.yml +0 -22
  101. package/.github/actions/setup-website-deps/action.yml +0 -22
  102. package/.github/dependabot.yml +0 -10
  103. package/.github/workflows/deploy-website.yml +0 -36
  104. package/.github/workflows/example-apps.yml +0 -25
  105. package/.github/workflows/main.yml +0 -103
  106. package/.gitignore +0 -11
  107. package/.prettierrc.js +0 -5
  108. package/CODE_OF_CONDUCT.md +0 -73
  109. package/CONTRIBUTING.md +0 -64
  110. package/babel.config.js +0 -22
  111. package/build/helpers/getTextContent.js.map +0 -1
  112. package/build/user-event/utils/host-components.d.ts +0 -2
  113. package/build/user-event/utils/host-components.js +0 -11
  114. package/build/user-event/utils/host-components.js.map +0 -1
  115. package/examples/basic/.expo/README.md +0 -15
  116. package/examples/basic/.expo/packager-info.json +0 -4
  117. package/examples/basic/.expo/settings.json +0 -10
  118. package/examples/basic/.expo-shared/assets.json +0 -4
  119. package/examples/basic/.gitignore +0 -14
  120. package/examples/basic/App.tsx +0 -20
  121. package/examples/basic/README.md +0 -11
  122. package/examples/basic/__tests__/App.test.tsx +0 -137
  123. package/examples/basic/app.json +0 -31
  124. package/examples/basic/assets/adaptive-icon.png +0 -0
  125. package/examples/basic/assets/favicon.png +0 -0
  126. package/examples/basic/assets/icon.png +0 -0
  127. package/examples/basic/assets/splash.png +0 -0
  128. package/examples/basic/babel.config.js +0 -6
  129. package/examples/basic/components/Home.tsx +0 -28
  130. package/examples/basic/components/LoginForm.tsx +0 -138
  131. package/examples/basic/jest-setup.ts +0 -7
  132. package/examples/basic/jest.config.js +0 -5
  133. package/examples/basic/package.json +0 -30
  134. package/examples/basic/tsconfig.json +0 -7
  135. package/examples/basic/yarn.lock +0 -7499
  136. package/examples/react-navigation/README.md +0 -16
  137. package/examples/react-navigation/babel.config.js +0 -4
  138. package/examples/react-navigation/jest-setup.js +0 -11
  139. package/examples/react-navigation/jest.config.js +0 -10
  140. package/examples/react-navigation/package.json +0 -31
  141. package/examples/react-navigation/src/App.js +0 -21
  142. package/examples/react-navigation/src/DrawerNavigator.js +0 -15
  143. package/examples/react-navigation/src/DrawerNavigator.test.js +0 -42
  144. package/examples/react-navigation/src/NativeStackNavigator.js +0 -15
  145. package/examples/react-navigation/src/NativeStackNavigator.test.js +0 -34
  146. package/examples/react-navigation/src/StackNavigator.js +0 -15
  147. package/examples/react-navigation/src/StackNavigator.test.js +0 -34
  148. package/examples/react-navigation/src/TabNavigator.js +0 -15
  149. package/examples/react-navigation/src/TabNavigator.test.js +0 -21
  150. package/examples/react-navigation/src/screens/DetailsScreen.js +0 -43
  151. package/examples/react-navigation/src/screens/DetailsScreen.test.js +0 -27
  152. package/examples/react-navigation/src/screens/DrawerHomeScreen.js +0 -26
  153. package/examples/react-navigation/src/screens/HomeScreen.js +0 -48
  154. package/examples/react-navigation/src/screens/SettingsScreen.js +0 -20
  155. package/examples/react-navigation/src/test-utils.js +0 -12
  156. package/examples/react-navigation/yarn.lock +0 -5018
  157. package/examples/redux/App.js +0 -27
  158. package/examples/redux/README.md +0 -5
  159. package/examples/redux/actions/todoActions.js +0 -25
  160. package/examples/redux/babel.config.js +0 -6
  161. package/examples/redux/components/AddTodo.js +0 -73
  162. package/examples/redux/components/AddTodo.test.js +0 -27
  163. package/examples/redux/components/TodoElem.js +0 -25
  164. package/examples/redux/components/TodoList.js +0 -29
  165. package/examples/redux/components/TodoList.test.js +0 -34
  166. package/examples/redux/index.js +0 -8
  167. package/examples/redux/jest-setup.js +0 -2
  168. package/examples/redux/jest.config.js +0 -4
  169. package/examples/redux/package.json +0 -23
  170. package/examples/redux/reducers/index.js +0 -6
  171. package/examples/redux/reducers/todoReducer.js +0 -27
  172. package/examples/redux/store.js +0 -10
  173. package/examples/redux/test-utils.js +0 -11
  174. package/examples/redux/yarn.lock +0 -4819
  175. package/experiments-app/.expo/README.md +0 -15
  176. package/experiments-app/.expo/devices.json +0 -3
  177. package/experiments-app/.expo/packager-info.json +0 -9
  178. package/experiments-app/.expo/settings.json +0 -9
  179. package/experiments-app/.gitignore +0 -17
  180. package/experiments-app/.prettierrc.js +0 -5
  181. package/experiments-app/app.json +0 -30
  182. package/experiments-app/assets/adaptive-icon.png +0 -0
  183. package/experiments-app/assets/favicon.png +0 -0
  184. package/experiments-app/assets/icon.png +0 -0
  185. package/experiments-app/assets/splash.png +0 -0
  186. package/experiments-app/babel.config.js +0 -6
  187. package/experiments-app/index.js +0 -4
  188. package/experiments-app/package.json +0 -29
  189. package/experiments-app/src/App.tsx +0 -31
  190. package/experiments-app/src/MainScreen.tsx +0 -52
  191. package/experiments-app/src/experiments.ts +0 -35
  192. package/experiments-app/src/screens/FlatListEvents.tsx +0 -57
  193. package/experiments-app/src/screens/ScrollViewEvents.tsx +0 -65
  194. package/experiments-app/src/screens/SectionListEvents.tsx +0 -91
  195. package/experiments-app/src/screens/TextInputEventPropagation.tsx +0 -42
  196. package/experiments-app/src/screens/TextInputEvents.tsx +0 -48
  197. package/experiments-app/src/utils/helpers.ts +0 -18
  198. package/experiments-app/tsconfig.json +0 -6
  199. package/experiments-app/yarn.lock +0 -6709
  200. package/experiments-rtl/.babelrc +0 -8
  201. package/experiments-rtl/.eslintrc.json +0 -3
  202. package/experiments-rtl/.gitignore +0 -35
  203. package/experiments-rtl/README.md +0 -34
  204. package/experiments-rtl/jest-setup.js +0 -1
  205. package/experiments-rtl/jest.config.js +0 -4
  206. package/experiments-rtl/next.config.js +0 -4
  207. package/experiments-rtl/package.json +0 -38
  208. package/experiments-rtl/postcss.config.js +0 -6
  209. package/experiments-rtl/public/next.svg +0 -1
  210. package/experiments-rtl/public/vercel.svg +0 -1
  211. package/experiments-rtl/src/app/__tests__/click.test.tsx +0 -31
  212. package/experiments-rtl/src/app/__tests__/managed-text-input.test.tsx +0 -51
  213. package/experiments-rtl/src/app/globals.css +0 -27
  214. package/experiments-rtl/src/app/layout.tsx +0 -22
  215. package/experiments-rtl/src/app/page.tsx +0 -113
  216. package/experiments-rtl/tailwind.config.ts +0 -20
  217. package/experiments-rtl/tsconfig.json +0 -28
  218. package/experiments-rtl/yarn.lock +0 -5418
  219. package/flow-typed/npm/jest_v26.x.x.js +0 -1218
  220. package/flow-typed/npm/react-test-renderer_v16.x.x.js +0 -81
  221. package/jest-setup.ts +0 -10
  222. package/renovate.json +0 -19
  223. package/scripts/test_react_17 +0 -12
  224. package/src/__tests__/__snapshots__/render-debug.test.tsx.snap +0 -548
  225. package/src/__tests__/__snapshots__/render.test.tsx.snap +0 -39
  226. package/src/__tests__/act.test.tsx +0 -56
  227. package/src/__tests__/auto-cleanup-skip.test.tsx +0 -39
  228. package/src/__tests__/auto-cleanup.test.tsx +0 -50
  229. package/src/__tests__/cleanup.test.tsx +0 -26
  230. package/src/__tests__/config.test.ts +0 -55
  231. package/src/__tests__/fireEvent-textInput.test.tsx +0 -154
  232. package/src/__tests__/fireEvent.test.tsx +0 -485
  233. package/src/__tests__/host-component-names.test.tsx +0 -109
  234. package/src/__tests__/host-text-nesting.test.tsx +0 -90
  235. package/src/__tests__/jest-native.test.tsx +0 -84
  236. package/src/__tests__/questionsBoard.test.tsx +0 -62
  237. package/src/__tests__/react-native-api.test.tsx +0 -126
  238. package/src/__tests__/render-debug.test.tsx +0 -207
  239. package/src/__tests__/render-stringValidation.test.tsx +0 -157
  240. package/src/__tests__/render.test.tsx +0 -256
  241. package/src/__tests__/renderHook.test.tsx +0 -114
  242. package/src/__tests__/screen.test.tsx +0 -66
  243. package/src/__tests__/timerUtils.ts +0 -7
  244. package/src/__tests__/timers.test.ts +0 -27
  245. package/src/__tests__/waitFor.test.tsx +0 -327
  246. package/src/__tests__/waitForElementToBeRemoved.test.tsx +0 -151
  247. package/src/__tests__/within.test.tsx +0 -96
  248. package/src/act.ts +0 -86
  249. package/src/cleanup.ts +0 -15
  250. package/src/config.ts +0 -72
  251. package/src/fireEvent.ts +0 -159
  252. package/src/flush-micro-tasks.ts +0 -30
  253. package/src/helpers/__tests__/accessiblity.test.tsx +0 -373
  254. package/src/helpers/__tests__/component-tree.test.tsx +0 -226
  255. package/src/helpers/__tests__/format-default.tsx +0 -114
  256. package/src/helpers/__tests__/getTextContent.test.tsx +0 -49
  257. package/src/helpers/__tests__/includeHiddenElements.test.tsx +0 -39
  258. package/src/helpers/__tests__/query-name.test.ts +0 -10
  259. package/src/helpers/__tests__/timers.test.ts +0 -8
  260. package/src/helpers/accessiblity.ts +0 -108
  261. package/src/helpers/component-tree.ts +0 -94
  262. package/src/helpers/debugDeep.ts +0 -27
  263. package/src/helpers/debugShallow.ts +0 -22
  264. package/src/helpers/deprecation.ts +0 -53
  265. package/src/helpers/errors.ts +0 -66
  266. package/src/helpers/findAll.ts +0 -70
  267. package/src/helpers/format-default.ts +0 -72
  268. package/src/helpers/format.ts +0 -47
  269. package/src/helpers/getTextContent.ts +0 -20
  270. package/src/helpers/host-component-names.tsx +0 -88
  271. package/src/helpers/matchers/__tests__/matchArrayValue.test.ts +0 -34
  272. package/src/helpers/matchers/__tests__/matchObject.test.ts +0 -37
  273. package/src/helpers/matchers/__tests__/matchStringValue.test.ts +0 -15
  274. package/src/helpers/matchers/accessibilityState.ts +0 -48
  275. package/src/helpers/matchers/accessibilityValue.ts +0 -24
  276. package/src/helpers/matchers/matchArrayProp.ts +0 -21
  277. package/src/helpers/matchers/matchLabelText.ts +0 -50
  278. package/src/helpers/matchers/matchObjectProp.ts +0 -25
  279. package/src/helpers/matchers/matchStringProp.ts +0 -23
  280. package/src/helpers/matchers/matchTextContent.ts +0 -20
  281. package/src/helpers/pointer-events.ts +0 -27
  282. package/src/helpers/query-name.ts +0 -4
  283. package/src/helpers/stringValidation.ts +0 -36
  284. package/src/helpers/timers.ts +0 -98
  285. package/src/index.ts +0 -33
  286. package/src/matches.ts +0 -49
  287. package/src/pure.ts +0 -27
  288. package/src/queries/__tests__/a11yState.test.tsx +0 -439
  289. package/src/queries/__tests__/a11yValue.test.tsx +0 -309
  290. package/src/queries/__tests__/displayValue.test.tsx +0 -221
  291. package/src/queries/__tests__/hintText.test.tsx +0 -177
  292. package/src/queries/__tests__/labelText.test.tsx +0 -242
  293. package/src/queries/__tests__/makeQueries.test.tsx +0 -235
  294. package/src/queries/__tests__/placeholderText.test.tsx +0 -136
  295. package/src/queries/__tests__/role-value.test.tsx +0 -176
  296. package/src/queries/__tests__/role.test.tsx +0 -824
  297. package/src/queries/__tests__/testId.test.tsx +0 -200
  298. package/src/queries/__tests__/text.test.tsx +0 -556
  299. package/src/queries/a11yState.ts +0 -127
  300. package/src/queries/a11yValue.ts +0 -127
  301. package/src/queries/displayValue.ts +0 -71
  302. package/src/queries/hintText.ts +0 -107
  303. package/src/queries/labelText.ts +0 -57
  304. package/src/queries/makeQueries.ts +0 -255
  305. package/src/queries/options.ts +0 -14
  306. package/src/queries/placeholderText.ts +0 -72
  307. package/src/queries/role.ts +0 -131
  308. package/src/queries/testId.ts +0 -66
  309. package/src/queries/text.ts +0 -63
  310. package/src/queries/unsafeProps.ts +0 -76
  311. package/src/queries/unsafeType.ts +0 -73
  312. package/src/react-versions.ts +0 -11
  313. package/src/render-act.ts +0 -19
  314. package/src/render.tsx +0 -183
  315. package/src/renderHook.tsx +0 -56
  316. package/src/screen.ts +0 -123
  317. package/src/shallow.ts +0 -18
  318. package/src/test-utils/events.ts +0 -24
  319. package/src/test-utils/index.ts +0 -1
  320. package/src/user-event/__tests__/__snapshots__/clear.test.tsx.snap +0 -269
  321. package/src/user-event/__tests__/clear.test.tsx +0 -217
  322. package/src/user-event/clear.ts +0 -59
  323. package/src/user-event/event-builder/common.ts +0 -66
  324. package/src/user-event/event-builder/index.ts +0 -7
  325. package/src/user-event/event-builder/text-input.ts +0 -86
  326. package/src/user-event/index.ts +0 -18
  327. package/src/user-event/press/__tests__/longPress.real-timers.test.tsx +0 -117
  328. package/src/user-event/press/__tests__/longPress.test.tsx +0 -157
  329. package/src/user-event/press/__tests__/press.real-timers.test.tsx +0 -320
  330. package/src/user-event/press/__tests__/press.test.tsx +0 -457
  331. package/src/user-event/press/constants.ts +0 -7
  332. package/src/user-event/press/index.ts +0 -1
  333. package/src/user-event/press/press.ts +0 -163
  334. package/src/user-event/setup/index.ts +0 -2
  335. package/src/user-event/setup/setup.ts +0 -142
  336. package/src/user-event/type/__tests__/__snapshots__/type-managed.test.tsx.snap +0 -339
  337. package/src/user-event/type/__tests__/__snapshots__/type.test.tsx.snap +0 -668
  338. package/src/user-event/type/__tests__/parseKeys.test.ts +0 -23
  339. package/src/user-event/type/__tests__/type-managed.test.tsx +0 -120
  340. package/src/user-event/type/__tests__/type.test.tsx +0 -335
  341. package/src/user-event/type/index.ts +0 -1
  342. package/src/user-event/type/parseKeys.ts +0 -41
  343. package/src/user-event/type/type.ts +0 -138
  344. package/src/user-event/utils/__tests__/dispatch-event.test.tsx +0 -41
  345. package/src/user-event/utils/__tests__/wait.test.ts +0 -62
  346. package/src/user-event/utils/content-size.ts +0 -25
  347. package/src/user-event/utils/dispatch-event.ts +0 -38
  348. package/src/user-event/utils/host-components.ts +0 -6
  349. package/src/user-event/utils/index.ts +0 -6
  350. package/src/user-event/utils/text-range.ts +0 -4
  351. package/src/user-event/utils/wait.ts +0 -15
  352. package/src/user-event/utils/warn-about-real-timers.ts +0 -13
  353. package/src/waitFor.ts +0 -228
  354. package/src/waitForElementToBeRemoved.ts +0 -42
  355. package/src/within.ts +0 -30
  356. package/tsconfig.json +0 -17
  357. package/tsconfig.release.json +0 -8
  358. package/website/.gitignore +0 -20
  359. package/website/README.md +0 -33
  360. package/website/docker/.dockerignore +0 -3
  361. package/website/docker/Dockerfile +0 -9
  362. package/website/docker/docker-compose.yml +0 -11
  363. package/website/docs/API.md +0 -940
  364. package/website/docs/EslintPLluginTestingLibrary.md +0 -28
  365. package/website/docs/FAQ.md +0 -44
  366. package/website/docs/GettingStarted.md +0 -100
  367. package/website/docs/HowShouldIQuery.md +0 -21
  368. package/website/docs/MigrationV11.md +0 -64
  369. package/website/docs/MigrationV12.md +0 -67
  370. package/website/docs/MigrationV2.md +0 -126
  371. package/website/docs/MigrationV7.md +0 -119
  372. package/website/docs/MigrationV9.md +0 -67
  373. package/website/docs/Queries.md +0 -572
  374. package/website/docs/ReactNavigation.md +0 -371
  375. package/website/docs/ReduxIntegration.md +0 -137
  376. package/website/docs/TestingEnvironment.md +0 -154
  377. package/website/docs/Troubleshooting.md +0 -44
  378. package/website/docs/UnderstandingAct.md +0 -227
  379. package/website/docs/UserEvent.md +0 -191
  380. package/website/docusaurus.config.js +0 -114
  381. package/website/package.json +0 -31
  382. package/website/sidebars.js +0 -20
  383. package/website/src/components/Feature.js +0 -31
  384. package/website/src/css/custom.css +0 -13
  385. package/website/src/css/index.module.css +0 -77
  386. package/website/src/pages/index.js +0 -82
  387. package/website/static/.nojekyll +0 -0
  388. package/website/static/css/custom.css +0 -28
  389. package/website/static/img/hit.png +0 -0
  390. package/website/static/img/locomotive.png +0 -0
  391. package/website/static/img/owl.png +0 -0
  392. package/website/static/img/tools.png +0 -0
  393. package/website/yarn.lock +0 -7669
  394. package/yarn.lock +0 -7765
  395. /package/build/helpers/{getTextContent.d.ts → text-content.d.ts} +0 -0
@@ -1,22 +0,0 @@
1
- import * as React from 'react';
2
- import type { ReactTestInstance } from 'react-test-renderer';
3
- import { shallowInternal } from '../shallow';
4
- import format from './format';
5
-
6
- /**
7
- * Log pretty-printed shallow test component instance
8
- */
9
- export default function debugShallow(
10
- instance: ReactTestInstance | React.ReactElement<any>,
11
- message?: string
12
- ) {
13
- const { output } = shallowInternal(instance);
14
-
15
- if (message) {
16
- // eslint-disable-next-line no-console
17
- console.log(`${message}\n\n`, format(output));
18
- } else {
19
- // eslint-disable-next-line no-console
20
- console.log(format(output));
21
- }
22
- }
@@ -1,53 +0,0 @@
1
- import { getQueryPrefix } from './query-name';
2
-
3
- export function deprecateQueries<Queries extends Record<string, any>>(
4
- queriesObject: Queries,
5
- recommendation: string
6
- ): Queries {
7
- const result = {} as Queries;
8
- Object.keys(queriesObject).forEach((queryName) => {
9
- const queryFn = queriesObject[queryName];
10
- // @ts-expect-error: generic typing is hard
11
- result[queryName] = deprecateQuery(queryFn, queryName, recommendation);
12
- });
13
-
14
- return result;
15
- }
16
-
17
- function deprecateQuery<QueryFn extends (...args: any) => any>(
18
- queryFn: QueryFn,
19
- queryName: string,
20
- recommendation: string
21
- ): QueryFn {
22
- const formattedRecommendation = recommendation.replace(
23
- /{queryPrefix}/g,
24
- getQueryPrefix(queryName)
25
- );
26
-
27
- // @ts-expect-error: generic typing is hard
28
- const wrapper: QueryFn = (...args: any) => {
29
- const errorMessage = `${queryName}(...) is deprecated and will be removed in the future.\n\n${formattedRecommendation}`;
30
- // eslint-disable-next-line no-console
31
- console.warn(errorMessage);
32
- return queryFn(...args);
33
- };
34
-
35
- return wrapper;
36
- }
37
-
38
- const warned: { [functionName: string]: boolean } = {};
39
-
40
- /* istanbul ignore next: occasionally used */
41
- export function printDeprecationWarning(functionName: string) {
42
- if (warned[functionName]) {
43
- return;
44
- }
45
-
46
- // eslint-disable-next-line no-console
47
- console.warn(`
48
- Deprecation Warning:
49
- Use of ${functionName} is not recommended and will be deleted in future versions of @testing-library/react-native.
50
- `);
51
-
52
- warned[functionName] = true;
53
- }
@@ -1,66 +0,0 @@
1
- import prettyFormat from 'pretty-format';
2
-
3
- export class ErrorWithStack extends Error {
4
- constructor(message: string | undefined, callsite: Function) {
5
- super(message);
6
- if (Error.captureStackTrace) {
7
- Error.captureStackTrace(this, callsite);
8
- }
9
- }
10
- }
11
-
12
- export const prepareErrorMessage = (
13
- // TS states that error caught in a catch close are of type `unknown`
14
- // most real cases will be `Error`, but better safe than sorry
15
- error: unknown,
16
- name?: string,
17
- value?: unknown
18
- ): string => {
19
- let errorMessage: string;
20
- if (error instanceof Error) {
21
- // Strip info about custom predicate
22
- errorMessage = error.message.replace(
23
- / matching custom predicate[^]*/gm,
24
- ''
25
- );
26
- } else if (error && typeof error === 'object') {
27
- errorMessage = error.toString();
28
- } else {
29
- errorMessage = 'Caught unknown error';
30
- }
31
-
32
- if (name && value) {
33
- errorMessage += ` with ${name} ${prettyFormat(value, { min: true })}`;
34
- }
35
- return errorMessage;
36
- };
37
-
38
- export const createQueryByError = (
39
- error: unknown,
40
- callsite: Function
41
- ): null => {
42
- if (error instanceof Error) {
43
- if (error.message.includes('No instances found')) {
44
- return null;
45
- }
46
- throw new ErrorWithStack(error.message, callsite);
47
- }
48
-
49
- throw new ErrorWithStack(
50
- // generic refining of `unknown` is very hard, you cannot do `'toString' in error` or anything like that
51
- // Converting as any with extra safe optional chaining will do the job just as well
52
- `Query: caught unknown error type: ${typeof error}, value: ${(
53
- error as any
54
- )?.toString?.()}`,
55
- callsite
56
- );
57
- };
58
-
59
- export function copyStackTrace(target: unknown, stackTraceSource: Error) {
60
- if (target instanceof Error && stackTraceSource.stack) {
61
- target.stack = stackTraceSource.stack.replace(
62
- stackTraceSource.message,
63
- target.message
64
- );
65
- }
66
- }
@@ -1,70 +0,0 @@
1
- import { ReactTestInstance } from 'react-test-renderer';
2
- import { getConfig } from '../config';
3
- import { isHiddenFromAccessibility } from './accessiblity';
4
- import { HostTestInstance, isHostElement } from './component-tree';
5
-
6
- interface FindAllOptions {
7
- /** Match elements hidden from accessibility */
8
- includeHiddenElements?: boolean;
9
-
10
- /** RTL-compatible alias to `includeHiddenElements` */
11
- hidden?: boolean;
12
-
13
- /* Exclude any ancestors of deepest matched elements even if they match the predicate */
14
- matchDeepestOnly?: boolean;
15
- }
16
-
17
- export function findAll(
18
- root: ReactTestInstance,
19
- predicate: (element: ReactTestInstance) => boolean,
20
- options?: FindAllOptions
21
- ): HostTestInstance[] {
22
- const results = findAllInternal(root, predicate, options);
23
-
24
- const includeHiddenElements =
25
- options?.includeHiddenElements ??
26
- options?.hidden ??
27
- getConfig()?.defaultIncludeHiddenElements;
28
-
29
- if (includeHiddenElements) {
30
- return results;
31
- }
32
-
33
- const cache = new WeakMap<ReactTestInstance>();
34
- return results.filter(
35
- (element) => !isHiddenFromAccessibility(element, { cache })
36
- );
37
- }
38
-
39
- // Extracted from React Test Renderer
40
- // src: https://github.com/facebook/react/blob/8e2bde6f2751aa6335f3cef488c05c3ea08e074a/packages/react-test-renderer/src/ReactTestRenderer.js#L402
41
- function findAllInternal(
42
- root: ReactTestInstance,
43
- predicate: (element: ReactTestInstance) => boolean,
44
- options?: FindAllOptions
45
- ): HostTestInstance[] {
46
- const results: HostTestInstance[] = [];
47
-
48
- // Match descendants first but do not add them to results yet.
49
- const matchingDescendants: HostTestInstance[] = [];
50
- root.children.forEach((child) => {
51
- if (typeof child === 'string') {
52
- return;
53
- }
54
- matchingDescendants.push(...findAllInternal(child, predicate, options));
55
- });
56
-
57
- if (
58
- // When matchDeepestOnly = true: add current element only if no descendants match
59
- (!options?.matchDeepestOnly || matchingDescendants.length === 0) &&
60
- isHostElement(root) &&
61
- predicate(root)
62
- ) {
63
- results.push(root);
64
- }
65
-
66
- // Add matching descendants after element to preserve original tree walk order.
67
- results.push(...matchingDescendants);
68
-
69
- return results;
70
- }
@@ -1,72 +0,0 @@
1
- import { StyleSheet, ViewStyle } from 'react-native';
2
- import { MapPropsFunction } from './format';
3
-
4
- const propsToDisplay = [
5
- 'testID',
6
- 'nativeID',
7
- 'accessibilityElementsHidden',
8
- 'accessibilityViewIsModal',
9
- 'importantForAccessibility',
10
- 'accessibilityRole',
11
- 'accessibilityLabel',
12
- 'accessibilityLabelledBy',
13
- 'accessibilityHint',
14
- 'placeholder',
15
- 'value',
16
- 'defaultValue',
17
- 'title',
18
- ];
19
-
20
- /**
21
- * Preserve props that are helpful in diagnosing test failures, while stripping rest
22
- */
23
- export const defaultMapProps: MapPropsFunction = (props) => {
24
- const result: Record<string, unknown> = {};
25
-
26
- const styles = StyleSheet.flatten(props.style as ViewStyle);
27
- if (styles?.display === 'none') {
28
- result.style = { display: 'none' };
29
- }
30
-
31
- const accessibilityState = removeUndefinedKeys(props.accessibilityState);
32
- if (accessibilityState !== undefined) {
33
- result.accessibilityState = accessibilityState;
34
- }
35
-
36
- const accessibilityValue = removeUndefinedKeys(props.accessibilityValue);
37
- if (accessibilityValue !== undefined) {
38
- result.accessibilityValue = accessibilityValue;
39
- }
40
-
41
- propsToDisplay.forEach((propName) => {
42
- if (propName in props) {
43
- result[propName] = props[propName];
44
- }
45
- });
46
-
47
- return result;
48
- };
49
-
50
- function isObject(value: unknown): value is Record<string, unknown> {
51
- return typeof value === 'object' && value !== null && !Array.isArray(value);
52
- }
53
-
54
- function removeUndefinedKeys(prop: unknown) {
55
- if (!isObject(prop)) {
56
- return prop;
57
- }
58
-
59
- const result: Record<string, unknown> = {};
60
- Object.entries(prop).forEach(([key, value]) => {
61
- if (value !== undefined) {
62
- result[key] = value;
63
- }
64
- });
65
-
66
- // If object does not have any props we will ignore it.
67
- if (Object.keys(result).length === 0) {
68
- return undefined;
69
- }
70
-
71
- return result;
72
- }
@@ -1,47 +0,0 @@
1
- import type { ReactTestRendererJSON } from 'react-test-renderer';
2
- import prettyFormat, { NewPlugin, plugins } from 'pretty-format';
3
-
4
- export type MapPropsFunction = (
5
- props: Record<string, unknown>,
6
- node: ReactTestRendererJSON
7
- ) => Record<string, unknown>;
8
-
9
- export type FormatOptions = {
10
- mapProps?: MapPropsFunction;
11
- };
12
-
13
- const format = (
14
- input: ReactTestRendererJSON | ReactTestRendererJSON[],
15
- options: FormatOptions = {}
16
- ) =>
17
- prettyFormat(input, {
18
- plugins: [getCustomPlugin(options.mapProps), plugins.ReactElement],
19
- highlight: shouldHighlight(),
20
- printBasicPrototype: false,
21
- });
22
-
23
- const getCustomPlugin = (mapProps?: MapPropsFunction): NewPlugin => {
24
- return {
25
- test: (val) => plugins.ReactTestComponent.test(val),
26
- serialize: (val, config, indentation, depth, refs, printer) => {
27
- let newVal = val;
28
- if (mapProps && val.props) {
29
- newVal = { ...val, props: mapProps(val.props, val) };
30
- }
31
- return plugins.ReactTestComponent.serialize(
32
- newVal,
33
- config,
34
- indentation,
35
- depth,
36
- refs,
37
- printer
38
- );
39
- },
40
- };
41
- };
42
-
43
- function shouldHighlight() {
44
- return process?.env?.COLORS !== 'false';
45
- }
46
-
47
- export default format;
@@ -1,20 +0,0 @@
1
- import type { ReactTestInstance } from 'react-test-renderer';
2
-
3
- export function getTextContent(
4
- element: ReactTestInstance | string | null
5
- ): string {
6
- if (!element) {
7
- return '';
8
- }
9
-
10
- if (typeof element === 'string') {
11
- return element;
12
- }
13
-
14
- const result: string[] = [];
15
- element.children?.forEach((child) => {
16
- result.push(getTextContent(child));
17
- });
18
-
19
- return result.join('');
20
- }
@@ -1,88 +0,0 @@
1
- import * as React from 'react';
2
- import { ReactTestInstance } from 'react-test-renderer';
3
- import { Switch, Text, TextInput, View } from 'react-native';
4
- import { configureInternal, getConfig, HostComponentNames } from '../config';
5
- import { renderWithAct } from '../render-act';
6
- import { HostTestInstance } from './component-tree';
7
-
8
- const userConfigErrorMessage = `There seems to be an issue with your configuration that prevents React Native Testing Library from working correctly.
9
- Please check if you are using compatible versions of React Native and React Native Testing Library.`;
10
-
11
- export function getHostComponentNames(): HostComponentNames {
12
- let hostComponentNames = getConfig().hostComponentNames;
13
- if (!hostComponentNames) {
14
- hostComponentNames = detectHostComponentNames();
15
- configureInternal({ hostComponentNames });
16
- }
17
-
18
- return hostComponentNames;
19
- }
20
-
21
- export function configureHostComponentNamesIfNeeded() {
22
- const configHostComponentNames = getConfig().hostComponentNames;
23
- if (configHostComponentNames) {
24
- return;
25
- }
26
-
27
- const hostComponentNames = detectHostComponentNames();
28
- configureInternal({ hostComponentNames });
29
- }
30
-
31
- function detectHostComponentNames(): HostComponentNames {
32
- try {
33
- const renderer = renderWithAct(
34
- <View>
35
- <Text testID="text">Hello</Text>
36
- <TextInput testID="textInput" />
37
- <Switch testID="switch" />
38
- </View>
39
- );
40
-
41
- return {
42
- text: getByTestId(renderer.root, 'text').type as string,
43
- textInput: getByTestId(renderer.root, 'textInput').type as string,
44
- switch: getByTestId(renderer.root, 'switch').type as string,
45
- };
46
- } catch (error) {
47
- const errorMessage =
48
- error && typeof error === 'object' && 'message' in error
49
- ? error.message
50
- : null;
51
-
52
- throw new Error(
53
- `Trying to detect host component names triggered the following error:\n\n${errorMessage}\n\n${userConfigErrorMessage}`
54
- );
55
- }
56
- }
57
-
58
- function getByTestId(instance: ReactTestInstance, testID: string) {
59
- const nodes = instance.findAll(
60
- (node) => typeof node.type === 'string' && node.props.testID === testID
61
- );
62
-
63
- if (nodes.length === 0) {
64
- throw new Error(`Unable to find an element with testID: ${testID}`);
65
- }
66
-
67
- return nodes[0];
68
- }
69
-
70
- /**
71
- * Checks if the given element is a host Text.
72
- * @param element The element to check.
73
- */
74
- export function isHostText(
75
- element?: ReactTestInstance | null
76
- ): element is HostTestInstance {
77
- return element?.type === getHostComponentNames().text;
78
- }
79
-
80
- /**
81
- * Checks if the given element is a host TextInput.
82
- * @param element The element to check.
83
- */
84
- export function isHostTextInput(
85
- element?: ReactTestInstance | null
86
- ): element is HostTestInstance {
87
- return element?.type === getHostComponentNames().textInput;
88
- }
@@ -1,34 +0,0 @@
1
- import { matchArrayProp } from '../matchArrayProp';
2
-
3
- test('returns true given 2 identical prop and matcher', () => {
4
- expect(matchArrayProp(['banana'], ['banana'])).toEqual(true);
5
- expect(matchArrayProp(['banana', 'apple'], ['banana', 'apple'])).toEqual(
6
- true
7
- );
8
- });
9
-
10
- test('returns true when the prop contains all the values of the matcher', () => {
11
- expect(
12
- matchArrayProp(['banana', 'apple', 'orange'], ['banana', 'orange'])
13
- ).toEqual(true);
14
- });
15
-
16
- test('returns false when the prop does not contain all the values of the matcher', () => {
17
- expect(
18
- matchArrayProp(['banana', 'apple', 'orange'], ['banana', 'pear'])
19
- ).toEqual(false);
20
- });
21
-
22
- test('returns false when prop is undefined', () => {
23
- expect(matchArrayProp(undefined, ['banana'])).toEqual(false);
24
- });
25
-
26
- test('returns false when the matcher is an empty list', () => {
27
- expect(matchArrayProp(['banana'], [])).toEqual(false);
28
- });
29
-
30
- test('returns false given 2 different prop and matchers', () => {
31
- expect(matchArrayProp(['banana', 'apple'], ['banana', 'orange'])).toEqual(
32
- false
33
- );
34
- });
@@ -1,37 +0,0 @@
1
- import { matchObjectProp } from '../matchObjectProp';
2
-
3
- test('returns true given 2 identical objects', () => {
4
- expect(matchObjectProp({ fruit: 'banana' }, { fruit: 'banana' })).toEqual(
5
- true
6
- );
7
- expect(
8
- matchObjectProp(
9
- { fruit: 'banana', isRipe: true },
10
- { fruit: 'banana', isRipe: true }
11
- )
12
- ).toEqual(true);
13
- });
14
-
15
- test('returns false when one of the param is an empty object', () => {
16
- expect(matchObjectProp({}, { fruit: 'banana' })).toEqual(false);
17
- expect(matchObjectProp({ fruit: 'banana' }, {})).toEqual(false);
18
- });
19
-
20
- test('returns false given an undefined prop', () => {
21
- expect(matchObjectProp(undefined, { fruit: 'banana' })).toEqual(false);
22
- });
23
-
24
- test('returns false given 2 different non empty objects', () => {
25
- expect(matchObjectProp({ fruit: 'banana' }, { fruits: 'banana' })).toEqual(
26
- false
27
- );
28
- expect(matchObjectProp({ fruit: 'banana' }, { fruit: 'orange' })).toEqual(
29
- false
30
- );
31
- expect(
32
- matchObjectProp(
33
- { fruit: 'banana', isRipe: true },
34
- { fruit: 'banana', ripe: true }
35
- )
36
- ).toEqual(false);
37
- });
@@ -1,15 +0,0 @@
1
- import { matchStringProp } from '../matchStringProp';
2
-
3
- test.each`
4
- prop | matcher | expectedResult
5
- ${'hey'} | ${'hey'} | ${true}
6
- ${'hey'} | ${/hey/} | ${true}
7
- ${'hey'} | ${'heyyyy'} | ${false}
8
- ${'hey'} | ${/heyyy/} | ${false}
9
- ${undefined} | ${'hey'} | ${false}
10
- `(
11
- 'returns $expectedResult given prop $prop and matcher $matcher',
12
- ({ prop, matcher, expectedResult }) => {
13
- expect(matchStringProp(prop, matcher)).toEqual(expectedResult);
14
- }
15
- );
@@ -1,48 +0,0 @@
1
- import { AccessibilityState } from 'react-native';
2
- import { ReactTestInstance } from 'react-test-renderer';
3
- import { accessibilityStateKeys } from '../accessiblity';
4
-
5
- // This type is the same as AccessibilityState from `react-native` package
6
- // It is re-declared here due to issues with migration from `@types/react-native` to
7
- // built in `react-native` types.
8
- // See: https://github.com/callstack/react-native-testing-library/issues/1351
9
- export interface AccessibilityStateMatcher {
10
- disabled?: boolean;
11
- selected?: boolean;
12
- checked?: boolean | 'mixed';
13
- busy?: boolean;
14
- expanded?: boolean;
15
- }
16
-
17
- /**
18
- * Default accessibility state values based on experiments using accessibility
19
- * inspector/screen reader on iOS and Android.
20
- *
21
- * @see https://github.com/callstack/react-native-testing-library/wiki/Accessibility:-State
22
- */
23
- const defaultState: AccessibilityState = {
24
- disabled: false,
25
- selected: false,
26
- checked: undefined,
27
- busy: false,
28
- expanded: undefined,
29
- };
30
-
31
- export function matchAccessibilityState(
32
- node: ReactTestInstance,
33
- matcher: AccessibilityStateMatcher
34
- ) {
35
- const state = node.props.accessibilityState;
36
- return accessibilityStateKeys.every((key) => matchState(state, matcher, key));
37
- }
38
-
39
- function matchState(
40
- state: AccessibilityState,
41
- matcher: AccessibilityStateMatcher,
42
- key: keyof AccessibilityState
43
- ) {
44
- return (
45
- matcher[key] === undefined ||
46
- matcher[key] === (state?.[key] ?? defaultState[key])
47
- );
48
- }
@@ -1,24 +0,0 @@
1
- import { AccessibilityValue } from 'react-native';
2
- import { ReactTestInstance } from 'react-test-renderer';
3
- import { TextMatch } from '../../matches';
4
- import { matchStringProp } from './matchStringProp';
5
-
6
- export interface AccessibilityValueMatcher {
7
- min?: number;
8
- max?: number;
9
- now?: number;
10
- text?: TextMatch;
11
- }
12
-
13
- export function matchAccessibilityValue(
14
- node: ReactTestInstance,
15
- matcher: AccessibilityValueMatcher
16
- ): boolean {
17
- const value: AccessibilityValue = node.props.accessibilityValue ?? {};
18
- return (
19
- (matcher.min === undefined || matcher.min === value.min) &&
20
- (matcher.max === undefined || matcher.max === value.max) &&
21
- (matcher.now === undefined || matcher.now === value.now) &&
22
- (matcher.text === undefined || matchStringProp(value.text, matcher.text))
23
- );
24
- }
@@ -1,21 +0,0 @@
1
- /**
2
- * Matches whether given array prop contains the given value, or all given values.
3
- *
4
- * @param prop - The array prop to match.
5
- * @param matcher - The value or values to be included in the array.
6
- * @returns Whether the array prop contains the given value, or all given values.
7
- */
8
- export function matchArrayProp(
9
- prop: Array<string> | undefined,
10
- matcher: string | Array<string>
11
- ): boolean {
12
- if (!prop || matcher.length === 0) {
13
- return false;
14
- }
15
-
16
- if (typeof matcher === 'string') {
17
- return prop.includes(matcher);
18
- }
19
-
20
- return matcher.every((e) => prop.includes(e));
21
- }
@@ -1,50 +0,0 @@
1
- import { ReactTestInstance } from 'react-test-renderer';
2
- import { matches, TextMatch, TextMatchOptions } from '../../matches';
3
- import { findAll } from '../findAll';
4
- import { matchTextContent } from './matchTextContent';
5
-
6
- export function matchLabelText(
7
- root: ReactTestInstance,
8
- element: ReactTestInstance,
9
- text: TextMatch,
10
- options: TextMatchOptions = {}
11
- ) {
12
- return (
13
- matchAccessibilityLabel(element, text, options) ||
14
- matchAccessibilityLabelledBy(
15
- root,
16
- element.props.accessibilityLabelledBy,
17
- text,
18
- options
19
- )
20
- );
21
- }
22
-
23
- function matchAccessibilityLabel(
24
- element: ReactTestInstance,
25
- text: TextMatch,
26
- options: TextMatchOptions
27
- ) {
28
- const { exact, normalizer } = options;
29
- return matches(text, element.props.accessibilityLabel, normalizer, exact);
30
- }
31
-
32
- function matchAccessibilityLabelledBy(
33
- root: ReactTestInstance,
34
- nativeId: string | undefined,
35
- text: TextMatch,
36
- options: TextMatchOptions
37
- ) {
38
- if (!nativeId) {
39
- return false;
40
- }
41
-
42
- return (
43
- findAll(
44
- root,
45
- (node) =>
46
- node.props.nativeID === nativeId &&
47
- matchTextContent(node, text, options)
48
- ).length > 0
49
- );
50
- }