@testing-library/react-native 12.2.1 → 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 (302) hide show
  1. package/package.json +2 -3
  2. package/.DS_Store +0 -0
  3. package/.codecov.yml +0 -9
  4. package/.eslintcache +0 -1
  5. package/.eslintignore +0 -3
  6. package/.eslintrc +0 -19
  7. package/.flowconfig +0 -63
  8. package/.github/ISSUE_TEMPLATE/bug_report.md +0 -38
  9. package/.github/ISSUE_TEMPLATE/feature_request.md +0 -14
  10. package/.github/ISSUE_TEMPLATE/question.md +0 -9
  11. package/.github/PULL_REQUEST_TEMPLATE.md +0 -10
  12. package/.github/actions/setup-deps/action.yml +0 -22
  13. package/.github/actions/setup-website-deps/action.yml +0 -22
  14. package/.github/dependabot.yml +0 -10
  15. package/.github/workflows/deploy-website.yml +0 -36
  16. package/.github/workflows/example-apps.yml +0 -25
  17. package/.github/workflows/main.yml +0 -103
  18. package/.gitignore +0 -11
  19. package/.prettierrc.js +0 -5
  20. package/CODE_OF_CONDUCT.md +0 -73
  21. package/CONTRIBUTING.md +0 -64
  22. package/babel.config.js +0 -22
  23. package/examples/basic/.expo/README.md +0 -15
  24. package/examples/basic/.expo/packager-info.json +0 -4
  25. package/examples/basic/.expo/settings.json +0 -10
  26. package/examples/basic/.expo-shared/assets.json +0 -4
  27. package/examples/basic/.gitignore +0 -14
  28. package/examples/basic/App.tsx +0 -20
  29. package/examples/basic/README.md +0 -11
  30. package/examples/basic/__tests__/App.test.tsx +0 -137
  31. package/examples/basic/app.json +0 -31
  32. package/examples/basic/assets/adaptive-icon.png +0 -0
  33. package/examples/basic/assets/favicon.png +0 -0
  34. package/examples/basic/assets/icon.png +0 -0
  35. package/examples/basic/assets/splash.png +0 -0
  36. package/examples/basic/babel.config.js +0 -6
  37. package/examples/basic/components/Home.tsx +0 -28
  38. package/examples/basic/components/LoginForm.tsx +0 -138
  39. package/examples/basic/jest-setup.ts +0 -7
  40. package/examples/basic/jest.config.js +0 -5
  41. package/examples/basic/package.json +0 -30
  42. package/examples/basic/tsconfig.json +0 -7
  43. package/examples/basic/yarn.lock +0 -7499
  44. package/examples/react-navigation/README.md +0 -16
  45. package/examples/react-navigation/babel.config.js +0 -4
  46. package/examples/react-navigation/jest-setup.js +0 -11
  47. package/examples/react-navigation/jest.config.js +0 -10
  48. package/examples/react-navigation/package.json +0 -31
  49. package/examples/react-navigation/src/App.js +0 -21
  50. package/examples/react-navigation/src/DrawerNavigator.js +0 -15
  51. package/examples/react-navigation/src/DrawerNavigator.test.js +0 -42
  52. package/examples/react-navigation/src/NativeStackNavigator.js +0 -15
  53. package/examples/react-navigation/src/NativeStackNavigator.test.js +0 -34
  54. package/examples/react-navigation/src/StackNavigator.js +0 -15
  55. package/examples/react-navigation/src/StackNavigator.test.js +0 -34
  56. package/examples/react-navigation/src/TabNavigator.js +0 -15
  57. package/examples/react-navigation/src/TabNavigator.test.js +0 -21
  58. package/examples/react-navigation/src/screens/DetailsScreen.js +0 -43
  59. package/examples/react-navigation/src/screens/DetailsScreen.test.js +0 -27
  60. package/examples/react-navigation/src/screens/DrawerHomeScreen.js +0 -26
  61. package/examples/react-navigation/src/screens/HomeScreen.js +0 -48
  62. package/examples/react-navigation/src/screens/SettingsScreen.js +0 -20
  63. package/examples/react-navigation/src/test-utils.js +0 -12
  64. package/examples/react-navigation/yarn.lock +0 -5018
  65. package/examples/redux/App.js +0 -27
  66. package/examples/redux/README.md +0 -5
  67. package/examples/redux/actions/todoActions.js +0 -25
  68. package/examples/redux/babel.config.js +0 -6
  69. package/examples/redux/components/AddTodo.js +0 -73
  70. package/examples/redux/components/AddTodo.test.js +0 -27
  71. package/examples/redux/components/TodoElem.js +0 -25
  72. package/examples/redux/components/TodoList.js +0 -29
  73. package/examples/redux/components/TodoList.test.js +0 -34
  74. package/examples/redux/index.js +0 -8
  75. package/examples/redux/jest-setup.js +0 -2
  76. package/examples/redux/jest.config.js +0 -4
  77. package/examples/redux/package.json +0 -23
  78. package/examples/redux/reducers/index.js +0 -6
  79. package/examples/redux/reducers/todoReducer.js +0 -27
  80. package/examples/redux/store.js +0 -10
  81. package/examples/redux/test-utils.js +0 -11
  82. package/examples/redux/yarn.lock +0 -4819
  83. package/experiments-app/.expo/README.md +0 -15
  84. package/experiments-app/.expo/devices.json +0 -3
  85. package/experiments-app/.expo/packager-info.json +0 -9
  86. package/experiments-app/.expo/settings.json +0 -9
  87. package/experiments-app/.gitignore +0 -17
  88. package/experiments-app/.prettierrc.js +0 -5
  89. package/experiments-app/app.json +0 -30
  90. package/experiments-app/assets/adaptive-icon.png +0 -0
  91. package/experiments-app/assets/favicon.png +0 -0
  92. package/experiments-app/assets/icon.png +0 -0
  93. package/experiments-app/assets/splash.png +0 -0
  94. package/experiments-app/babel.config.js +0 -6
  95. package/experiments-app/index.js +0 -4
  96. package/experiments-app/package.json +0 -29
  97. package/experiments-app/src/App.tsx +0 -31
  98. package/experiments-app/src/MainScreen.tsx +0 -52
  99. package/experiments-app/src/experiments.ts +0 -35
  100. package/experiments-app/src/screens/FlatListEvents.tsx +0 -57
  101. package/experiments-app/src/screens/ScrollViewEvents.tsx +0 -65
  102. package/experiments-app/src/screens/SectionListEvents.tsx +0 -91
  103. package/experiments-app/src/screens/TextInputEventPropagation.tsx +0 -42
  104. package/experiments-app/src/screens/TextInputEvents.tsx +0 -48
  105. package/experiments-app/src/utils/helpers.ts +0 -18
  106. package/experiments-app/tsconfig.json +0 -6
  107. package/experiments-app/yarn.lock +0 -6709
  108. package/experiments-rtl/.babelrc +0 -8
  109. package/experiments-rtl/.eslintrc.json +0 -3
  110. package/experiments-rtl/.gitignore +0 -35
  111. package/experiments-rtl/README.md +0 -34
  112. package/experiments-rtl/jest-setup.js +0 -1
  113. package/experiments-rtl/jest.config.js +0 -4
  114. package/experiments-rtl/next.config.js +0 -4
  115. package/experiments-rtl/package.json +0 -38
  116. package/experiments-rtl/postcss.config.js +0 -6
  117. package/experiments-rtl/public/next.svg +0 -1
  118. package/experiments-rtl/public/vercel.svg +0 -1
  119. package/experiments-rtl/src/app/__tests__/click.test.tsx +0 -31
  120. package/experiments-rtl/src/app/__tests__/managed-text-input.test.tsx +0 -51
  121. package/experiments-rtl/src/app/globals.css +0 -27
  122. package/experiments-rtl/src/app/layout.tsx +0 -22
  123. package/experiments-rtl/src/app/page.tsx +0 -113
  124. package/experiments-rtl/tailwind.config.ts +0 -20
  125. package/experiments-rtl/tsconfig.json +0 -28
  126. package/experiments-rtl/yarn.lock +0 -5418
  127. package/flow-typed/npm/jest_v26.x.x.js +0 -1218
  128. package/flow-typed/npm/react-test-renderer_v16.x.x.js +0 -81
  129. package/jest-setup.ts +0 -10
  130. package/renovate.json +0 -19
  131. package/scripts/test_react_17 +0 -12
  132. package/src/__tests__/__snapshots__/render-debug.test.tsx.snap +0 -548
  133. package/src/__tests__/__snapshots__/render.test.tsx.snap +0 -39
  134. package/src/__tests__/act.test.tsx +0 -56
  135. package/src/__tests__/auto-cleanup-skip.test.tsx +0 -39
  136. package/src/__tests__/auto-cleanup.test.tsx +0 -50
  137. package/src/__tests__/cleanup.test.tsx +0 -26
  138. package/src/__tests__/config.test.ts +0 -55
  139. package/src/__tests__/fireEvent-textInput.test.tsx +0 -154
  140. package/src/__tests__/fireEvent.test.tsx +0 -485
  141. package/src/__tests__/host-component-names.test.tsx +0 -109
  142. package/src/__tests__/host-text-nesting.test.tsx +0 -90
  143. package/src/__tests__/jest-native.test.tsx +0 -84
  144. package/src/__tests__/questionsBoard.test.tsx +0 -62
  145. package/src/__tests__/react-native-api.test.tsx +0 -126
  146. package/src/__tests__/render-debug.test.tsx +0 -207
  147. package/src/__tests__/render-stringValidation.test.tsx +0 -157
  148. package/src/__tests__/render.test.tsx +0 -256
  149. package/src/__tests__/renderHook.test.tsx +0 -114
  150. package/src/__tests__/screen.test.tsx +0 -66
  151. package/src/__tests__/timerUtils.ts +0 -7
  152. package/src/__tests__/timers.test.ts +0 -27
  153. package/src/__tests__/waitFor.test.tsx +0 -327
  154. package/src/__tests__/waitForElementToBeRemoved.test.tsx +0 -151
  155. package/src/__tests__/within.test.tsx +0 -96
  156. package/src/act.ts +0 -86
  157. package/src/cleanup.ts +0 -15
  158. package/src/config.ts +0 -72
  159. package/src/fireEvent.ts +0 -159
  160. package/src/flush-micro-tasks.ts +0 -30
  161. package/src/helpers/__tests__/accessiblity.test.tsx +0 -373
  162. package/src/helpers/__tests__/component-tree.test.tsx +0 -226
  163. package/src/helpers/__tests__/format-default.tsx +0 -114
  164. package/src/helpers/__tests__/getTextContent.test.tsx +0 -49
  165. package/src/helpers/__tests__/includeHiddenElements.test.tsx +0 -39
  166. package/src/helpers/__tests__/query-name.test.ts +0 -10
  167. package/src/helpers/__tests__/timers.test.ts +0 -8
  168. package/src/helpers/accessiblity.ts +0 -108
  169. package/src/helpers/component-tree.ts +0 -94
  170. package/src/helpers/debugDeep.ts +0 -27
  171. package/src/helpers/debugShallow.ts +0 -22
  172. package/src/helpers/deprecation.ts +0 -53
  173. package/src/helpers/errors.ts +0 -66
  174. package/src/helpers/findAll.ts +0 -70
  175. package/src/helpers/format-default.ts +0 -72
  176. package/src/helpers/format.ts +0 -47
  177. package/src/helpers/getTextContent.ts +0 -20
  178. package/src/helpers/host-component-names.tsx +0 -88
  179. package/src/helpers/matchers/__tests__/matchArrayValue.test.ts +0 -34
  180. package/src/helpers/matchers/__tests__/matchObject.test.ts +0 -37
  181. package/src/helpers/matchers/__tests__/matchStringValue.test.ts +0 -15
  182. package/src/helpers/matchers/accessibilityState.ts +0 -48
  183. package/src/helpers/matchers/accessibilityValue.ts +0 -24
  184. package/src/helpers/matchers/matchArrayProp.ts +0 -21
  185. package/src/helpers/matchers/matchLabelText.ts +0 -50
  186. package/src/helpers/matchers/matchObjectProp.ts +0 -25
  187. package/src/helpers/matchers/matchStringProp.ts +0 -23
  188. package/src/helpers/matchers/matchTextContent.ts +0 -20
  189. package/src/helpers/pointer-events.ts +0 -27
  190. package/src/helpers/query-name.ts +0 -4
  191. package/src/helpers/stringValidation.ts +0 -36
  192. package/src/helpers/timers.ts +0 -98
  193. package/src/index.ts +0 -33
  194. package/src/matches.ts +0 -49
  195. package/src/pure.ts +0 -27
  196. package/src/queries/__tests__/a11yState.test.tsx +0 -439
  197. package/src/queries/__tests__/a11yValue.test.tsx +0 -309
  198. package/src/queries/__tests__/displayValue.test.tsx +0 -221
  199. package/src/queries/__tests__/hintText.test.tsx +0 -177
  200. package/src/queries/__tests__/labelText.test.tsx +0 -242
  201. package/src/queries/__tests__/makeQueries.test.tsx +0 -235
  202. package/src/queries/__tests__/placeholderText.test.tsx +0 -136
  203. package/src/queries/__tests__/role-value.test.tsx +0 -176
  204. package/src/queries/__tests__/role.test.tsx +0 -824
  205. package/src/queries/__tests__/testId.test.tsx +0 -200
  206. package/src/queries/__tests__/text.test.tsx +0 -556
  207. package/src/queries/a11yState.ts +0 -127
  208. package/src/queries/a11yValue.ts +0 -127
  209. package/src/queries/displayValue.ts +0 -71
  210. package/src/queries/hintText.ts +0 -107
  211. package/src/queries/labelText.ts +0 -57
  212. package/src/queries/makeQueries.ts +0 -255
  213. package/src/queries/options.ts +0 -14
  214. package/src/queries/placeholderText.ts +0 -72
  215. package/src/queries/role.ts +0 -131
  216. package/src/queries/testId.ts +0 -66
  217. package/src/queries/text.ts +0 -63
  218. package/src/queries/unsafeProps.ts +0 -76
  219. package/src/queries/unsafeType.ts +0 -73
  220. package/src/react-versions.ts +0 -11
  221. package/src/render-act.ts +0 -19
  222. package/src/render.tsx +0 -183
  223. package/src/renderHook.tsx +0 -56
  224. package/src/screen.ts +0 -123
  225. package/src/shallow.ts +0 -18
  226. package/src/test-utils/events.ts +0 -24
  227. package/src/test-utils/index.ts +0 -1
  228. package/src/user-event/__tests__/__snapshots__/clear.test.tsx.snap +0 -269
  229. package/src/user-event/__tests__/clear.test.tsx +0 -217
  230. package/src/user-event/clear.ts +0 -59
  231. package/src/user-event/event-builder/common.ts +0 -66
  232. package/src/user-event/event-builder/index.ts +0 -7
  233. package/src/user-event/event-builder/text-input.ts +0 -86
  234. package/src/user-event/index.ts +0 -18
  235. package/src/user-event/press/__tests__/longPress.real-timers.test.tsx +0 -117
  236. package/src/user-event/press/__tests__/longPress.test.tsx +0 -157
  237. package/src/user-event/press/__tests__/press.real-timers.test.tsx +0 -320
  238. package/src/user-event/press/__tests__/press.test.tsx +0 -457
  239. package/src/user-event/press/constants.ts +0 -7
  240. package/src/user-event/press/index.ts +0 -1
  241. package/src/user-event/press/press.ts +0 -163
  242. package/src/user-event/setup/index.ts +0 -2
  243. package/src/user-event/setup/setup.ts +0 -142
  244. package/src/user-event/type/__tests__/__snapshots__/type-managed.test.tsx.snap +0 -339
  245. package/src/user-event/type/__tests__/__snapshots__/type.test.tsx.snap +0 -668
  246. package/src/user-event/type/__tests__/parseKeys.test.ts +0 -23
  247. package/src/user-event/type/__tests__/type-managed.test.tsx +0 -120
  248. package/src/user-event/type/__tests__/type.test.tsx +0 -335
  249. package/src/user-event/type/index.ts +0 -1
  250. package/src/user-event/type/parseKeys.ts +0 -41
  251. package/src/user-event/type/type.ts +0 -138
  252. package/src/user-event/utils/__tests__/dispatch-event.test.tsx +0 -41
  253. package/src/user-event/utils/__tests__/wait.test.ts +0 -62
  254. package/src/user-event/utils/content-size.ts +0 -25
  255. package/src/user-event/utils/dispatch-event.ts +0 -38
  256. package/src/user-event/utils/host-components.ts +0 -6
  257. package/src/user-event/utils/index.ts +0 -6
  258. package/src/user-event/utils/text-range.ts +0 -4
  259. package/src/user-event/utils/wait.ts +0 -15
  260. package/src/user-event/utils/warn-about-real-timers.ts +0 -13
  261. package/src/waitFor.ts +0 -228
  262. package/src/waitForElementToBeRemoved.ts +0 -42
  263. package/src/within.ts +0 -30
  264. package/tsconfig.json +0 -17
  265. package/tsconfig.release.json +0 -8
  266. package/website/.gitignore +0 -20
  267. package/website/README.md +0 -33
  268. package/website/docker/.dockerignore +0 -3
  269. package/website/docker/Dockerfile +0 -9
  270. package/website/docker/docker-compose.yml +0 -11
  271. package/website/docs/API.md +0 -940
  272. package/website/docs/EslintPLluginTestingLibrary.md +0 -28
  273. package/website/docs/FAQ.md +0 -44
  274. package/website/docs/GettingStarted.md +0 -100
  275. package/website/docs/HowShouldIQuery.md +0 -21
  276. package/website/docs/MigrationV11.md +0 -64
  277. package/website/docs/MigrationV12.md +0 -67
  278. package/website/docs/MigrationV2.md +0 -126
  279. package/website/docs/MigrationV7.md +0 -119
  280. package/website/docs/MigrationV9.md +0 -67
  281. package/website/docs/Queries.md +0 -572
  282. package/website/docs/ReactNavigation.md +0 -371
  283. package/website/docs/ReduxIntegration.md +0 -137
  284. package/website/docs/TestingEnvironment.md +0 -154
  285. package/website/docs/Troubleshooting.md +0 -44
  286. package/website/docs/UnderstandingAct.md +0 -227
  287. package/website/docs/UserEvent.md +0 -191
  288. package/website/docusaurus.config.js +0 -114
  289. package/website/package.json +0 -31
  290. package/website/sidebars.js +0 -20
  291. package/website/src/components/Feature.js +0 -31
  292. package/website/src/css/custom.css +0 -13
  293. package/website/src/css/index.module.css +0 -77
  294. package/website/src/pages/index.js +0 -82
  295. package/website/static/.nojekyll +0 -0
  296. package/website/static/css/custom.css +0 -28
  297. package/website/static/img/hit.png +0 -0
  298. package/website/static/img/locomotive.png +0 -0
  299. package/website/static/img/owl.png +0 -0
  300. package/website/static/img/tools.png +0 -0
  301. package/website/yarn.lock +0 -7669
  302. package/yarn.lock +0 -7765
