@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,16 +0,0 @@
1
- # RNTL example app for React Navigation
2
-
3
- **Note: this example is stale and might not function correctly.**
4
-
5
- This example shows how to write integration tests using React Navigation without mocking it. Presented approach has been consulted with and influenced by React Navigation team.
6
-
7
- ## Recommended tests
8
-
9
- There are two types of recommeded tests:
10
- 1. Tests operating on navigator level - these use `renderNavigator` helper to render a navigator component used in the app. It is useful when you want to test a scenario that includes multiple screens.
11
- 2. Tests operating on single screen level - these use regular `render` helper but require refactoring screen components into `Screen` and `ScreenContent` components. Where `Screen` receives React Navigation props and/or uses hooks like `useNavigation` while `ScreenContent` does not have a direct relation to React Navigation API but gets props from `Screen` and calls relevant callbacks to trigger navigation.
12
-
13
- ## Non-recommended tests
14
-
15
- There also exists another popular type of screen level tests, where users mock React Navigation objects like `navigation`, `route` and/or hooks like `useNavigation`, etc. We don't recommend this way of testing. **Mocking internal parts of the libraries is effectively testing implementation details, which goes against the Testing Library's [Guiding Principles](https://testing-library.com/docs/guiding-principles/)**.
16
-
@@ -1,4 +0,0 @@
1
- module.exports = {
2
- presets: ['module:metro-react-native-babel-preset'],
3
- plugins: ['react-native-reanimated/plugin'],
4
- };
@@ -1,11 +0,0 @@
1
- /* eslint-disable no-undef, import/no-extraneous-dependencies */
2
-
3
- // Import Jest Native matchers
4
- import '@testing-library/jest-native/extend-expect';
5
-
6
- // Silence the warning: Animated: `useNativeDriver` is not supported because the native animated module is missing
7
- jest.mock('react-native/Libraries/Animated/NativeAnimatedHelper');
8
-
9
- // Setup Reanimated mocking for Drawer navigation
10
- global.ReanimatedDataMock = { now: () => Date.now() };
11
- require('react-native-reanimated/lib/reanimated2/jestUtils').setUpTests();
@@ -1,10 +0,0 @@
1
- module.exports = {
2
- preset: 'react-native',
3
- setupFilesAfterEnv: [
4
- './node_modules/react-native-gesture-handler/jestSetup.js',
5
- './jest-setup.js',
6
- ],
7
- transformIgnorePatterns: [
8
- 'node_modules/(?!(jest-)?react-native|@react-native|@react-native-community|@react-navigation)',
9
- ],
10
- };
@@ -1,31 +0,0 @@
1
- {
2
- "name": "react-navigation-example",
3
- "description": "Testing React Navigation with RNTL",
4
- "version": "0.0.1",
5
- "private": true,
6
- "scripts": {
7
- "test": "jest"
8
- },
9
- "dependencies": {
10
- "@react-navigation/bottom-tabs": "^6.4.1",
11
- "@react-navigation/drawer": "^6.5.1",
12
- "@react-navigation/native": "^6.0.14",
13
- "@react-navigation/native-stack": "^6.9.2",
14
- "@react-navigation/stack": "^6.3.5",
15
- "react": "18.2.0",
16
- "react-native": "0.72.3",
17
- "react-native-gesture-handler": "^2.8.0",
18
- "react-native-reanimated": "^2.13.0",
19
- "react-native-safe-area-context": "^4.4.1",
20
- "react-native-screens": "^3.18.2"
21
- },
22
- "devDependencies": {
23
- "@babel/core": "^7.20.2",
24
- "@testing-library/jest-native": "^5.4.2",
25
- "@testing-library/react-native": "^12.1.3",
26
- "babel-jest": "^29.3.1",
27
- "jest": "^29.3.0",
28
- "metro-react-native-babel-preset": "^0.72.3",
29
- "react-test-renderer": "18.2.0"
30
- }
31
- }
@@ -1,21 +0,0 @@
1
- import React from 'react';
2
- import { StatusBar, StyleSheet, View } from 'react-native';
3
- import { NavigationContainer } from '@react-navigation/native';
4
- import AppNavigator from './NativeStackNavigator';
5
-
6
- export default function App() {
7
- return (
8
- <NavigationContainer>
9
- <View style={styles.container}>
10
- <StatusBar barStyle="dark-content" />
11
- <AppNavigator />
12
- </View>
13
- </NavigationContainer>
14
- );
15
- }
16
-
17
- const styles = StyleSheet.create({
18
- container: {
19
- flex: 1,
20
- },
21
- });
@@ -1,15 +0,0 @@
1
- import * as React from 'react';
2
- import { createDrawerNavigator } from '@react-navigation/drawer';
3
- import DrawerHomeScreen from './screens/DrawerHomeScreen';
4
- import SettingsScreen from './screens/SettingsScreen';
5
-
6
- const Drawer = createDrawerNavigator();
7
-
8
- export default function Navigation() {
9
- return (
10
- <Drawer.Navigator>
11
- <Drawer.Screen name="Home" component={DrawerHomeScreen} />
12
- <Drawer.Screen name="Settings" component={SettingsScreen} />
13
- </Drawer.Navigator>
14
- );
15
- }
@@ -1,42 +0,0 @@
1
- import * as React from 'react';
2
- import { screen, fireEvent } from '@testing-library/react-native';
3
- import { renderNavigator } from './test-utils';
4
- import DrawerNavigator from './DrawerNavigator';
5
-
6
- test('Changing screens', () => {
7
- renderNavigator(<DrawerNavigator />);
8
-
9
- // Assert initial screen
10
- expect(screen.getByRole('header', { name: 'Home screen' })).toBeOnTheScreen();
11
-
12
- // Open drawer by pressing button
13
- const toggleButton = screen.getByText('Toggle drawer');
14
- fireEvent.press(toggleButton);
15
-
16
- // Assert drawer state
17
- expect(screen.getByRole('button', { name: 'Home' })).toHaveAccessibilityState(
18
- { selected: true }
19
- );
20
- expect(
21
- screen.getByRole('button', { name: 'Settings' })
22
- ).toHaveAccessibilityState({ selected: false });
23
-
24
- // Press drawer item
25
- fireEvent.press(screen.getByRole('button', { name: 'Settings' }));
26
-
27
- // Assert drawer state after action
28
- expect(screen.getByRole('button', { name: 'Home' })).toHaveAccessibilityState(
29
- { selected: false }
30
- );
31
- expect(
32
- screen.getByRole('button', { name: 'Settings' })
33
- ).toHaveAccessibilityState({ selected: true });
34
-
35
- // Assert visible screen
36
- expect(
37
- screen.getByRole('header', { name: 'Settings screen' })
38
- ).toBeOnTheScreen();
39
- expect(
40
- screen.queryByRole('header', { name: 'Home screen' })
41
- ).not.toBeOnTheScreen();
42
- });
@@ -1,15 +0,0 @@
1
- import * as React from 'react';
2
- import { createNativeStackNavigator } from '@react-navigation/native-stack';
3
- import HomeScreen from './screens/HomeScreen';
4
- import DetailsScreen from './screens/DetailsScreen';
5
-
6
- const Stack = createNativeStackNavigator();
7
-
8
- export default function Navigation() {
9
- return (
10
- <Stack.Navigator>
11
- <Stack.Screen name="Home" component={HomeScreen} />
12
- <Stack.Screen name="Details" component={DetailsScreen} />
13
- </Stack.Navigator>
14
- );
15
- }
@@ -1,34 +0,0 @@
1
- import * as React from 'react';
2
- import { screen, fireEvent } from '@testing-library/react-native';
3
- import { renderNavigator } from './test-utils';
4
- import NativeStackNavigator from './NativeStackNavigator';
5
-
6
- test('Home screen contains the header and list of items', () => {
7
- renderNavigator(<NativeStackNavigator />);
8
-
9
- expect(screen.getByRole('header', { name: 'Home screen' })).toBeOnTheScreen();
10
- expect(screen.getAllByRole('button', { name: /Item/ })).toHaveLength(10);
11
-
12
- expect(
13
- screen.queryByRole('header', { name: /Details for item/i })
14
- ).not.toBeOnTheScreen();
15
- });
16
-
17
- test('Pressing an item takes user to the details screen', () => {
18
- renderNavigator(<NativeStackNavigator />);
19
-
20
- const item5 = screen.getByRole('button', { name: 'Item 5' });
21
- fireEvent.press(item5);
22
-
23
- expect(
24
- screen.getByRole('header', { name: 'Details for Item 5' })
25
- ).toBeOnTheScreen();
26
- expect(
27
- screen.getByText('The number you have chosen is 5.')
28
- ).toBeOnTheScreen();
29
-
30
- // Home screen is still in the element tree but it is hidden from accessibility
31
- expect(
32
- screen.queryByRole('header', { name: 'Home screen' })
33
- ).not.toBeOnTheScreen();
34
- });
@@ -1,15 +0,0 @@
1
- import * as React from 'react';
2
- import { createStackNavigator } from '@react-navigation/stack';
3
- import HomeScreen from './screens/HomeScreen';
4
- import DetailsScreen from './screens/DetailsScreen';
5
-
6
- const Stack = createStackNavigator();
7
-
8
- export default function Navigation() {
9
- return (
10
- <Stack.Navigator>
11
- <Stack.Screen name="Home" component={HomeScreen} />
12
- <Stack.Screen name="Details" component={DetailsScreen} />
13
- </Stack.Navigator>
14
- );
15
- }
@@ -1,34 +0,0 @@
1
- import * as React from 'react';
2
- import { screen, fireEvent } from '@testing-library/react-native';
3
- import { renderNavigator } from './test-utils';
4
- import StackNavigator from './StackNavigator';
5
-
6
- test('Home screen contains the header and list of items', () => {
7
- renderNavigator(<StackNavigator />);
8
-
9
- expect(screen.getByRole('header', { name: 'Home screen' })).toBeOnTheScreen();
10
- expect(screen.getAllByRole('button', { name: /Item/ })).toHaveLength(10);
11
-
12
- expect(
13
- screen.queryByRole('header', { name: /Details for item/i })
14
- ).not.toBeOnTheScreen();
15
- });
16
-
17
- test('Pressing an item takes user to the details screen', () => {
18
- renderNavigator(<StackNavigator />);
19
-
20
- const item5 = screen.getByRole('button', { name: 'Item 5' });
21
- fireEvent.press(item5);
22
-
23
- expect(
24
- screen.getByRole('header', { name: 'Details for Item 5' })
25
- ).toBeOnTheScreen();
26
- expect(
27
- screen.getByText('The number you have chosen is 5.')
28
- ).toBeOnTheScreen();
29
-
30
- // Home screen is still in the element tree but it is hidden from accessibility
31
- expect(
32
- screen.queryByRole('header', { name: 'Home screen' })
33
- ).not.toBeOnTheScreen();
34
- });
@@ -1,15 +0,0 @@
1
- import * as React from 'react';
2
- import { createBottomTabNavigator } from '@react-navigation/bottom-tabs';
3
- import HomeScreen from './screens/HomeScreen';
4
- import SettingsScreen from './screens/SettingsScreen';
5
-
6
- const Tab = createBottomTabNavigator();
7
-
8
- export default function Navigation() {
9
- return (
10
- <Tab.Navigator>
11
- <Tab.Screen name="Home" component={HomeScreen} />
12
- <Tab.Screen name="Settings" component={SettingsScreen} />
13
- </Tab.Navigator>
14
- );
15
- }
@@ -1,21 +0,0 @@
1
- import * as React from 'react';
2
- import { screen, fireEvent } from '@testing-library/react-native';
3
- import { renderNavigator } from './test-utils';
4
- import TabNavigator from './TabNavigator';
5
-
6
- test('Changing tabs', () => {
7
- renderNavigator(<TabNavigator />);
8
- expect(screen.getByRole('header', { name: 'Home screen' })).toBeOnTheScreen();
9
-
10
- // Note: React Navigation uses `button` role for tab buttons as workaround.
11
- // It should actually be `tab` role.
12
- const settingsTab = screen.getByRole('button', { name: 'Settings' });
13
- fireEvent.press(settingsTab);
14
-
15
- expect(
16
- screen.getByRole('header', { name: 'Settings screen' })
17
- ).toBeOnTheScreen();
18
- expect(
19
- screen.queryByRole('header', { name: 'Home screen' })
20
- ).not.toBeOnTheScreen();
21
- });
@@ -1,43 +0,0 @@
1
- import * as React from 'react';
2
- import { StyleSheet, View, Text, Pressable } from 'react-native';
3
-
4
- export default function DetailsScreen({ navigation, route }) {
5
- const item = route.params;
6
- return (
7
- <DetailsScreenContent item={item} onGoBack={() => navigation.goBack()} />
8
- );
9
- }
10
-
11
- export function DetailsScreenContent({ item, onGoBack }) {
12
- return (
13
- <View>
14
- <Text accessibilityRole="header" style={styles.header}>
15
- Details for {item.title}
16
- </Text>
17
- <Text style={styles.body}>
18
- The number you have chosen is {item.value}.
19
- </Text>
20
-
21
- <BackButton onPress={onGoBack} />
22
- </View>
23
- );
24
- }
25
-
26
- function BackButton({ onPress }) {
27
- return (
28
- <Pressable accessibilityRole="button" onPress={onPress}>
29
- <Text>Go Back</Text>
30
- </Pressable>
31
- );
32
- }
33
-
34
- const styles = StyleSheet.create({
35
- header: {
36
- fontSize: 20,
37
- textAlign: 'center',
38
- marginVertical: 16,
39
- },
40
- body: {
41
- textAlign: 'center',
42
- },
43
- });
@@ -1,27 +0,0 @@
1
- import * as React from 'react';
2
- import { render, screen, fireEvent } from '@testing-library/react-native';
3
- import { DetailsScreenContent } from './DetailsScreen';
4
-
5
- test('Details screen contains the header and content', () => {
6
- const item = {
7
- id: 100,
8
- title: 'Item 100',
9
- value: 100,
10
- };
11
-
12
- const onGoBack = jest.fn();
13
-
14
- // Passing both navigation and route to the screen as props
15
- render(<DetailsScreenContent item={item} onGoBack={onGoBack} />);
16
-
17
- expect(
18
- screen.getByRole('header', { name: 'Details for Item 100' })
19
- ).toBeOnTheScreen();
20
- expect(
21
- screen.getByText('The number you have chosen is 100.')
22
- ).toBeOnTheScreen();
23
-
24
- // Note: Go Back button get navigation from `useNavigation` hook
25
- fireEvent.press(screen.getByRole('button', { name: 'Go Back' }));
26
- expect(onGoBack).toHaveBeenCalledTimes(1);
27
- });
@@ -1,26 +0,0 @@
1
- import * as React from 'react';
2
- import { StyleSheet, View, Text, Pressable } from 'react-native';
3
-
4
- export default function DrawerHomeScreen({ navigation }) {
5
- const handleToggleDrawer = () => navigation.toggleDrawer();
6
-
7
- return (
8
- <View>
9
- <Text accessibilityRole="header" style={styles.header}>
10
- Home screen
11
- </Text>
12
-
13
- <Pressable accessiblityRole="button" onPress={handleToggleDrawer}>
14
- <Text>Toggle drawer</Text>
15
- </Pressable>
16
- </View>
17
- );
18
- }
19
-
20
- const styles = StyleSheet.create({
21
- header: {
22
- fontSize: 20,
23
- textAlign: 'center',
24
- marginVertical: 16,
25
- },
26
- });
@@ -1,48 +0,0 @@
1
- import * as React from 'react';
2
- import { StyleSheet, View, Text, FlatList, Pressable } from 'react-native';
3
-
4
- const mockData = new Array(20).fill(null).map((_, index) => ({
5
- id: index + 1,
6
- title: `Item ${index + 1}`,
7
- value: index + 1,
8
- }));
9
-
10
- export default function HomeScreen({ navigation }) {
11
- const handleItemPress = (item) => navigation.navigate('Details', item);
12
-
13
- const renderItem = ({ item }) => {
14
- return (
15
- <Pressable
16
- accessibilityRole="button"
17
- onPress={() => handleItemPress(item)}
18
- style={styles.row}
19
- >
20
- <Text>{item.title}</Text>
21
- </Pressable>
22
- );
23
- };
24
-
25
- return (
26
- <View>
27
- <Text accessibilityRole="header" style={styles.header}>
28
- Home screen
29
- </Text>
30
-
31
- <FlatList data={mockData} renderItem={renderItem} />
32
- </View>
33
- );
34
- }
35
-
36
- const styles = StyleSheet.create({
37
- header: {
38
- fontSize: 20,
39
- textAlign: 'center',
40
- marginVertical: 16,
41
- },
42
- row: {
43
- paddingVertical: 16,
44
- paddingHorizontal: 24,
45
- borderBottomColor: '#DDDDDD',
46
- borderBottomWidth: 1,
47
- },
48
- });
@@ -1,20 +0,0 @@
1
- import * as React from 'react';
2
- import { StyleSheet, View, Text } from 'react-native';
3
-
4
- export default function SettingsScreen() {
5
- return (
6
- <View>
7
- <Text accessibilityRole="header" style={styles.header}>
8
- Settings screen
9
- </Text>
10
- </View>
11
- );
12
- }
13
-
14
- const styles = StyleSheet.create({
15
- header: {
16
- fontSize: 20,
17
- textAlign: 'center',
18
- marginVertical: 16,
19
- },
20
- });
@@ -1,12 +0,0 @@
1
- /* eslint-disable no-undef, import/no-extraneous-dependencies */
2
- import * as React from 'react';
3
- import { NavigationContainer } from '@react-navigation/native';
4
- import { render } from '@testing-library/react-native';
5
-
6
- /**
7
- * Render given JSX inside Navigation container.
8
- * This should be used for rendering whole navigators as used by real app.
9
- */
10
- export function renderNavigator(ui) {
11
- return render(<NavigationContainer>{ui}</NavigationContainer>);
12
- }