@testing-library/react-native 12.7.0 → 12.7.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/cleanup.d.ts +1 -2
- package/build/cleanup.js +1 -1
- package/build/cleanup.js.map +1 -1
- package/build/config.d.ts +3 -2
- package/build/config.js.map +1 -1
- package/build/fire-event.js +31 -0
- package/build/fire-event.js.map +1 -1
- package/build/helpers/accessibility.d.ts +23 -14
- package/build/helpers/accessibility.js +104 -78
- package/build/helpers/accessibility.js.map +1 -1
- package/build/helpers/format-default.js +1 -1
- package/build/helpers/format-default.js.map +1 -1
- package/build/helpers/host-component-names.d.ts +14 -4
- package/build/helpers/host-component-names.js +25 -4
- package/build/helpers/host-component-names.js.map +1 -1
- package/build/helpers/matchers/match-accessibility-state.js +16 -18
- package/build/helpers/matchers/match-accessibility-state.js.map +1 -1
- package/build/helpers/matchers/match-accessibility-value.js +1 -1
- package/build/helpers/matchers/match-accessibility-value.js.map +1 -1
- package/build/helpers/matchers/match-label-text.js +3 -3
- package/build/helpers/matchers/match-label-text.js.map +1 -1
- package/build/helpers/text-input.js +2 -1
- package/build/helpers/text-input.js.map +1 -1
- package/build/matchers/extend-expect.js +1 -2
- package/build/matchers/extend-expect.js.map +1 -1
- package/build/matchers/index.d.ts +1 -2
- package/build/matchers/index.js +1 -2
- package/build/matchers/index.js.map +1 -1
- package/build/matchers/to-be-busy.d.ts +1 -2
- package/build/matchers/to-be-busy.js +1 -1
- package/build/matchers/to-be-busy.js.map +1 -1
- package/build/matchers/to-be-checked.d.ts +0 -1
- package/build/matchers/to-be-checked.js +7 -6
- package/build/matchers/to-be-checked.js.map +1 -1
- package/build/matchers/to-be-disabled.d.ts +1 -2
- package/build/matchers/to-be-disabled.js +4 -15
- package/build/matchers/to-be-disabled.js.map +1 -1
- package/build/matchers/to-be-empty-element.d.ts +0 -1
- package/build/matchers/to-be-expanded.d.ts +5 -2
- package/build/matchers/to-be-expanded.js +12 -1
- package/build/matchers/to-be-expanded.js.map +1 -1
- package/build/matchers/to-be-on-the-screen.d.ts +0 -1
- package/build/matchers/to-be-partially-checked.d.ts +0 -1
- package/build/matchers/to-be-partially-checked.js +2 -2
- package/build/matchers/to-be-partially-checked.js.map +1 -1
- package/build/matchers/to-be-selected.d.ts +1 -2
- package/build/matchers/to-be-selected.js +1 -1
- package/build/matchers/to-be-selected.js.map +1 -1
- package/build/matchers/to-be-visible.d.ts +0 -1
- package/build/matchers/to-be-visible.js +2 -6
- package/build/matchers/to-be-visible.js.map +1 -1
- package/build/matchers/to-contain-element.d.ts +0 -1
- package/build/matchers/to-have-accessibility-value.d.ts +0 -1
- package/build/matchers/to-have-accessibility-value.js +1 -1
- package/build/matchers/to-have-accessibility-value.js.map +1 -1
- package/build/matchers/to-have-accessible-name.d.ts +0 -1
- package/build/matchers/to-have-accessible-name.js +1 -1
- package/build/matchers/to-have-accessible-name.js.map +1 -1
- package/build/matchers/to-have-display-value.d.ts +0 -1
- package/build/matchers/to-have-prop.d.ts +0 -1
- package/build/matchers/to-have-prop.js +1 -1
- package/build/matchers/to-have-prop.js.map +1 -1
- package/build/matchers/to-have-style.d.ts +0 -1
- package/build/matchers/to-have-text-content.d.ts +0 -1
- package/build/matchers/types.d.ts +1 -1
- package/build/matchers/types.js.map +1 -1
- package/build/matchers/utils.d.ts +0 -1
- package/build/matchers/utils.js +1 -1
- package/build/matchers/utils.js.map +1 -1
- package/build/native-state.d.ts +12 -0
- package/build/native-state.js +17 -0
- package/build/native-state.js.map +1 -0
- package/build/queries/hint-text.js +2 -2
- package/build/queries/hint-text.js.map +1 -1
- package/build/queries/role.js +4 -3
- package/build/queries/role.js.map +1 -1
- package/build/queries/unsafe-props.js +1 -1
- package/build/queries/unsafe-props.js.map +1 -1
- package/build/queries/unsafe-type.js +1 -1
- package/build/queries/unsafe-type.js.map +1 -1
- package/build/render-act.d.ts +0 -1
- package/build/render.d.ts +16 -16
- package/build/render.js.map +1 -1
- package/build/test-utils/events.d.ts +2 -1
- package/build/test-utils/events.js +6 -2
- package/build/test-utils/events.js.map +1 -1
- package/build/types.d.ts +14 -0
- package/build/types.js.map +1 -1
- package/build/user-event/clear.js +10 -6
- package/build/user-event/clear.js.map +1 -1
- package/build/user-event/event-builder/index.d.ts +2 -27
- package/build/user-event/event-builder/scroll-view.d.ts +4 -16
- package/build/user-event/event-builder/scroll-view.js +0 -4
- package/build/user-event/event-builder/scroll-view.js.map +1 -1
- package/build/user-event/event-builder/text-input.d.ts +2 -32
- package/build/user-event/event-builder/text-input.js +0 -19
- package/build/user-event/event-builder/text-input.js.map +1 -1
- package/build/user-event/index.d.ts +1 -0
- package/build/user-event/index.js +1 -0
- package/build/user-event/index.js.map +1 -1
- package/build/user-event/paste.d.ts +3 -0
- package/build/user-event/paste.js +56 -0
- package/build/user-event/paste.js.map +1 -0
- package/build/user-event/press/press.js +0 -1
- package/build/user-event/press/press.js.map +1 -1
- package/build/user-event/scroll/scroll-to.d.ts +3 -8
- package/build/user-event/scroll/scroll-to.js +9 -6
- package/build/user-event/scroll/scroll-to.js.map +1 -1
- package/build/user-event/scroll/utils.d.ts +2 -2
- package/build/user-event/scroll/utils.js.map +1 -1
- package/build/user-event/setup/setup.d.ts +13 -1
- package/build/user-event/setup/setup.js +2 -0
- package/build/user-event/setup/setup.js.map +1 -1
- package/build/user-event/type/type.d.ts +8 -1
- package/build/user-event/type/type.js +34 -15
- package/build/user-event/type/type.js.map +1 -1
- package/build/user-event/utils/content-size.d.ts +2 -5
- package/build/user-event/utils/content-size.js +0 -1
- package/build/user-event/utils/content-size.js.map +1 -1
- package/build/user-event/utils/index.d.ts +0 -1
- package/build/user-event/utils/index.js +0 -11
- package/build/user-event/utils/index.js.map +1 -1
- package/build/wait-for-element-to-be-removed.js +1 -1
- package/build/wait-for-element-to-be-removed.js.map +1 -1
- package/build/within.d.ts +5 -6
- package/package.json +2 -3
- package/build/matchers/to-be-collapsed.d.ts +0 -6
- package/build/matchers/to-be-collapsed.js +0 -20
- package/build/matchers/to-be-collapsed.js.map +0 -1
- package/build/user-event/scroll/state.d.ts +0 -4
- package/build/user-event/scroll/state.js +0 -18
- package/build/user-event/scroll/state.js.map +0 -1
- package/build/user-event/utils/warn-about-real-timers.d.ts +0 -1
- package/build/user-event/utils/warn-about-real-timers.js +0 -23
- package/build/user-event/utils/warn-about-real-timers.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unsafe-type.js","names":["_errors","require","UNSAFE_getByType","instance","getByTypeFn","type","findByType","error","ErrorWithStack","prepareErrorMessage","UNSAFE_getAllByType","getAllByTypeFn","results","findAllByType","length","UNSAFE_queryByType","queryByTypeFn","createQueryByError","UNSAFE_queryAllByType","bindUnsafeByTypeQueries","exports"],"sources":["../../src/queries/unsafe-type.ts"],"sourcesContent":["import type { ReactTestInstance } from 'react-test-renderer';\nimport * as React from 'react';\nimport { ErrorWithStack, prepareErrorMessage } from '../helpers/errors';\nimport { createQueryByError } from '../helpers/errors';\n\nconst UNSAFE_getByType = (\n instance: ReactTestInstance,\n): ((type: React.ComponentType<any>) => ReactTestInstance) =>\n function getByTypeFn(type: React.ComponentType<any>) {\n try {\n return instance.findByType(type);\n } catch (error) {\n throw new ErrorWithStack(prepareErrorMessage(error), getByTypeFn);\n }\n };\n\nconst UNSAFE_getAllByType = (\n instance: ReactTestInstance,\n): ((type: React.ComponentType<any>) => Array<ReactTestInstance>) =>\n function getAllByTypeFn(type: React.ComponentType<any>) {\n const results = instance.findAllByType(type);\n if (results.length === 0) {\n throw new ErrorWithStack('No instances found', getAllByTypeFn);\n }\n return results;\n };\n\nconst UNSAFE_queryByType = (\n instance: ReactTestInstance,\n): ((type: React.ComponentType<any>) => ReactTestInstance | null) =>\n function queryByTypeFn(type: React.ComponentType<any>) {\n try {\n return UNSAFE_getByType(instance)(type);\n } catch (error) {\n return createQueryByError(error, queryByTypeFn);\n }\n };\n\nconst UNSAFE_queryAllByType =\n (instance: ReactTestInstance): ((type: React.ComponentType<any>) => Array<ReactTestInstance>) =>\n (type: React.ComponentType<any>) => {\n try {\n return UNSAFE_getAllByType(instance)(type);\n } catch
|
|
1
|
+
{"version":3,"file":"unsafe-type.js","names":["_errors","require","UNSAFE_getByType","instance","getByTypeFn","type","findByType","error","ErrorWithStack","prepareErrorMessage","UNSAFE_getAllByType","getAllByTypeFn","results","findAllByType","length","UNSAFE_queryByType","queryByTypeFn","createQueryByError","UNSAFE_queryAllByType","bindUnsafeByTypeQueries","exports"],"sources":["../../src/queries/unsafe-type.ts"],"sourcesContent":["import type { ReactTestInstance } from 'react-test-renderer';\nimport * as React from 'react';\nimport { ErrorWithStack, prepareErrorMessage } from '../helpers/errors';\nimport { createQueryByError } from '../helpers/errors';\n\nconst UNSAFE_getByType = (\n instance: ReactTestInstance,\n): ((type: React.ComponentType<any>) => ReactTestInstance) =>\n function getByTypeFn(type: React.ComponentType<any>) {\n try {\n return instance.findByType(type);\n } catch (error) {\n throw new ErrorWithStack(prepareErrorMessage(error), getByTypeFn);\n }\n };\n\nconst UNSAFE_getAllByType = (\n instance: ReactTestInstance,\n): ((type: React.ComponentType<any>) => Array<ReactTestInstance>) =>\n function getAllByTypeFn(type: React.ComponentType<any>) {\n const results = instance.findAllByType(type);\n if (results.length === 0) {\n throw new ErrorWithStack('No instances found', getAllByTypeFn);\n }\n return results;\n };\n\nconst UNSAFE_queryByType = (\n instance: ReactTestInstance,\n): ((type: React.ComponentType<any>) => ReactTestInstance | null) =>\n function queryByTypeFn(type: React.ComponentType<any>) {\n try {\n return UNSAFE_getByType(instance)(type);\n } catch (error) {\n return createQueryByError(error, queryByTypeFn);\n }\n };\n\nconst UNSAFE_queryAllByType =\n (instance: ReactTestInstance): ((type: React.ComponentType<any>) => Array<ReactTestInstance>) =>\n (type: React.ComponentType<any>) => {\n try {\n return UNSAFE_getAllByType(instance)(type);\n } catch {\n return [];\n }\n };\n\n// Unsafe aliases\nexport type UnsafeByTypeQueries = {\n UNSAFE_getByType: <P>(type: React.ComponentType<P>) => ReactTestInstance;\n UNSAFE_getAllByType: <P>(type: React.ComponentType<P>) => Array<ReactTestInstance>;\n UNSAFE_queryByType: <P>(type: React.ComponentType<P>) => ReactTestInstance | null;\n UNSAFE_queryAllByType: <P>(type: React.ComponentType<P>) => Array<ReactTestInstance>;\n};\n\n// TODO: migrate to makeQueries pattern\nexport const bindUnsafeByTypeQueries = (instance: ReactTestInstance): UnsafeByTypeQueries => ({\n UNSAFE_getByType: UNSAFE_getByType(instance),\n UNSAFE_getAllByType: UNSAFE_getAllByType(instance),\n UNSAFE_queryByType: UNSAFE_queryByType(instance),\n UNSAFE_queryAllByType: UNSAFE_queryAllByType(instance),\n});\n"],"mappings":";;;;;;AAEA,IAAAA,OAAA,GAAAC,OAAA;AAGA,MAAMC,gBAAgB,GACpBC,QAA2B,IAE3B,SAASC,WAAWA,CAACC,IAA8B,EAAE;EACnD,IAAI;IACF,OAAOF,QAAQ,CAACG,UAAU,CAACD,IAAI,CAAC;EAClC,CAAC,CAAC,OAAOE,KAAK,EAAE;IACd,MAAM,IAAIC,sBAAc,CAAC,IAAAC,2BAAmB,EAACF,KAAK,CAAC,EAAEH,WAAW,CAAC;EACnE;AACF,CAAC;AAEH,MAAMM,mBAAmB,GACvBP,QAA2B,IAE3B,SAASQ,cAAcA,CAACN,IAA8B,EAAE;EACtD,MAAMO,OAAO,GAAGT,QAAQ,CAACU,aAAa,CAACR,IAAI,CAAC;EAC5C,IAAIO,OAAO,CAACE,MAAM,KAAK,CAAC,EAAE;IACxB,MAAM,IAAIN,sBAAc,CAAC,oBAAoB,EAAEG,cAAc,CAAC;EAChE;EACA,OAAOC,OAAO;AAChB,CAAC;AAEH,MAAMG,kBAAkB,GACtBZ,QAA2B,IAE3B,SAASa,aAAaA,CAACX,IAA8B,EAAE;EACrD,IAAI;IACF,OAAOH,gBAAgB,CAACC,QAAQ,CAAC,CAACE,IAAI,CAAC;EACzC,CAAC,CAAC,OAAOE,KAAK,EAAE;IACd,OAAO,IAAAU,0BAAkB,EAACV,KAAK,EAAES,aAAa,CAAC;EACjD;AACF,CAAC;AAEH,MAAME,qBAAqB,GACxBf,QAA2B,IAC3BE,IAA8B,IAAK;EAClC,IAAI;IACF,OAAOK,mBAAmB,CAACP,QAAQ,CAAC,CAACE,IAAI,CAAC;EAC5C,CAAC,CAAC,MAAM;IACN,OAAO,EAAE;EACX;AACF,CAAC;;AAEH;;AAQA;AACO,MAAMc,uBAAuB,GAAIhB,QAA2B,KAA2B;EAC5FD,gBAAgB,EAAEA,gBAAgB,CAACC,QAAQ,CAAC;EAC5CO,mBAAmB,EAAEA,mBAAmB,CAACP,QAAQ,CAAC;EAClDY,kBAAkB,EAAEA,kBAAkB,CAACZ,QAAQ,CAAC;EAChDe,qBAAqB,EAAEA,qBAAqB,CAACf,QAAQ;AACvD,CAAC,CAAC;AAACiB,OAAA,CAAAD,uBAAA,GAAAA,uBAAA","ignoreList":[]}
|
package/build/render-act.d.ts
CHANGED
package/build/render.d.ts
CHANGED
|
@@ -12,10 +12,10 @@ export type RenderResult = ReturnType<typeof render>;
|
|
|
12
12
|
* to assert on the output.
|
|
13
13
|
*/
|
|
14
14
|
export default function render<T>(component: React.ReactElement<T>, options?: RenderOptions): {
|
|
15
|
-
update: (component: React.ReactElement
|
|
15
|
+
update: (component: React.ReactElement) => void;
|
|
16
16
|
unmount: () => void;
|
|
17
|
-
rerender: (component: React.ReactElement
|
|
18
|
-
toJSON: () => import("react-test-renderer").ReactTestRendererJSON | import("react-test-renderer").ReactTestRendererJSON[]
|
|
17
|
+
rerender: (component: React.ReactElement) => void;
|
|
18
|
+
toJSON: () => null | import("react-test-renderer").ReactTestRendererJSON | import("react-test-renderer").ReactTestRendererJSON[];
|
|
19
19
|
debug: DebugFunction;
|
|
20
20
|
root: ReactTestInstance;
|
|
21
21
|
UNSAFE_root: ReactTestInstance;
|
|
@@ -24,17 +24,17 @@ export default function render<T>(component: React.ReactElement<T>, options?: Re
|
|
|
24
24
|
}) => ReactTestInstance;
|
|
25
25
|
UNSAFE_getAllByProps: (props: {
|
|
26
26
|
[key: string]: any;
|
|
27
|
-
}) => ReactTestInstance
|
|
27
|
+
}) => Array<ReactTestInstance>;
|
|
28
28
|
UNSAFE_queryByProps: (props: {
|
|
29
29
|
[key: string]: any;
|
|
30
30
|
}) => ReactTestInstance | null;
|
|
31
31
|
UNSAFE_queryAllByProps: (props: {
|
|
32
32
|
[key: string]: any;
|
|
33
|
-
}) => ReactTestInstance
|
|
33
|
+
}) => Array<ReactTestInstance>;
|
|
34
34
|
UNSAFE_getByType: <P>(type: React.ComponentType<P>) => ReactTestInstance;
|
|
35
|
-
UNSAFE_getAllByType: <
|
|
36
|
-
UNSAFE_queryByType: <
|
|
37
|
-
UNSAFE_queryAllByType: <
|
|
35
|
+
UNSAFE_getAllByType: <P>(type: React.ComponentType<P>) => Array<ReactTestInstance>;
|
|
36
|
+
UNSAFE_queryByType: <P>(type: React.ComponentType<P>) => ReactTestInstance | null;
|
|
37
|
+
UNSAFE_queryAllByType: <P>(type: React.ComponentType<P>) => Array<ReactTestInstance>;
|
|
38
38
|
getByA11yValue: import("./queries/make-queries").GetByQuery<import("./helpers/matchers/match-accessibility-value").AccessibilityValueMatcher, import("./queries/options").CommonQueryOptions>;
|
|
39
39
|
getAllByA11yValue: import("./queries/make-queries").GetAllByQuery<import("./helpers/matchers/match-accessibility-value").AccessibilityValueMatcher, import("./queries/options").CommonQueryOptions>;
|
|
40
40
|
queryByA11yValue: import("./queries/make-queries").QueryByQuery<import("./helpers/matchers/match-accessibility-value").AccessibilityValueMatcher, import("./queries/options").CommonQueryOptions>;
|
|
@@ -118,10 +118,10 @@ export interface RenderInternalOptions extends RenderOptions {
|
|
|
118
118
|
detectHostComponentNames?: boolean;
|
|
119
119
|
}
|
|
120
120
|
export declare function renderInternal<T>(component: React.ReactElement<T>, options?: RenderInternalOptions): {
|
|
121
|
-
update: (component: React.ReactElement
|
|
121
|
+
update: (component: React.ReactElement) => void;
|
|
122
122
|
unmount: () => void;
|
|
123
|
-
rerender: (component: React.ReactElement
|
|
124
|
-
toJSON: () => import("react-test-renderer").ReactTestRendererJSON | import("react-test-renderer").ReactTestRendererJSON[]
|
|
123
|
+
rerender: (component: React.ReactElement) => void;
|
|
124
|
+
toJSON: () => null | import("react-test-renderer").ReactTestRendererJSON | import("react-test-renderer").ReactTestRendererJSON[];
|
|
125
125
|
debug: DebugFunction;
|
|
126
126
|
root: ReactTestInstance;
|
|
127
127
|
UNSAFE_root: ReactTestInstance;
|
|
@@ -130,17 +130,17 @@ export declare function renderInternal<T>(component: React.ReactElement<T>, opti
|
|
|
130
130
|
}) => ReactTestInstance;
|
|
131
131
|
UNSAFE_getAllByProps: (props: {
|
|
132
132
|
[key: string]: any;
|
|
133
|
-
}) => ReactTestInstance
|
|
133
|
+
}) => Array<ReactTestInstance>;
|
|
134
134
|
UNSAFE_queryByProps: (props: {
|
|
135
135
|
[key: string]: any;
|
|
136
136
|
}) => ReactTestInstance | null;
|
|
137
137
|
UNSAFE_queryAllByProps: (props: {
|
|
138
138
|
[key: string]: any;
|
|
139
|
-
}) => ReactTestInstance
|
|
139
|
+
}) => Array<ReactTestInstance>;
|
|
140
140
|
UNSAFE_getByType: <P>(type: React.ComponentType<P>) => ReactTestInstance;
|
|
141
|
-
UNSAFE_getAllByType: <
|
|
142
|
-
UNSAFE_queryByType: <
|
|
143
|
-
UNSAFE_queryAllByType: <
|
|
141
|
+
UNSAFE_getAllByType: <P>(type: React.ComponentType<P>) => Array<ReactTestInstance>;
|
|
142
|
+
UNSAFE_queryByType: <P>(type: React.ComponentType<P>) => ReactTestInstance | null;
|
|
143
|
+
UNSAFE_queryAllByType: <P>(type: React.ComponentType<P>) => Array<ReactTestInstance>;
|
|
144
144
|
getByA11yValue: import("./queries/make-queries").GetByQuery<import("./helpers/matchers/match-accessibility-value").AccessibilityValueMatcher, import("./queries/options").CommonQueryOptions>;
|
|
145
145
|
getAllByA11yValue: import("./queries/make-queries").GetAllByQuery<import("./helpers/matchers/match-accessibility-value").AccessibilityValueMatcher, import("./queries/options").CommonQueryOptions>;
|
|
146
146
|
queryByA11yValue: import("./queries/make-queries").QueryByQuery<import("./helpers/matchers/match-accessibility-value").AccessibilityValueMatcher, import("./queries/options").CommonQueryOptions>;
|
package/build/render.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.js","names":["_react","_interopRequireWildcard","require","React","_act","_interopRequireDefault","_cleanup","_config","_componentTree","_debugDeep","_debugShallow","_hostComponentNames","_stringValidation","_renderAct","_screen","_within","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","render","component","options","renderInternal","wrapper","Wrapper","detectHostComponentNames","unstable_validateStringsRenderedWithinText","testRendererOptions","configureHostComponentNamesIfNeeded","renderWithStringValidation","wrap","element","createElement","renderer","renderWithAct","buildRenderResult","handleRender","_","phase","validateStringsRenderedWithinText","toJSON","Profiler","id","onRender","update","updateWithAct","instance","root","unmount","act","addToCleanupQueue","result","getQueriesForElement","rerender","debug","getHostChildren","UNSAFE_root","enumerable","Error","setRenderResult","debugImpl","defaultDebugOptions","getConfig","debugOptions","message","console","warn","json","debugDeep","shallow","debugShallow"],"sources":["../src/render.tsx"],"sourcesContent":["import type { ReactTestInstance, ReactTestRenderer } from 'react-test-renderer';\nimport * as React from 'react';\nimport { Profiler } from 'react';\nimport act from './act';\nimport { addToCleanupQueue } from './cleanup';\nimport { getConfig } from './config';\nimport { getHostChildren } from './helpers/component-tree';\nimport debugDeep, { DebugOptions } from './helpers/debug-deep';\nimport debugShallow from './helpers/debug-shallow';\nimport { configureHostComponentNamesIfNeeded } from './helpers/host-component-names';\nimport { validateStringsRenderedWithinText } from './helpers/string-validation';\nimport { renderWithAct } from './render-act';\nimport { setRenderResult } from './screen';\nimport { getQueriesForElement } from './within';\n\nexport interface RenderOptions {\n wrapper?: React.ComponentType<any>;\n createNodeMock?: (element: React.ReactElement) => unknown;\n unstable_validateStringsRenderedWithinText?: boolean;\n}\n\nexport type RenderResult = ReturnType<typeof render>;\n\n/**\n * Renders test component deeply using React Test Renderer and exposes helpers\n * to assert on the output.\n */\nexport default function render<T>(component: React.ReactElement<T>, options: RenderOptions = {}) {\n return renderInternal(component, options);\n}\n\nexport interface RenderInternalOptions extends RenderOptions {\n detectHostComponentNames?: boolean;\n}\n\nexport function renderInternal<T>(\n component: React.ReactElement<T>,\n options?: RenderInternalOptions,\n) {\n const {\n wrapper: Wrapper,\n detectHostComponentNames = true,\n unstable_validateStringsRenderedWithinText,\n ...testRendererOptions\n } = options || {};\n\n if (detectHostComponentNames) {\n configureHostComponentNamesIfNeeded();\n }\n\n if (unstable_validateStringsRenderedWithinText) {\n return renderWithStringValidation(component, {\n wrapper: Wrapper,\n ...testRendererOptions,\n });\n }\n\n const wrap = (element: React.ReactElement) => (Wrapper ? <Wrapper>{element}</Wrapper> : element);\n const renderer = renderWithAct(wrap(component), testRendererOptions);\n return buildRenderResult(renderer, wrap);\n}\n\nfunction renderWithStringValidation<T>(\n component: React.ReactElement<T>,\n options: Omit<RenderOptions, 'unstable_validateStringsRenderedWithinText'> = {},\n) {\n let renderer: ReactTestRenderer;\n const { wrapper: Wrapper, ...testRendererOptions } = options ?? {};\n\n const handleRender: React.ProfilerOnRenderCallback = (_, phase) => {\n if (renderer && phase === 'update') {\n validateStringsRenderedWithinText(renderer.toJSON());\n }\n };\n\n const wrap = (element: React.ReactElement) => (\n <Profiler id=\"renderProfiler\" onRender={handleRender}>\n {Wrapper ? <Wrapper>{element}</Wrapper> : element}\n </Profiler>\n );\n\n renderer = renderWithAct(wrap(component), testRendererOptions);\n\n validateStringsRenderedWithinText(renderer.toJSON());\n\n return buildRenderResult(renderer, wrap);\n}\n\nfunction buildRenderResult(\n renderer: ReactTestRenderer,\n wrap: (element: React.ReactElement) => JSX.Element,\n) {\n const update = updateWithAct(renderer, wrap);\n const instance = renderer.root;\n\n const unmount = () => {\n void act(() => {\n renderer.unmount();\n });\n };\n\n addToCleanupQueue(unmount);\n\n const result = {\n ...getQueriesForElement(instance),\n update,\n unmount,\n rerender: update, // alias for `update`\n toJSON: renderer.toJSON,\n debug: debug(instance, renderer),\n get root(): ReactTestInstance {\n return getHostChildren(instance)[0];\n },\n UNSAFE_root: instance,\n };\n\n // Add as non-enumerable property, so that it's safe to enumerate\n // `render` result, e.g. using destructuring rest syntax.\n Object.defineProperty(result, 'container', {\n enumerable: false,\n get() {\n throw new Error(\n \"'container' property has been renamed to 'UNSAFE_root'.\\n\\n\" +\n \"Consider using 'root' property which returns root host element.\",\n );\n },\n });\n\n setRenderResult(result);\n return result;\n}\n\nfunction updateWithAct(\n renderer: ReactTestRenderer,\n wrap: (innerElement: React.ReactElement) => React.ReactElement,\n) {\n return function (component: React.ReactElement) {\n void act(() => {\n renderer.update(wrap(component));\n });\n };\n}\n\nexport interface DebugFunction {\n (options?: DebugOptions | string): void;\n shallow: (message?: string) => void;\n}\n\nfunction debug(instance: ReactTestInstance, renderer: ReactTestRenderer): DebugFunction {\n function debugImpl(options?: DebugOptions | string) {\n const { defaultDebugOptions } = getConfig();\n const debugOptions =\n typeof options === 'string'\n ? { ...defaultDebugOptions, message: options }\n : { ...defaultDebugOptions, ...options };\n\n if (typeof options === 'string') {\n // eslint-disable-next-line no-console\n console.warn(\n 'Using debug(\"message\") is deprecated and will be removed in future release, please use debug({ message; \"message\" }) instead.',\n );\n }\n\n const json = renderer.toJSON();\n if (json) {\n return debugDeep(json, debugOptions);\n }\n }\n debugImpl.shallow = (message?: string) => debugShallow(instance, message);\n return debugImpl;\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"render.js","names":["_react","_interopRequireWildcard","require","React","_act","_interopRequireDefault","_cleanup","_config","_componentTree","_debugDeep","_debugShallow","_hostComponentNames","_stringValidation","_renderAct","_screen","_within","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","render","component","options","renderInternal","wrapper","Wrapper","detectHostComponentNames","unstable_validateStringsRenderedWithinText","testRendererOptions","configureHostComponentNamesIfNeeded","renderWithStringValidation","wrap","element","createElement","renderer","renderWithAct","buildRenderResult","handleRender","_","phase","validateStringsRenderedWithinText","toJSON","Profiler","id","onRender","update","updateWithAct","instance","root","unmount","act","addToCleanupQueue","result","getQueriesForElement","rerender","debug","getHostChildren","UNSAFE_root","enumerable","Error","setRenderResult","debugImpl","defaultDebugOptions","getConfig","debugOptions","message","console","warn","json","debugDeep","shallow","debugShallow"],"sources":["../src/render.tsx"],"sourcesContent":["import type { ReactTestInstance, ReactTestRenderer } from 'react-test-renderer';\nimport * as React from 'react';\nimport { Profiler } from 'react';\nimport act from './act';\nimport { addToCleanupQueue } from './cleanup';\nimport { getConfig } from './config';\nimport { getHostChildren } from './helpers/component-tree';\nimport debugDeep, { DebugOptions } from './helpers/debug-deep';\nimport debugShallow from './helpers/debug-shallow';\nimport { configureHostComponentNamesIfNeeded } from './helpers/host-component-names';\nimport { validateStringsRenderedWithinText } from './helpers/string-validation';\nimport { renderWithAct } from './render-act';\nimport { setRenderResult } from './screen';\nimport { getQueriesForElement } from './within';\n\nexport interface RenderOptions {\n wrapper?: React.ComponentType<any>;\n createNodeMock?: (element: React.ReactElement) => unknown;\n unstable_validateStringsRenderedWithinText?: boolean;\n}\n\nexport type RenderResult = ReturnType<typeof render>;\n\n/**\n * Renders test component deeply using React Test Renderer and exposes helpers\n * to assert on the output.\n */\nexport default function render<T>(component: React.ReactElement<T>, options: RenderOptions = {}) {\n return renderInternal(component, options);\n}\n\nexport interface RenderInternalOptions extends RenderOptions {\n detectHostComponentNames?: boolean;\n}\n\nexport function renderInternal<T>(\n component: React.ReactElement<T>,\n options?: RenderInternalOptions,\n) {\n const {\n wrapper: Wrapper,\n detectHostComponentNames = true,\n unstable_validateStringsRenderedWithinText,\n ...testRendererOptions\n } = options || {};\n\n if (detectHostComponentNames) {\n configureHostComponentNamesIfNeeded();\n }\n\n if (unstable_validateStringsRenderedWithinText) {\n return renderWithStringValidation(component, {\n wrapper: Wrapper,\n ...testRendererOptions,\n });\n }\n\n const wrap = (element: React.ReactElement) => (Wrapper ? <Wrapper>{element}</Wrapper> : element);\n const renderer = renderWithAct(wrap(component), testRendererOptions);\n return buildRenderResult(renderer, wrap);\n}\n\nfunction renderWithStringValidation<T>(\n component: React.ReactElement<T>,\n options: Omit<RenderOptions, 'unstable_validateStringsRenderedWithinText'> = {},\n) {\n let renderer: ReactTestRenderer;\n const { wrapper: Wrapper, ...testRendererOptions } = options ?? {};\n\n const handleRender: React.ProfilerOnRenderCallback = (_, phase) => {\n if (renderer && phase === 'update') {\n validateStringsRenderedWithinText(renderer.toJSON());\n }\n };\n\n const wrap = (element: React.ReactElement) => (\n <Profiler id=\"renderProfiler\" onRender={handleRender}>\n {Wrapper ? <Wrapper>{element}</Wrapper> : element}\n </Profiler>\n );\n\n renderer = renderWithAct(wrap(component), testRendererOptions);\n\n validateStringsRenderedWithinText(renderer.toJSON());\n\n return buildRenderResult(renderer, wrap);\n}\n\nfunction buildRenderResult(\n renderer: ReactTestRenderer,\n wrap: (element: React.ReactElement) => JSX.Element,\n) {\n const update = updateWithAct(renderer, wrap);\n const instance = renderer.root;\n\n const unmount = () => {\n void act(() => {\n renderer.unmount();\n });\n };\n\n addToCleanupQueue(unmount);\n\n const result = {\n ...getQueriesForElement(instance),\n update,\n unmount,\n rerender: update, // alias for `update`\n toJSON: renderer.toJSON,\n debug: debug(instance, renderer),\n get root(): ReactTestInstance {\n return getHostChildren(instance)[0];\n },\n UNSAFE_root: instance,\n };\n\n // Add as non-enumerable property, so that it's safe to enumerate\n // `render` result, e.g. using destructuring rest syntax.\n Object.defineProperty(result, 'container', {\n enumerable: false,\n get() {\n throw new Error(\n \"'container' property has been renamed to 'UNSAFE_root'.\\n\\n\" +\n \"Consider using 'root' property which returns root host element.\",\n );\n },\n });\n\n setRenderResult(result);\n\n return result;\n}\n\nfunction updateWithAct(\n renderer: ReactTestRenderer,\n wrap: (innerElement: React.ReactElement) => React.ReactElement,\n) {\n return function (component: React.ReactElement) {\n void act(() => {\n renderer.update(wrap(component));\n });\n };\n}\n\nexport interface DebugFunction {\n (options?: DebugOptions | string): void;\n shallow: (message?: string) => void;\n}\n\nfunction debug(instance: ReactTestInstance, renderer: ReactTestRenderer): DebugFunction {\n function debugImpl(options?: DebugOptions | string) {\n const { defaultDebugOptions } = getConfig();\n const debugOptions =\n typeof options === 'string'\n ? { ...defaultDebugOptions, message: options }\n : { ...defaultDebugOptions, ...options };\n\n if (typeof options === 'string') {\n // eslint-disable-next-line no-console\n console.warn(\n 'Using debug(\"message\") is deprecated and will be removed in future release, please use debug({ message; \"message\" }) instead.',\n );\n }\n\n const json = renderer.toJSON();\n if (json) {\n return debugDeep(json, debugOptions);\n }\n }\n debugImpl.shallow = (message?: string) => debugShallow(instance, message);\n return debugImpl;\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -6,4 +6,5 @@ export declare function createEventLogger(): {
|
|
|
6
6
|
events: EventEntry[];
|
|
7
7
|
logEvent: (name: string) => (event: unknown) => void;
|
|
8
8
|
};
|
|
9
|
-
export declare function
|
|
9
|
+
export declare function getEventsNames(events: EventEntry[]): string[];
|
|
10
|
+
export declare function lastEventPayload(events: EventEntry[], name: string): any;
|
|
@@ -4,7 +4,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.createEventLogger = createEventLogger;
|
|
7
|
-
exports.
|
|
7
|
+
exports.getEventsNames = getEventsNames;
|
|
8
|
+
exports.lastEventPayload = lastEventPayload;
|
|
8
9
|
function createEventLogger() {
|
|
9
10
|
const events = [];
|
|
10
11
|
const logEvent = name => {
|
|
@@ -21,7 +22,10 @@ function createEventLogger() {
|
|
|
21
22
|
logEvent
|
|
22
23
|
};
|
|
23
24
|
}
|
|
24
|
-
function
|
|
25
|
+
function getEventsNames(events) {
|
|
25
26
|
return events.map(event => event.name);
|
|
26
27
|
}
|
|
28
|
+
function lastEventPayload(events, name) {
|
|
29
|
+
return events.filter(e => e.name === name).pop()?.payload;
|
|
30
|
+
}
|
|
27
31
|
//# sourceMappingURL=events.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.js","names":["createEventLogger","events","logEvent","name","event","eventEntry","payload","push","
|
|
1
|
+
{"version":3,"file":"events.js","names":["createEventLogger","events","logEvent","name","event","eventEntry","payload","push","getEventsNames","map","lastEventPayload","filter","e","pop"],"sources":["../../src/test-utils/events.ts"],"sourcesContent":["export interface EventEntry {\n name: string;\n payload: any;\n}\n\nexport function createEventLogger() {\n const events: EventEntry[] = [];\n const logEvent = (name: string) => {\n return (event: unknown) => {\n const eventEntry: EventEntry = {\n name,\n payload: event,\n };\n\n events.push(eventEntry);\n };\n };\n\n return { events, logEvent };\n}\n\nexport function getEventsNames(events: EventEntry[]) {\n return events.map((event) => event.name);\n}\n\nexport function lastEventPayload(events: EventEntry[], name: string) {\n return events.filter((e) => e.name === name).pop()?.payload;\n}\n"],"mappings":";;;;;;;;AAKO,SAASA,iBAAiBA,CAAA,EAAG;EAClC,MAAMC,MAAoB,GAAG,EAAE;EAC/B,MAAMC,QAAQ,GAAIC,IAAY,IAAK;IACjC,OAAQC,KAAc,IAAK;MACzB,MAAMC,UAAsB,GAAG;QAC7BF,IAAI;QACJG,OAAO,EAAEF;MACX,CAAC;MAEDH,MAAM,CAACM,IAAI,CAACF,UAAU,CAAC;IACzB,CAAC;EACH,CAAC;EAED,OAAO;IAAEJ,MAAM;IAAEC;EAAS,CAAC;AAC7B;AAEO,SAASM,cAAcA,CAACP,MAAoB,EAAE;EACnD,OAAOA,MAAM,CAACQ,GAAG,CAAEL,KAAK,IAAKA,KAAK,CAACD,IAAI,CAAC;AAC1C;AAEO,SAASO,gBAAgBA,CAACT,MAAoB,EAAEE,IAAY,EAAE;EACnE,OAAOF,MAAM,CAACU,MAAM,CAAEC,CAAC,IAAKA,CAAC,CAACT,IAAI,KAAKA,IAAI,CAAC,CAACU,GAAG,CAAC,CAAC,EAAEP,OAAO;AAC7D","ignoreList":[]}
|
package/build/types.d.ts
CHANGED
|
@@ -1 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Location of an element.
|
|
3
|
+
*/
|
|
4
|
+
export interface Point {
|
|
5
|
+
y: number;
|
|
6
|
+
x: number;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Size of an element.
|
|
10
|
+
*/
|
|
11
|
+
export interface Size {
|
|
12
|
+
height: number;
|
|
13
|
+
width: number;
|
|
14
|
+
}
|
|
1
15
|
export type StringWithAutocomplete<T> = T | (string & {});
|
package/build/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","names":[],"sources":["../src/types.ts"],"sourcesContent":["// TS autocomplete trick\n// Ref: https://github.com/microsoft/TypeScript/issues/29729#issuecomment-567871939\nexport type StringWithAutocomplete<T> = T | (string & {});\n"],"mappings":"","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"types.js","names":[],"sources":["../src/types.ts"],"sourcesContent":["/**\n * Location of an element.\n */\nexport interface Point {\n y: number;\n x: number;\n}\n\n/**\n * Size of an element.\n */\nexport interface Size {\n height: number;\n width: number;\n}\n\n// TS autocomplete trick\n// Ref: https://github.com/microsoft/TypeScript/issues/29729#issuecomment-567871939\nexport type StringWithAutocomplete<T> = T | (string & {});\n"],"mappings":"","ignoreList":[]}
|
|
@@ -23,20 +23,24 @@ async function clear(element) {
|
|
|
23
23
|
(0, _utils.dispatchEvent)(element, 'focus', _eventBuilder.EventBuilder.Common.focus());
|
|
24
24
|
|
|
25
25
|
// 2. Select all
|
|
26
|
-
const
|
|
26
|
+
const textToClear = (0, _textInput.getTextInputValue)(element);
|
|
27
27
|
const selectionRange = {
|
|
28
28
|
start: 0,
|
|
29
|
-
end:
|
|
29
|
+
end: textToClear.length
|
|
30
30
|
};
|
|
31
31
|
(0, _utils.dispatchEvent)(element, 'selectionChange', _eventBuilder.EventBuilder.TextInput.selectionChange(selectionRange));
|
|
32
32
|
|
|
33
|
-
// 3. Press backspace
|
|
34
|
-
const
|
|
35
|
-
await (0, _type.emitTypingEvents)(
|
|
33
|
+
// 3. Press backspace with selected text
|
|
34
|
+
const emptyText = '';
|
|
35
|
+
await (0, _type.emitTypingEvents)(element, {
|
|
36
|
+
config: this.config,
|
|
37
|
+
key: 'Backspace',
|
|
38
|
+
text: emptyText
|
|
39
|
+
});
|
|
36
40
|
|
|
37
41
|
// 4. Exit element
|
|
38
42
|
await (0, _utils.wait)(this.config);
|
|
39
|
-
(0, _utils.dispatchEvent)(element, 'endEditing', _eventBuilder.EventBuilder.TextInput.endEditing(
|
|
43
|
+
(0, _utils.dispatchEvent)(element, 'endEditing', _eventBuilder.EventBuilder.TextInput.endEditing(emptyText));
|
|
40
44
|
(0, _utils.dispatchEvent)(element, 'blur', _eventBuilder.EventBuilder.Common.blur());
|
|
41
45
|
}
|
|
42
46
|
//# sourceMappingURL=clear.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clear.js","names":["_errors","require","_hostComponentNames","_textInput","_pointerEvents","_eventBuilder","_utils","_type","clear","element","isHostTextInput","ErrorWithStack","type","isTextInputEditable","isPointerEventEnabled","dispatchEvent","EventBuilder","Common","focus","
|
|
1
|
+
{"version":3,"file":"clear.js","names":["_errors","require","_hostComponentNames","_textInput","_pointerEvents","_eventBuilder","_utils","_type","clear","element","isHostTextInput","ErrorWithStack","type","isTextInputEditable","isPointerEventEnabled","dispatchEvent","EventBuilder","Common","focus","textToClear","getTextInputValue","selectionRange","start","end","length","TextInput","selectionChange","emptyText","emitTypingEvents","config","key","text","wait","endEditing","blur"],"sources":["../../src/user-event/clear.ts"],"sourcesContent":["import { ReactTestInstance } from 'react-test-renderer';\nimport { ErrorWithStack } from '../helpers/errors';\nimport { isHostTextInput } from '../helpers/host-component-names';\nimport { getTextInputValue, isTextInputEditable } from '../helpers/text-input';\nimport { isPointerEventEnabled } from '../helpers/pointer-events';\nimport { EventBuilder } from './event-builder';\nimport { UserEventInstance } from './setup';\nimport { dispatchEvent, wait } from './utils';\nimport { emitTypingEvents } from './type/type';\n\nexport async function clear(this: UserEventInstance, element: ReactTestInstance): Promise<void> {\n if (!isHostTextInput(element)) {\n throw new ErrorWithStack(\n `clear() only supports host \"TextInput\" elements. Passed element has type: \"${element.type}\".`,\n clear,\n );\n }\n\n if (!isTextInputEditable(element) || !isPointerEventEnabled(element)) {\n return;\n }\n\n // 1. Enter element\n dispatchEvent(element, 'focus', EventBuilder.Common.focus());\n\n // 2. Select all\n const textToClear = getTextInputValue(element);\n const selectionRange = {\n start: 0,\n end: textToClear.length,\n };\n dispatchEvent(element, 'selectionChange', EventBuilder.TextInput.selectionChange(selectionRange));\n\n // 3. Press backspace with selected text\n const emptyText = '';\n await emitTypingEvents(element, {\n config: this.config,\n key: 'Backspace',\n text: emptyText,\n });\n\n // 4. Exit element\n await wait(this.config);\n dispatchEvent(element, 'endEditing', EventBuilder.TextInput.endEditing(emptyText));\n dispatchEvent(element, 'blur', EventBuilder.Common.blur());\n}\n"],"mappings":";;;;;;AACA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,mBAAA,GAAAD,OAAA;AACA,IAAAE,UAAA,GAAAF,OAAA;AACA,IAAAG,cAAA,GAAAH,OAAA;AACA,IAAAI,aAAA,GAAAJ,OAAA;AAEA,IAAAK,MAAA,GAAAL,OAAA;AACA,IAAAM,KAAA,GAAAN,OAAA;AAEO,eAAeO,KAAKA,CAA0BC,OAA0B,EAAiB;EAC9F,IAAI,CAAC,IAAAC,mCAAe,EAACD,OAAO,CAAC,EAAE;IAC7B,MAAM,IAAIE,sBAAc,CACtB,8EAA8EF,OAAO,CAACG,IAAI,IAAI,EAC9FJ,KACF,CAAC;EACH;EAEA,IAAI,CAAC,IAAAK,8BAAmB,EAACJ,OAAO,CAAC,IAAI,CAAC,IAAAK,oCAAqB,EAACL,OAAO,CAAC,EAAE;IACpE;EACF;;EAEA;EACA,IAAAM,oBAAa,EAACN,OAAO,EAAE,OAAO,EAAEO,0BAAY,CAACC,MAAM,CAACC,KAAK,CAAC,CAAC,CAAC;;EAE5D;EACA,MAAMC,WAAW,GAAG,IAAAC,4BAAiB,EAACX,OAAO,CAAC;EAC9C,MAAMY,cAAc,GAAG;IACrBC,KAAK,EAAE,CAAC;IACRC,GAAG,EAAEJ,WAAW,CAACK;EACnB,CAAC;EACD,IAAAT,oBAAa,EAACN,OAAO,EAAE,iBAAiB,EAAEO,0BAAY,CAACS,SAAS,CAACC,eAAe,CAACL,cAAc,CAAC,CAAC;;EAEjG;EACA,MAAMM,SAAS,GAAG,EAAE;EACpB,MAAM,IAAAC,sBAAgB,EAACnB,OAAO,EAAE;IAC9BoB,MAAM,EAAE,IAAI,CAACA,MAAM;IACnBC,GAAG,EAAE,WAAW;IAChBC,IAAI,EAAEJ;EACR,CAAC,CAAC;;EAEF;EACA,MAAM,IAAAK,WAAI,EAAC,IAAI,CAACH,MAAM,CAAC;EACvB,IAAAd,oBAAa,EAACN,OAAO,EAAE,YAAY,EAAEO,0BAAY,CAACS,SAAS,CAACQ,UAAU,CAACN,SAAS,CAAC,CAAC;EAClF,IAAAZ,oBAAa,EAACN,OAAO,EAAE,MAAM,EAAEO,0BAAY,CAACC,MAAM,CAACiB,IAAI,CAAC,CAAC,CAAC;AAC5D","ignoreList":[]}
|
|
@@ -133,7 +133,7 @@ export declare const EventBuilder: {
|
|
|
133
133
|
};
|
|
134
134
|
};
|
|
135
135
|
ScrollView: {
|
|
136
|
-
scroll: (offset?: import("
|
|
136
|
+
scroll: (offset?: import("../../types").Point, options?: import("./scroll-view").ScrollEventOptions) => {
|
|
137
137
|
nativeEvent: {
|
|
138
138
|
contentInset: {
|
|
139
139
|
bottom: number;
|
|
@@ -279,32 +279,7 @@ export declare const EventBuilder: {
|
|
|
279
279
|
timeStamp?: number | undefined;
|
|
280
280
|
type?: string | undefined;
|
|
281
281
|
};
|
|
282
|
-
|
|
283
|
-
nativeEvent: {
|
|
284
|
-
text: string;
|
|
285
|
-
previousText: string;
|
|
286
|
-
range: {
|
|
287
|
-
start: number;
|
|
288
|
-
end: number;
|
|
289
|
-
};
|
|
290
|
-
target: number;
|
|
291
|
-
};
|
|
292
|
-
currentTarget?: unknown;
|
|
293
|
-
target?: unknown;
|
|
294
|
-
bubbles?: boolean | undefined;
|
|
295
|
-
cancelable?: boolean | undefined;
|
|
296
|
-
defaultPrevented?: boolean | undefined;
|
|
297
|
-
eventPhase?: number | undefined;
|
|
298
|
-
isTrusted?: boolean | undefined;
|
|
299
|
-
preventDefault?: (() => void) | undefined;
|
|
300
|
-
isDefaultPrevented?: (() => boolean) | undefined;
|
|
301
|
-
stopPropagation?: (() => void) | undefined;
|
|
302
|
-
isPropagationStopped?: (() => boolean) | undefined;
|
|
303
|
-
persist?: (() => void) | undefined;
|
|
304
|
-
timeStamp?: number | undefined;
|
|
305
|
-
type?: string | undefined;
|
|
306
|
-
};
|
|
307
|
-
contentSizeChange: ({ width, height }: import("../utils").ContentSize) => {
|
|
282
|
+
contentSizeChange: ({ width, height }: import("../../types").Size) => {
|
|
308
283
|
nativeEvent: {
|
|
309
284
|
contentSize: {
|
|
310
285
|
width: number;
|
|
@@ -1,22 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
* Scroll position of a scrollable element.
|
|
3
|
-
*/
|
|
4
|
-
export interface ContentOffset {
|
|
5
|
-
y: number;
|
|
6
|
-
x: number;
|
|
7
|
-
}
|
|
1
|
+
import { Point, Size } from '../../types';
|
|
8
2
|
/**
|
|
9
3
|
* Other options for constructing a scroll event.
|
|
10
4
|
*/
|
|
11
5
|
export type ScrollEventOptions = {
|
|
12
|
-
contentSize?:
|
|
13
|
-
|
|
14
|
-
width: number;
|
|
15
|
-
};
|
|
16
|
-
layoutMeasurement?: {
|
|
17
|
-
height: number;
|
|
18
|
-
width: number;
|
|
19
|
-
};
|
|
6
|
+
contentSize?: Size;
|
|
7
|
+
layoutMeasurement?: Size;
|
|
20
8
|
};
|
|
21
9
|
/**
|
|
22
10
|
* Experimental values:
|
|
@@ -24,7 +12,7 @@ export type ScrollEventOptions = {
|
|
|
24
12
|
* - Android: `{"contentInset": {"bottom": 0, "left": 0, "right": 0, "top": 0}, "contentOffset": {"x": 0, "y": 31.619047164916992}, "contentSize": {"height": 1624.761962890625, "width": 411.4285583496094}, "layoutMeasurement": {"height": 785.5238037109375, "width": 411.4285583496094}, "responderIgnoreScroll": true, "target": 139, "velocity": {"x": -1.3633992671966553, "y": -1.3633992671966553}}`
|
|
25
13
|
*/
|
|
26
14
|
export declare const ScrollViewEventBuilder: {
|
|
27
|
-
scroll: (offset?:
|
|
15
|
+
scroll: (offset?: Point, options?: ScrollEventOptions) => {
|
|
28
16
|
nativeEvent: {
|
|
29
17
|
contentInset: {
|
|
30
18
|
bottom: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scroll-view.js","names":["_base","require","ScrollViewEventBuilder","exports","scroll","offset","y","x","options","baseSyntheticEvent","nativeEvent","contentInset","bottom","left","right","top","contentOffset","contentSize","height","width","layoutMeasurement","responderIgnoreScroll","target","velocity"],"sources":["../../../src/user-event/event-builder/scroll-view.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"scroll-view.js","names":["_base","require","ScrollViewEventBuilder","exports","scroll","offset","y","x","options","baseSyntheticEvent","nativeEvent","contentInset","bottom","left","right","top","contentOffset","contentSize","height","width","layoutMeasurement","responderIgnoreScroll","target","velocity"],"sources":["../../../src/user-event/event-builder/scroll-view.ts"],"sourcesContent":["import { Point, Size } from '../../types';\nimport { baseSyntheticEvent } from './base';\n\n/**\n * Other options for constructing a scroll event.\n */\nexport type ScrollEventOptions = {\n contentSize?: Size;\n layoutMeasurement?: Size;\n};\n\n/**\n * Experimental values:\n * - iOS: `{\"contentInset\": {\"bottom\": 0, \"left\": 0, \"right\": 0, \"top\": 0}, \"contentOffset\": {\"x\": 0, \"y\": 5.333333333333333}, \"contentSize\": {\"height\": 1676.6666259765625, \"width\": 390}, \"layoutMeasurement\": {\"height\": 753, \"width\": 390}, \"zoomScale\": 1}`\n * - Android: `{\"contentInset\": {\"bottom\": 0, \"left\": 0, \"right\": 0, \"top\": 0}, \"contentOffset\": {\"x\": 0, \"y\": 31.619047164916992}, \"contentSize\": {\"height\": 1624.761962890625, \"width\": 411.4285583496094}, \"layoutMeasurement\": {\"height\": 785.5238037109375, \"width\": 411.4285583496094}, \"responderIgnoreScroll\": true, \"target\": 139, \"velocity\": {\"x\": -1.3633992671966553, \"y\": -1.3633992671966553}}`\n */\nexport const ScrollViewEventBuilder = {\n scroll: (offset: Point = { y: 0, x: 0 }, options?: ScrollEventOptions) => {\n return {\n ...baseSyntheticEvent(),\n nativeEvent: {\n contentInset: { bottom: 0, left: 0, right: 0, top: 0 },\n contentOffset: { y: offset.y, x: offset.x },\n contentSize: {\n height: options?.contentSize?.height ?? 0,\n width: options?.contentSize?.width ?? 0,\n },\n layoutMeasurement: {\n height: options?.layoutMeasurement?.height ?? 0,\n width: options?.layoutMeasurement?.width ?? 0,\n },\n responderIgnoreScroll: true,\n target: 0,\n velocity: { y: 0, x: 0 },\n },\n };\n },\n};\n"],"mappings":";;;;;;AACA,IAAAA,KAAA,GAAAC,OAAA;AAEA;AACA;AACA;;AAMA;AACA;AACA;AACA;AACA;AACO,MAAMC,sBAAsB,GAAAC,OAAA,CAAAD,sBAAA,GAAG;EACpCE,MAAM,EAAEA,CAACC,MAAa,GAAG;IAAEC,CAAC,EAAE,CAAC;IAAEC,CAAC,EAAE;EAAE,CAAC,EAAEC,OAA4B,KAAK;IACxE,OAAO;MACL,GAAG,IAAAC,wBAAkB,EAAC,CAAC;MACvBC,WAAW,EAAE;QACXC,YAAY,EAAE;UAAEC,MAAM,EAAE,CAAC;UAAEC,IAAI,EAAE,CAAC;UAAEC,KAAK,EAAE,CAAC;UAAEC,GAAG,EAAE;QAAE,CAAC;QACtDC,aAAa,EAAE;UAAEV,CAAC,EAAED,MAAM,CAACC,CAAC;UAAEC,CAAC,EAAEF,MAAM,CAACE;QAAE,CAAC;QAC3CU,WAAW,EAAE;UACXC,MAAM,EAAEV,OAAO,EAAES,WAAW,EAAEC,MAAM,IAAI,CAAC;UACzCC,KAAK,EAAEX,OAAO,EAAES,WAAW,EAAEE,KAAK,IAAI;QACxC,CAAC;QACDC,iBAAiB,EAAE;UACjBF,MAAM,EAAEV,OAAO,EAAEY,iBAAiB,EAAEF,MAAM,IAAI,CAAC;UAC/CC,KAAK,EAAEX,OAAO,EAAEY,iBAAiB,EAAED,KAAK,IAAI;QAC9C,CAAC;QACDE,qBAAqB,EAAE,IAAI;QAC3BC,MAAM,EAAE,CAAC;QACTC,QAAQ,EAAE;UAAEjB,CAAC,EAAE,CAAC;UAAEC,CAAC,EAAE;QAAE;MACzB;IACF,CAAC;EACH;AACF,CAAC","ignoreList":[]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Size } from '../../types';
|
|
2
2
|
import { TextRange } from '../utils/text-range';
|
|
3
3
|
export declare const TextInputEventBuilder: {
|
|
4
4
|
/**
|
|
@@ -128,42 +128,12 @@ export declare const TextInputEventBuilder: {
|
|
|
128
128
|
timeStamp?: number | undefined;
|
|
129
129
|
type?: string | undefined;
|
|
130
130
|
};
|
|
131
|
-
/**
|
|
132
|
-
* Experimental values:
|
|
133
|
-
* - iOS: `{"eventCount": 2, "previousText": "Te", "range": {"end": 2, "start": 2}, "target": 75, "text": "s"}`
|
|
134
|
-
* - Android: `{"previousText": "Te", "range": {"end": 2, "start": 0}, "target": 53, "text": "Tes"}`
|
|
135
|
-
*/
|
|
136
|
-
textInput: (text: string, previousText: string) => {
|
|
137
|
-
nativeEvent: {
|
|
138
|
-
text: string;
|
|
139
|
-
previousText: string;
|
|
140
|
-
range: {
|
|
141
|
-
start: number;
|
|
142
|
-
end: number;
|
|
143
|
-
};
|
|
144
|
-
target: number;
|
|
145
|
-
};
|
|
146
|
-
currentTarget?: unknown;
|
|
147
|
-
target?: unknown;
|
|
148
|
-
bubbles?: boolean | undefined;
|
|
149
|
-
cancelable?: boolean | undefined;
|
|
150
|
-
defaultPrevented?: boolean | undefined;
|
|
151
|
-
eventPhase?: number | undefined;
|
|
152
|
-
isTrusted?: boolean | undefined;
|
|
153
|
-
preventDefault?: (() => void) | undefined;
|
|
154
|
-
isDefaultPrevented?: (() => boolean) | undefined;
|
|
155
|
-
stopPropagation?: (() => void) | undefined;
|
|
156
|
-
isPropagationStopped?: (() => boolean) | undefined;
|
|
157
|
-
persist?: (() => void) | undefined;
|
|
158
|
-
timeStamp?: number | undefined;
|
|
159
|
-
type?: string | undefined;
|
|
160
|
-
};
|
|
161
131
|
/**
|
|
162
132
|
* Experimental values:
|
|
163
133
|
* - iOS: `{"contentSize": {"height": 21.666666666666668, "width": 11.666666666666666}, "target": 75}`
|
|
164
134
|
* - Android: `{"contentSize": {"height": 61.45454406738281, "width": 352.7272644042969}, "target": 53}`
|
|
165
135
|
*/
|
|
166
|
-
contentSizeChange: ({ width, height }:
|
|
136
|
+
contentSizeChange: ({ width, height }: Size) => {
|
|
167
137
|
nativeEvent: {
|
|
168
138
|
contentSize: {
|
|
169
139
|
width: number;
|
|
@@ -81,25 +81,6 @@ const TextInputEventBuilder = exports.TextInputEventBuilder = {
|
|
|
81
81
|
}
|
|
82
82
|
};
|
|
83
83
|
},
|
|
84
|
-
/**
|
|
85
|
-
* Experimental values:
|
|
86
|
-
* - iOS: `{"eventCount": 2, "previousText": "Te", "range": {"end": 2, "start": 2}, "target": 75, "text": "s"}`
|
|
87
|
-
* - Android: `{"previousText": "Te", "range": {"end": 2, "start": 0}, "target": 53, "text": "Tes"}`
|
|
88
|
-
*/
|
|
89
|
-
textInput: (text, previousText) => {
|
|
90
|
-
return {
|
|
91
|
-
...(0, _base.baseSyntheticEvent)(),
|
|
92
|
-
nativeEvent: {
|
|
93
|
-
text,
|
|
94
|
-
previousText,
|
|
95
|
-
range: {
|
|
96
|
-
start: text.length,
|
|
97
|
-
end: text.length
|
|
98
|
-
},
|
|
99
|
-
target: 0
|
|
100
|
-
}
|
|
101
|
-
};
|
|
102
|
-
},
|
|
103
84
|
/**
|
|
104
85
|
* Experimental values:
|
|
105
86
|
* - iOS: `{"contentSize": {"height": 21.666666666666668, "width": 11.666666666666666}, "target": 75}`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"text-input.js","names":["_base","require","TextInputEventBuilder","exports","change","text","baseSyntheticEvent","nativeEvent","target","eventCount","keyPress","key","submitEditing","endEditing","selectionChange","start","end","selection","
|
|
1
|
+
{"version":3,"file":"text-input.js","names":["_base","require","TextInputEventBuilder","exports","change","text","baseSyntheticEvent","nativeEvent","target","eventCount","keyPress","key","submitEditing","endEditing","selectionChange","start","end","selection","contentSizeChange","width","height","contentSize"],"sources":["../../../src/user-event/event-builder/text-input.ts"],"sourcesContent":["import { Size } from '../../types';\nimport { TextRange } from '../utils/text-range';\nimport { baseSyntheticEvent } from './base';\n\nexport const TextInputEventBuilder = {\n /**\n * Experimental values:\n * - iOS: `{\"eventCount\": 4, \"target\": 75, \"text\": \"Test\"}`\n * - Android: `{\"eventCount\": 6, \"target\": 53, \"text\": \"Tes\"}`\n */\n change: (text: string) => {\n return {\n ...baseSyntheticEvent(),\n nativeEvent: { text, target: 0, eventCount: 0 },\n };\n },\n\n /**\n * Experimental values:\n * - iOS: `{\"eventCount\": 3, \"key\": \"a\", \"target\": 75}`\n * - Android: `{\"key\": \"a\"}`\n */\n keyPress: (key: string) => {\n return {\n ...baseSyntheticEvent(),\n nativeEvent: { key },\n };\n },\n\n /**\n * Experimental values:\n * - iOS: `{\"eventCount\": 4, \"target\": 75, \"text\": \"Test\"}`\n * - Android: `{\"target\": 53, \"text\": \"Test\"}`\n */\n submitEditing: (text: string) => {\n return {\n ...baseSyntheticEvent(),\n nativeEvent: { text, target: 0 },\n };\n },\n\n /**\n * Experimental values:\n * - iOS: `{\"eventCount\": 4, \"target\": 75, \"text\": \"Test\"}`\n * - Android: `{\"target\": 53, \"text\": \"Test\"}`\n */\n endEditing: (text: string) => {\n return {\n ...baseSyntheticEvent(),\n nativeEvent: { text, target: 0 },\n };\n },\n\n /**\n * Experimental values:\n * - iOS: `{\"selection\": {\"end\": 4, \"start\": 4}, \"target\": 75}`\n * - Android: `{\"selection\": {\"end\": 4, \"start\": 4}}`\n */\n selectionChange: ({ start, end }: TextRange) => {\n return {\n ...baseSyntheticEvent(),\n nativeEvent: { selection: { start, end } },\n };\n },\n\n /**\n * Experimental values:\n * - iOS: `{\"contentSize\": {\"height\": 21.666666666666668, \"width\": 11.666666666666666}, \"target\": 75}`\n * - Android: `{\"contentSize\": {\"height\": 61.45454406738281, \"width\": 352.7272644042969}, \"target\": 53}`\n */\n contentSizeChange: ({ width, height }: Size) => {\n return {\n ...baseSyntheticEvent(),\n nativeEvent: { contentSize: { width, height }, target: 0 },\n };\n },\n};\n"],"mappings":";;;;;;AAEA,IAAAA,KAAA,GAAAC,OAAA;AAEO,MAAMC,qBAAqB,GAAAC,OAAA,CAAAD,qBAAA,GAAG;EACnC;AACF;AACA;AACA;AACA;EACEE,MAAM,EAAGC,IAAY,IAAK;IACxB,OAAO;MACL,GAAG,IAAAC,wBAAkB,EAAC,CAAC;MACvBC,WAAW,EAAE;QAAEF,IAAI;QAAEG,MAAM,EAAE,CAAC;QAAEC,UAAU,EAAE;MAAE;IAChD,CAAC;EACH,CAAC;EAED;AACF;AACA;AACA;AACA;EACEC,QAAQ,EAAGC,GAAW,IAAK;IACzB,OAAO;MACL,GAAG,IAAAL,wBAAkB,EAAC,CAAC;MACvBC,WAAW,EAAE;QAAEI;MAAI;IACrB,CAAC;EACH,CAAC;EAED;AACF;AACA;AACA;AACA;EACEC,aAAa,EAAGP,IAAY,IAAK;IAC/B,OAAO;MACL,GAAG,IAAAC,wBAAkB,EAAC,CAAC;MACvBC,WAAW,EAAE;QAAEF,IAAI;QAAEG,MAAM,EAAE;MAAE;IACjC,CAAC;EACH,CAAC;EAED;AACF;AACA;AACA;AACA;EACEK,UAAU,EAAGR,IAAY,IAAK;IAC5B,OAAO;MACL,GAAG,IAAAC,wBAAkB,EAAC,CAAC;MACvBC,WAAW,EAAE;QAAEF,IAAI;QAAEG,MAAM,EAAE;MAAE;IACjC,CAAC;EACH,CAAC;EAED;AACF;AACA;AACA;AACA;EACEM,eAAe,EAAEA,CAAC;IAAEC,KAAK;IAAEC;EAAe,CAAC,KAAK;IAC9C,OAAO;MACL,GAAG,IAAAV,wBAAkB,EAAC,CAAC;MACvBC,WAAW,EAAE;QAAEU,SAAS,EAAE;UAAEF,KAAK;UAAEC;QAAI;MAAE;IAC3C,CAAC;EACH,CAAC;EAED;AACF;AACA;AACA;AACA;EACEE,iBAAiB,EAAEA,CAAC;IAAEC,KAAK;IAAEC;EAAa,CAAC,KAAK;IAC9C,OAAO;MACL,GAAG,IAAAd,wBAAkB,EAAC,CAAC;MACvBC,WAAW,EAAE;QAAEc,WAAW,EAAE;UAAEF,KAAK;UAAEC;QAAO,CAAC;QAAEZ,MAAM,EAAE;MAAE;IAC3D,CAAC;EACH;AACF,CAAC","ignoreList":[]}
|
|
@@ -10,5 +10,6 @@ export declare const userEvent: {
|
|
|
10
10
|
longPress: (element: ReactTestInstance, options?: PressOptions) => Promise<void>;
|
|
11
11
|
type: (element: ReactTestInstance, text: string, options?: TypeOptions) => Promise<void>;
|
|
12
12
|
clear: (element: ReactTestInstance) => Promise<void>;
|
|
13
|
+
paste: (element: ReactTestInstance, text: string) => Promise<void>;
|
|
13
14
|
scrollTo: (element: ReactTestInstance, options: ScrollToOptions) => Promise<void>;
|
|
14
15
|
};
|
|
@@ -18,6 +18,7 @@ const userEvent = exports.userEvent = {
|
|
|
18
18
|
longPress: (element, options) => (0, _setup.setup)().longPress(element, options),
|
|
19
19
|
type: (element, text, options) => (0, _setup.setup)().type(element, text, options),
|
|
20
20
|
clear: element => (0, _setup.setup)().clear(element),
|
|
21
|
+
paste: (element, text) => (0, _setup.setup)().paste(element, text),
|
|
21
22
|
scrollTo: (element, options) => (0, _setup.setup)().scrollTo(element, options)
|
|
22
23
|
};
|
|
23
24
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["_setup","require","userEvent","exports","setup","press","element","longPress","options","type","text","clear","scrollTo"],"sources":["../../src/user-event/index.ts"],"sourcesContent":["import { ReactTestInstance } from 'react-test-renderer';\nimport { setup } from './setup';\nimport { PressOptions } from './press';\nimport { TypeOptions } from './type';\nimport { ScrollToOptions } from './scroll';\n\nexport { UserEventConfig } from './setup';\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, options?: TypeOptions) =>\n setup().type(element, text, options),\n clear: (element: ReactTestInstance) => setup().clear(element),\n scrollTo: (element: ReactTestInstance, options: ScrollToOptions) =>\n setup().scrollTo(element, options),\n};\n"],"mappings":";;;;;;;;;;;;AACA,IAAAA,MAAA,GAAAC,OAAA;AAOO,MAAMC,SAAS,GAAAC,OAAA,CAAAD,SAAA,GAAG;EACvBE,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,EAAEF,OAAqB,KACpE,IAAAJ,YAAK,EAAC,CAAC,CAACK,IAAI,CAACH,OAAO,EAAEI,IAAI,EAAEF,OAAO,CAAC;EACtCG,KAAK,EAAGL,OAA0B,IAAK,IAAAF,YAAK,EAAC,CAAC,CAACO,KAAK,CAACL,OAAO,CAAC;EAC7DM,
|
|
1
|
+
{"version":3,"file":"index.js","names":["_setup","require","userEvent","exports","setup","press","element","longPress","options","type","text","clear","paste","scrollTo"],"sources":["../../src/user-event/index.ts"],"sourcesContent":["import { ReactTestInstance } from 'react-test-renderer';\nimport { setup } from './setup';\nimport { PressOptions } from './press';\nimport { TypeOptions } from './type';\nimport { ScrollToOptions } from './scroll';\n\nexport { UserEventConfig } from './setup';\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, options?: TypeOptions) =>\n setup().type(element, text, options),\n clear: (element: ReactTestInstance) => setup().clear(element),\n paste: (element: ReactTestInstance, text: string) => setup().paste(element, text),\n scrollTo: (element: ReactTestInstance, options: ScrollToOptions) =>\n setup().scrollTo(element, options),\n};\n"],"mappings":";;;;;;;;;;;;AACA,IAAAA,MAAA,GAAAC,OAAA;AAOO,MAAMC,SAAS,GAAAC,OAAA,CAAAD,SAAA,GAAG;EACvBE,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,EAAEF,OAAqB,KACpE,IAAAJ,YAAK,EAAC,CAAC,CAACK,IAAI,CAACH,OAAO,EAAEI,IAAI,EAAEF,OAAO,CAAC;EACtCG,KAAK,EAAGL,OAA0B,IAAK,IAAAF,YAAK,EAAC,CAAC,CAACO,KAAK,CAACL,OAAO,CAAC;EAC7DM,KAAK,EAAEA,CAACN,OAA0B,EAAEI,IAAY,KAAK,IAAAN,YAAK,EAAC,CAAC,CAACQ,KAAK,CAACN,OAAO,EAAEI,IAAI,CAAC;EACjFG,QAAQ,EAAEA,CAACP,OAA0B,EAAEE,OAAwB,KAC7D,IAAAJ,YAAK,EAAC,CAAC,CAACS,QAAQ,CAACP,OAAO,EAAEE,OAAO;AACrC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.paste = paste;
|
|
7
|
+
var _errors = require("../helpers/errors");
|
|
8
|
+
var _hostComponentNames = require("../helpers/host-component-names");
|
|
9
|
+
var _pointerEvents = require("../helpers/pointer-events");
|
|
10
|
+
var _textInput = require("../helpers/text-input");
|
|
11
|
+
var _nativeState = require("../native-state");
|
|
12
|
+
var _eventBuilder = require("./event-builder");
|
|
13
|
+
var _utils = require("./utils");
|
|
14
|
+
async function paste(element, text) {
|
|
15
|
+
if (!(0, _hostComponentNames.isHostTextInput)(element)) {
|
|
16
|
+
throw new _errors.ErrorWithStack(`paste() only supports host "TextInput" elements. Passed element has type: "${element.type}".`, paste);
|
|
17
|
+
}
|
|
18
|
+
if (!(0, _textInput.isTextInputEditable)(element) || !(0, _pointerEvents.isPointerEventEnabled)(element)) {
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
// 1. Enter element
|
|
23
|
+
(0, _utils.dispatchEvent)(element, 'focus', _eventBuilder.EventBuilder.Common.focus());
|
|
24
|
+
|
|
25
|
+
// 2. Select all
|
|
26
|
+
const textToClear = (0, _textInput.getTextInputValue)(element);
|
|
27
|
+
const rangeToClear = {
|
|
28
|
+
start: 0,
|
|
29
|
+
end: textToClear.length
|
|
30
|
+
};
|
|
31
|
+
(0, _utils.dispatchEvent)(element, 'selectionChange', _eventBuilder.EventBuilder.TextInput.selectionChange(rangeToClear));
|
|
32
|
+
|
|
33
|
+
// 3. Paste the text
|
|
34
|
+
_nativeState.nativeState.valueForElement.set(element, text);
|
|
35
|
+
(0, _utils.dispatchEvent)(element, 'change', _eventBuilder.EventBuilder.TextInput.change(text));
|
|
36
|
+
(0, _utils.dispatchEvent)(element, 'changeText', text);
|
|
37
|
+
const rangeAfter = {
|
|
38
|
+
start: text.length,
|
|
39
|
+
end: text.length
|
|
40
|
+
};
|
|
41
|
+
(0, _utils.dispatchEvent)(element, 'selectionChange', _eventBuilder.EventBuilder.TextInput.selectionChange(rangeAfter));
|
|
42
|
+
|
|
43
|
+
// According to the docs only multiline TextInput emits contentSizeChange event
|
|
44
|
+
// @see: https://reactnative.dev/docs/textinput#oncontentsizechange
|
|
45
|
+
const isMultiline = element.props.multiline === true;
|
|
46
|
+
if (isMultiline) {
|
|
47
|
+
const contentSize = (0, _utils.getTextContentSize)(text);
|
|
48
|
+
(0, _utils.dispatchEvent)(element, 'contentSizeChange', _eventBuilder.EventBuilder.TextInput.contentSizeChange(contentSize));
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
// 4. Exit element
|
|
52
|
+
await (0, _utils.wait)(this.config);
|
|
53
|
+
(0, _utils.dispatchEvent)(element, 'endEditing', _eventBuilder.EventBuilder.TextInput.endEditing(text));
|
|
54
|
+
(0, _utils.dispatchEvent)(element, 'blur', _eventBuilder.EventBuilder.Common.blur());
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=paste.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paste.js","names":["_errors","require","_hostComponentNames","_pointerEvents","_textInput","_nativeState","_eventBuilder","_utils","paste","element","text","isHostTextInput","ErrorWithStack","type","isTextInputEditable","isPointerEventEnabled","dispatchEvent","EventBuilder","Common","focus","textToClear","getTextInputValue","rangeToClear","start","end","length","TextInput","selectionChange","nativeState","valueForElement","set","change","rangeAfter","isMultiline","props","multiline","contentSize","getTextContentSize","contentSizeChange","wait","config","endEditing","blur"],"sources":["../../src/user-event/paste.ts"],"sourcesContent":["import { ReactTestInstance } from 'react-test-renderer';\nimport { ErrorWithStack } from '../helpers/errors';\nimport { isHostTextInput } from '../helpers/host-component-names';\nimport { isPointerEventEnabled } from '../helpers/pointer-events';\nimport { getTextInputValue, isTextInputEditable } from '../helpers/text-input';\nimport { nativeState } from '../native-state';\nimport { EventBuilder } from './event-builder';\nimport { UserEventInstance } from './setup';\nimport { dispatchEvent, getTextContentSize, wait } from './utils';\n\nexport async function paste(\n this: UserEventInstance,\n element: ReactTestInstance,\n text: string,\n): Promise<void> {\n if (!isHostTextInput(element)) {\n throw new ErrorWithStack(\n `paste() only supports host \"TextInput\" elements. Passed element has type: \"${element.type}\".`,\n paste,\n );\n }\n\n if (!isTextInputEditable(element) || !isPointerEventEnabled(element)) {\n return;\n }\n\n // 1. Enter element\n dispatchEvent(element, 'focus', EventBuilder.Common.focus());\n\n // 2. Select all\n const textToClear = getTextInputValue(element);\n const rangeToClear = { start: 0, end: textToClear.length };\n dispatchEvent(element, 'selectionChange', EventBuilder.TextInput.selectionChange(rangeToClear));\n\n // 3. Paste the text\n nativeState.valueForElement.set(element, text);\n dispatchEvent(element, 'change', EventBuilder.TextInput.change(text));\n dispatchEvent(element, 'changeText', text);\n\n const rangeAfter = { start: text.length, end: text.length };\n dispatchEvent(element, 'selectionChange', EventBuilder.TextInput.selectionChange(rangeAfter));\n\n // According to the docs only multiline TextInput emits contentSizeChange event\n // @see: https://reactnative.dev/docs/textinput#oncontentsizechange\n const isMultiline = element.props.multiline === true;\n if (isMultiline) {\n const contentSize = getTextContentSize(text);\n dispatchEvent(\n element,\n 'contentSizeChange',\n EventBuilder.TextInput.contentSizeChange(contentSize),\n );\n }\n\n // 4. Exit element\n await wait(this.config);\n dispatchEvent(element, 'endEditing', EventBuilder.TextInput.endEditing(text));\n dispatchEvent(element, 'blur', EventBuilder.Common.blur());\n}\n"],"mappings":";;;;;;AACA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,mBAAA,GAAAD,OAAA;AACA,IAAAE,cAAA,GAAAF,OAAA;AACA,IAAAG,UAAA,GAAAH,OAAA;AACA,IAAAI,YAAA,GAAAJ,OAAA;AACA,IAAAK,aAAA,GAAAL,OAAA;AAEA,IAAAM,MAAA,GAAAN,OAAA;AAEO,eAAeO,KAAKA,CAEzBC,OAA0B,EAC1BC,IAAY,EACG;EACf,IAAI,CAAC,IAAAC,mCAAe,EAACF,OAAO,CAAC,EAAE;IAC7B,MAAM,IAAIG,sBAAc,CACtB,8EAA8EH,OAAO,CAACI,IAAI,IAAI,EAC9FL,KACF,CAAC;EACH;EAEA,IAAI,CAAC,IAAAM,8BAAmB,EAACL,OAAO,CAAC,IAAI,CAAC,IAAAM,oCAAqB,EAACN,OAAO,CAAC,EAAE;IACpE;EACF;;EAEA;EACA,IAAAO,oBAAa,EAACP,OAAO,EAAE,OAAO,EAAEQ,0BAAY,CAACC,MAAM,CAACC,KAAK,CAAC,CAAC,CAAC;;EAE5D;EACA,MAAMC,WAAW,GAAG,IAAAC,4BAAiB,EAACZ,OAAO,CAAC;EAC9C,MAAMa,YAAY,GAAG;IAAEC,KAAK,EAAE,CAAC;IAAEC,GAAG,EAAEJ,WAAW,CAACK;EAAO,CAAC;EAC1D,IAAAT,oBAAa,EAACP,OAAO,EAAE,iBAAiB,EAAEQ,0BAAY,CAACS,SAAS,CAACC,eAAe,CAACL,YAAY,CAAC,CAAC;;EAE/F;EACAM,wBAAW,CAACC,eAAe,CAACC,GAAG,CAACrB,OAAO,EAAEC,IAAI,CAAC;EAC9C,IAAAM,oBAAa,EAACP,OAAO,EAAE,QAAQ,EAAEQ,0BAAY,CAACS,SAAS,CAACK,MAAM,CAACrB,IAAI,CAAC,CAAC;EACrE,IAAAM,oBAAa,EAACP,OAAO,EAAE,YAAY,EAAEC,IAAI,CAAC;EAE1C,MAAMsB,UAAU,GAAG;IAAET,KAAK,EAAEb,IAAI,CAACe,MAAM;IAAED,GAAG,EAAEd,IAAI,CAACe;EAAO,CAAC;EAC3D,IAAAT,oBAAa,EAACP,OAAO,EAAE,iBAAiB,EAAEQ,0BAAY,CAACS,SAAS,CAACC,eAAe,CAACK,UAAU,CAAC,CAAC;;EAE7F;EACA;EACA,MAAMC,WAAW,GAAGxB,OAAO,CAACyB,KAAK,CAACC,SAAS,KAAK,IAAI;EACpD,IAAIF,WAAW,EAAE;IACf,MAAMG,WAAW,GAAG,IAAAC,yBAAkB,EAAC3B,IAAI,CAAC;IAC5C,IAAAM,oBAAa,EACXP,OAAO,EACP,mBAAmB,EACnBQ,0BAAY,CAACS,SAAS,CAACY,iBAAiB,CAACF,WAAW,CACtD,CAAC;EACH;;EAEA;EACA,MAAM,IAAAG,WAAI,EAAC,IAAI,CAACC,MAAM,CAAC;EACvB,IAAAxB,oBAAa,EAACP,OAAO,EAAE,YAAY,EAAEQ,0BAAY,CAACS,SAAS,CAACe,UAAU,CAAC/B,IAAI,CAAC,CAAC;EAC7E,IAAAM,oBAAa,EAACP,OAAO,EAAE,MAAM,EAAEQ,0BAAY,CAACC,MAAM,CAACwB,IAAI,CAAC,CAAC,CAAC;AAC5D","ignoreList":[]}
|
|
@@ -46,7 +46,6 @@ const basePress = async (config, element, options) => {
|
|
|
46
46
|
await basePress(config, hostParentElement, options);
|
|
47
47
|
};
|
|
48
48
|
const emitPressablePressEvents = async (config, element, options) => {
|
|
49
|
-
(0, _utils.warnAboutRealTimersIfNeeded)();
|
|
50
49
|
await (0, _utils.wait)(config);
|
|
51
50
|
(0, _utils.dispatchEvent)(element, 'responderGrant', _eventBuilder.EventBuilder.Common.responderGrant());
|
|
52
51
|
await (0, _utils.wait)(config, options.duration);
|