@@ -1,226 +0,0 @@
1
- import React from 'react';
2
- import { View, Text, TextInput } from 'react-native';
3
- import { render } from '../..';
4
- import {
5
- getHostChildren,
6
- getHostParent,
7
- getHostSelves,
8
- getHostSiblings,
9
- } from '../component-tree';
10
-
11
- function ZeroHostChildren() {
12
- return <></>;
13
- }
14
-
15
- function MultipleHostChildren() {
16
- return (
17
- <>
18
- <View testID="child1" />
19
- <View testID="child2" />
20
- <View testID="child3" />
21
- </>
22
- );
23
- }
24
-
25
- describe('getHostParent()', () => {
26
- it('returns host parent for host component', () => {
27
- const view = render(
28
- <View testID="grandparent">
29
- <View testID="parent">
30
- <View testID="subject" />
31
- <View testID="sibling" />
32
- </View>
33
- </View>
34
- );
35
-
36
- const hostParent = getHostParent(view.getByTestId('subject'));
37
- expect(hostParent).toBe(view.getByTestId('parent'));
38
-
39
- const hostGrandparent = getHostParent(hostParent);
40
- expect(hostGrandparent).toBe(view.getByTestId('grandparent'));
41
-
42
- expect(getHostParent(hostGrandparent)).toBe(null);
43
- });
44
-
45
- it('returns host parent for null', () => {
46
- expect(getHostParent(null)).toBe(null);
47
- });
48
-
49
- it('returns host parent for composite component', () => {
50
- const view = render(
51
- <View testID="parent">
52
- <MultipleHostChildren />
53
- <View testID="subject" />
54
- </View>
55
- );
56
-
57
- const compositeComponent = view.UNSAFE_getByType(MultipleHostChildren);
58
- const hostParent = getHostParent(compositeComponent);
59
- expect(hostParent).toBe(view.getByTestId('parent'));
60
- });
61
- });
62
-
63
- describe('getHostChildren()', () => {
64
- it('returns host children for host component', () => {
65
- const view = render(
66
- <View testID="grandparent">
67
- <View testID="parent">
68
- <View testID="subject" />
69
- <Text testID="sibling">Hello</Text>
70
- </View>
71
- </View>
72
- );
73
-
74
- const hostSubject = view.getByTestId('subject');
75
- expect(getHostChildren(hostSubject)).toEqual([]);
76
-
77
- const hostSibling = view.getByTestId('sibling');
78
- expect(getHostChildren(hostSibling)).toEqual([]);
79
-
80
- const hostParent = view.getByTestId('parent');
81
- expect(getHostChildren(hostParent)).toEqual([hostSubject, hostSibling]);
82
-
83
- const hostGrandparent = view.getByTestId('grandparent');
84
- expect(getHostChildren(hostGrandparent)).toEqual([hostParent]);
85
- });
86
-
87
- it('returns host children for composite component', () => {
88
- const view = render(
89
- <View testID="parent">
90
- <MultipleHostChildren />
91
- <View testID="subject" />
92
- <View testID="sibling" />
93
- </View>
94
- );
95
-
96
- expect(getHostChildren(view.getByTestId('parent'))).toEqual([
97
- view.getByTestId('child1'),
98
- view.getByTestId('child2'),
99
- view.getByTestId('child3'),
100
- view.getByTestId('subject'),
101
- view.getByTestId('sibling'),
102
- ]);
103
- });
104
- });
105
-
106
- describe('getHostSelves()', () => {
107
- it('returns passed element for host components', () => {
108
- const view = render(
109
- <View testID="grandparent">
110
- <View testID="parent">
111
- <View testID="subject" />
112
- <View testID="sibling" />
113
- </View>
114
- </View>
115
- );
116
-
117
- const hostSubject = view.getByTestId('subject');
118
- expect(getHostSelves(hostSubject)).toEqual([hostSubject]);
119
-
120
- const hostSibling = view.getByTestId('sibling');
121
- expect(getHostSelves(hostSibling)).toEqual([hostSibling]);
122
-
123
- const hostParent = view.getByTestId('parent');
124
- expect(getHostSelves(hostParent)).toEqual([hostParent]);
125
-
126
- const hostGrandparent = view.getByTestId('grandparent');
127
- expect(getHostSelves(hostGrandparent)).toEqual([hostGrandparent]);
128
- });
129
-
130
- test('returns single host element for React Native composite components', () => {
131
- const view = render(
132
- <View testID="parent">
133
- <Text testID="text">Text</Text>
134
- <TextInput
135
- testID="textInput"
136
- defaultValue="TextInputValue"
137
- placeholder="TextInputPlaceholder"
138
- />
139
- </View>
140
- );
141
-
142
- const compositeText = view.getByText('Text');
143
- const hostText = view.getByTestId('text');
144
- expect(getHostSelves(compositeText)).toEqual([hostText]);
145
-
146
- const compositeTextInputByValue = view.getByDisplayValue('TextInputValue');
147
- const compositeTextInputByPlaceholder = view.getByPlaceholderText(
148
- 'TextInputPlaceholder'
149
- );
150
-
151
- const hostTextInput = view.getByTestId('textInput');
152
- expect(getHostSelves(compositeTextInputByValue)).toEqual([hostTextInput]);
153
- expect(getHostSelves(compositeTextInputByPlaceholder)).toEqual([
154
- hostTextInput,
155
- ]);
156
- });
157
-
158
- test('returns host children for custom composite components', () => {
159
- const view = render(
160
- <View testID="parent">
161
- <ZeroHostChildren />
162
- <MultipleHostChildren />
163
- <View testID="sibling" />
164
- </View>
165
- );
166
-
167
- const zeroCompositeComponent = view.UNSAFE_getByType(ZeroHostChildren);
168
- expect(getHostSelves(zeroCompositeComponent)).toEqual([]);
169
-
170
- const multipleCompositeComponent =
171
- view.UNSAFE_getByType(MultipleHostChildren);
172
- const hostChild1 = view.getByTestId('child1');
173
- const hostChild2 = view.getByTestId('child2');
174
- const hostChild3 = view.getByTestId('child3');
175
- expect(getHostSelves(multipleCompositeComponent)).toEqual([
176
- hostChild1,
177
- hostChild2,
178
- hostChild3,
179
- ]);
180
- });
181
- });
182
-
183
- describe('getHostSiblings()', () => {
184
- it('returns host siblings for host component', () => {
185
- const view = render(
186
- <View testID="grandparent">
187
- <View testID="parent">
188
- <View testID="siblingBefore" />
189
- <View testID="subject" />
190
- <View testID="siblingAfter" />
191
- <MultipleHostChildren />
192
- </View>
193
- </View>
194
- );
195
-
196
- const hostSiblings = getHostSiblings(view.getByTestId('subject'));
197
- expect(hostSiblings).toEqual([
198
- view.getByTestId('siblingBefore'),
199
- view.getByTestId('siblingAfter'),
200
- view.getByTestId('child1'),
201
- view.getByTestId('child2'),
202
- view.getByTestId('child3'),
203
- ]);
204
- });
205
-
206
- it('returns host siblings for composite component', () => {
207
- const view = render(
208
- <View testID="grandparent">
209
- <View testID="parent">
210
- <View testID="siblingBefore" />
211
- <View testID="subject" />
212
- <View testID="siblingAfter" />
213
- <MultipleHostChildren />
214
- </View>
215
- </View>
216
- );
217
-
218
- const compositeComponent = view.UNSAFE_getByType(MultipleHostChildren);
219
- const hostSiblings = getHostSiblings(compositeComponent);
220
- expect(hostSiblings).toEqual([
221
- view.getByTestId('siblingBefore'),
222
- view.getByTestId('subject'),
223
- view.getByTestId('siblingAfter'),
224
- ]);
225
- });
226
- });
@@ -1,114 +0,0 @@
1
- import { ReactTestRendererJSON } from 'react-test-renderer';
2
- import { defaultMapProps } from '../format-default';
3
-
4
- const node: ReactTestRendererJSON = {
5
- type: 'View',
6
- props: {},
7
- children: null,
8
- };
9
-
10
- describe('mapPropsForQueryError', () => {
11
- test('preserves props that are helpful for debugging', () => {
12
- const props = {
13
- accessibilityElementsHidden: true,
14
- accessibilityViewIsModal: true,
15
- importantForAccessibility: 'yes',
16
- testID: 'TEST_ID',
17
- nativeID: 'NATIVE_ID',
18
- accessibilityLabel: 'LABEL',
19
- accessibilityLabelledBy: 'LABELLED_BY',
20
- accessibilityRole: 'ROLE',
21
- accessibilityHint: 'HINT',
22
- placeholder: 'PLACEHOLDER',
23
- value: 'VALUE',
24
- defaultValue: 'DEFAULT_VALUE',
25
- };
26
-
27
- const result = defaultMapProps(props, node);
28
-
29
- expect(result).toStrictEqual(props);
30
- });
31
-
32
- test('does not preserve less helpful props', () => {
33
- const result = defaultMapProps(
34
- {
35
- style: [{ flex: 1 }, { display: 'flex' }],
36
- onPress: () => null,
37
- key: 'foo',
38
- },
39
- node
40
- );
41
-
42
- expect(result).toStrictEqual({});
43
- });
44
-
45
- test('preserves "display: none" style but no other style', () => {
46
- const result = defaultMapProps(
47
- { style: [{ flex: 1 }, { display: 'none', flex: 2 }] },
48
- node
49
- );
50
-
51
- expect(result).toStrictEqual({
52
- style: { display: 'none' },
53
- });
54
- });
55
-
56
- test('removes undefined keys from accessibilityState', () => {
57
- const result = defaultMapProps(
58
- { accessibilityState: { checked: undefined, selected: false } },
59
- node
60
- );
61
-
62
- expect(result).toStrictEqual({
63
- accessibilityState: { selected: false },
64
- });
65
- });
66
-
67
- test('removes accessibilityState if all keys are undefined', () => {
68
- const result = defaultMapProps(
69
- { accessibilityState: { checked: undefined, selected: undefined } },
70
- node
71
- );
72
-
73
- expect(result).toStrictEqual({});
74
- });
75
-
76
- test('does not fail if accessibilityState is a string, passes through', () => {
77
- const result = defaultMapProps({ accessibilityState: 'foo' }, node);
78
- expect(result).toStrictEqual({ accessibilityState: 'foo' });
79
- });
80
-
81
- test('does not fail if accessibilityState is an array, passes through', () => {
82
- const result = defaultMapProps({ accessibilityState: [1] }, node);
83
- expect(result).toStrictEqual({ accessibilityState: [1] });
84
- });
85
-
86
- test('does not fail if accessibilityState is null, passes through', () => {
87
- const result = defaultMapProps({ accessibilityState: null }, node);
88
- expect(result).toStrictEqual({ accessibilityState: null });
89
- });
90
-
91
- test('does not fail if accessibilityState is nested object, passes through', () => {
92
- const accessibilityState = { 1: { 2: 3 }, 2: undefined };
93
- const result = defaultMapProps({ accessibilityState }, node);
94
- expect(result).toStrictEqual({ accessibilityState: { 1: { 2: 3 } } });
95
- });
96
-
97
- test('removes undefined keys from accessibilityValue', () => {
98
- const result = defaultMapProps(
99
- { accessibilityValue: { min: 1, max: undefined } },
100
- node
101
- );
102
-
103
- expect(result).toStrictEqual({ accessibilityValue: { min: 1 } });
104
- });
105
-
106
- test('removes accessibilityValue if all keys are undefined', () => {
107
- const result = defaultMapProps(
108
- { accessibilityValue: { min: undefined } },
109
- node
110
- );
111
-
112
- expect(result).toStrictEqual({});
113
- });
114
- });
@@ -1,49 +0,0 @@
1
- import * as React from 'react';
2
- import { Text } from 'react-native';
3
- import render from '../../render';
4
- import { getTextContent } from '../getTextContent';
5
-
6
- test('getTextContent with simple content', () => {
7
- const view = render(<Text>Hello world</Text>);
8
- expect(getTextContent(view.root)).toBe('Hello world');
9
- });
10
-
11
- test('getTextContent with null element', () => {
12
- expect(getTextContent(null)).toBe('');
13
- });
14
-
15
- test('getTextContent with single nested content', () => {
16
- const view = render(
17
- <Text>
18
- <Text>Hello world</Text>
19
- </Text>
20
- );
21
- expect(getTextContent(view.root)).toBe('Hello world');
22
- });
23
-
24
- test('getTextContent with multiple nested content', () => {
25
- const view = render(
26
- <Text>
27
- <Text>Hello</Text> <Text>world</Text>
28
- </Text>
29
- );
30
- expect(getTextContent(view.root)).toBe('Hello world');
31
- });
32
-
33
- test('getTextContent with multiple number content', () => {
34
- const view = render(
35
- <Text>
36
- <Text>Hello</Text> <Text>world</Text> <Text>{100}</Text>
37
- </Text>
38
- );
39
- expect(getTextContent(view.root)).toBe('Hello world 100');
40
- });
41
-
42
- test('getTextContent with multiple boolean content', () => {
43
- const view = render(
44
- <Text>
45
- <Text>Hello{false}</Text> <Text>{true}world</Text>
46
- </Text>
47
- );
48
- expect(getTextContent(view.root)).toBe('Hello world');
49
- });
@@ -1,39 +0,0 @@
1
- import React from 'react';
2
- import { View } from 'react-native';
3
- import { configure, render, screen } from '../..';
4
-
5
- test('includeHiddenElements query option takes priority over hidden option and global config', () => {
6
- configure({ defaultHidden: true, defaultIncludeHiddenElements: true });
7
- render(<View testID="view" style={{ display: 'none' }} />);
8
- expect(
9
- screen.queryByTestId('view', { includeHiddenElements: false, hidden: true })
10
- ).toBeFalsy();
11
- });
12
-
13
- test('hidden option takes priority over global config when includeHiddenElements is not defined', () => {
14
- configure({ defaultHidden: true, defaultIncludeHiddenElements: true });
15
- render(<View testID="view" style={{ display: 'none' }} />);
16
- expect(screen.queryByTestId('view', { hidden: false })).toBeFalsy();
17
- });
18
-
19
- test('global config defaultIncludeElements option takes priority over defaultHidden when set at the same time', () => {
20
- configure({ defaultHidden: false, defaultIncludeHiddenElements: true });
21
- render(<View testID="view" style={{ display: 'none' }} />);
22
- expect(screen.getByTestId('view')).toBeTruthy();
23
- });
24
-
25
- test('defaultHidden takes priority when it was set last', () => {
26
- // also simulates the case when defaultIncludeHiddenElements is true by default in the config
27
- configure({ defaultIncludeHiddenElements: true });
28
- configure({ defaultHidden: false });
29
- render(<View testID="view" style={{ display: 'none' }} />);
30
- expect(screen.queryByTestId('view')).toBeFalsy();
31
- });
32
-
33
- test('defaultIncludeHiddenElements takes priority when it was set last', () => {
34
- // also simulates the case when defaultHidden is true by default in the config
35
- configure({ defaultHidden: true });
36
- configure({ defaultIncludeHiddenElements: false });
37
- render(<View testID="view" style={{ display: 'none' }} />);
38
- expect(screen.queryByTestId('view')).toBeFalsy();
39
- });
@@ -1,10 +0,0 @@
1
- import { getQueryPrefix } from '../query-name';
2
-
3
- test('getQueryPrefix should return correct prefix', () => {
4
- expect(getQueryPrefix('getByRole')).toBe('get');
5
- expect(getQueryPrefix('getAllByText')).toEqual('getAll');
6
- expect(getQueryPrefix('queryByTestId')).toEqual('query');
7
- expect(getQueryPrefix('queryAllByPlaceholderText')).toEqual('queryAll');
8
- expect(getQueryPrefix('findByHintText')).toEqual('find');
9
- expect(getQueryPrefix('findAllByDisplayValue')).toEqual('findAll');
10
- });
@@ -1,8 +0,0 @@
1
- import { jestFakeTimersAreEnabled } from '../timers';
2
- describe('timers', () => {
3
- it('should not mock timers if RNTL_SKIP_AUTO_DETECT_FAKE_TIMERS is set', async () => {
4
- process.env.RNTL_SKIP_AUTO_DETECT_FAKE_TIMERS = 'true';
5
- jest.useFakeTimers();
6
- expect(jestFakeTimersAreEnabled()).toEqual(false);
7
- });
8
- });
@@ -1,108 +0,0 @@
1
- import {
2
- AccessibilityState,
3
- AccessibilityValue,
4
- StyleSheet,
5
- } from 'react-native';
6
- import { ReactTestInstance } from 'react-test-renderer';
7
- import { getHostSiblings } from './component-tree';
8
- import { getHostComponentNames } from './host-component-names';
9
-
10
- type IsInaccessibleOptions = {
11
- cache?: WeakMap<ReactTestInstance, boolean>;
12
- };
13
-
14
- export const accessibilityStateKeys: (keyof AccessibilityState)[] = [
15
- 'disabled',
16
- 'selected',
17
- 'checked',
18
- 'busy',
19
- 'expanded',
20
- ];
21
-
22
- export const accessiblityValueKeys: (keyof AccessibilityValue)[] = [
23
- 'min',
24
- 'max',
25
- 'now',
26
- 'text',
27
- ];
28
-
29
- export function isHiddenFromAccessibility(
30
- element: ReactTestInstance | null,
31
- { cache }: IsInaccessibleOptions = {}
32
- ): boolean {
33
- if (element == null) {
34
- return true;
35
- }
36
-
37
- let current: ReactTestInstance | null = element;
38
- while (current) {
39
- let isCurrentSubtreeInaccessible = cache?.get(current);
40
-
41
- if (isCurrentSubtreeInaccessible === undefined) {
42
- isCurrentSubtreeInaccessible = isSubtreeInaccessible(current);
43
- cache?.set(current, isCurrentSubtreeInaccessible);
44
- }
45
-
46
- if (isCurrentSubtreeInaccessible) {
47
- return true;
48
- }
49
-
50
- current = current.parent;
51
- }
52
-
53
- return false;
54
- }
55
-
56
- /** RTL-compatitibility alias for `isHiddenFromAccessibility` */
57
- export const isInaccessible = isHiddenFromAccessibility;
58
-
59
- function isSubtreeInaccessible(element: ReactTestInstance): boolean {
60
- // Null props can happen for React.Fragments
61
- if (element.props == null) {
62
- return false;
63
- }
64
-
65
- // iOS: accessibilityElementsHidden
66
- // See: https://reactnative.dev/docs/accessibility#accessibilityelementshidden-ios
67
- if (element.props.accessibilityElementsHidden) {
68
- return true;
69
- }
70
-
71
- // Android: importantForAccessibility
72
- // See: https://reactnative.dev/docs/accessibility#importantforaccessibility-android
73
- if (element.props.importantForAccessibility === 'no-hide-descendants') {
74
- return true;
75
- }
76
-
77
- // Note that `opacity: 0` is not treated as inaccessible on iOS
78
- const flatStyle = StyleSheet.flatten(element.props.style) ?? {};
79
- if (flatStyle.display === 'none') return true;
80
-
81
- // iOS: accessibilityViewIsModal
82
- // See: https://reactnative.dev/docs/accessibility#accessibilityviewismodal-ios
83
- const hostSiblings = getHostSiblings(element);
84
- if (hostSiblings.some((sibling) => sibling.props.accessibilityViewIsModal)) {
85
- return true;
86
- }
87
-
88
- return false;
89
- }
90
-
91
- export function isAccessibilityElement(
92
- element: ReactTestInstance | null
93
- ): boolean {
94
- if (element == null) {
95
- return false;
96
- }
97
-
98
- if (element.props.accessible !== undefined) {
99
- return element.props.accessible;
100
- }
101
-
102
- const hostComponentNames = getHostComponentNames();
103
- return (
104
- element?.type === hostComponentNames?.text ||
105
- element?.type === hostComponentNames?.textInput ||
106
- element?.type === hostComponentNames?.switch
107
- );
108
- }
@@ -1,94 +0,0 @@
1
- import { ReactTestInstance } from 'react-test-renderer';
2
-
3
- /**
4
- * ReactTestInstance referring to host element.
5
- */
6
- export type HostTestInstance = ReactTestInstance & { type: string };
7
-
8
- /**
9
- * Checks if the given element is a host element.
10
- * @param element The element to check.
11
- */
12
- export function isHostElement(
13
- element?: ReactTestInstance | null
14
- ): element is HostTestInstance {
15
- return typeof element?.type === 'string';
16
- }
17
-
18
- /**
19
- * Returns first host ancestor for given element.
20
- * @param element The element start traversing from.
21
- */
22
- export function getHostParent(
23
- element: ReactTestInstance | null
24
- ): HostTestInstance | null {
25
- if (element == null) {
26
- return null;
27
- }
28
-
29
- let current = element.parent;
30
- while (current) {
31
- if (isHostElement(current)) {
32
- return current;
33
- }
34
-
35
- current = current.parent;
36
- }
37
-
38
- return null;
39
- }
40
-
41
- /**
42
- * Returns host children for given element.
43
- * @param element The element start traversing from.
44
- */
45
- export function getHostChildren(
46
- element: ReactTestInstance | null
47
- ): HostTestInstance[] {
48
- if (element == null) {
49
- return [];
50
- }
51
-
52
- const hostChildren: HostTestInstance[] = [];
53
-
54
- element.children.forEach((child) => {
55
- if (typeof child !== 'object') {
56
- return;
57
- }
58
-
59
- if (isHostElement(child)) {
60
- hostChildren.push(child);
61
- } else {
62
- hostChildren.push(...getHostChildren(child));
63
- }
64
- });
65
-
66
- return hostChildren;
67
- }
68
-
69
- /**
70
- * Return the array of host elements that represent the passed element.
71
- *
72
- * @param element The element start traversing from.
73
- * @returns If the passed element is a host element, it will return an array containing only that element,
74
- * if the passed element is a composite element, it will return an array containing its host children (zero, one or many).
75
- */
76
- export function getHostSelves(
77
- element: ReactTestInstance | null
78
- ): HostTestInstance[] {
79
- return isHostElement(element) ? [element] : getHostChildren(element);
80
- }
81
-
82
- /**
83
- * Returns host siblings for given element.
84
- * @param element The element start traversing from.
85
- */
86
- export function getHostSiblings(
87
- element: ReactTestInstance | null
88
- ): HostTestInstance[] {
89
- const hostParent = getHostParent(element);
90
- const hostSelves = getHostSelves(element);
91
- return getHostChildren(hostParent).filter(
92
- (sibling) => !hostSelves.includes(sibling)
93
- );
94
- }
@@ -1,27 +0,0 @@
1
- import type { ReactTestRendererJSON } from 'react-test-renderer';
2
- import format, { FormatOptions } from './format';
3
-
4
- export type DebugOptions = {
5
- message?: string;
6
- } & FormatOptions;
7
-
8
- /**
9
- * Log pretty-printed deep test component instance
10
- */
11
- export default function debugDeep(
12
- instance: ReactTestRendererJSON | ReactTestRendererJSON[],
13
- options?: DebugOptions | string
14
- ) {
15
- const message = typeof options === 'string' ? options : options?.message;
16
-
17
- const formatOptions =
18
- typeof options === 'object' ? { mapProps: options?.mapProps } : undefined;
19
-
20
- if (message) {
21
- // eslint-disable-next-line no-console
22
- console.log(`${message}\n\n`, format(instance, formatOptions));
23
- } else {
24
- // eslint-disable-next-line no-console
25
- console.log(format(instance, formatOptions));
26
- }
27
- }