@testing-library/react-native 12.5.3 → 12.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/config.d.ts +2 -2
- package/build/fire-event.js +1 -1
- package/build/fire-event.js.map +1 -1
- package/build/helpers/debug-deep.js +1 -1
- package/build/helpers/debug-deep.js.map +1 -1
- package/build/helpers/debug-shallow.js +1 -1
- package/build/helpers/debug-shallow.js.map +1 -1
- package/build/helpers/deprecation.js.map +1 -1
- package/build/helpers/errors.js +1 -1
- package/build/helpers/errors.js.map +1 -1
- package/build/helpers/host-component-names.js.map +1 -1
- package/build/helpers/string-validation.js.map +1 -1
- package/build/helpers/text-input.js.map +1 -1
- package/build/matchers/to-be-busy.d.ts +0 -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.map +1 -1
- package/build/matchers/to-be-collapsed.d.ts +0 -1
- package/build/matchers/to-be-collapsed.js.map +1 -1
- package/build/matchers/to-be-disabled.d.ts +0 -1
- 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-empty-element.js.map +1 -1
- package/build/matchers/to-be-expanded.d.ts +0 -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-on-the-screen.js.map +1 -1
- package/build/matchers/to-be-partially-checked.d.ts +0 -1
- package/build/matchers/to-be-partially-checked.js.map +1 -1
- package/build/matchers/to-be-selected.d.ts +0 -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.map +1 -1
- package/build/matchers/to-contain-element.d.ts +0 -1
- package/build/matchers/to-contain-element.js.map +1 -1
- package/build/matchers/to-have-accessibility-value.d.ts +0 -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.map +1 -1
- package/build/matchers/to-have-display-value.d.ts +0 -1
- package/build/matchers/to-have-display-value.js.map +1 -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-style.js.map +1 -1
- package/build/matchers/to-have-text-content.d.ts +0 -1
- package/build/matchers/to-have-text-content.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/pure.js +1 -1
- package/build/pure.js.map +1 -1
- package/build/queries/accessibility-state.js.map +1 -1
- package/build/queries/accessibility-value.js.map +1 -1
- package/build/queries/display-value.js.map +1 -1
- package/build/queries/hint-text.js.map +1 -1
- package/build/queries/label-text.js.map +1 -1
- package/build/queries/make-queries.js +1 -1
- package/build/queries/make-queries.js.map +1 -1
- package/build/queries/placeholder-text.js.map +1 -1
- package/build/queries/role.js.map +1 -1
- package/build/queries/test-id.js.map +1 -1
- package/build/queries/text.js.map +1 -1
- package/build/queries/unsafe-props.js +1 -1
- package/build/queries/unsafe-props.js.map +1 -1
- package/build/render-act.js +1 -1
- package/build/render-act.js.map +1 -1
- package/build/render-hook.js +1 -1
- package/build/render-hook.js.map +1 -1
- package/build/render.d.ts +16 -16
- package/build/render.js +1 -1
- package/build/render.js.map +1 -1
- package/build/shallow.js +1 -1
- package/build/shallow.js.map +1 -1
- package/build/user-event/clear.js +5 -6
- package/build/user-event/clear.js.map +1 -1
- package/build/user-event/event-builder/index.d.ts +1 -26
- package/build/user-event/event-builder/text-input.d.ts +0 -30
- 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 +54 -0
- package/build/user-event/paste.js.map +1 -0
- package/build/user-event/press/press.js +1 -1
- package/build/user-event/press/press.js.map +1 -1
- package/build/user-event/scroll/scroll-to.js.map +1 -1
- package/build/user-event/setup/setup.d.ts +12 -0
- package/build/user-event/setup/setup.js +2 -0
- package/build/user-event/setup/setup.js.map +1 -1
- package/build/user-event/type/parse-keys.js.map +1 -1
- package/build/user-event/type/type.d.ts +1 -2
- package/build/user-event/type/type.js +0 -8
- package/build/user-event/type/type.js.map +1 -1
- package/build/user-event/utils/dispatch-event.js +1 -1
- package/build/user-event/utils/dispatch-event.js.map +1 -1
- package/build/user-event/utils/warn-about-real-timers.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/wait-for.js.map +1 -1
- package/build/within.d.ts +5 -6
- package/package.json +17 -22
package/build/render-act.js
CHANGED
|
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.renderWithAct = renderWithAct;
|
|
7
7
|
var _reactTestRenderer = _interopRequireDefault(require("react-test-renderer"));
|
|
8
8
|
var _act = _interopRequireDefault(require("./act"));
|
|
9
|
-
function _interopRequireDefault(
|
|
9
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
10
|
function renderWithAct(component, options) {
|
|
11
11
|
let renderer;
|
|
12
12
|
|
package/build/render-act.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render-act.js","names":["_reactTestRenderer","_interopRequireDefault","require","_act","
|
|
1
|
+
{"version":3,"file":"render-act.js","names":["_reactTestRenderer","_interopRequireDefault","require","_act","e","__esModule","default","renderWithAct","component","options","renderer","act","TestRenderer","create"],"sources":["../src/render-act.ts"],"sourcesContent":["import TestRenderer from 'react-test-renderer';\nimport type { ReactTestRenderer, TestRendererOptions } from 'react-test-renderer';\nimport act from './act';\n\nexport function renderWithAct(\n component: React.ReactElement,\n options?: Partial<TestRendererOptions>,\n): ReactTestRenderer {\n let renderer: ReactTestRenderer;\n\n // This will be called synchronously.\n void act(() => {\n // @ts-expect-error TestRenderer.create is not typed correctly\n renderer = TestRenderer.create(component, options);\n });\n\n // @ts-ignore act is synchronous, so renderer is already initialized here\n return renderer;\n}\n"],"mappings":";;;;;;AAAA,IAAAA,kBAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,IAAA,GAAAF,sBAAA,CAAAC,OAAA;AAAwB,SAAAD,uBAAAG,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAEjB,SAASG,aAAaA,CAC3BC,SAA6B,EAC7BC,OAAsC,EACnB;EACnB,IAAIC,QAA2B;;EAE/B;EACA,KAAK,IAAAC,YAAG,EAAC,MAAM;IACb;IACAD,QAAQ,GAAGE,0BAAY,CAACC,MAAM,CAACL,SAAS,EAAEC,OAAO,CAAC;EACpD,CAAC,CAAC;;EAEF;EACA,OAAOC,QAAQ;AACjB","ignoreList":[]}
|
package/build/render-hook.js
CHANGED
|
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.renderHook = renderHook;
|
|
7
7
|
var _react = _interopRequireDefault(require("react"));
|
|
8
8
|
var _render = require("./render");
|
|
9
|
-
function _interopRequireDefault(
|
|
9
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
10
|
function renderHook(renderCallback, options) {
|
|
11
11
|
const initialProps = options?.initialProps;
|
|
12
12
|
const wrapper = options?.wrapper;
|
package/build/render-hook.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render-hook.js","names":["_react","_interopRequireDefault","require","_render","
|
|
1
|
+
{"version":3,"file":"render-hook.js","names":["_react","_interopRequireDefault","require","_render","e","__esModule","default","renderHook","renderCallback","options","initialProps","wrapper","result","React","createRef","TestComponent","renderCallbackProps","renderResult","useEffect","current","rerender","baseRerender","unmount","renderInternal","createElement","detectHostComponentNames","rerenderCallbackProps"],"sources":["../src/render-hook.tsx"],"sourcesContent":["import React from 'react';\nimport type { ComponentType } from 'react';\nimport { renderInternal } from './render';\n\nexport type RenderHookResult<Result, Props> = {\n rerender: (props: Props) => void;\n result: { current: Result };\n unmount: () => void;\n};\n\nexport type RenderHookOptions<Props> = {\n initialProps?: Props;\n wrapper?: ComponentType<any>;\n};\n\nexport function renderHook<Result, Props>(\n renderCallback: (props: Props) => Result,\n options?: RenderHookOptions<Props>,\n): RenderHookResult<Result, Props> {\n const initialProps = options?.initialProps;\n const wrapper = options?.wrapper;\n\n const result: React.MutableRefObject<Result | null> = React.createRef();\n\n function TestComponent({ renderCallbackProps }: { renderCallbackProps: Props }) {\n const renderResult = renderCallback(renderCallbackProps);\n\n React.useEffect(() => {\n result.current = renderResult;\n });\n\n return null;\n }\n\n const { rerender: baseRerender, unmount } = renderInternal(\n // @ts-expect-error since option can be undefined, initialProps can be undefined when it should'nt\n <TestComponent renderCallbackProps={initialProps} />,\n {\n wrapper,\n detectHostComponentNames: false,\n },\n );\n\n function rerender(rerenderCallbackProps: Props) {\n return baseRerender(<TestComponent renderCallbackProps={rerenderCallbackProps} />);\n }\n\n // @ts-expect-error result is ill typed because ref is initialized to null\n return { result, rerender, unmount };\n}\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,OAAA,GAAAD,OAAA;AAA0C,SAAAD,uBAAAG,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAanC,SAASG,UAAUA,CACxBC,cAAwC,EACxCC,OAAkC,EACD;EACjC,MAAMC,YAAY,GAAGD,OAAO,EAAEC,YAAY;EAC1C,MAAMC,OAAO,GAAGF,OAAO,EAAEE,OAAO;EAEhC,MAAMC,MAA6C,gBAAGC,cAAK,CAACC,SAAS,CAAC,CAAC;EAEvE,SAASC,aAAaA,CAAC;IAAEC;EAAoD,CAAC,EAAE;IAC9E,MAAMC,YAAY,GAAGT,cAAc,CAACQ,mBAAmB,CAAC;IAExDH,cAAK,CAACK,SAAS,CAAC,MAAM;MACpBN,MAAM,CAACO,OAAO,GAAGF,YAAY;IAC/B,CAAC,CAAC;IAEF,OAAO,IAAI;EACb;EAEA,MAAM;IAAEG,QAAQ,EAAEC,YAAY;IAAEC;EAAQ,CAAC,GAAG,IAAAC,sBAAc;EAAA;EACxD;EACAvB,MAAA,CAAAM,OAAA,CAAAkB,aAAA,CAACT,aAAa;IAACC,mBAAmB,EAAEN;EAAa,CAAE,CAAC,EACpD;IACEC,OAAO;IACPc,wBAAwB,EAAE;EAC5B,CACF,CAAC;EAED,SAASL,QAAQA,CAACM,qBAA4B,EAAE;IAC9C,OAAOL,YAAY,eAACrB,MAAA,CAAAM,OAAA,CAAAkB,aAAA,CAACT,aAAa;MAACC,mBAAmB,EAAEU;IAAsB,CAAE,CAAC,CAAC;EACpF;;EAEA;EACA,OAAO;IAAEd,MAAM;IAAEQ,QAAQ;IAAEE;EAAQ,CAAC;AACtC","ignoreList":[]}
|
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
CHANGED
|
@@ -18,7 +18,7 @@ var _stringValidation = require("./helpers/string-validation");
|
|
|
18
18
|
var _renderAct = require("./render-act");
|
|
19
19
|
var _screen = require("./screen");
|
|
20
20
|
var _within = require("./within");
|
|
21
|
-
function _interopRequireDefault(
|
|
21
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
22
22
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
23
23
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
24
24
|
/**
|
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","obj","__esModule","default","_getRequireWildcardCache","e","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 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":[]}
|
package/build/shallow.js
CHANGED
|
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.shallowInternal = shallowInternal;
|
|
7
7
|
var React = _interopRequireWildcard(require("react"));
|
|
8
8
|
var _shallow = _interopRequireDefault(require("react-test-renderer/shallow"));
|
|
9
|
-
function _interopRequireDefault(
|
|
9
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
10
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
11
11
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
12
12
|
// eslint-disable-line import/no-extraneous-dependencies
|
package/build/shallow.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shallow.js","names":["React","_interopRequireWildcard","require","_shallow","_interopRequireDefault","
|
|
1
|
+
{"version":3,"file":"shallow.js","names":["React","_interopRequireWildcard","require","_shallow","_interopRequireDefault","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","shallowInternal","instance","renderer","ShallowRenderer","render","createElement","type","props","output","getRenderOutput"],"sources":["../src/shallow.ts"],"sourcesContent":["import * as React from 'react';\nimport { ReactTestInstance } from 'react-test-renderer';\nimport ShallowRenderer from 'react-test-renderer/shallow'; // eslint-disable-line import/no-extraneous-dependencies\n\n/**\n * Renders test component shallowly using react-test-renderer/shallow\n */\nexport function shallowInternal(instance: ReactTestInstance | React.ReactElement<any>): {\n output: any;\n} {\n const renderer = new (ShallowRenderer as any)();\n\n renderer.render(React.createElement(instance.type, instance.props));\n\n return {\n output: renderer.getRenderOutput(),\n };\n}\n"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,uBAAA,CAAAC,OAAA;AAEA,IAAAC,QAAA,GAAAC,sBAAA,CAAAF,OAAA;AAA0D,SAAAE,uBAAAC,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAAA,SAAAG,yBAAAH,CAAA,6BAAAI,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAD,wBAAA,YAAAA,CAAAH,CAAA,WAAAA,CAAA,GAAAM,CAAA,GAAAD,CAAA,KAAAL,CAAA;AAAA,SAAAJ,wBAAAI,CAAA,EAAAK,CAAA,SAAAA,CAAA,IAAAL,CAAA,IAAAA,CAAA,CAAAC,UAAA,SAAAD,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAE,OAAA,EAAAF,CAAA,QAAAM,CAAA,GAAAH,wBAAA,CAAAE,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAC,GAAA,CAAAP,CAAA,UAAAM,CAAA,CAAAE,GAAA,CAAAR,CAAA,OAAAS,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAf,CAAA,oBAAAe,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAjB,CAAA,EAAAe,CAAA,SAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAd,CAAA,EAAAe,CAAA,UAAAG,CAAA,KAAAA,CAAA,CAAAV,GAAA,IAAAU,CAAA,CAAAC,GAAA,IAAAP,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAG,CAAA,IAAAT,CAAA,CAAAM,CAAA,IAAAf,CAAA,CAAAe,CAAA,YAAAN,CAAA,CAAAP,OAAA,GAAAF,CAAA,EAAAM,CAAA,IAAAA,CAAA,CAAAa,GAAA,CAAAnB,CAAA,EAAAS,CAAA,GAAAA,CAAA;AAAC;;AAE3D;AACA;AACA;AACO,SAASW,eAAeA,CAACC,QAAqD,EAEnF;EACA,MAAMC,QAAQ,GAAG,IAAKC,gBAAe,CAAS,CAAC;EAE/CD,QAAQ,CAACE,MAAM,eAAC7B,KAAK,CAAC8B,aAAa,CAACJ,QAAQ,CAACK,IAAI,EAAEL,QAAQ,CAACM,KAAK,CAAC,CAAC;EAEnE,OAAO;IACLC,MAAM,EAAEN,QAAQ,CAACO,eAAe,CAAC;EACnC,CAAC;AACH","ignoreList":[]}
|
|
@@ -23,25 +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 = element.props.value ?? element.props.defaultValue ?? '';
|
|
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
33
|
// 3. Press backspace with selected text
|
|
34
|
-
const
|
|
34
|
+
const emptyText = '';
|
|
35
35
|
await (0, _type.emitTypingEvents)(element, {
|
|
36
36
|
config: this.config,
|
|
37
37
|
key: 'Backspace',
|
|
38
|
-
text:
|
|
39
|
-
previousText
|
|
38
|
+
text: emptyText
|
|
40
39
|
});
|
|
41
40
|
|
|
42
41
|
// 4. Exit element
|
|
43
42
|
await (0, _utils.wait)(this.config);
|
|
44
|
-
(0, _utils.dispatchEvent)(element, 'endEditing', _eventBuilder.EventBuilder.TextInput.endEditing(
|
|
43
|
+
(0, _utils.dispatchEvent)(element, 'endEditing', _eventBuilder.EventBuilder.TextInput.endEditing(emptyText));
|
|
45
44
|
(0, _utils.dispatchEvent)(element, 'blur', _eventBuilder.EventBuilder.Common.blur());
|
|
46
45
|
}
|
|
47
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","props","value","defaultValue","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 { 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 = element.props.value ?? element.props.defaultValue ?? '';\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,GAAGV,OAAO,CAACW,KAAK,CAACC,KAAK,IAAIZ,OAAO,CAACW,KAAK,CAACE,YAAY,IAAI,EAAE;EAC3E,MAAMC,cAAc,GAAG;IACrBC,KAAK,EAAE,CAAC;IACRC,GAAG,EAAEN,WAAW,CAACO;EACnB,CAAC;EACD,IAAAX,oBAAa,EAACN,OAAO,EAAE,iBAAiB,EAAEO,0BAAY,CAACW,SAAS,CAACC,eAAe,CAACL,cAAc,CAAC,CAAC;;EAEjG;EACA,MAAMM,SAAS,GAAG,EAAE;EACpB,MAAM,IAAAC,sBAAgB,EAACrB,OAAO,EAAE;IAC9BsB,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,IAAAhB,oBAAa,EAACN,OAAO,EAAE,YAAY,EAAEO,0BAAY,CAACW,SAAS,CAACQ,UAAU,CAACN,SAAS,CAAC,CAAC;EAClF,IAAAd,oBAAa,EAACN,OAAO,EAAE,MAAM,EAAEO,0BAAY,CAACC,MAAM,CAACmB,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("./scroll-view").ContentOffset, options?: import("./scroll-view").ScrollEventOptions
|
|
136
|
+
scroll: (offset?: import("./scroll-view").ContentOffset, options?: import("./scroll-view").ScrollEventOptions) => {
|
|
137
137
|
nativeEvent: {
|
|
138
138
|
contentInset: {
|
|
139
139
|
bottom: number;
|
|
@@ -279,31 +279,6 @@ export declare const EventBuilder: {
|
|
|
279
279
|
timeStamp?: number | undefined;
|
|
280
280
|
type?: string | undefined;
|
|
281
281
|
};
|
|
282
|
-
textInput: (text: string, previousText: string) => {
|
|
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
282
|
contentSizeChange: ({ width, height }: import("../utils").ContentSize) => {
|
|
308
283
|
nativeEvent: {
|
|
309
284
|
contentSize: {
|
|
@@ -128,36 +128,6 @@ 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}`
|
|
@@ -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 { ContentSize } from '../utils/content-size';\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 }: ContentSize) => {\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;EAAoB,CAAC,KAAK;IACrD,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,54 @@
|
|
|
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 _eventBuilder = require("./event-builder");
|
|
12
|
+
var _utils = require("./utils");
|
|
13
|
+
async function paste(element, text) {
|
|
14
|
+
if (!(0, _hostComponentNames.isHostTextInput)(element)) {
|
|
15
|
+
throw new _errors.ErrorWithStack(`paste() only supports host "TextInput" elements. Passed element has type: "${element.type}".`, paste);
|
|
16
|
+
}
|
|
17
|
+
if (!(0, _textInput.isTextInputEditable)(element) || !(0, _pointerEvents.isPointerEventEnabled)(element)) {
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
// 1. Enter element
|
|
22
|
+
(0, _utils.dispatchEvent)(element, 'focus', _eventBuilder.EventBuilder.Common.focus());
|
|
23
|
+
|
|
24
|
+
// 2. Select all
|
|
25
|
+
const textToClear = element.props.value ?? element.props.defaultValue ?? '';
|
|
26
|
+
const rangeToClear = {
|
|
27
|
+
start: 0,
|
|
28
|
+
end: textToClear.length
|
|
29
|
+
};
|
|
30
|
+
(0, _utils.dispatchEvent)(element, 'selectionChange', _eventBuilder.EventBuilder.TextInput.selectionChange(rangeToClear));
|
|
31
|
+
|
|
32
|
+
// 3. Paste the text
|
|
33
|
+
(0, _utils.dispatchEvent)(element, 'change', _eventBuilder.EventBuilder.TextInput.change(text));
|
|
34
|
+
(0, _utils.dispatchEvent)(element, 'changeText', text);
|
|
35
|
+
const rangeAfter = {
|
|
36
|
+
start: text.length,
|
|
37
|
+
end: text.length
|
|
38
|
+
};
|
|
39
|
+
(0, _utils.dispatchEvent)(element, 'selectionChange', _eventBuilder.EventBuilder.TextInput.selectionChange(rangeAfter));
|
|
40
|
+
|
|
41
|
+
// According to the docs only multiline TextInput emits contentSizeChange event
|
|
42
|
+
// @see: https://reactnative.dev/docs/textinput#oncontentsizechange
|
|
43
|
+
const isMultiline = element.props.multiline === true;
|
|
44
|
+
if (isMultiline) {
|
|
45
|
+
const contentSize = (0, _utils.getTextContentSize)(text);
|
|
46
|
+
(0, _utils.dispatchEvent)(element, 'contentSizeChange', _eventBuilder.EventBuilder.TextInput.contentSizeChange(contentSize));
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// 4. Exit element
|
|
50
|
+
await (0, _utils.wait)(this.config);
|
|
51
|
+
(0, _utils.dispatchEvent)(element, 'endEditing', _eventBuilder.EventBuilder.TextInput.endEditing(text));
|
|
52
|
+
(0, _utils.dispatchEvent)(element, 'blur', _eventBuilder.EventBuilder.Common.blur());
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=paste.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paste.js","names":["_errors","require","_hostComponentNames","_pointerEvents","_textInput","_eventBuilder","_utils","paste","element","text","isHostTextInput","ErrorWithStack","type","isTextInputEditable","isPointerEventEnabled","dispatchEvent","EventBuilder","Common","focus","textToClear","props","value","defaultValue","rangeToClear","start","end","length","TextInput","selectionChange","change","rangeAfter","isMultiline","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 { isTextInputEditable } from '../helpers/text-input';\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 = element.props.value ?? element.props.defaultValue ?? '';\n const rangeToClear = { start: 0, end: textToClear.length };\n dispatchEvent(element, 'selectionChange', EventBuilder.TextInput.selectionChange(rangeToClear));\n\n // 3. Paste the 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,aAAA,GAAAJ,OAAA;AAEA,IAAAK,MAAA,GAAAL,OAAA;AAEO,eAAeM,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,GAAGX,OAAO,CAACY,KAAK,CAACC,KAAK,IAAIb,OAAO,CAACY,KAAK,CAACE,YAAY,IAAI,EAAE;EAC3E,MAAMC,YAAY,GAAG;IAAEC,KAAK,EAAE,CAAC;IAAEC,GAAG,EAAEN,WAAW,CAACO;EAAO,CAAC;EAC1D,IAAAX,oBAAa,EAACP,OAAO,EAAE,iBAAiB,EAAEQ,0BAAY,CAACW,SAAS,CAACC,eAAe,CAACL,YAAY,CAAC,CAAC;;EAE/F;EACA,IAAAR,oBAAa,EAACP,OAAO,EAAE,QAAQ,EAAEQ,0BAAY,CAACW,SAAS,CAACE,MAAM,CAACpB,IAAI,CAAC,CAAC;EACrE,IAAAM,oBAAa,EAACP,OAAO,EAAE,YAAY,EAAEC,IAAI,CAAC;EAE1C,MAAMqB,UAAU,GAAG;IAAEN,KAAK,EAAEf,IAAI,CAACiB,MAAM;IAAED,GAAG,EAAEhB,IAAI,CAACiB;EAAO,CAAC;EAC3D,IAAAX,oBAAa,EAACP,OAAO,EAAE,iBAAiB,EAAEQ,0BAAY,CAACW,SAAS,CAACC,eAAe,CAACE,UAAU,CAAC,CAAC;;EAE7F;EACA;EACA,MAAMC,WAAW,GAAGvB,OAAO,CAACY,KAAK,CAACY,SAAS,KAAK,IAAI;EACpD,IAAID,WAAW,EAAE;IACf,MAAME,WAAW,GAAG,IAAAC,yBAAkB,EAACzB,IAAI,CAAC;IAC5C,IAAAM,oBAAa,EACXP,OAAO,EACP,mBAAmB,EACnBQ,0BAAY,CAACW,SAAS,CAACQ,iBAAiB,CAACF,WAAW,CACtD,CAAC;EACH;;EAEA;EACA,MAAM,IAAAG,WAAI,EAAC,IAAI,CAACC,MAAM,CAAC;EACvB,IAAAtB,oBAAa,EAACP,OAAO,EAAE,YAAY,EAAEQ,0BAAY,CAACW,SAAS,CAACW,UAAU,CAAC7B,IAAI,CAAC,CAAC;EAC7E,IAAAM,oBAAa,EAACP,OAAO,EAAE,MAAM,EAAEQ,0BAAY,CAACC,MAAM,CAACsB,IAAI,CAAC,CAAC,CAAC;AAC5D","ignoreList":[]}
|
|
@@ -13,7 +13,7 @@ var _hostComponentNames = require("../../helpers/host-component-names");
|
|
|
13
13
|
var _eventBuilder = require("../event-builder");
|
|
14
14
|
var _utils = require("../utils");
|
|
15
15
|
var _constants = require("./constants");
|
|
16
|
-
function _interopRequireDefault(
|
|
16
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
17
17
|
async function press(element) {
|
|
18
18
|
await basePress(this.config, element, {
|
|
19
19
|
type: 'press',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"press.js","names":["_act","_interopRequireDefault","require","_componentTree","_textInput","_pointerEvents","_hostComponentNames","_eventBuilder","_utils","_constants","
|
|
1
|
+
{"version":3,"file":"press.js","names":["_act","_interopRequireDefault","require","_componentTree","_textInput","_pointerEvents","_hostComponentNames","_eventBuilder","_utils","_constants","e","__esModule","default","press","element","basePress","config","type","duration","longPress","options","isPressableText","emitTextPressEvents","isHostTextInput","isTextInputEditable","isPointerEventEnabled","emitTextInputPressEvents","isEnabledTouchResponder","emitPressablePressEvents","hostParentElement","getHostParent","warnAboutRealTimersIfNeeded","wait","dispatchEvent","EventBuilder","Common","responderGrant","responderRelease","DEFAULT_MIN_PRESS_DURATION","act","props","onStartShouldSetResponder","hasPressEventHandler","Boolean","onPress","onLongPress","onPressIn","onPressOut","isHostText","disabled","touch"],"sources":["../../../src/user-event/press/press.ts"],"sourcesContent":["import { ReactTestInstance } from 'react-test-renderer';\nimport act from '../../act';\nimport { getHostParent } from '../../helpers/component-tree';\nimport { isTextInputEditable } from '../../helpers/text-input';\nimport { isPointerEventEnabled } from '../../helpers/pointer-events';\nimport { isHostText, isHostTextInput } from '../../helpers/host-component-names';\nimport { EventBuilder } from '../event-builder';\nimport { UserEventConfig, UserEventInstance } from '../setup';\nimport { dispatchEvent, wait, warnAboutRealTimersIfNeeded } from '../utils';\nimport { DEFAULT_MIN_PRESS_DURATION } from './constants';\n\nexport interface PressOptions {\n duration?: number;\n}\n\nexport async function press(this: UserEventInstance, element: ReactTestInstance): Promise<void> {\n await basePress(this.config, element, {\n type: 'press',\n duration: 0,\n });\n}\n\nexport async function longPress(\n this: UserEventInstance,\n element: ReactTestInstance,\n options?: PressOptions,\n): Promise<void> {\n await basePress(this.config, element, {\n type: 'longPress',\n duration: options?.duration ?? 500,\n });\n}\n\ninterface BasePressOptions {\n type: 'press' | 'longPress';\n duration: number;\n}\n\nconst basePress = async (\n config: UserEventConfig,\n element: ReactTestInstance,\n options: BasePressOptions,\n): Promise<void> => {\n if (isPressableText(element)) {\n await emitTextPressEvents(config, element, options);\n return;\n }\n\n if (isHostTextInput(element) && isTextInputEditable(element) && isPointerEventEnabled(element)) {\n await emitTextInputPressEvents(config, element, options);\n return;\n }\n\n if (isEnabledTouchResponder(element)) {\n await emitPressablePressEvents(config, element, options);\n return;\n }\n\n const hostParentElement = getHostParent(element);\n if (!hostParentElement) {\n return;\n }\n\n await basePress(config, hostParentElement, options);\n};\n\nconst emitPressablePressEvents = async (\n config: UserEventConfig,\n element: ReactTestInstance,\n options: BasePressOptions,\n) => {\n warnAboutRealTimersIfNeeded();\n\n await wait(config);\n\n dispatchEvent(element, 'responderGrant', EventBuilder.Common.responderGrant());\n\n await wait(config, options.duration);\n\n dispatchEvent(element, 'responderRelease', EventBuilder.Common.responderRelease());\n\n // React Native will wait for minimal delay of DEFAULT_MIN_PRESS_DURATION\n // before emitting the `pressOut` event. We need to wait here, so that\n // `press()` function does not return before that.\n if (DEFAULT_MIN_PRESS_DURATION - options.duration > 0) {\n await act(async () => {\n await wait(config, DEFAULT_MIN_PRESS_DURATION - options.duration);\n });\n }\n};\n\nconst isEnabledTouchResponder = (element: ReactTestInstance) => {\n return isPointerEventEnabled(element) && element.props.onStartShouldSetResponder?.();\n};\n\nconst isPressableText = (element: ReactTestInstance) => {\n const hasPressEventHandler = Boolean(\n element.props.onPress ||\n element.props.onLongPress ||\n element.props.onPressIn ||\n element.props.onPressOut,\n );\n\n return (\n isHostText(element) &&\n isPointerEventEnabled(element) &&\n !element.props.disabled &&\n hasPressEventHandler\n );\n};\n\n/**\n * Dispatches a press event sequence for Text.\n */\nasync function emitTextPressEvents(\n config: UserEventConfig,\n element: ReactTestInstance,\n options: BasePressOptions,\n) {\n await wait(config);\n dispatchEvent(element, 'pressIn', EventBuilder.Common.touch());\n\n // Emit either `press` or `longPress`.\n dispatchEvent(element, options.type, EventBuilder.Common.touch());\n\n await wait(config, options.duration);\n dispatchEvent(element, 'pressOut', EventBuilder.Common.touch());\n}\n\n/**\n * Dispatches a press event sequence for TextInput.\n */\nasync function emitTextInputPressEvents(\n config: UserEventConfig,\n element: ReactTestInstance,\n options: BasePressOptions,\n) {\n await wait(config);\n dispatchEvent(element, 'pressIn', EventBuilder.Common.touch());\n\n // Note: TextInput does not have `onPress`/`onLongPress` props.\n\n await wait(config, options.duration);\n dispatchEvent(element, 'pressOut', EventBuilder.Common.touch());\n}\n"],"mappings":"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","ignoreList":[]}
|