@react-aria/test-utils 1.0.0-alpha.2 → 1.0.0-alpha.4

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 (71) hide show
  1. package/LICENSE +201 -0
  2. package/dist/combobox.main.js +116 -82
  3. package/dist/combobox.main.js.map +1 -1
  4. package/dist/combobox.mjs +117 -83
  5. package/dist/combobox.module.js +117 -83
  6. package/dist/combobox.module.js.map +1 -1
  7. package/dist/events.main.js.map +1 -1
  8. package/dist/events.module.js.map +1 -1
  9. package/dist/gridlist.main.js +102 -59
  10. package/dist/gridlist.main.js.map +1 -1
  11. package/dist/gridlist.mjs +103 -60
  12. package/dist/gridlist.module.js +103 -60
  13. package/dist/gridlist.module.js.map +1 -1
  14. package/dist/listbox.main.js +135 -0
  15. package/dist/listbox.main.js.map +1 -0
  16. package/dist/listbox.mjs +130 -0
  17. package/dist/listbox.module.js +130 -0
  18. package/dist/listbox.module.js.map +1 -0
  19. package/dist/main.js.map +1 -1
  20. package/dist/menu.main.js +197 -119
  21. package/dist/menu.main.js.map +1 -1
  22. package/dist/menu.mjs +198 -120
  23. package/dist/menu.module.js +198 -120
  24. package/dist/menu.module.js.map +1 -1
  25. package/dist/module.js.map +1 -1
  26. package/dist/select.main.js +116 -70
  27. package/dist/select.main.js.map +1 -1
  28. package/dist/select.mjs +117 -71
  29. package/dist/select.module.js +117 -71
  30. package/dist/select.module.js.map +1 -1
  31. package/dist/table.main.js +170 -143
  32. package/dist/table.main.js.map +1 -1
  33. package/dist/table.mjs +171 -144
  34. package/dist/table.module.js +171 -144
  35. package/dist/table.module.js.map +1 -1
  36. package/dist/tabs.main.js +133 -0
  37. package/dist/tabs.main.js.map +1 -0
  38. package/dist/tabs.mjs +128 -0
  39. package/dist/tabs.module.js +128 -0
  40. package/dist/tabs.module.js.map +1 -0
  41. package/dist/testSetup.main.js +2 -6
  42. package/dist/testSetup.main.js.map +1 -1
  43. package/dist/testSetup.mjs +2 -6
  44. package/dist/testSetup.module.js +2 -6
  45. package/dist/testSetup.module.js.map +1 -1
  46. package/dist/tree.main.js +165 -0
  47. package/dist/tree.main.js.map +1 -0
  48. package/dist/tree.mjs +160 -0
  49. package/dist/tree.module.js +160 -0
  50. package/dist/tree.module.js.map +1 -0
  51. package/dist/types.d.ts +607 -139
  52. package/dist/types.d.ts.map +1 -1
  53. package/dist/user.main.js +16 -5
  54. package/dist/user.main.js.map +1 -1
  55. package/dist/user.mjs +16 -5
  56. package/dist/user.module.js +16 -5
  57. package/dist/user.module.js.map +1 -1
  58. package/package.json +5 -5
  59. package/src/combobox.ts +105 -36
  60. package/src/events.ts +1 -1
  61. package/src/gridlist.ts +146 -59
  62. package/src/index.ts +1 -1
  63. package/src/listbox.ts +226 -0
  64. package/src/menu.ts +207 -55
  65. package/src/select.ts +137 -44
  66. package/src/table.ts +134 -78
  67. package/src/tabs.ts +198 -0
  68. package/src/testSetup.ts +2 -6
  69. package/src/tree.ts +248 -0
  70. package/src/types.ts +133 -0
  71. package/src/user.ts +62 -37
