@testing-library/react-native 12.1.2 → 12.1.3

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 (363) hide show
  1. package/.DS_Store +0 -0
  2. package/.codecov.yml +9 -0
  3. package/.eslintcache +1 -0
  4. package/.eslintignore +2 -0
  5. package/.eslintrc +19 -0
  6. package/.flowconfig +63 -0
  7. package/.github/ISSUE_TEMPLATE/bug_report.md +38 -0
  8. package/.github/ISSUE_TEMPLATE/feature_request.md +14 -0
  9. package/.github/ISSUE_TEMPLATE/question.md +9 -0
  10. package/.github/PULL_REQUEST_TEMPLATE.md +10 -0
  11. package/.github/actions/setup-deps/action.yml +22 -0
  12. package/.github/actions/setup-website-deps/action.yml +22 -0
  13. package/.github/dependabot.yml +10 -0
  14. package/.github/workflows/deploy-website.yml +36 -0
  15. package/.github/workflows/example-apps.yml +25 -0
  16. package/.github/workflows/main.yml +103 -0
  17. package/.gitignore +11 -0
  18. package/.prettierrc.js +5 -0
  19. package/CODE_OF_CONDUCT.md +73 -0
  20. package/CONTRIBUTING.md +64 -0
  21. package/README.md +8 -7
  22. package/babel.config.js +22 -0
  23. package/build/act.js.map +1 -1
  24. package/build/cleanup.js.map +1 -1
  25. package/build/fireEvent.d.ts +9 -1
  26. package/build/fireEvent.js +9 -15
  27. package/build/fireEvent.js.map +1 -1
  28. package/build/flush-micro-tasks.d.ts +19 -0
  29. package/build/flush-micro-tasks.js +36 -0
  30. package/build/flush-micro-tasks.js.map +1 -0
  31. package/build/helpers/accessiblity.js +2 -2
  32. package/build/helpers/accessiblity.js.map +1 -1
  33. package/build/helpers/component-tree.js.map +1 -1
  34. package/build/helpers/deprecation.js.map +1 -1
  35. package/build/helpers/errors.js.map +1 -1
  36. package/build/helpers/findAll.js.map +1 -1
  37. package/build/helpers/format-default.js.map +1 -1
  38. package/build/helpers/format.js.map +1 -1
  39. package/build/helpers/host-component-names.js.map +1 -1
  40. package/build/helpers/matchers/matchLabelText.js.map +1 -1
  41. package/build/helpers/pointer-events.d.ts +9 -0
  42. package/build/helpers/pointer-events.js +25 -0
  43. package/build/helpers/pointer-events.js.map +1 -0
  44. package/build/helpers/stringValidation.js.map +1 -1
  45. package/build/helpers/timers.js.map +1 -1
  46. package/build/index.js +2 -2
  47. package/build/index.js.map +1 -1
  48. package/build/matches.js.map +1 -1
  49. package/build/pure.d.ts +1 -1
  50. package/build/pure.js.map +1 -1
  51. package/build/queries/a11yState.js.map +1 -1
  52. package/build/queries/a11yValue.js.map +1 -1
  53. package/build/queries/displayValue.js.map +1 -1
  54. package/build/queries/hintText.js.map +1 -1
  55. package/build/queries/labelText.js.map +1 -1
  56. package/build/queries/makeQueries.js.map +1 -1
  57. package/build/queries/placeholderText.js.map +1 -1
  58. package/build/queries/role.js.map +1 -1
  59. package/build/queries/testId.js.map +1 -1
  60. package/build/queries/text.js.map +1 -1
  61. package/build/queries/unsafeProps.js.map +1 -1
  62. package/build/render.d.ts +171 -12
  63. package/build/render.js +11 -4
  64. package/build/render.js.map +1 -1
  65. package/build/renderHook.d.ts +3 -6
  66. package/build/renderHook.js +4 -3
  67. package/build/renderHook.js.map +1 -1
  68. package/build/shallow.js.map +1 -1
  69. package/build/test-utils/events.d.ts +10 -0
  70. package/build/test-utils/events.js +27 -0
  71. package/build/test-utils/events.js.map +1 -0
  72. package/build/test-utils/index.d.ts +1 -0
  73. package/build/test-utils/index.js +17 -0
  74. package/build/test-utils/index.js.map +1 -0
  75. package/build/user-event/event-builder/common.d.ts +45 -0
  76. package/build/user-event/event-builder/common.js +58 -0
  77. package/build/user-event/event-builder/common.js.map +1 -0
  78. package/build/user-event/event-builder/index.d.ts +32 -0
  79. package/build/user-event/event-builder/index.js +12 -0
  80. package/build/user-event/event-builder/index.js.map +1 -0
  81. package/build/user-event/index.d.ts +9 -0
  82. package/build/user-event/index.js +16 -0
  83. package/build/user-event/index.js.map +1 -0
  84. package/build/user-event/press/constants.d.ts +2 -0
  85. package/build/user-event/press/constants.js +16 -0
  86. package/build/user-event/press/constants.js.map +1 -0
  87. package/build/user-event/press/index.d.ts +1 -0
  88. package/build/user-event/press/index.js +19 -0
  89. package/build/user-event/press/index.js.map +1 -0
  90. package/build/user-event/press/press.d.ts +7 -0
  91. package/build/user-event/press/press.js +106 -0
  92. package/build/user-event/press/press.js.map +1 -0
  93. package/build/user-event/press/utils/warnAboutRealTimers.d.ts +1 -0
  94. package/build/user-event/press/utils/warnAboutRealTimers.js +14 -0
  95. package/build/user-event/press/utils/warnAboutRealTimers.js.map +1 -0
  96. package/build/user-event/setup/index.d.ts +2 -0
  97. package/build/user-event/setup/index.js +13 -0
  98. package/build/user-event/setup/index.js.map +1 -0
  99. package/build/user-event/setup/setup.d.ts +39 -0
  100. package/build/user-event/setup/setup.js +56 -0
  101. package/build/user-event/setup/setup.js.map +1 -0
  102. package/build/user-event/type/index.d.ts +1 -0
  103. package/build/user-event/type/index.js +13 -0
  104. package/build/user-event/type/index.js.map +1 -0
  105. package/build/user-event/type/type.d.ts +3 -0
  106. package/build/user-event/type/type.js +18 -0
  107. package/build/user-event/type/type.js.map +1 -0
  108. package/build/user-event/utils/events.d.ts +9 -0
  109. package/build/user-event/utils/events.js +44 -0
  110. package/build/user-event/utils/events.js.map +1 -0
  111. package/build/user-event/utils/index.d.ts +2 -0
  112. package/build/user-event/utils/index.js +28 -0
  113. package/build/user-event/utils/index.js.map +1 -0
  114. package/build/user-event/utils/wait.d.ts +2 -0
  115. package/build/user-event/utils/wait.js +14 -0
  116. package/build/user-event/utils/wait.js.map +1 -0
  117. package/build/waitFor.js +3 -3
  118. package/build/waitFor.js.map +1 -1
  119. package/build/waitForElementToBeRemoved.js.map +1 -1
  120. package/examples/basic/.expo-shared/assets.json +4 -0
  121. package/examples/basic/.gitignore +14 -0
  122. package/examples/basic/App.tsx +20 -0
  123. package/examples/basic/README.md +11 -0
  124. package/examples/basic/__tests__/App.test.tsx +119 -0
  125. package/examples/basic/app.json +31 -0
  126. package/examples/basic/assets/adaptive-icon.png +0 -0
  127. package/examples/basic/assets/favicon.png +0 -0
  128. package/examples/basic/assets/icon.png +0 -0
  129. package/examples/basic/assets/splash.png +0 -0
  130. package/examples/basic/babel.config.js +6 -0
  131. package/examples/basic/components/Home.tsx +28 -0
  132. package/examples/basic/components/LoginForm.tsx +138 -0
  133. package/examples/basic/jest-setup.ts +7 -0
  134. package/examples/basic/jest.config.js +5 -0
  135. package/examples/basic/package.json +30 -0
  136. package/examples/basic/tsconfig.json +7 -0
  137. package/examples/react-navigation/README.md +14 -0
  138. package/examples/react-navigation/babel.config.js +4 -0
  139. package/examples/react-navigation/jest-setup.js +11 -0
  140. package/examples/react-navigation/jest.config.js +10 -0
  141. package/examples/react-navigation/package.json +31 -0
  142. package/examples/react-navigation/src/App.js +21 -0
  143. package/examples/react-navigation/src/DrawerNavigator.js +15 -0
  144. package/examples/react-navigation/src/DrawerNavigator.test.js +42 -0
  145. package/examples/react-navigation/src/NativeStackNavigator.js +15 -0
  146. package/examples/react-navigation/src/NativeStackNavigator.test.js +34 -0
  147. package/examples/react-navigation/src/StackNavigator.js +15 -0
  148. package/examples/react-navigation/src/StackNavigator.test.js +34 -0
  149. package/examples/react-navigation/src/TabNavigator.js +15 -0
  150. package/examples/react-navigation/src/TabNavigator.test.js +21 -0
  151. package/examples/react-navigation/src/screens/DetailsScreen.js +43 -0
  152. package/examples/react-navigation/src/screens/DetailsScreen.test.js +27 -0
  153. package/examples/react-navigation/src/screens/DrawerHomeScreen.js +26 -0
  154. package/examples/react-navigation/src/screens/HomeScreen.js +48 -0
  155. package/examples/react-navigation/src/screens/SettingsScreen.js +20 -0
  156. package/examples/react-navigation/src/test-utils.js +12 -0
  157. package/examples/redux/App.js +27 -0
  158. package/examples/redux/actions/todoActions.js +25 -0
  159. package/examples/redux/babel.config.js +6 -0
  160. package/examples/redux/components/AddTodo.js +73 -0
  161. package/examples/redux/components/AddTodo.test.js +27 -0
  162. package/examples/redux/components/TodoElem.js +25 -0
  163. package/examples/redux/components/TodoList.js +29 -0
  164. package/examples/redux/components/TodoList.test.js +34 -0
  165. package/examples/redux/index.js +8 -0
  166. package/examples/redux/jest-setup.js +2 -0
  167. package/examples/redux/jest.config.js +4 -0
  168. package/examples/redux/package.json +23 -0
  169. package/examples/redux/reducers/index.js +6 -0
  170. package/examples/redux/reducers/todoReducer.js +27 -0
  171. package/examples/redux/store.js +10 -0
  172. package/examples/redux/test-utils.js +11 -0
  173. package/experiments-app/.expo/README.md +15 -0
  174. package/experiments-app/.expo/devices.json +3 -0
  175. package/experiments-app/.expo/packager-info.json +9 -0
  176. package/experiments-app/.expo/settings.json +9 -0
  177. package/experiments-app/.gitignore +17 -0
  178. package/experiments-app/.prettierrc.js +5 -0
  179. package/experiments-app/app.json +30 -0
  180. package/experiments-app/assets/adaptive-icon.png +0 -0
  181. package/experiments-app/assets/favicon.png +0 -0
  182. package/experiments-app/assets/icon.png +0 -0
  183. package/experiments-app/assets/splash.png +0 -0
  184. package/experiments-app/babel.config.js +6 -0
  185. package/experiments-app/index.js +4 -0
  186. package/experiments-app/package.json +31 -0
  187. package/experiments-app/src/App.tsx +31 -0
  188. package/experiments-app/src/MainScreen.tsx +51 -0
  189. package/experiments-app/src/experiments.ts +17 -0
  190. package/experiments-app/src/screens/TextInputEventPropagation.tsx +54 -0
  191. package/experiments-app/src/screens/TextInputEvents.tsx +50 -0
  192. package/experiments-app/src/utils/helpers.ts +8 -0
  193. package/experiments-app/tsconfig.json +6 -0
  194. package/experiments-app/yarn.lock +6913 -0
  195. package/flow-typed/npm/jest_v26.x.x.js +1218 -0
  196. package/flow-typed/npm/react-test-renderer_v16.x.x.js +81 -0
  197. package/jest-setup.ts +10 -0
  198. package/package.json +6 -6
  199. package/renovate.json +19 -0
  200. package/scripts/test_react_17 +12 -0
  201. package/src/__tests__/__snapshots__/render-debug.test.tsx.snap +548 -0
  202. package/src/__tests__/__snapshots__/render.test.tsx.snap +39 -0
  203. package/src/__tests__/act.test.tsx +52 -0
  204. package/src/__tests__/auto-cleanup-skip.test.tsx +39 -0
  205. package/src/__tests__/auto-cleanup.test.tsx +50 -0
  206. package/src/__tests__/cleanup.test.tsx +26 -0
  207. package/src/__tests__/config.test.ts +55 -0
  208. package/src/__tests__/fireEvent-textInput.test.tsx +154 -0
  209. package/src/__tests__/fireEvent.test.tsx +485 -0
  210. package/src/__tests__/host-component-names.test.tsx +109 -0
  211. package/src/__tests__/host-text-nesting.test.tsx +90 -0
  212. package/src/__tests__/jest-native.test.tsx +84 -0
  213. package/src/__tests__/questionsBoard.test.tsx +62 -0
  214. package/src/__tests__/react-native-api.test.tsx +126 -0
  215. package/src/__tests__/render-debug.test.tsx +207 -0
  216. package/src/__tests__/render-stringValidation.test.tsx +157 -0
  217. package/src/__tests__/render.test.tsx +256 -0
  218. package/src/__tests__/renderHook.test.tsx +114 -0
  219. package/src/__tests__/screen.test.tsx +66 -0
  220. package/src/__tests__/timerUtils.ts +7 -0
  221. package/src/__tests__/timers.test.ts +27 -0
  222. package/src/__tests__/waitFor.test.tsx +327 -0
  223. package/src/__tests__/waitForElementToBeRemoved.test.tsx +151 -0
  224. package/src/__tests__/within.test.tsx +96 -0
  225. package/src/act.ts +86 -0
  226. package/src/cleanup.ts +15 -0
  227. package/src/config.ts +72 -0
  228. package/src/fireEvent.ts +163 -0
  229. package/src/flush-micro-tasks.ts +30 -0
  230. package/src/helpers/__tests__/accessiblity.test.tsx +373 -0
  231. package/src/helpers/__tests__/component-tree.test.tsx +226 -0
  232. package/src/helpers/__tests__/format-default.tsx +114 -0
  233. package/src/helpers/__tests__/getTextContent.test.tsx +49 -0
  234. package/src/helpers/__tests__/includeHiddenElements.test.tsx +39 -0
  235. package/src/helpers/__tests__/query-name.test.ts +10 -0
  236. package/src/helpers/__tests__/timers.test.ts +8 -0
  237. package/src/helpers/accessiblity.ts +108 -0
  238. package/src/helpers/component-tree.ts +89 -0
  239. package/src/helpers/debugDeep.ts +27 -0
  240. package/src/helpers/debugShallow.ts +22 -0
  241. package/src/helpers/deprecation.ts +53 -0
  242. package/src/helpers/errors.ts +66 -0
  243. package/src/helpers/filterNodeByType.ts +7 -0
  244. package/src/helpers/findAll.ts +68 -0
  245. package/src/helpers/format-default.ts +72 -0
  246. package/src/helpers/format.ts +47 -0
  247. package/src/helpers/getTextContent.ts +20 -0
  248. package/src/helpers/host-component-names.tsx +67 -0
  249. package/src/helpers/matchers/__tests__/matchArrayValue.test.ts +34 -0
  250. package/src/helpers/matchers/__tests__/matchObject.test.ts +37 -0
  251. package/src/helpers/matchers/__tests__/matchStringValue.test.ts +15 -0
  252. package/src/helpers/matchers/accessibilityState.ts +48 -0
  253. package/src/helpers/matchers/accessibilityValue.ts +24 -0
  254. package/src/helpers/matchers/matchArrayProp.ts +21 -0
  255. package/src/helpers/matchers/matchLabelText.ts +51 -0
  256. package/src/helpers/matchers/matchObjectProp.ts +25 -0
  257. package/src/helpers/matchers/matchStringProp.ts +23 -0
  258. package/src/helpers/matchers/matchTextContent.ts +20 -0
  259. package/src/helpers/pointer-events.ts +27 -0
  260. package/src/helpers/query-name.ts +4 -0
  261. package/src/helpers/stringValidation.ts +36 -0
  262. package/src/helpers/timers.ts +98 -0
  263. package/src/index.ts +33 -0
  264. package/src/matches.ts +49 -0
  265. package/src/pure.ts +25 -0
  266. package/src/queries/__tests__/a11yState.test.tsx +439 -0
  267. package/src/queries/__tests__/a11yValue.test.tsx +309 -0
  268. package/src/queries/__tests__/displayValue.test.tsx +221 -0
  269. package/src/queries/__tests__/hintText.test.tsx +177 -0
  270. package/src/queries/__tests__/labelText.test.tsx +242 -0
  271. package/src/queries/__tests__/makeQueries.test.tsx +235 -0
  272. package/src/queries/__tests__/placeholderText.test.tsx +136 -0
  273. package/src/queries/__tests__/role-value.test.tsx +176 -0
  274. package/src/queries/__tests__/role.test.tsx +824 -0
  275. package/src/queries/__tests__/testId.test.tsx +200 -0
  276. package/src/queries/__tests__/text.test.tsx +556 -0
  277. package/src/queries/a11yState.ts +131 -0
  278. package/src/queries/a11yValue.ts +131 -0
  279. package/src/queries/displayValue.ts +78 -0
  280. package/src/queries/hintText.ts +112 -0
  281. package/src/queries/labelText.ts +59 -0
  282. package/src/queries/makeQueries.ts +255 -0
  283. package/src/queries/options.ts +14 -0
  284. package/src/queries/placeholderText.ts +79 -0
  285. package/src/queries/role.ts +132 -0
  286. package/src/queries/testId.ts +71 -0
  287. package/src/queries/text.ts +66 -0
  288. package/src/queries/unsafeProps.ts +76 -0
  289. package/src/queries/unsafeType.ts +73 -0
  290. package/src/react-versions.ts +11 -0
  291. package/src/render-act.ts +19 -0
  292. package/src/render.tsx +183 -0
  293. package/src/renderHook.tsx +56 -0
  294. package/src/screen.ts +123 -0
  295. package/src/shallow.ts +18 -0
  296. package/src/test-utils/events.ts +24 -0
  297. package/src/test-utils/index.ts +1 -0
  298. package/src/user-event/event-builder/common.ts +50 -0
  299. package/src/user-event/event-builder/index.ts +5 -0
  300. package/src/user-event/index.ts +14 -0
  301. package/src/user-event/press/__tests__/longPress.real-timers.test.tsx +115 -0
  302. package/src/user-event/press/__tests__/longPress.test.tsx +157 -0
  303. package/src/user-event/press/__tests__/press.real-timers.test.tsx +318 -0
  304. package/src/user-event/press/__tests__/press.test.tsx +422 -0
  305. package/src/user-event/press/constants.ts +7 -0
  306. package/src/user-event/press/index.ts +1 -0
  307. package/src/user-event/press/press.ts +134 -0
  308. package/src/user-event/press/utils/warnAboutRealTimers.ts +6 -0
  309. package/src/user-event/setup/index.ts +2 -0
  310. package/src/user-event/setup/setup.ts +93 -0
  311. package/src/user-event/type/__tests__/__snapshots__/type.test.tsx.snap +26 -0
  312. package/src/user-event/type/__tests__/type.test.tsx +63 -0
  313. package/src/user-event/type/index.ts +1 -0
  314. package/src/user-event/type/type.ts +20 -0
  315. package/src/user-event/utils/__tests__/wait.test.ts +63 -0
  316. package/src/user-event/utils/events.ts +54 -0
  317. package/src/user-event/utils/index.ts +2 -0
  318. package/src/user-event/utils/wait.ts +15 -0
  319. package/src/waitFor.ts +228 -0
  320. package/src/waitForElementToBeRemoved.ts +42 -0
  321. package/src/within.ts +30 -0
  322. package/tsconfig.json +17 -0
  323. package/tsconfig.release.json +8 -0
  324. package/website/.gitignore +20 -0
  325. package/website/README.md +33 -0
  326. package/website/docker/.dockerignore +3 -0
  327. package/website/docker/Dockerfile +9 -0
  328. package/website/docker/docker-compose.yml +11 -0
  329. package/website/docs/API.md +946 -0
  330. package/website/docs/EslintPLluginTestingLibrary.md +28 -0
  331. package/website/docs/FAQ.md +44 -0
  332. package/website/docs/GettingStarted.md +100 -0
  333. package/website/docs/HowShouldIQuery.md +21 -0
  334. package/website/docs/MigrationV11.md +64 -0
  335. package/website/docs/MigrationV12.md +67 -0
  336. package/website/docs/MigrationV2.md +126 -0
  337. package/website/docs/MigrationV7.md +119 -0
  338. package/website/docs/MigrationV9.md +67 -0
  339. package/website/docs/Queries.md +567 -0
  340. package/website/docs/ReactNavigation.md +371 -0
  341. package/website/docs/ReduxIntegration.md +137 -0
  342. package/website/docs/TestingEnvironment.md +154 -0
  343. package/website/docs/Troubleshooting.md +44 -0
  344. package/website/docs/UnderstandingAct.md +227 -0
  345. package/website/docs/UserEvent.md +66 -0
  346. package/website/docusaurus.config.js +114 -0
  347. package/website/package.json +31 -0
  348. package/website/sidebars.js +20 -0
  349. package/website/src/components/Feature.js +31 -0
  350. package/website/src/css/custom.css +13 -0
  351. package/website/src/css/index.module.css +77 -0
  352. package/website/src/pages/index.js +82 -0
  353. package/website/static/.nojekyll +0 -0
  354. package/website/static/css/custom.css +28 -0
  355. package/website/static/img/hit.png +0 -0
  356. package/website/static/img/locomotive.png +0 -0
  357. package/website/static/img/owl.png +0 -0
  358. package/website/static/img/tools.png +0 -0
  359. package/website/yarn.lock +7669 -0
  360. package/yarn.lock +7765 -0
  361. package/build/flushMicroTasks.d.ts +0 -5
  362. package/build/flushMicroTasks.js +0 -17
  363. package/build/flushMicroTasks.js.map +0 -1
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.CommonEventBuilder = void 0;
7
+ const CommonEventBuilder = {
8
+ /**
9
+ * Experimental values:
10
+ * - iOS: `{"changedTouches": [[Circular]], "identifier": 1, "locationX": 253, "locationY": 30.333328247070312, "pageX": 273, "pageY": 141.3333282470703, "target": 75, "timestamp": 875928682.0450834, "touches": [[Circular]]}`
11
+ * - Android: `{"changedTouches": [[Circular]], "identifier": 0, "locationX": 160, "locationY": 40.3636360168457, "pageX": 180, "pageY": 140.36363220214844, "target": 53, "targetSurface": -1, "timestamp": 10290805, "touches": [[Circular]]}`
12
+ */
13
+ touch: () => {
14
+ return {
15
+ persist: jest.fn(),
16
+ currentTarget: {
17
+ measure: jest.fn()
18
+ },
19
+ nativeEvent: {
20
+ changedTouches: [],
21
+ identifier: 0,
22
+ locationX: 0,
23
+ locationY: 0,
24
+ pageX: 0,
25
+ pageY: 0,
26
+ target: 0,
27
+ timestamp: Date.now(),
28
+ touches: []
29
+ }
30
+ };
31
+ },
32
+ /**
33
+ * Experimental values:
34
+ * - iOS: `{"eventCount": 0, "target": 75, "text": ""}`
35
+ * - Android: `{"target": 53}`
36
+ */
37
+ focus: () => {
38
+ return {
39
+ nativeEvent: {
40
+ target: 0
41
+ }
42
+ };
43
+ },
44
+ /**
45
+ * Experimental values:
46
+ * - iOS: `{"eventCount": 0, "target": 75, "text": ""}`
47
+ * - Android: `{"target": 53}`
48
+ */
49
+ blur: () => {
50
+ return {
51
+ nativeEvent: {
52
+ target: 0
53
+ }
54
+ };
55
+ }
56
+ };
57
+ exports.CommonEventBuilder = CommonEventBuilder;
58
+ //# sourceMappingURL=common.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.js","names":["CommonEventBuilder","touch","persist","jest","fn","currentTarget","measure","nativeEvent","changedTouches","identifier","locationX","locationY","pageX","pageY","target","timestamp","Date","now","touches","focus","blur","exports"],"sources":["../../../src/user-event/event-builder/common.ts"],"sourcesContent":["export const CommonEventBuilder = {\n /**\n * Experimental values:\n * - iOS: `{\"changedTouches\": [[Circular]], \"identifier\": 1, \"locationX\": 253, \"locationY\": 30.333328247070312, \"pageX\": 273, \"pageY\": 141.3333282470703, \"target\": 75, \"timestamp\": 875928682.0450834, \"touches\": [[Circular]]}`\n * - Android: `{\"changedTouches\": [[Circular]], \"identifier\": 0, \"locationX\": 160, \"locationY\": 40.3636360168457, \"pageX\": 180, \"pageY\": 140.36363220214844, \"target\": 53, \"targetSurface\": -1, \"timestamp\": 10290805, \"touches\": [[Circular]]}`\n */\n touch: () => {\n return {\n persist: jest.fn(),\n currentTarget: { measure: jest.fn() },\n nativeEvent: {\n changedTouches: [],\n identifier: 0,\n locationX: 0,\n locationY: 0,\n pageX: 0,\n pageY: 0,\n target: 0,\n timestamp: Date.now(),\n touches: [],\n },\n };\n },\n\n /**\n * Experimental values:\n * - iOS: `{\"eventCount\": 0, \"target\": 75, \"text\": \"\"}`\n * - Android: `{\"target\": 53}`\n */\n focus: () => {\n return {\n nativeEvent: {\n target: 0,\n },\n };\n },\n\n /**\n * Experimental values:\n * - iOS: `{\"eventCount\": 0, \"target\": 75, \"text\": \"\"}`\n * - Android: `{\"target\": 53}`\n */\n blur: () => {\n return {\n nativeEvent: {\n target: 0,\n },\n };\n },\n};\n"],"mappings":";;;;;;AAAO,MAAMA,kBAAkB,GAAG;EAChC;AACF;AACA;AACA;AACA;EACEC,KAAK,EAAEA,CAAA,KAAM;IACX,OAAO;MACLC,OAAO,EAAEC,IAAI,CAACC,EAAE,CAAC,CAAC;MAClBC,aAAa,EAAE;QAAEC,OAAO,EAAEH,IAAI,CAACC,EAAE,CAAC;MAAE,CAAC;MACrCG,WAAW,EAAE;QACXC,cAAc,EAAE,EAAE;QAClBC,UAAU,EAAE,CAAC;QACbC,SAAS,EAAE,CAAC;QACZC,SAAS,EAAE,CAAC;QACZC,KAAK,EAAE,CAAC;QACRC,KAAK,EAAE,CAAC;QACRC,MAAM,EAAE,CAAC;QACTC,SAAS,EAAEC,IAAI,CAACC,GAAG,CAAC,CAAC;QACrBC,OAAO,EAAE;MACX;IACF,CAAC;EACH,CAAC;EAED;AACF;AACA;AACA;AACA;EACEC,KAAK,EAAEA,CAAA,KAAM;IACX,OAAO;MACLZ,WAAW,EAAE;QACXO,MAAM,EAAE;MACV;IACF,CAAC;EACH,CAAC;EAED;AACF;AACA;AACA;AACA;EACEM,IAAI,EAAEA,CAAA,KAAM;IACV,OAAO;MACLb,WAAW,EAAE;QACXO,MAAM,EAAE;MACV;IACF,CAAC;EACH;AACF,CAAC;AAACO,OAAA,CAAArB,kBAAA,GAAAA,kBAAA"}
@@ -0,0 +1,32 @@
1
+ /// <reference types="jest" />
2
+ export declare const EventBuilder: {
3
+ Common: {
4
+ touch: () => {
5
+ persist: jest.Mock<any, any, any>;
6
+ currentTarget: {
7
+ measure: jest.Mock<any, any, any>;
8
+ };
9
+ nativeEvent: {
10
+ changedTouches: never[];
11
+ identifier: number;
12
+ locationX: number;
13
+ locationY: number;
14
+ pageX: number;
15
+ pageY: number;
16
+ target: number;
17
+ timestamp: number;
18
+ touches: never[];
19
+ };
20
+ };
21
+ focus: () => {
22
+ nativeEvent: {
23
+ target: number;
24
+ };
25
+ };
26
+ blur: () => {
27
+ nativeEvent: {
28
+ target: number;
29
+ };
30
+ };
31
+ };
32
+ };
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.EventBuilder = void 0;
7
+ var _common = require("./common");
8
+ const EventBuilder = {
9
+ Common: _common.CommonEventBuilder
10
+ };
11
+ exports.EventBuilder = EventBuilder;
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["_common","require","EventBuilder","Common","CommonEventBuilder","exports"],"sources":["../../../src/user-event/event-builder/index.ts"],"sourcesContent":["import { CommonEventBuilder } from './common';\n\nexport const EventBuilder = {\n Common: CommonEventBuilder,\n};\n"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AAEO,MAAMC,YAAY,GAAG;EAC1BC,MAAM,EAAEC;AACV,CAAC;AAACC,OAAA,CAAAH,YAAA,GAAAA,YAAA"}
@@ -0,0 +1,9 @@
1
+ import { ReactTestInstance } from 'react-test-renderer';
2
+ import { setup } from './setup';
3
+ import { PressOptions } from './press/press';
4
+ export declare const userEvent: {
5
+ setup: typeof setup;
6
+ press: (element: ReactTestInstance) => Promise<void>;
7
+ longPress: (element: ReactTestInstance, options?: PressOptions) => Promise<void>;
8
+ type: (element: ReactTestInstance, text: string) => Promise<void>;
9
+ };
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.userEvent = void 0;
7
+ var _setup = require("./setup");
8
+ const userEvent = {
9
+ setup: _setup.setup,
10
+ // Direct access for User Event v13 compatibility
11
+ press: element => (0, _setup.setup)().press(element),
12
+ longPress: (element, options) => (0, _setup.setup)().longPress(element, options),
13
+ type: (element, text) => (0, _setup.setup)().type(element, text)
14
+ };
15
+ exports.userEvent = userEvent;
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["_setup","require","userEvent","setup","press","element","longPress","options","type","text","exports"],"sources":["../../src/user-event/index.ts"],"sourcesContent":["import { ReactTestInstance } from 'react-test-renderer';\nimport { setup } from './setup';\nimport { PressOptions } from './press/press';\n\nexport const userEvent = {\n setup,\n\n // Direct access for User Event v13 compatibility\n press: (element: ReactTestInstance) => setup().press(element),\n longPress: (element: ReactTestInstance, options?: PressOptions) =>\n setup().longPress(element, options),\n type: (element: ReactTestInstance, text: string) =>\n setup().type(element, text),\n};\n"],"mappings":";;;;;;AACA,IAAAA,MAAA,GAAAC,OAAA;AAGO,MAAMC,SAAS,GAAG;EACvBC,KAAK,EAALA,YAAK;EAEL;EACAC,KAAK,EAAGC,OAA0B,IAAK,IAAAF,YAAK,EAAC,CAAC,CAACC,KAAK,CAACC,OAAO,CAAC;EAC7DC,SAAS,EAAEA,CAACD,OAA0B,EAAEE,OAAsB,KAC5D,IAAAJ,YAAK,EAAC,CAAC,CAACG,SAAS,CAACD,OAAO,EAAEE,OAAO,CAAC;EACrCC,IAAI,EAAEA,CAACH,OAA0B,EAAEI,IAAY,KAC7C,IAAAN,YAAK,EAAC,CAAC,CAACK,IAAI,CAACH,OAAO,EAAEI,IAAI;AAC9B,CAAC;AAACC,OAAA,CAAAR,SAAA,GAAAA,SAAA"}
@@ -0,0 +1,2 @@
1
+ export declare const DEFAULT_MIN_PRESS_DURATION = 130;
2
+ export declare const DEFAULT_LONG_PRESS_DELAY_MS = 500;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.DEFAULT_MIN_PRESS_DURATION = exports.DEFAULT_LONG_PRESS_DELAY_MS = void 0;
7
+ // These are constants defined in the React Native repo
8
+
9
+ // Used to define the delay before calling onPressOut after a press
10
+ const DEFAULT_MIN_PRESS_DURATION = 130;
11
+
12
+ // Default minimum press duration to trigger a long press
13
+ exports.DEFAULT_MIN_PRESS_DURATION = DEFAULT_MIN_PRESS_DURATION;
14
+ const DEFAULT_LONG_PRESS_DELAY_MS = 500;
15
+ exports.DEFAULT_LONG_PRESS_DELAY_MS = DEFAULT_LONG_PRESS_DELAY_MS;
16
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","names":["DEFAULT_MIN_PRESS_DURATION","exports","DEFAULT_LONG_PRESS_DELAY_MS"],"sources":["../../../src/user-event/press/constants.ts"],"sourcesContent":["// These are constants defined in the React Native repo\n\n// Used to define the delay before calling onPressOut after a press\nexport const DEFAULT_MIN_PRESS_DURATION = 130;\n\n// Default minimum press duration to trigger a long press\nexport const DEFAULT_LONG_PRESS_DELAY_MS = 500;\n"],"mappings":";;;;;;AAAA;;AAEA;AACO,MAAMA,0BAA0B,GAAG,GAAG;;AAE7C;AAAAC,OAAA,CAAAD,0BAAA,GAAAA,0BAAA;AACO,MAAME,2BAA2B,GAAG,GAAG;AAACD,OAAA,CAAAC,2BAAA,GAAAA,2BAAA"}
@@ -0,0 +1 @@
1
+ export { press, longPress } from './press';
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "longPress", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _press.longPress;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "press", {
13
+ enumerable: true,
14
+ get: function () {
15
+ return _press.press;
16
+ }
17
+ });
18
+ var _press = require("./press");
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["_press","require"],"sources":["../../../src/user-event/press/index.ts"],"sourcesContent":["export { press, longPress } from './press';\n"],"mappings":";;;;;;;;;;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA"}
@@ -0,0 +1,7 @@
1
+ import { ReactTestInstance } from 'react-test-renderer';
2
+ import { UserEventInstance } from '../setup';
3
+ export type PressOptions = {
4
+ duration: number;
5
+ };
6
+ export declare function press(this: UserEventInstance, element: ReactTestInstance): Promise<void>;
7
+ export declare function longPress(this: UserEventInstance, element: ReactTestInstance, options?: PressOptions): Promise<void>;
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.longPress = longPress;
7
+ exports.press = press;
8
+ var _eventBuilder = require("../event-builder");
9
+ var _utils = require("../utils");
10
+ var _act = _interopRequireDefault(require("../../act"));
11
+ var _componentTree = require("../../helpers/component-tree");
12
+ var _filterNodeByType = require("../../helpers/filterNodeByType");
13
+ var _pointerEvents = require("../../helpers/pointer-events");
14
+ var _hostComponentNames = require("../../helpers/host-component-names");
15
+ var _timers = require("../../helpers/timers");
16
+ var _constants = require("./constants");
17
+ var _warnAboutRealTimers = require("./utils/warnAboutRealTimers");
18
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
+ async function press(element) {
20
+ await basePress(this.config, element);
21
+ }
22
+ async function longPress(element, options = {
23
+ duration: 500
24
+ }) {
25
+ await basePress(this.config, element, options);
26
+ }
27
+ const basePress = async (config, element, options = {
28
+ duration: 0
29
+ }) => {
30
+ // Text and TextInput components are mocked in React Native preset so the mock
31
+ // doesn't implement the pressability class
32
+ // Thus we need to call the props directly on the host component
33
+ if (isEnabledHostText(element) || isEnabledTextInput(element)) {
34
+ await triggerMockPressEvent(config, element, options);
35
+ return;
36
+ }
37
+ if (isEnabledTouchResponder(element)) {
38
+ await triggerPressEvent(config, element, options);
39
+ return;
40
+ }
41
+ const hostParentElement = (0, _componentTree.getHostParent)(element);
42
+ if (!hostParentElement) {
43
+ return;
44
+ }
45
+ await basePress(config, hostParentElement, options);
46
+ };
47
+ const triggerPressEvent = async (config, element, options = {
48
+ duration: 0
49
+ }) => {
50
+ const areFakeTimersEnabled = (0, _timers.jestFakeTimersAreEnabled)();
51
+ if (!areFakeTimersEnabled) {
52
+ (0, _warnAboutRealTimers.warnAboutRealTimers)();
53
+ }
54
+ await (0, _utils.wait)(config);
55
+ await (0, _act.default)(async () => {
56
+ element.props.onResponderGrant({
57
+ ..._eventBuilder.EventBuilder.Common.touch(),
58
+ dispatchConfig: {
59
+ registrationName: 'onResponderGrant'
60
+ }
61
+ });
62
+ await (0, _utils.wait)(config, options.duration);
63
+ element.props.onResponderRelease({
64
+ ..._eventBuilder.EventBuilder.Common.touch(),
65
+ dispatchConfig: {
66
+ registrationName: 'onResponderRelease'
67
+ }
68
+ });
69
+ if (_constants.DEFAULT_MIN_PRESS_DURATION - options.duration > 0) {
70
+ await (0, _utils.wait)(config, _constants.DEFAULT_MIN_PRESS_DURATION - options.duration);
71
+ }
72
+ });
73
+ };
74
+ const isEnabledTouchResponder = element => {
75
+ return (0, _pointerEvents.isPointerEventEnabled)(element) && element.props.onStartShouldSetResponder?.();
76
+ };
77
+ const isEnabledHostText = element => {
78
+ return (0, _filterNodeByType.filterNodeByType)(element, (0, _hostComponentNames.getHostComponentNames)().text) && (0, _pointerEvents.isPointerEventEnabled)(element) && !element.props.disabled && element.props.onPress;
79
+ };
80
+ const isEnabledTextInput = element => {
81
+ return (0, _filterNodeByType.filterNodeByType)(element, (0, _hostComponentNames.getHostComponentNames)().textInput) && (0, _pointerEvents.isPointerEventEnabled)(element) && element.props.editable !== false;
82
+ };
83
+ const triggerMockPressEvent = async (config, element, options = {
84
+ duration: 0
85
+ }) => {
86
+ const {
87
+ onPressIn,
88
+ onPress,
89
+ onPressOut
90
+ } = element.props;
91
+ await (0, _utils.wait)(config);
92
+ if (onPressIn) {
93
+ onPressIn(_eventBuilder.EventBuilder.Common.touch());
94
+ }
95
+ if (onPress) {
96
+ onPress(_eventBuilder.EventBuilder.Common.touch());
97
+ }
98
+ await (0, _utils.wait)(config, options.duration);
99
+ if (onPressOut) {
100
+ if (_constants.DEFAULT_MIN_PRESS_DURATION - options.duration > 0) {
101
+ await (0, _utils.wait)(config, _constants.DEFAULT_MIN_PRESS_DURATION - options.duration);
102
+ }
103
+ onPressOut(_eventBuilder.EventBuilder.Common.touch());
104
+ }
105
+ };
106
+ //# sourceMappingURL=press.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"press.js","names":["_eventBuilder","require","_utils","_act","_interopRequireDefault","_componentTree","_filterNodeByType","_pointerEvents","_hostComponentNames","_timers","_constants","_warnAboutRealTimers","obj","__esModule","default","press","element","basePress","config","longPress","options","duration","isEnabledHostText","isEnabledTextInput","triggerMockPressEvent","isEnabledTouchResponder","triggerPressEvent","hostParentElement","getHostParent","areFakeTimersEnabled","jestFakeTimersAreEnabled","warnAboutRealTimers","wait","act","props","onResponderGrant","EventBuilder","Common","touch","dispatchConfig","registrationName","onResponderRelease","DEFAULT_MIN_PRESS_DURATION","isPointerEventEnabled","onStartShouldSetResponder","filterNodeByType","getHostComponentNames","text","disabled","onPress","textInput","editable","onPressIn","onPressOut"],"sources":["../../../src/user-event/press/press.ts"],"sourcesContent":["import { ReactTestInstance } from 'react-test-renderer';\nimport { EventBuilder } from '../event-builder';\nimport { UserEventInstance } from '../setup';\nimport { wait } from '../utils';\nimport act from '../../act';\nimport { getHostParent } from '../../helpers/component-tree';\nimport { filterNodeByType } from '../../helpers/filterNodeByType';\nimport { isPointerEventEnabled } from '../../helpers/pointer-events';\nimport { getHostComponentNames } from '../../helpers/host-component-names';\nimport { jestFakeTimersAreEnabled } from '../../helpers/timers';\nimport { DEFAULT_MIN_PRESS_DURATION } from './constants';\nimport { warnAboutRealTimers } from './utils/warnAboutRealTimers';\n\nexport type PressOptions = {\n duration: number;\n};\n\nexport async function press(\n this: UserEventInstance,\n element: ReactTestInstance\n): Promise<void> {\n await basePress(this.config, element);\n}\n\nexport async function longPress(\n this: UserEventInstance,\n element: ReactTestInstance,\n options: PressOptions = { duration: 500 }\n): Promise<void> {\n await basePress(this.config, element, options);\n}\n\nconst basePress = async (\n config: UserEventInstance['config'],\n element: ReactTestInstance,\n options: PressOptions = { duration: 0 }\n): Promise<void> => {\n // Text and TextInput components are mocked in React Native preset so the mock\n // doesn't implement the pressability class\n // Thus we need to call the props directly on the host component\n if (isEnabledHostText(element) || isEnabledTextInput(element)) {\n await triggerMockPressEvent(config, element, options);\n return;\n }\n\n if (isEnabledTouchResponder(element)) {\n await triggerPressEvent(config, element, options);\n return;\n }\n\n const hostParentElement = getHostParent(element);\n if (!hostParentElement) {\n return;\n }\n\n await basePress(config, hostParentElement, options);\n};\n\nconst triggerPressEvent = async (\n config: UserEventInstance['config'],\n element: ReactTestInstance,\n options: PressOptions = { duration: 0 }\n) => {\n const areFakeTimersEnabled = jestFakeTimersAreEnabled();\n if (!areFakeTimersEnabled) {\n warnAboutRealTimers();\n }\n\n await wait(config);\n\n await act(async () => {\n element.props.onResponderGrant({\n ...EventBuilder.Common.touch(),\n dispatchConfig: { registrationName: 'onResponderGrant' },\n });\n\n await wait(config, options.duration);\n\n element.props.onResponderRelease({\n ...EventBuilder.Common.touch(),\n dispatchConfig: { registrationName: 'onResponderRelease' },\n });\n\n if (DEFAULT_MIN_PRESS_DURATION - options.duration > 0) {\n await wait(config, DEFAULT_MIN_PRESS_DURATION - options.duration);\n }\n });\n};\n\nconst isEnabledTouchResponder = (element: ReactTestInstance) => {\n return (\n isPointerEventEnabled(element) &&\n element.props.onStartShouldSetResponder?.()\n );\n};\n\nconst isEnabledHostText = (element: ReactTestInstance) => {\n return (\n filterNodeByType(element, getHostComponentNames().text) &&\n isPointerEventEnabled(element) &&\n !element.props.disabled &&\n element.props.onPress\n );\n};\n\nconst isEnabledTextInput = (element: ReactTestInstance) => {\n return (\n filterNodeByType(element, getHostComponentNames().textInput) &&\n isPointerEventEnabled(element) &&\n element.props.editable !== false\n );\n};\n\nconst triggerMockPressEvent = async (\n config: UserEventInstance['config'],\n element: ReactTestInstance,\n options: PressOptions = { duration: 0 }\n) => {\n const { onPressIn, onPress, onPressOut } = element.props;\n await wait(config);\n if (onPressIn) {\n onPressIn(EventBuilder.Common.touch());\n }\n if (onPress) {\n onPress(EventBuilder.Common.touch());\n }\n await wait(config, options.duration);\n if (onPressOut) {\n if (DEFAULT_MIN_PRESS_DURATION - options.duration > 0) {\n await wait(config, DEFAULT_MIN_PRESS_DURATION - options.duration);\n }\n onPressOut(EventBuilder.Common.touch());\n }\n};\n"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare const warnAboutRealTimers: () => void;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.warnAboutRealTimers = void 0;
7
+ const warnAboutRealTimers = () => {
8
+ // eslint-disable-next-line no-console
9
+ console.warn(`It is recommended to use userEvent with fake timers
10
+ Some events involve duration so your tests may take a long time to run.
11
+ For instance calling userEvent.longPress with real timers will take 500 ms.`);
12
+ };
13
+ exports.warnAboutRealTimers = warnAboutRealTimers;
14
+ //# sourceMappingURL=warnAboutRealTimers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"warnAboutRealTimers.js","names":["warnAboutRealTimers","console","warn","exports"],"sources":["../../../../src/user-event/press/utils/warnAboutRealTimers.ts"],"sourcesContent":["export const warnAboutRealTimers = () => {\n // eslint-disable-next-line no-console\n console.warn(`It is recommended to use userEvent with fake timers\nSome events involve duration so your tests may take a long time to run.\nFor instance calling userEvent.longPress with real timers will take 500 ms.`);\n};\n"],"mappings":";;;;;;AAAO,MAAMA,mBAAmB,GAAGA,CAAA,KAAM;EACvC;EACAC,OAAO,CAACC,IAAI,CAAE;AAChB;AACA,4EAA4E,CAAC;AAC7E,CAAC;AAACC,OAAA,CAAAH,mBAAA,GAAAA,mBAAA"}
@@ -0,0 +1,2 @@
1
+ export type { UserEventConfig, UserEventInstance } from './setup';
2
+ export { setup } from './setup';
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "setup", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _setup.setup;
10
+ }
11
+ });
12
+ var _setup = require("./setup");
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["_setup","require"],"sources":["../../../src/user-event/setup/index.ts"],"sourcesContent":["export type { UserEventConfig, UserEventInstance } from './setup';\nexport { setup } from './setup';\n"],"mappings":";;;;;;;;;;;AACA,IAAAA,MAAA,GAAAC,OAAA"}
@@ -0,0 +1,39 @@
1
+ import { ReactTestInstance } from 'react-test-renderer';
2
+ import { PressOptions } from '../press/press';
3
+ export interface UserEventSetupOptions {
4
+ /**
5
+ * Between some subsequent inputs like typing a series of characters
6
+ * the code execution is delayed per `setTimeout` for (at least) `delay` seconds.
7
+ * This moves the next changes at least to next macro task
8
+ * and allows other (asynchronous) code to run between events.
9
+ *
10
+ * `null` prevents `setTimeout` from being called.
11
+ *
12
+ * @default 0
13
+ */
14
+ delay?: number;
15
+ /**
16
+ * Function to be called to advance fake timers. Setting it is necessary for
17
+ * fake timers to work.
18
+ *
19
+ * @example jest.advanceTimersByTime
20
+ */
21
+ advanceTimers?: (delay: number) => Promise<void> | void;
22
+ }
23
+ /**
24
+ * Creates a new instance of user event instance with the given options.
25
+ *
26
+ * @param options
27
+ * @returns
28
+ */
29
+ export declare function setup(options?: UserEventSetupOptions): UserEventInstance;
30
+ export interface UserEventConfig {
31
+ delay: number;
32
+ advanceTimers: (delay: number) => Promise<void> | void;
33
+ }
34
+ export interface UserEventInstance {
35
+ config: UserEventConfig;
36
+ press: (element: ReactTestInstance) => Promise<void>;
37
+ longPress: (element: ReactTestInstance, options?: PressOptions) => Promise<void>;
38
+ type: (element: ReactTestInstance, text: string) => Promise<void>;
39
+ }
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.setup = setup;
7
+ var _timers = require("../../helpers/timers");
8
+ var _press = require("../press");
9
+ var _type = require("../type");
10
+ /**
11
+ * This functions allow wait to work correctly under both real and fake Jest timers.
12
+ */
13
+ function universalJestAdvanceTimersBy(ms) {
14
+ if ((0, _timers.jestFakeTimersAreEnabled)()) {
15
+ return jest.advanceTimersByTime(ms);
16
+ } else {
17
+ return Promise.resolve();
18
+ }
19
+ }
20
+ const defaultOptions = {
21
+ delay: 0,
22
+ advanceTimers: universalJestAdvanceTimersBy
23
+ };
24
+
25
+ /**
26
+ * Creates a new instance of user event instance with the given options.
27
+ *
28
+ * @param options
29
+ * @returns
30
+ */
31
+ function setup(options) {
32
+ const config = createConfig(options);
33
+ const instance = createInstance(config);
34
+ return instance;
35
+ }
36
+ function createConfig(options) {
37
+ return {
38
+ ...defaultOptions,
39
+ ...options
40
+ };
41
+ }
42
+ function createInstance(config) {
43
+ const instance = {
44
+ config
45
+ };
46
+
47
+ // We need to bind these functions, as they access the config through 'this.config'.
48
+ const api = {
49
+ press: _press.press.bind(instance),
50
+ longPress: _press.longPress.bind(instance),
51
+ type: _type.type.bind(instance)
52
+ };
53
+ Object.assign(instance, api);
54
+ return instance;
55
+ }
56
+ //# sourceMappingURL=setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.js","names":["_timers","require","_press","_type","universalJestAdvanceTimersBy","ms","jestFakeTimersAreEnabled","jest","advanceTimersByTime","Promise","resolve","defaultOptions","delay","advanceTimers","setup","options","config","createConfig","instance","createInstance","api","press","bind","longPress","type","Object","assign"],"sources":["../../../src/user-event/setup/setup.ts"],"sourcesContent":["import { ReactTestInstance } from 'react-test-renderer';\nimport { jestFakeTimersAreEnabled } from '../../helpers/timers';\nimport { press, longPress } from '../press';\nimport { type } from '../type';\nimport { PressOptions } from '../press/press';\n\nexport interface UserEventSetupOptions {\n /**\n * Between some subsequent inputs like typing a series of characters\n * the code execution is delayed per `setTimeout` for (at least) `delay` seconds.\n * This moves the next changes at least to next macro task\n * and allows other (asynchronous) code to run between events.\n *\n * `null` prevents `setTimeout` from being called.\n *\n * @default 0\n */\n delay?: number;\n\n /**\n * Function to be called to advance fake timers. Setting it is necessary for\n * fake timers to work.\n *\n * @example jest.advanceTimersByTime\n */\n advanceTimers?: (delay: number) => Promise<void> | void;\n}\n\n/**\n * This functions allow wait to work correctly under both real and fake Jest timers.\n */\nfunction universalJestAdvanceTimersBy(ms: number) {\n if (jestFakeTimersAreEnabled()) {\n return jest.advanceTimersByTime(ms);\n } else {\n return Promise.resolve();\n }\n}\n\nconst defaultOptions: Required<UserEventSetupOptions> = {\n delay: 0,\n advanceTimers: universalJestAdvanceTimersBy,\n};\n\n/**\n * Creates a new instance of user event instance with the given options.\n *\n * @param options\n * @returns\n */\nexport function setup(options?: UserEventSetupOptions) {\n const config = createConfig(options);\n const instance = createInstance(config);\n return instance;\n}\n\nexport interface UserEventConfig {\n delay: number;\n advanceTimers: (delay: number) => Promise<void> | void;\n}\n\nfunction createConfig(options?: UserEventSetupOptions): UserEventConfig {\n return {\n ...defaultOptions,\n ...options,\n };\n}\n\nexport interface UserEventInstance {\n config: UserEventConfig;\n press: (element: ReactTestInstance) => Promise<void>;\n longPress: (\n element: ReactTestInstance,\n options?: PressOptions\n ) => Promise<void>;\n type: (element: ReactTestInstance, text: string) => Promise<void>;\n}\n\nfunction createInstance(config: UserEventConfig): UserEventInstance {\n const instance = {\n config,\n } as UserEventInstance;\n\n // We need to bind these functions, as they access the config through 'this.config'.\n const api = {\n press: press.bind(instance),\n longPress: longPress.bind(instance),\n type: type.bind(instance),\n };\n\n Object.assign(instance, api);\n return instance;\n}\n"],"mappings":";;;;;;AACA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAF,OAAA;AAyBA;AACA;AACA;AACA,SAASG,4BAA4BA,CAACC,EAAU,EAAE;EAChD,IAAI,IAAAC,gCAAwB,EAAC,CAAC,EAAE;IAC9B,OAAOC,IAAI,CAACC,mBAAmB,CAACH,EAAE,CAAC;EACrC,CAAC,MAAM;IACL,OAAOI,OAAO,CAACC,OAAO,CAAC,CAAC;EAC1B;AACF;AAEA,MAAMC,cAA+C,GAAG;EACtDC,KAAK,EAAE,CAAC;EACRC,aAAa,EAAET;AACjB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACO,SAASU,KAAKA,CAACC,OAA+B,EAAE;EACrD,MAAMC,MAAM,GAAGC,YAAY,CAACF,OAAO,CAAC;EACpC,MAAMG,QAAQ,GAAGC,cAAc,CAACH,MAAM,CAAC;EACvC,OAAOE,QAAQ;AACjB;AAOA,SAASD,YAAYA,CAACF,OAA+B,EAAmB;EACtE,OAAO;IACL,GAAGJ,cAAc;IACjB,GAAGI;EACL,CAAC;AACH;AAYA,SAASI,cAAcA,CAACH,MAAuB,EAAqB;EAClE,MAAME,QAAQ,GAAG;IACfF;EACF,CAAsB;;EAEtB;EACA,MAAMI,GAAG,GAAG;IACVC,KAAK,EAAEA,YAAK,CAACC,IAAI,CAACJ,QAAQ,CAAC;IAC3BK,SAAS,EAAEA,gBAAS,CAACD,IAAI,CAACJ,QAAQ,CAAC;IACnCM,IAAI,EAAEA,UAAI,CAACF,IAAI,CAACJ,QAAQ;EAC1B,CAAC;EAEDO,MAAM,CAACC,MAAM,CAACR,QAAQ,EAAEE,GAAG,CAAC;EAC5B,OAAOF,QAAQ;AACjB"}
@@ -0,0 +1 @@
1
+ export { type } from './type';
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "type", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _type.type;
10
+ }
11
+ });
12
+ var _type = require("./type");
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["_type","require"],"sources":["../../../src/user-event/type/index.ts"],"sourcesContent":["export { type } from './type';\n"],"mappings":";;;;;;;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA"}
@@ -0,0 +1,3 @@
1
+ import { ReactTestInstance } from 'react-test-renderer';
2
+ import { UserEventInstance } from '../setup';
3
+ export declare function type(this: UserEventInstance, element: ReactTestInstance, text: string): Promise<void>;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.type = type;
7
+ var _utils = require("../utils");
8
+ var _eventBuilder = require("../event-builder");
9
+ async function type(element, text) {
10
+ // TODO provide real implementation
11
+ await (0, _utils.wait)(this.config);
12
+ (0, _utils.dispatchHostEvent)(element, 'focus', _eventBuilder.EventBuilder.Common.focus());
13
+ await (0, _utils.wait)(this.config);
14
+ (0, _utils.dispatchHostEvent)(element, 'changeText', text);
15
+ await (0, _utils.wait)(this.config);
16
+ (0, _utils.dispatchHostEvent)(element, 'blur', _eventBuilder.EventBuilder.Common.blur());
17
+ }
18
+ //# sourceMappingURL=type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type.js","names":["_utils","require","_eventBuilder","type","element","text","wait","config","dispatchHostEvent","EventBuilder","Common","focus","blur"],"sources":["../../../src/user-event/type/type.ts"],"sourcesContent":["import { ReactTestInstance } from 'react-test-renderer';\nimport { UserEventInstance } from '../setup';\nimport { dispatchHostEvent, wait } from '../utils';\nimport { EventBuilder } from '../event-builder';\n\nexport async function type(\n this: UserEventInstance,\n element: ReactTestInstance,\n text: string\n) {\n // TODO provide real implementation\n await wait(this.config);\n dispatchHostEvent(element, 'focus', EventBuilder.Common.focus());\n\n await wait(this.config);\n dispatchHostEvent(element, 'changeText', text);\n\n await wait(this.config);\n dispatchHostEvent(element, 'blur', EventBuilder.Common.blur());\n}\n"],"mappings":";;;;;;AAEA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,aAAA,GAAAD,OAAA;AAEO,eAAeE,IAAIA,CAExBC,OAA0B,EAC1BC,IAAY,EACZ;EACA;EACA,MAAM,IAAAC,WAAI,EAAC,IAAI,CAACC,MAAM,CAAC;EACvB,IAAAC,wBAAiB,EAACJ,OAAO,EAAE,OAAO,EAAEK,0BAAY,CAACC,MAAM,CAACC,KAAK,CAAC,CAAC,CAAC;EAEhE,MAAM,IAAAL,WAAI,EAAC,IAAI,CAACC,MAAM,CAAC;EACvB,IAAAC,wBAAiB,EAACJ,OAAO,EAAE,YAAY,EAAEC,IAAI,CAAC;EAE9C,MAAM,IAAAC,WAAI,EAAC,IAAI,CAACC,MAAM,CAAC;EACvB,IAAAC,wBAAiB,EAACJ,OAAO,EAAE,MAAM,EAAEK,0BAAY,CAACC,MAAM,CAACE,IAAI,CAAC,CAAC,CAAC;AAChE"}
@@ -0,0 +1,9 @@
1
+ import { ReactTestInstance } from 'react-test-renderer';
2
+ /**
3
+ * Dispatch event function used by User Event module.
4
+ *
5
+ * @param element element trigger event on
6
+ * @param eventName name of the event
7
+ * @param event event payload
8
+ */
9
+ export declare function dispatchHostEvent(element: ReactTestInstance, eventName: string, event: unknown): void;
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.dispatchHostEvent = dispatchHostEvent;
7
+ var _act = _interopRequireDefault(require("../../act"));
8
+ var _fireEvent = require("../../fireEvent");
9
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
+ /**
11
+ * Dispatch event function used by User Event module.
12
+ *
13
+ * @param element element trigger event on
14
+ * @param eventName name of the event
15
+ * @param event event payload
16
+ */
17
+ function dispatchHostEvent(element, eventName, event) {
18
+ const handler = getEnabledEventHandler(element, eventName);
19
+ if (!handler) {
20
+ return;
21
+ }
22
+ (0, _act.default)(() => {
23
+ handler(event);
24
+ });
25
+ }
26
+ function getEnabledEventHandler(element, eventName) {
27
+ const touchResponder = (0, _fireEvent.isTouchResponder)(element) ? element : undefined;
28
+ const handler = getEventHandler(element, eventName);
29
+ if (handler && (0, _fireEvent.isEventEnabled)(element, eventName, touchResponder)) {
30
+ return handler;
31
+ }
32
+ return null;
33
+ }
34
+ function getEventHandler(element, eventName) {
35
+ const eventHandlerName = getEventHandlerName(eventName);
36
+ if (typeof element.props[eventHandlerName] === 'function') {
37
+ return element.props[eventHandlerName];
38
+ }
39
+ return undefined;
40
+ }
41
+ function getEventHandlerName(eventName) {
42
+ return `on${eventName.charAt(0).toUpperCase()}${eventName.slice(1)}`;
43
+ }
44
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.js","names":["_act","_interopRequireDefault","require","_fireEvent","obj","__esModule","default","dispatchHostEvent","element","eventName","event","handler","getEnabledEventHandler","act","touchResponder","isTouchResponder","undefined","getEventHandler","isEventEnabled","eventHandlerName","getEventHandlerName","props","charAt","toUpperCase","slice"],"sources":["../../../src/user-event/utils/events.ts"],"sourcesContent":["import { ReactTestInstance } from 'react-test-renderer';\nimport act from '../../act';\nimport { isEventEnabled, isTouchResponder } from '../../fireEvent';\n\ntype EventHandler = (event: unknown) => void;\n\n/**\n * Dispatch event function used by User Event module.\n *\n * @param element element trigger event on\n * @param eventName name of the event\n * @param event event payload\n */\nexport function dispatchHostEvent(\n element: ReactTestInstance,\n eventName: string,\n event: unknown\n) {\n const handler = getEnabledEventHandler(element, eventName);\n if (!handler) {\n return;\n }\n\n act(() => {\n handler(event);\n });\n}\n\nfunction getEnabledEventHandler(\n element: ReactTestInstance,\n eventName: string\n): EventHandler | null {\n const touchResponder = isTouchResponder(element) ? element : undefined;\n\n const handler = getEventHandler(element, eventName);\n if (handler && isEventEnabled(element, eventName, touchResponder)) {\n return handler;\n }\n\n return null;\n}\n\nfunction getEventHandler(element: ReactTestInstance, eventName: string) {\n const eventHandlerName = getEventHandlerName(eventName);\n if (typeof element.props[eventHandlerName] === 'function') {\n return element.props[eventHandlerName];\n }\n\n return undefined;\n}\n\nfunction getEventHandlerName(eventName: string) {\n return `on${eventName.charAt(0).toUpperCase()}${eventName.slice(1)}`;\n}\n"],"mappings":";;;;;;AACA,IAAAA,IAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,UAAA,GAAAD,OAAA;AAAmE,SAAAD,uBAAAG,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAInE;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASG,iBAAiBA,CAC/BC,OAA0B,EAC1BC,SAAiB,EACjBC,KAAc,EACd;EACA,MAAMC,OAAO,GAAGC,sBAAsB,CAACJ,OAAO,EAAEC,SAAS,CAAC;EAC1D,IAAI,CAACE,OAAO,EAAE;IACZ;EACF;EAEA,IAAAE,YAAG,EAAC,MAAM;IACRF,OAAO,CAACD,KAAK,CAAC;EAChB,CAAC,CAAC;AACJ;AAEA,SAASE,sBAAsBA,CAC7BJ,OAA0B,EAC1BC,SAAiB,EACI;EACrB,MAAMK,cAAc,GAAG,IAAAC,2BAAgB,EAACP,OAAO,CAAC,GAAGA,OAAO,GAAGQ,SAAS;EAEtE,MAAML,OAAO,GAAGM,eAAe,CAACT,OAAO,EAAEC,SAAS,CAAC;EACnD,IAAIE,OAAO,IAAI,IAAAO,yBAAc,EAACV,OAAO,EAAEC,SAAS,EAAEK,cAAc,CAAC,EAAE;IACjE,OAAOH,OAAO;EAChB;EAEA,OAAO,IAAI;AACb;AAEA,SAASM,eAAeA,CAACT,OAA0B,EAAEC,SAAiB,EAAE;EACtE,MAAMU,gBAAgB,GAAGC,mBAAmB,CAACX,SAAS,CAAC;EACvD,IAAI,OAAOD,OAAO,CAACa,KAAK,CAACF,gBAAgB,CAAC,KAAK,UAAU,EAAE;IACzD,OAAOX,OAAO,CAACa,KAAK,CAACF,gBAAgB,CAAC;EACxC;EAEA,OAAOH,SAAS;AAClB;AAEA,SAASI,mBAAmBA,CAACX,SAAiB,EAAE;EAC9C,OAAQ,KAAIA,SAAS,CAACa,MAAM,CAAC,CAAC,CAAC,CAACC,WAAW,CAAC,CAAE,GAAEd,SAAS,CAACe,KAAK,CAAC,CAAC,CAAE,EAAC;AACtE"}
@@ -0,0 +1,2 @@
1
+ export * from './events';
2
+ export * from './wait';