@@ -1 +1 @@
1
- {"mappings":"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","sources":["packages/@react-aria/test-utils/src/packages/@react-aria/test-utils/src/combobox.ts","packages/@react-aria/test-utils/src/packages/@react-aria/test-utils/src/gridlist.ts","packages/@react-aria/test-utils/src/packages/@react-aria/test-utils/src/menu.ts","packages/@react-aria/test-utils/src/packages/@react-aria/test-utils/src/select.ts","packages/@react-aria/test-utils/src/packages/@react-aria/test-utils/src/table.ts","packages/@react-aria/test-utils/src/packages/@react-aria/test-utils/src/user.ts","packages/@react-aria/test-utils/src/packages/@react-aria/test-utils/src/events.ts","packages/@react-aria/test-utils/src/packages/@react-aria/test-utils/src/testSetup.ts","packages/@react-aria/test-utils/src/packages/@react-aria/test-utils/src/userEventMaps.ts","packages/@react-aria/test-utils/src/packages/@react-aria/test-utils/src/index.ts","packages/@react-aria/test-utils/src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,"/*\n * Copyright 2023 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nexport {triggerLongPress} from './events';\nexport {installMouseEvent, installPointerEvent} from './testSetup';\nexport {pointerMap} from './userEventMaps';\nexport {User} from './user';\n\nexport type {UserOpts} from './user';\n"],"names":[],"version":3,"file":"types.d.ts.map"}
1
+ {"mappings":"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","sources":["packages/@react-aria/test-utils/src/packages/@react-aria/test-utils/src/types.ts","packages/@react-aria/test-utils/src/packages/@react-aria/test-utils/src/events.ts","packages/@react-aria/test-utils/src/packages/@react-aria/test-utils/src/testSetup.ts","packages/@react-aria/test-utils/src/packages/@react-aria/test-utils/src/userEventMaps.ts","packages/@react-aria/test-utils/src/packages/@react-aria/test-utils/src/combobox.ts","packages/@react-aria/test-utils/src/packages/@react-aria/test-utils/src/gridlist.ts","packages/@react-aria/test-utils/src/packages/@react-aria/test-utils/src/listbox.ts","packages/@react-aria/test-utils/src/packages/@react-aria/test-utils/src/menu.ts","packages/@react-aria/test-utils/src/packages/@react-aria/test-utils/src/select.ts","packages/@react-aria/test-utils/src/packages/@react-aria/test-utils/src/table.ts","packages/@react-aria/test-utils/src/packages/@react-aria/test-utils/src/tabs.ts","packages/@react-aria/test-utils/src/packages/@react-aria/test-utils/src/tree.ts","packages/@react-aria/test-utils/src/packages/@react-aria/test-utils/src/user.ts","packages/@react-aria/test-utils/src/packages/@react-aria/test-utils/src/index.ts","packages/@react-aria/test-utils/src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,"/*\n * Copyright 2023 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nexport {triggerLongPress} from './events';\nexport {installMouseEvent, installPointerEvent} from './testSetup';\nexport {pointerMap} from './userEventMaps';\nexport {User} from './user';\n\nexport type {UserOpts} from './types';\n"],"names":[],"version":3,"file":"types.d.ts.map"}
package/dist/user.main.js CHANGED
@@ -1,9 +1,12 @@
1
1
  var $15e4b71f2b6c4964$exports = require("./combobox.main.js");
2
2
  var $30ee8e379774bea4$exports = require("./gridlist.main.js");
3
+ var $8ac94de7d2631d04$exports = require("./listbox.main.js");
3
4
  var $31965f39292c8e99$exports = require("./menu.main.js");
4
5
  var $0e568517a25183a7$exports = require("./userEventMaps.main.js");
5
6
  var $b97d5a42df7c75b2$exports = require("./select.main.js");
6
7
  var $80a9def682ac1297$exports = require("./table.main.js");
8
+ var $19633c03aff25ae5$exports = require("./tabs.main.js");
9
+ var $9c221bde173322ba$exports = require("./tree.main.js");
7
10
  var $iYqJR$testinglibraryuserevent = require("@testing-library/user-event");
8
11
 
9
12
 
@@ -33,21 +36,29 @@ $parcel$export(module.exports, "User", () => $4168d511756883ff$export$1f44aaf2ec
33
36
 
34
37
 
35
38
 
39
+
40
+
41
+
36
42
  let $4168d511756883ff$var$keyToUtil = {
37
43
  'Select': (0, $b97d5a42df7c75b2$exports.SelectTester),
38
44
  'Table': (0, $80a9def682ac1297$exports.TableTester),
39
45
  'Menu': (0, $31965f39292c8e99$exports.MenuTester),
40
46
  'ComboBox': (0, $15e4b71f2b6c4964$exports.ComboBoxTester),
41
- 'GridList': (0, $30ee8e379774bea4$exports.GridListTester)
47
+ 'GridList': (0, $30ee8e379774bea4$exports.GridListTester),
48
+ 'ListBox': (0, $8ac94de7d2631d04$exports.ListBoxTester),
49
+ 'Tabs': (0, $19633c03aff25ae5$exports.TabsTester),
50
+ 'Tree': (0, $9c221bde173322ba$exports.TreeTester)
42
51
  };
43
52
  let $4168d511756883ff$var$defaultAdvanceTimer = async (waitTime)=>await new Promise((resolve)=>setTimeout(resolve, waitTime));
44
53
  class $4168d511756883ff$export$1f44aaf2ec115b54 {
45
- createTester(patternName, opts) {
54
+ /**
55
+ * Creates an aria pattern tester, inheriting the options provided to the original user.
56
+ */ createTester(patternName, opts) {
46
57
  return new $4168d511756883ff$var$keyToUtil[patternName]({
47
- ...opts,
48
- user: this.user,
49
58
  interactionType: this.interactionType,
50
- advanceTimer: this.advanceTimer
59
+ advanceTimer: this.advanceTimer,
60
+ ...opts,
61
+ user: this.user
51
62
  });
52
63
  }
53
64
  constructor(opts = {}){
@@ -1 +1 @@
1
- {"mappings":";;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;CAUC;;;;;;;AAyBD,IAAI,kCAAY;IAAC,UAAU,CAAA,GAAA,sCAAW;IAAG,SAAS,CAAA,GAAA,qCAAU;IAAG,QAAQ,CAAA,GAAA,oCAAS;IAAG,YAAY,CAAA,GAAA,wCAAa;IAAG,YAAY,CAAA,GAAA,wCAAa;AAAC;AAoBzI,IAAI,4CAAsB,OAAO,WAAiC,MAAM,IAAI,QAAQ,CAAC,UAAY,WAAW,SAAS;AAE9G,MAAM;IAYX,aAAqC,WAAc,EAAE,IAA2B,EAAiB;QAC/F,OAAO,IAAI,AAAC,+BAAU,CAAC,YAAY,CAAC;YAAC,GAAG,IAAI;YAAE,MAAM,IAAI,CAAC,IAAI;YAAE,iBAAiB,IAAI,CAAC,eAAe;YAAE,cAAc,IAAI,CAAC,YAAY;QAAA;IACvI;IATA,YAAY,OAAiB,CAAC,CAAC,CAAE;QAC/B,IAAI,mBAAC,eAAe,gBAAE,YAAY,EAAC,GAAG;QACtC,IAAI,CAAC,IAAI,GAAG,CAAA,GAAA,wDAAQ,EAAE,KAAK,CAAC;YAAC,OAAO;wBAAM;QAAU;QACpD,IAAI,CAAC,eAAe,GAAG;QACvB,IAAI,CAAC,YAAY,GAAG,gBAAgB;IACtC;AAKF","sources":["packages/@react-aria/test-utils/src/user.ts"],"sourcesContent":["/*\n * Copyright 2024 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {ComboBoxOptions, ComboBoxTester} from './combobox';\nimport {GridListOptions, GridListTester} from './gridlist';\nimport {MenuOptions, MenuTester} from './menu';\nimport {pointerMap} from './';\nimport {SelectOptions, SelectTester} from './select';\nimport {TableOptions, TableTester} from './table';\nimport userEvent from '@testing-library/user-event';\n\n// https://github.com/testing-library/dom-testing-library/issues/939#issuecomment-830771708 is an interesting way of allowing users to configure the timers\n// curent way is like https://testing-library.com/docs/user-event/options/#advancetimers,\nexport interface UserOpts {\n interactionType?: 'mouse' | 'touch' | 'keyboard',\n // If using fake timers user should provide something like (time) => jest.advanceTimersByTime(time))}\n // A real timer user would pass async () => await new Promise((resolve) => setTimeout(resolve, waitTime))\n // Time is in ms.\n advanceTimer?: (time?: number) => void | Promise<unknown>\n}\n\nexport interface BaseTesterOpts {\n // The base element for the given tester (e.g. the table, menu trigger, etc)\n root: HTMLElement\n}\n\nlet keyToUtil = {'Select': SelectTester, 'Table': TableTester, 'Menu': MenuTester, 'ComboBox': ComboBoxTester, 'GridList': GridListTester} as const;\nexport type PatternNames = keyof typeof keyToUtil;\n\n// Conditional type: https://www.typescriptlang.org/docs/handbook/2/conditional-types.html\ntype ObjectType<T> =\n T extends 'Select' ? SelectTester :\n T extends 'Table' ? TableTester :\n T extends 'Menu' ? MenuTester :\n T extends 'ComboBox' ? ComboBoxTester :\n T extends 'GridList' ? GridListTester :\n never;\n\ntype ObjectOptionsTypes<T> =\n T extends 'Select' ? SelectOptions :\n T extends 'Table' ? TableOptions :\n T extends 'Menu' ? MenuOptions :\n T extends 'ComboBox' ? ComboBoxOptions :\n T extends 'GridList' ? GridListOptions :\n never;\n\nlet defaultAdvanceTimer = async (waitTime: number | undefined) => await new Promise((resolve) => setTimeout(resolve, waitTime));\n\nexport class User {\n user;\n interactionType: UserOpts['interactionType'];\n advanceTimer: UserOpts['advanceTimer'];\n\n constructor(opts: UserOpts = {}) {\n let {interactionType, advanceTimer} = opts;\n this.user = userEvent.setup({delay: null, pointerMap});\n this.interactionType = interactionType;\n this.advanceTimer = advanceTimer || defaultAdvanceTimer;\n }\n\n createTester<T extends PatternNames>(patternName: T, opts: ObjectOptionsTypes<T>): ObjectType<T> {\n return new (keyToUtil)[patternName]({...opts, user: this.user, interactionType: this.interactionType, advanceTimer: this.advanceTimer}) as ObjectType<T>;\n }\n}\n"],"names":[],"version":3,"file":"user.main.js.map"}
1
+ {"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;CAUC;;;;;;;;;;AAwBD,IAAI,kCAAY;IACd,UAAU,CAAA,GAAA,sCAAW;IACrB,SAAS,CAAA,GAAA,qCAAU;IACnB,QAAQ,CAAA,GAAA,oCAAS;IACjB,YAAY,CAAA,GAAA,wCAAa;IACzB,YAAY,CAAA,GAAA,wCAAa;IACzB,WAAW,CAAA,GAAA,uCAAY;IACvB,QAAQ,CAAA,GAAA,oCAAS;IACjB,QAAQ,CAAA,GAAA,oCAAS;AACnB;AA0BA,IAAI,4CAAsB,OAAO,WAAiC,MAAM,IAAI,QAAQ,CAAC,UAAY,WAAW,SAAS;AAE9G,MAAM;IAoBX;;GAEC,GACD,aAAqC,WAAc,EAAE,IAAmB,EAAa;QACnF,OAAO,IAAI,AAAC,+BAAU,CAAC,YAAY,CAAC;YAAC,iBAAiB,IAAI,CAAC,eAAe;YAAE,cAAc,IAAI,CAAC,YAAY;YAAE,GAAG,IAAI;YAAE,MAAM,IAAI,CAAC,IAAI;QAAA;IACvI;IAZA,YAAY,OAAiB,CAAC,CAAC,CAAE;QAC/B,IAAI,mBAAC,eAAe,gBAAE,YAAY,EAAC,GAAG;QACtC,IAAI,CAAC,IAAI,GAAG,CAAA,GAAA,wDAAQ,EAAE,KAAK,CAAC;YAAC,OAAO;wBAAM;QAAU;QACpD,IAAI,CAAC,eAAe,GAAG;QACvB,IAAI,CAAC,YAAY,GAAG,gBAAgB;IACtC;AAQF","sources":["packages/@react-aria/test-utils/src/user.ts"],"sourcesContent":["/*\n * Copyright 2024 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {ComboBoxTester} from './combobox';\nimport {\n ComboBoxTesterOpts,\n GridListTesterOpts,\n ListBoxTesterOpts,\n MenuTesterOpts,\n SelectTesterOpts,\n TableTesterOpts,\n TabsTesterOpts,\n TreeTesterOpts,\n UserOpts\n} from './types';\nimport {GridListTester} from './gridlist';\nimport {ListBoxTester} from './listbox';\nimport {MenuTester} from './menu';\nimport {pointerMap} from './';\nimport {SelectTester} from './select';\nimport {TableTester} from './table';\nimport {TabsTester} from './tabs';\nimport {TreeTester} from './tree';\nimport userEvent from '@testing-library/user-event';\n\nlet keyToUtil = {\n 'Select': SelectTester,\n 'Table': TableTester,\n 'Menu': MenuTester,\n 'ComboBox': ComboBoxTester,\n 'GridList': GridListTester,\n 'ListBox': ListBoxTester,\n 'Tabs': TabsTester,\n 'Tree': TreeTester\n} as const;\nexport type PatternNames = keyof typeof keyToUtil;\n\n// Conditional type: https://www.typescriptlang.org/docs/handbook/2/conditional-types.html\ntype Tester<T> =\n T extends 'ComboBox' ? ComboBoxTester :\n T extends 'GridList' ? GridListTester :\n T extends 'ListBox' ? ListBoxTester :\n T extends 'Menu' ? MenuTester :\n T extends 'Select' ? SelectTester :\n T extends 'Table' ? TableTester :\n T extends 'Tabs' ? TabsTester :\n T extends 'Tree' ? TreeTester :\n never;\n\ntype TesterOpts<T> =\n T extends 'ComboBox' ? ComboBoxTesterOpts :\n T extends 'GridList' ? GridListTesterOpts :\n T extends 'ListBox' ? ListBoxTesterOpts :\n T extends 'Menu' ? MenuTesterOpts :\n T extends 'Select' ? SelectTesterOpts :\n T extends 'Table' ? TableTesterOpts :\n T extends 'Tabs' ? TabsTesterOpts :\n T extends 'Tree' ? TreeTesterOpts :\n never;\n\nlet defaultAdvanceTimer = async (waitTime: number | undefined) => await new Promise((resolve) => setTimeout(resolve, waitTime));\n\nexport class User {\n private user;\n /**\n * The interaction type (mouse, touch, keyboard) that the test util user will use when interacting with a component. This can be overridden\n * at the aria pattern util level if needed.\n * @default mouse\n */\n interactionType: UserOpts['interactionType'];\n /**\n * A function used by the test utils to advance timers during interactions. Required for certain aria patterns (e.g. table).\n */\n advanceTimer: UserOpts['advanceTimer'];\n\n constructor(opts: UserOpts = {}) {\n let {interactionType, advanceTimer} = opts;\n this.user = userEvent.setup({delay: null, pointerMap});\n this.interactionType = interactionType;\n this.advanceTimer = advanceTimer || defaultAdvanceTimer;\n }\n\n /**\n * Creates an aria pattern tester, inheriting the options provided to the original user.\n */\n createTester<T extends PatternNames>(patternName: T, opts: TesterOpts<T>): Tester<T> {\n return new (keyToUtil)[patternName]({interactionType: this.interactionType, advanceTimer: this.advanceTimer, ...opts, user: this.user}) as Tester<T>;\n }\n}\n"],"names":[],"version":3,"file":"user.main.js.map"}
package/dist/user.mjs CHANGED
@@ -1,9 +1,12 @@
1
1
  import {ComboBoxTester as $dab75f394483aa9c$export$f97e14e96d71ab3b} from "./combobox.mjs";
2
2
  import {GridListTester as $5ca9e9228f508f75$export$93a85aaed9fabd83} from "./gridlist.mjs";
3
+ import {ListBoxTester as $bbf72b714b632b99$export$54c24f7ee8577f4f} from "./listbox.mjs";
3
4
  import {MenuTester as $74b93f0617179929$export$f73bbc9212ed861e} from "./menu.mjs";
4
5
  import {pointerMap as $50ecfb18069ec897$export$7dbde2c4caaa8d35} from "./userEventMaps.mjs";
5
6
  import {SelectTester as $4350df3e19e40e36$export$d1859707465446a9} from "./select.mjs";
6
7
  import {TableTester as $6d1e4cf220920c37$export$4c6a9d6ae3b0086} from "./table.mjs";
8
+ import {TabsTester as $e615c34a00448a49$export$f1539bff3fc7d485} from "./tabs.mjs";
9
+ import {TreeTester as $962758aa2f16f1a4$export$4445864b14128396} from "./tree.mjs";
7
10
  import $gmkhN$testinglibraryuserevent from "@testing-library/user-event";
8
11
 
9
12
  /*
@@ -23,21 +26,29 @@ import $gmkhN$testinglibraryuserevent from "@testing-library/user-event";
23
26
 
24
27
 
25
28
 
29
+
30
+
31
+
26
32
  let $0d71b4e9cc4df40a$var$keyToUtil = {
27
33
  'Select': (0, $4350df3e19e40e36$export$d1859707465446a9),
28
34
  'Table': (0, $6d1e4cf220920c37$export$4c6a9d6ae3b0086),
29
35
  'Menu': (0, $74b93f0617179929$export$f73bbc9212ed861e),
30
36
  'ComboBox': (0, $dab75f394483aa9c$export$f97e14e96d71ab3b),
31
- 'GridList': (0, $5ca9e9228f508f75$export$93a85aaed9fabd83)
37
+ 'GridList': (0, $5ca9e9228f508f75$export$93a85aaed9fabd83),
38
+ 'ListBox': (0, $bbf72b714b632b99$export$54c24f7ee8577f4f),
39
+ 'Tabs': (0, $e615c34a00448a49$export$f1539bff3fc7d485),
40
+ 'Tree': (0, $962758aa2f16f1a4$export$4445864b14128396)
32
41
  };
33
42
  let $0d71b4e9cc4df40a$var$defaultAdvanceTimer = async (waitTime)=>await new Promise((resolve)=>setTimeout(resolve, waitTime));
34
43
  class $0d71b4e9cc4df40a$export$1f44aaf2ec115b54 {
35
- createTester(patternName, opts) {
44
+ /**
45
+ * Creates an aria pattern tester, inheriting the options provided to the original user.
46
+ */ createTester(patternName, opts) {
36
47
  return new $0d71b4e9cc4df40a$var$keyToUtil[patternName]({
37
- ...opts,
38
- user: this.user,
39
48
  interactionType: this.interactionType,
40
- advanceTimer: this.advanceTimer
49
+ advanceTimer: this.advanceTimer,
50
+ ...opts,
51
+ user: this.user
41
52
  });
42
53
  }
43
54
  constructor(opts = {}){
@@ -1,9 +1,12 @@
1
1
  import {ComboBoxTester as $dab75f394483aa9c$export$f97e14e96d71ab3b} from "./combobox.module.js";
2
2
  import {GridListTester as $5ca9e9228f508f75$export$93a85aaed9fabd83} from "./gridlist.module.js";
3
+ import {ListBoxTester as $bbf72b714b632b99$export$54c24f7ee8577f4f} from "./listbox.module.js";
3
4
  import {MenuTester as $74b93f0617179929$export$f73bbc9212ed861e} from "./menu.module.js";
4
5
  import {pointerMap as $50ecfb18069ec897$export$7dbde2c4caaa8d35} from "./userEventMaps.module.js";
5
6
  import {SelectTester as $4350df3e19e40e36$export$d1859707465446a9} from "./select.module.js";
6
7
  import {TableTester as $6d1e4cf220920c37$export$4c6a9d6ae3b0086} from "./table.module.js";
8
+ import {TabsTester as $e615c34a00448a49$export$f1539bff3fc7d485} from "./tabs.module.js";
9
+ import {TreeTester as $962758aa2f16f1a4$export$4445864b14128396} from "./tree.module.js";
7
10
  import $gmkhN$testinglibraryuserevent from "@testing-library/user-event";
8
11
 
9
12
  /*
@@ -23,21 +26,29 @@ import $gmkhN$testinglibraryuserevent from "@testing-library/user-event";
23
26
 
24
27
 
25
28
 
29
+
30
+
31
+
26
32
  let $0d71b4e9cc4df40a$var$keyToUtil = {
27
33
  'Select': (0, $4350df3e19e40e36$export$d1859707465446a9),
28
34
  'Table': (0, $6d1e4cf220920c37$export$4c6a9d6ae3b0086),
29
35
  'Menu': (0, $74b93f0617179929$export$f73bbc9212ed861e),
30
36
  'ComboBox': (0, $dab75f394483aa9c$export$f97e14e96d71ab3b),
31
- 'GridList': (0, $5ca9e9228f508f75$export$93a85aaed9fabd83)
37
+ 'GridList': (0, $5ca9e9228f508f75$export$93a85aaed9fabd83),
38
+ 'ListBox': (0, $bbf72b714b632b99$export$54c24f7ee8577f4f),
39
+ 'Tabs': (0, $e615c34a00448a49$export$f1539bff3fc7d485),
40
+ 'Tree': (0, $962758aa2f16f1a4$export$4445864b14128396)
32
41
  };
33
42
  let $0d71b4e9cc4df40a$var$defaultAdvanceTimer = async (waitTime)=>await new Promise((resolve)=>setTimeout(resolve, waitTime));
34
43
  class $0d71b4e9cc4df40a$export$1f44aaf2ec115b54 {
35
- createTester(patternName, opts) {
44
+ /**
45
+ * Creates an aria pattern tester, inheriting the options provided to the original user.
46
+ */ createTester(patternName, opts) {
36
47
  return new $0d71b4e9cc4df40a$var$keyToUtil[patternName]({
37
- ...opts,
38
- user: this.user,
39
48
  interactionType: this.interactionType,
40
- advanceTimer: this.advanceTimer
49
+ advanceTimer: this.advanceTimer,
50
+ ...opts,
51
+ user: this.user
41
52
  });
42
53
  }
43
54
  constructor(opts = {}){
@@ -1 +1 @@
1
- {"mappings":";;;;;;;;AAAA;;;;;;;;;;CAUC;;;;;;;AAyBD,IAAI,kCAAY;IAAC,UAAU,CAAA,GAAA,yCAAW;IAAG,SAAS,CAAA,GAAA,wCAAU;IAAG,QAAQ,CAAA,GAAA,yCAAS;IAAG,YAAY,CAAA,GAAA,yCAAa;IAAG,YAAY,CAAA,GAAA,yCAAa;AAAC;AAoBzI,IAAI,4CAAsB,OAAO,WAAiC,MAAM,IAAI,QAAQ,CAAC,UAAY,WAAW,SAAS;AAE9G,MAAM;IAYX,aAAqC,WAAc,EAAE,IAA2B,EAAiB;QAC/F,OAAO,IAAI,AAAC,+BAAU,CAAC,YAAY,CAAC;YAAC,GAAG,IAAI;YAAE,MAAM,IAAI,CAAC,IAAI;YAAE,iBAAiB,IAAI,CAAC,eAAe;YAAE,cAAc,IAAI,CAAC,YAAY;QAAA;IACvI;IATA,YAAY,OAAiB,CAAC,CAAC,CAAE;QAC/B,IAAI,mBAAC,eAAe,gBAAE,YAAY,EAAC,GAAG;QACtC,IAAI,CAAC,IAAI,GAAG,CAAA,GAAA,8BAAQ,EAAE,KAAK,CAAC;YAAC,OAAO;wBAAM;QAAU;QACpD,IAAI,CAAC,eAAe,GAAG;QACvB,IAAI,CAAC,YAAY,GAAG,gBAAgB;IACtC;AAKF","sources":["packages/@react-aria/test-utils/src/user.ts"],"sourcesContent":["/*\n * Copyright 2024 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {ComboBoxOptions, ComboBoxTester} from './combobox';\nimport {GridListOptions, GridListTester} from './gridlist';\nimport {MenuOptions, MenuTester} from './menu';\nimport {pointerMap} from './';\nimport {SelectOptions, SelectTester} from './select';\nimport {TableOptions, TableTester} from './table';\nimport userEvent from '@testing-library/user-event';\n\n// https://github.com/testing-library/dom-testing-library/issues/939#issuecomment-830771708 is an interesting way of allowing users to configure the timers\n// curent way is like https://testing-library.com/docs/user-event/options/#advancetimers,\nexport interface UserOpts {\n interactionType?: 'mouse' | 'touch' | 'keyboard',\n // If using fake timers user should provide something like (time) => jest.advanceTimersByTime(time))}\n // A real timer user would pass async () => await new Promise((resolve) => setTimeout(resolve, waitTime))\n // Time is in ms.\n advanceTimer?: (time?: number) => void | Promise<unknown>\n}\n\nexport interface BaseTesterOpts {\n // The base element for the given tester (e.g. the table, menu trigger, etc)\n root: HTMLElement\n}\n\nlet keyToUtil = {'Select': SelectTester, 'Table': TableTester, 'Menu': MenuTester, 'ComboBox': ComboBoxTester, 'GridList': GridListTester} as const;\nexport type PatternNames = keyof typeof keyToUtil;\n\n// Conditional type: https://www.typescriptlang.org/docs/handbook/2/conditional-types.html\ntype ObjectType<T> =\n T extends 'Select' ? SelectTester :\n T extends 'Table' ? TableTester :\n T extends 'Menu' ? MenuTester :\n T extends 'ComboBox' ? ComboBoxTester :\n T extends 'GridList' ? GridListTester :\n never;\n\ntype ObjectOptionsTypes<T> =\n T extends 'Select' ? SelectOptions :\n T extends 'Table' ? TableOptions :\n T extends 'Menu' ? MenuOptions :\n T extends 'ComboBox' ? ComboBoxOptions :\n T extends 'GridList' ? GridListOptions :\n never;\n\nlet defaultAdvanceTimer = async (waitTime: number | undefined) => await new Promise((resolve) => setTimeout(resolve, waitTime));\n\nexport class User {\n user;\n interactionType: UserOpts['interactionType'];\n advanceTimer: UserOpts['advanceTimer'];\n\n constructor(opts: UserOpts = {}) {\n let {interactionType, advanceTimer} = opts;\n this.user = userEvent.setup({delay: null, pointerMap});\n this.interactionType = interactionType;\n this.advanceTimer = advanceTimer || defaultAdvanceTimer;\n }\n\n createTester<T extends PatternNames>(patternName: T, opts: ObjectOptionsTypes<T>): ObjectType<T> {\n return new (keyToUtil)[patternName]({...opts, user: this.user, interactionType: this.interactionType, advanceTimer: this.advanceTimer}) as ObjectType<T>;\n }\n}\n"],"names":[],"version":3,"file":"user.module.js.map"}
1
+ {"mappings":";;;;;;;;;;;AAAA;;;;;;;;;;CAUC;;;;;;;;;;AAwBD,IAAI,kCAAY;IACd,UAAU,CAAA,GAAA,yCAAW;IACrB,SAAS,CAAA,GAAA,wCAAU;IACnB,QAAQ,CAAA,GAAA,yCAAS;IACjB,YAAY,CAAA,GAAA,yCAAa;IACzB,YAAY,CAAA,GAAA,yCAAa;IACzB,WAAW,CAAA,GAAA,yCAAY;IACvB,QAAQ,CAAA,GAAA,yCAAS;IACjB,QAAQ,CAAA,GAAA,yCAAS;AACnB;AA0BA,IAAI,4CAAsB,OAAO,WAAiC,MAAM,IAAI,QAAQ,CAAC,UAAY,WAAW,SAAS;AAE9G,MAAM;IAoBX;;GAEC,GACD,aAAqC,WAAc,EAAE,IAAmB,EAAa;QACnF,OAAO,IAAI,AAAC,+BAAU,CAAC,YAAY,CAAC;YAAC,iBAAiB,IAAI,CAAC,eAAe;YAAE,cAAc,IAAI,CAAC,YAAY;YAAE,GAAG,IAAI;YAAE,MAAM,IAAI,CAAC,IAAI;QAAA;IACvI;IAZA,YAAY,OAAiB,CAAC,CAAC,CAAE;QAC/B,IAAI,mBAAC,eAAe,gBAAE,YAAY,EAAC,GAAG;QACtC,IAAI,CAAC,IAAI,GAAG,CAAA,GAAA,8BAAQ,EAAE,KAAK,CAAC;YAAC,OAAO;wBAAM;QAAU;QACpD,IAAI,CAAC,eAAe,GAAG;QACvB,IAAI,CAAC,YAAY,GAAG,gBAAgB;IACtC;AAQF","sources":["packages/@react-aria/test-utils/src/user.ts"],"sourcesContent":["/*\n * Copyright 2024 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {ComboBoxTester} from './combobox';\nimport {\n ComboBoxTesterOpts,\n GridListTesterOpts,\n ListBoxTesterOpts,\n MenuTesterOpts,\n SelectTesterOpts,\n TableTesterOpts,\n TabsTesterOpts,\n TreeTesterOpts,\n UserOpts\n} from './types';\nimport {GridListTester} from './gridlist';\nimport {ListBoxTester} from './listbox';\nimport {MenuTester} from './menu';\nimport {pointerMap} from './';\nimport {SelectTester} from './select';\nimport {TableTester} from './table';\nimport {TabsTester} from './tabs';\nimport {TreeTester} from './tree';\nimport userEvent from '@testing-library/user-event';\n\nlet keyToUtil = {\n 'Select': SelectTester,\n 'Table': TableTester,\n 'Menu': MenuTester,\n 'ComboBox': ComboBoxTester,\n 'GridList': GridListTester,\n 'ListBox': ListBoxTester,\n 'Tabs': TabsTester,\n 'Tree': TreeTester\n} as const;\nexport type PatternNames = keyof typeof keyToUtil;\n\n// Conditional type: https://www.typescriptlang.org/docs/handbook/2/conditional-types.html\ntype Tester<T> =\n T extends 'ComboBox' ? ComboBoxTester :\n T extends 'GridList' ? GridListTester :\n T extends 'ListBox' ? ListBoxTester :\n T extends 'Menu' ? MenuTester :\n T extends 'Select' ? SelectTester :\n T extends 'Table' ? TableTester :\n T extends 'Tabs' ? TabsTester :\n T extends 'Tree' ? TreeTester :\n never;\n\ntype TesterOpts<T> =\n T extends 'ComboBox' ? ComboBoxTesterOpts :\n T extends 'GridList' ? GridListTesterOpts :\n T extends 'ListBox' ? ListBoxTesterOpts :\n T extends 'Menu' ? MenuTesterOpts :\n T extends 'Select' ? SelectTesterOpts :\n T extends 'Table' ? TableTesterOpts :\n T extends 'Tabs' ? TabsTesterOpts :\n T extends 'Tree' ? TreeTesterOpts :\n never;\n\nlet defaultAdvanceTimer = async (waitTime: number | undefined) => await new Promise((resolve) => setTimeout(resolve, waitTime));\n\nexport class User {\n private user;\n /**\n * The interaction type (mouse, touch, keyboard) that the test util user will use when interacting with a component. This can be overridden\n * at the aria pattern util level if needed.\n * @default mouse\n */\n interactionType: UserOpts['interactionType'];\n /**\n * A function used by the test utils to advance timers during interactions. Required for certain aria patterns (e.g. table).\n */\n advanceTimer: UserOpts['advanceTimer'];\n\n constructor(opts: UserOpts = {}) {\n let {interactionType, advanceTimer} = opts;\n this.user = userEvent.setup({delay: null, pointerMap});\n this.interactionType = interactionType;\n this.advanceTimer = advanceTimer || defaultAdvanceTimer;\n }\n\n /**\n * Creates an aria pattern tester, inheriting the options provided to the original user.\n */\n createTester<T extends PatternNames>(patternName: T, opts: TesterOpts<T>): Tester<T> {\n return new (keyToUtil)[patternName]({interactionType: this.interactionType, advanceTimer: this.advanceTimer, ...opts, user: this.user}) as Tester<T>;\n }\n}\n"],"names":[],"version":3,"file":"user.module.js.map"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@react-aria/test-utils",
3
- "version": "1.0.0-alpha.2",
3
+ "version": "1.0.0-alpha.4",
4
4
  "description": "Testing utils for react-aria patterns",
5
5
  "license": "Apache-2.0",
6
6
  "main": "dist/main.js",
@@ -27,10 +27,10 @@
27
27
  "peerDependencies": {
28
28
  "@testing-library/react": "^15.0.7",
29
29
  "@testing-library/user-event": "^13.0.0 || ^14.0.0",
30
- "jest": "^29.5.0",
31
- "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0"
30
+ "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
32
31
  },
33
32
  "publishConfig": {
34
33
  "access": "public"
35
- }
36
- }
34
+ },
35
+ "gitHead": "09e7f44bebdc9d89122926b2b439a0a38a2814ea"
36
+ }
package/src/combobox.ts CHANGED
@@ -11,20 +11,34 @@
11
11
  */
12
12
 
13
13
  import {act, waitFor, within} from '@testing-library/react';
14
- import {BaseTesterOpts, UserOpts} from './user';
14
+ import {ComboBoxTesterOpts, UserOpts} from './types';
15
15
 
16
- export interface ComboBoxOptions extends UserOpts, BaseTesterOpts {
17
- user: any,
18
- trigger?: HTMLElement
16
+ interface ComboBoxOpenOpts {
17
+ /**
18
+ * Whether the combobox opens on focus or needs to be manually opened via user action.
19
+ * @default 'manual'
20
+ */
21
+ triggerBehavior?: 'focus' | 'manual',
22
+ /**
23
+ * What interaction type to use when opening the combobox. Defaults to the interaction type set on the tester.
24
+ */
25
+ interactionType?: UserOpts['interactionType']
26
+ }
27
+
28
+ interface ComboBoxSelectOpts extends ComboBoxOpenOpts {
29
+ /**
30
+ * The index, text, or node of the option to select. Option nodes can be sourced via `options()`.
31
+ */
32
+ option: number | string | HTMLElement
19
33
  }
20
34
 
21
35
  export class ComboBoxTester {
22
36
  private user;
23
37
  private _interactionType: UserOpts['interactionType'];
24
38
  private _combobox: HTMLElement;
25
- private _trigger: HTMLElement | undefined;
39
+ private _trigger: HTMLElement;
26
40
 
27
- constructor(opts: ComboBoxOptions) {
41
+ constructor(opts: ComboBoxTesterOpts) {
28
42
  let {root, trigger, user, interactionType} = opts;
29
43
  this.user = user;
30
44
  this._interactionType = interactionType || 'mouse';
@@ -52,11 +66,17 @@ export class ComboBoxTester {
52
66
  }
53
67
  }
54
68
 
55
- setInteractionType = (type: UserOpts['interactionType']) => {
69
+ /**
70
+ * Set the interaction type used by the combobox tester.
71
+ */
72
+ setInteractionType(type: UserOpts['interactionType']) {
56
73
  this._interactionType = type;
57
- };
74
+ }
58
75
 
59
- open = async (opts: {triggerBehavior?: 'focus' | 'manual', interactionType?: UserOpts['interactionType']} = {}) => {
76
+ /**
77
+ * Opens the combobox dropdown. Defaults to using the interaction type set on the combobox tester.
78
+ */
79
+ async open(opts: ComboBoxOpenOpts = {}) {
60
80
  let {triggerBehavior = 'manual', interactionType = this._interactionType} = opts;
61
81
  let trigger = this.trigger;
62
82
  let combobox = this.combobox;
@@ -96,18 +116,51 @@ export class ComboBoxTester {
96
116
  return true;
97
117
  }
98
118
  });
99
- };
119
+ }
120
+
121
+ /**
122
+ * Returns an option matching the specified index or text content.
123
+ */
124
+ findOption(opts: {optionIndexOrText: number | string}): HTMLElement {
125
+ let {
126
+ optionIndexOrText
127
+ } = opts;
128
+
129
+ let option;
130
+ let options = this.options();
131
+ let listbox = this.listbox;
100
132
 
101
- selectOption = async (opts: {option?: HTMLElement, optionText?: string, triggerBehavior?: 'focus' | 'manual', interactionType?: UserOpts['interactionType']} = {}) => {
102
- let {optionText, option, triggerBehavior, interactionType = this._interactionType} = opts;
133
+ if (typeof optionIndexOrText === 'number') {
134
+ option = options[optionIndexOrText];
135
+ } else if (typeof optionIndexOrText === 'string' && listbox != null) {
136
+ option = (within(listbox!).getByText(optionIndexOrText).closest('[role=option]'))! as HTMLElement;
137
+ }
138
+
139
+ return option;
140
+ }
141
+
142
+ /**
143
+ * Selects the desired combobox option. Defaults to using the interaction type set on the combobox tester. If necessary, will open the combobox dropdown beforehand.
144
+ * The desired option can be targeted via the option's node, the option's text, or the option's index.
145
+ */
146
+ async selectOption(opts: ComboBoxSelectOpts) {
147
+ let {option, triggerBehavior, interactionType = this._interactionType} = opts;
103
148
  if (!this.combobox.getAttribute('aria-controls')) {
104
149
  await this.open({triggerBehavior});
105
150
  }
106
151
 
107
152
  let listbox = this.listbox;
153
+ if (!listbox) {
154
+ throw new Error('Combobox\'s listbox not found.');
155
+ }
156
+
108
157
  if (listbox) {
109
- if (!option && optionText) {
110
- option = within(listbox).getByText(optionText);
158
+ if (typeof option === 'string' || typeof option === 'number') {
159
+ option = this.findOption({optionIndexOrText: option});
160
+ }
161
+
162
+ if (!option) {
163
+ throw new Error('Target option not found in the listbox.');
111
164
  }
112
165
 
113
166
  // TODO: keyboard method of selecting the the option is a bit tricky unless I simply simulate the user pressing the down arrow
@@ -118,7 +171,7 @@ export class ComboBoxTester {
118
171
  await this.user.pointer({target: option, keys: '[TouchA]'});
119
172
  }
120
173
 
121
- if (option && option.getAttribute('href') == null) {
174
+ if (option.getAttribute('href') == null) {
122
175
  await waitFor(() => {
123
176
  if (document.contains(listbox)) {
124
177
  throw new Error('Expected listbox element to not be in the document after selecting an option');
@@ -130,9 +183,12 @@ export class ComboBoxTester {
130
183
  } else {
131
184
  throw new Error("Attempted to select a option in the combobox, but the listbox wasn't found.");
132
185
  }
133
- };
186
+ }
134
187
 
135
- close = async () => {
188
+ /**
189
+ * Closes the combobox dropdown.
190
+ */
191
+ async close() {
136
192
  let listbox = this.listbox;
137
193
  if (listbox) {
138
194
  act(() => this.combobox.focus());
@@ -146,43 +202,56 @@ export class ComboBoxTester {
146
202
  }
147
203
  });
148
204
  }
149
- };
205
+ }
150
206
 
151
- get combobox() {
207
+ /**
208
+ * Returns the combobox.
209
+ */
210
+ get combobox(): HTMLElement {
152
211
  return this._combobox;
153
212
  }
154
213
 
155
- get trigger() {
214
+ /**
215
+ * Returns the combobox trigger button.
216
+ */
217
+ get trigger(): HTMLElement {
156
218
  return this._trigger;
157
219
  }
158
220
 
159
- get listbox() {
221
+ /**
222
+ * Returns the combobox's listbox if present.
223
+ */
224
+ get listbox(): HTMLElement | null {
160
225
  let listBoxId = this.combobox.getAttribute('aria-controls');
161
- return listBoxId ? document.getElementById(listBoxId) || undefined : undefined;
226
+ return listBoxId ? document.getElementById(listBoxId) || null : null;
227
+ }
228
+
229
+ /**
230
+ * Returns the combobox's sections if present.
231
+ */
232
+ get sections(): HTMLElement[] {
233
+ let listbox = this.listbox;
234
+ return listbox ? within(listbox).queryAllByRole('group') : [];
162
235
  }
163
236
 
164
- options = (opts: {element?: HTMLElement} = {}): HTMLElement[] | never[] => {
165
- let {element} = opts;
166
- element = element || this.listbox;
237
+ /**
238
+ * Returns the combobox's options if present. Can be filtered to a subsection of the listbox if provided via `element`.
239
+ */
240
+ options(opts: {element?: HTMLElement} = {}): HTMLElement[] {
241
+ let {element = this.listbox} = opts;
167
242
  let options = [];
168
243
  if (element) {
169
244
  options = within(element).queryAllByRole('option');
170
245
  }
171
246
 
172
247
  return options;
173
- };
174
-
175
- get sections() {
176
- let listbox = this.listbox;
177
- if (listbox) {
178
- return within(listbox).queryAllByRole('group');
179
- } else {
180
- return [];
181
- }
182
248
  }
183
249
 
184
- get focusedOption() {
250
+ /**
251
+ * Returns the currently focused option in the combobox's dropdown if any.
252
+ */
253
+ get focusedOption(): HTMLElement | null {
185
254
  let focusedOptionId = this.combobox.getAttribute('aria-activedescendant');
186
- return focusedOptionId ? document.getElementById(focusedOptionId) : undefined;
255
+ return focusedOptionId ? document.getElementById(focusedOptionId) : null;
187
256
  }
188
257
  }
package/src/events.ts CHANGED
@@ -11,7 +11,7 @@
11
11
  */
12
12
 
13
13
  import {act, fireEvent} from '@testing-library/react';
14
- import {UserOpts} from './user';
14
+ import {UserOpts} from './types';
15
15
 
16
16
  export const DEFAULT_LONG_PRESS_TIME = 500;
17
17