@testing-library/react-native 14.0.0-alpha.1 → 14.0.0-alpha.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -11
- package/build/act.d.ts +2 -4
- package/build/act.js +4 -5
- package/build/act.js.map +1 -1
- package/build/cleanup.d.ts +3 -1
- package/build/cleanup.js +8 -0
- package/build/cleanup.js.map +1 -1
- package/build/event-handler.d.ts +2 -2
- package/build/event-handler.js +10 -10
- package/build/event-handler.js.map +1 -1
- package/build/fire-event.d.ts +8 -1
- package/build/fire-event.js +44 -28
- package/build/fire-event.js.map +1 -1
- package/build/helpers/accessibility.js +5 -2
- package/build/helpers/accessibility.js.map +1 -1
- package/build/helpers/component-tree.d.ts +8 -8
- package/build/helpers/component-tree.js +19 -16
- package/build/helpers/component-tree.js.map +1 -1
- package/build/helpers/debug.d.ts +1 -1
- package/build/helpers/debug.js +6 -7
- package/build/helpers/debug.js.map +1 -1
- package/build/helpers/find-all.js +7 -27
- package/build/helpers/find-all.js.map +1 -1
- package/build/helpers/format-element.d.ts +3 -3
- package/build/helpers/format-element.js +9 -9
- package/build/helpers/format-element.js.map +1 -1
- package/build/helpers/host-component-names.d.ts +0 -1
- package/build/helpers/host-component-names.js +7 -9
- package/build/helpers/host-component-names.js.map +1 -1
- package/build/helpers/logger.d.ts +22 -0
- package/build/helpers/logger.js +13 -8
- package/build/helpers/logger.js.map +1 -1
- package/build/helpers/pointer-events.js +9 -5
- package/build/helpers/pointer-events.js.map +1 -1
- package/build/helpers/wrap-async.d.ts +0 -1
- package/build/helpers/wrap-async.js +0 -1
- package/build/helpers/wrap-async.js.map +1 -1
- package/build/index.d.ts +0 -1
- package/build/index.flow.js +5 -4
- package/build/index.js +1 -12
- package/build/index.js.map +1 -1
- package/build/matchers/to-be-empty-element.js +6 -3
- package/build/matchers/to-be-empty-element.js.map +1 -1
- package/build/matchers/to-be-visible.js +3 -3
- package/build/matchers/to-be-visible.js.map +1 -1
- package/build/matchers/to-contain-element.js +1 -2
- package/build/matchers/to-contain-element.js.map +1 -1
- package/build/matchers/to-have-style.js +1 -1
- package/build/matchers/to-have-style.js.map +1 -1
- package/build/matchers/utils.js +3 -2
- package/build/matchers/utils.js.map +1 -1
- package/build/pure.d.ts +7 -5
- package/build/pure.js +30 -4
- package/build/pure.js.map +1 -1
- package/build/queries/display-value.d.ts +1 -1
- package/build/queries/display-value.js +9 -9
- package/build/queries/display-value.js.map +1 -1
- package/build/queries/hint-text.d.ts +1 -1
- package/build/queries/hint-text.js +9 -9
- package/build/queries/hint-text.js.map +1 -1
- package/build/queries/label-text.d.ts +1 -1
- package/build/queries/label-text.js +9 -9
- package/build/queries/label-text.js.map +1 -1
- package/build/queries/make-queries.d.ts +2 -2
- package/build/queries/make-queries.js +11 -11
- package/build/queries/make-queries.js.map +1 -1
- package/build/queries/placeholder-text.d.ts +1 -1
- package/build/queries/placeholder-text.js +9 -9
- package/build/queries/placeholder-text.js.map +1 -1
- package/build/queries/role.d.ts +2 -2
- package/build/queries/role.js +16 -9
- package/build/queries/role.js.map +1 -1
- package/build/queries/test-id.d.ts +1 -1
- package/build/queries/test-id.js +9 -9
- package/build/queries/test-id.js.map +1 -1
- package/build/queries/text.d.ts +1 -1
- package/build/queries/text.js +9 -9
- package/build/queries/text.js.map +1 -1
- package/build/react-versions.js +1 -2
- package/build/react-versions.js.map +1 -1
- package/build/render-act.d.ts +3 -0
- package/build/render-act.js +29 -0
- package/build/render-act.js.map +1 -0
- package/build/render-async.d.ts +83 -0
- package/build/render-async.js +96 -0
- package/build/render-async.js.map +1 -0
- package/build/render-hook.d.ts +9 -7
- package/build/render-hook.js +44 -14
- package/build/render-hook.js.map +1 -1
- package/build/render.d.ts +87 -18
- package/build/render.js +54 -27
- package/build/render.js.map +1 -1
- package/build/screen.js +7 -7
- package/build/screen.js.map +1 -1
- package/build/test-utils/console.d.ts +1 -0
- package/build/test-utils/console.js +17 -0
- package/build/test-utils/console.js.map +1 -0
- package/build/test-utils/json.d.ts +6 -0
- package/build/test-utils/json.js +33 -0
- package/build/test-utils/json.js.map +1 -0
- package/build/tsconfig.release.tsbuildinfo +1 -1
- package/build/types.d.ts +4 -0
- package/build/types.js.map +1 -1
- package/build/user-event/clear.js +4 -4
- package/build/user-event/clear.js.map +1 -1
- package/build/user-event/paste.js +8 -8
- package/build/user-event/paste.js.map +1 -1
- package/build/user-event/press/press.js +17 -10
- package/build/user-event/press/press.js.map +1 -1
- package/build/user-event/scroll/scroll-to.js +7 -7
- package/build/user-event/scroll/scroll-to.js.map +1 -1
- package/build/user-event/type/type.js +11 -11
- package/build/user-event/type/type.js.map +1 -1
- package/build/user-event/utils/dispatch-event.d.ts +1 -1
- package/build/user-event/utils/dispatch-event.js +4 -4
- package/build/user-event/utils/dispatch-event.js.map +1 -1
- package/build/wait-for.js +3 -1
- package/build/wait-for.js.map +1 -1
- package/build/within.d.ts +19 -19
- package/build/within.js +8 -8
- package/build/within.js.map +1 -1
- package/package.json +37 -35
- package/typings/index.flow.js +5 -4
- package/build/test-utils/index.d.ts +0 -1
- package/build/test-utils/index.js +0 -17
- package/build/test-utils/index.js.map +0 -1
package/build/render.js
CHANGED
|
@@ -3,45 +3,46 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
6
|
+
exports.default = render;
|
|
7
|
+
exports.renderInternal = renderInternal;
|
|
7
8
|
var React = _interopRequireWildcard(require("react"));
|
|
8
|
-
var _universalTestRenderer = require("universal-test-renderer");
|
|
9
9
|
var _act = _interopRequireDefault(require("./act"));
|
|
10
10
|
var _cleanup = require("./cleanup");
|
|
11
11
|
var _config = require("./config");
|
|
12
12
|
var _debug = require("./helpers/debug");
|
|
13
|
-
var
|
|
13
|
+
var _renderAct = require("./render-act");
|
|
14
14
|
var _screen = require("./screen");
|
|
15
15
|
var _within = require("./within");
|
|
16
16
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
17
|
-
function
|
|
18
|
-
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; }
|
|
19
|
-
const createRootOptions = {
|
|
20
|
-
textComponents: _hostComponentNames.HOST_TEXT_NAMES
|
|
21
|
-
};
|
|
22
|
-
|
|
17
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
23
18
|
/**
|
|
24
19
|
* Renders test component deeply using React Test Renderer and exposes helpers
|
|
25
20
|
* to assert on the output.
|
|
26
21
|
*/
|
|
27
|
-
function render(
|
|
22
|
+
function render(component, options = {}) {
|
|
23
|
+
return renderInternal(component, options);
|
|
24
|
+
}
|
|
25
|
+
function renderInternal(component, options) {
|
|
28
26
|
const {
|
|
29
27
|
wrapper: Wrapper
|
|
30
28
|
} = options || {};
|
|
29
|
+
|
|
30
|
+
// TODO allow passing some options
|
|
31
|
+
const rendererOptions = {};
|
|
31
32
|
const wrap = element => Wrapper ? /*#__PURE__*/React.createElement(Wrapper, null, element) : element;
|
|
32
|
-
const renderer = (0,
|
|
33
|
-
...createRootOptions,
|
|
34
|
-
createNodeMock: options?.createNodeMock
|
|
35
|
-
});
|
|
36
|
-
void (0, _act.default)(() => {
|
|
37
|
-
renderer.render(wrap(element));
|
|
38
|
-
});
|
|
33
|
+
const renderer = (0, _renderAct.renderWithAct)(wrap(component), rendererOptions);
|
|
39
34
|
return buildRenderResult(renderer, wrap);
|
|
40
35
|
}
|
|
41
36
|
function buildRenderResult(renderer, wrap) {
|
|
42
|
-
const
|
|
37
|
+
const rerender = component => {
|
|
43
38
|
void (0, _act.default)(() => {
|
|
44
|
-
renderer.render(wrap(
|
|
39
|
+
renderer.render(wrap(component));
|
|
40
|
+
});
|
|
41
|
+
};
|
|
42
|
+
const rerenderAsync = async component => {
|
|
43
|
+
// eslint-disable-next-line require-await
|
|
44
|
+
await (0, _act.default)(async () => {
|
|
45
|
+
renderer.render(wrap(component));
|
|
45
46
|
});
|
|
46
47
|
};
|
|
47
48
|
const unmount = () => {
|
|
@@ -49,18 +50,44 @@ function buildRenderResult(renderer, wrap) {
|
|
|
49
50
|
renderer.unmount();
|
|
50
51
|
});
|
|
51
52
|
};
|
|
52
|
-
|
|
53
|
+
const unmountAsync = async () => {
|
|
54
|
+
// eslint-disable-next-line require-await
|
|
55
|
+
await (0, _act.default)(async () => {
|
|
56
|
+
renderer.unmount();
|
|
57
|
+
});
|
|
58
|
+
};
|
|
59
|
+
const toJSON = () => {
|
|
60
|
+
const json = renderer.container.toJSON();
|
|
61
|
+
if (json?.children?.length === 0) {
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
if (json?.children?.length === 1 && typeof json.children[0] !== 'string') {
|
|
65
|
+
return json.children[0];
|
|
66
|
+
}
|
|
67
|
+
return json;
|
|
68
|
+
};
|
|
69
|
+
(0, _cleanup.addToCleanupQueue)(unmountAsync);
|
|
53
70
|
const result = {
|
|
54
71
|
...(0, _within.getQueriesForElement)(renderer.container),
|
|
55
|
-
|
|
72
|
+
rerender,
|
|
73
|
+
rerenderAsync,
|
|
74
|
+
update: rerender,
|
|
75
|
+
// alias for 'rerender'
|
|
76
|
+
updateAsync: rerenderAsync,
|
|
77
|
+
// alias for `rerenderAsync`
|
|
56
78
|
unmount,
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
toJSON: () => renderer.root?.toJSON(),
|
|
79
|
+
unmountAsync,
|
|
80
|
+
toJSON,
|
|
60
81
|
debug: makeDebug(renderer),
|
|
61
|
-
container
|
|
82
|
+
get container() {
|
|
83
|
+
return renderer.container;
|
|
84
|
+
},
|
|
62
85
|
get root() {
|
|
63
|
-
|
|
86
|
+
const firstChild = renderer.container.children[0];
|
|
87
|
+
if (typeof firstChild === 'string') {
|
|
88
|
+
throw new Error('Invariant Violation: Root element must be a host element. Detected attempt to render a string within the root element.');
|
|
89
|
+
}
|
|
90
|
+
return firstChild;
|
|
64
91
|
}
|
|
65
92
|
};
|
|
66
93
|
(0, _screen.setRenderResult)(result);
|
|
@@ -75,7 +102,7 @@ function makeDebug(renderer) {
|
|
|
75
102
|
...defaultDebugOptions,
|
|
76
103
|
...options
|
|
77
104
|
};
|
|
78
|
-
const json = renderer.
|
|
105
|
+
const json = renderer.container.toJSON();
|
|
79
106
|
if (json) {
|
|
80
107
|
return (0, _debug.debug)(json, debugOptions);
|
|
81
108
|
}
|
package/build/render.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.js","names":["React","_interopRequireWildcard","require","
|
|
1
|
+
{"version":3,"file":"render.js","names":["React","_interopRequireWildcard","require","_act","_interopRequireDefault","_cleanup","_config","_debug","_renderAct","_screen","_within","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","render","component","options","renderInternal","wrapper","Wrapper","rendererOptions","wrap","element","createElement","renderer","renderWithAct","buildRenderResult","rerender","act","rerenderAsync","unmount","unmountAsync","toJSON","json","container","children","length","addToCleanupQueue","result","getQueriesForElement","update","updateAsync","debug","makeDebug","root","firstChild","Error","setRenderResult","debugImpl","defaultDebugOptions","getConfig","debugOptions"],"sources":["../src/render.tsx"],"sourcesContent":["import * as React from 'react';\nimport type { HostElement, JsonElement, Root, RootOptions } from 'universal-test-renderer';\n\nimport act from './act';\nimport { addToCleanupQueue } from './cleanup';\nimport { getConfig } from './config';\nimport type { DebugOptions } from './helpers/debug';\nimport { debug } from './helpers/debug';\nimport { renderWithAct } from './render-act';\nimport { setRenderResult } from './screen';\nimport { getQueriesForElement } from './within';\n\nexport interface RenderOptions {\n /**\n * Pass a React Component as the wrapper option to have it rendered around the inner element. This is most useful for creating\n * reusable custom render functions for common data providers.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n wrapper?: React.ComponentType<any>;\n\n createNodeMock?: (element: React.ReactElement) => unknown;\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 function renderInternal<T>(component: React.ReactElement<T>, options?: RenderOptions) {\n const { wrapper: Wrapper } = options || {};\n\n // TODO allow passing some options\n const rendererOptions: RootOptions = {};\n\n const wrap = (element: React.ReactElement) => (Wrapper ? <Wrapper>{element}</Wrapper> : element);\n const renderer = renderWithAct(wrap(component), rendererOptions);\n return buildRenderResult(renderer, wrap);\n}\n\nfunction buildRenderResult(\n renderer: Root,\n wrap: (element: React.ReactElement) => React.JSX.Element,\n) {\n const rerender = (component: React.ReactElement) => {\n void act(() => {\n renderer.render(wrap(component));\n });\n };\n const rerenderAsync = async (component: React.ReactElement) => {\n // eslint-disable-next-line require-await\n await act(async () => {\n renderer.render(wrap(component));\n });\n };\n\n const unmount = () => {\n void act(() => {\n renderer.unmount();\n });\n };\n const unmountAsync = async () => {\n // eslint-disable-next-line require-await\n await act(async () => {\n renderer.unmount();\n });\n };\n\n const toJSON = (): JsonElement | null => {\n const json = renderer.container.toJSON();\n if (json?.children?.length === 0) {\n return null;\n }\n\n if (json?.children?.length === 1 && typeof json.children[0] !== 'string') {\n return json.children[0];\n }\n\n return json;\n };\n\n addToCleanupQueue(unmountAsync);\n\n const result = {\n ...getQueriesForElement(renderer.container),\n rerender,\n rerenderAsync,\n update: rerender, // alias for 'rerender'\n updateAsync: rerenderAsync, // alias for `rerenderAsync`\n unmount,\n unmountAsync,\n toJSON,\n debug: makeDebug(renderer),\n get container(): HostElement {\n return renderer.container;\n },\n get root(): HostElement | null {\n const firstChild = renderer.container.children[0];\n if (typeof firstChild === 'string') {\n throw new Error(\n 'Invariant Violation: Root element must be a host element. Detected attempt to render a string within the root element.',\n );\n }\n\n return firstChild;\n },\n };\n\n setRenderResult(result);\n\n return result;\n}\n\nexport type DebugFunction = (options?: DebugOptions) => void;\n\nfunction makeDebug(renderer: Root): DebugFunction {\n function debugImpl(options?: DebugOptions) {\n const { defaultDebugOptions } = getConfig();\n const debugOptions = { ...defaultDebugOptions, ...options };\n const json = renderer.container.toJSON();\n if (json) {\n return debug(json, debugOptions);\n }\n }\n return debugImpl;\n}\n"],"mappings":"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","ignoreList":[]}
|
package/build/screen.js
CHANGED
|
@@ -10,21 +10,21 @@ const SCREEN_ERROR = '`render` method has not been called';
|
|
|
10
10
|
const notImplemented = () => {
|
|
11
11
|
throw new Error(SCREEN_ERROR);
|
|
12
12
|
};
|
|
13
|
-
const notImplementedDebug = () => {
|
|
14
|
-
throw new Error(SCREEN_ERROR);
|
|
15
|
-
};
|
|
16
13
|
const defaultScreen = {
|
|
17
14
|
isDetached: true,
|
|
18
|
-
get
|
|
15
|
+
get container() {
|
|
19
16
|
throw new Error(SCREEN_ERROR);
|
|
20
17
|
},
|
|
21
|
-
get
|
|
18
|
+
get root() {
|
|
22
19
|
throw new Error(SCREEN_ERROR);
|
|
23
20
|
},
|
|
24
|
-
debug:
|
|
21
|
+
debug: notImplemented,
|
|
22
|
+
rerender: notImplemented,
|
|
23
|
+
rerenderAsync: notImplemented,
|
|
25
24
|
update: notImplemented,
|
|
25
|
+
updateAsync: notImplemented,
|
|
26
26
|
unmount: notImplemented,
|
|
27
|
-
|
|
27
|
+
unmountAsync: notImplemented,
|
|
28
28
|
toJSON: notImplemented,
|
|
29
29
|
getByLabelText: notImplemented,
|
|
30
30
|
getAllByLabelText: notImplemented,
|
package/build/screen.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"screen.js","names":["SCREEN_ERROR","notImplemented","Error","
|
|
1
|
+
{"version":3,"file":"screen.js","names":["SCREEN_ERROR","notImplemented","Error","defaultScreen","isDetached","container","root","debug","rerender","rerenderAsync","update","updateAsync","unmount","unmountAsync","toJSON","getByLabelText","getAllByLabelText","queryByLabelText","queryAllByLabelText","findByLabelText","findAllByLabelText","getByHintText","getAllByHintText","queryByHintText","queryAllByHintText","findByHintText","findAllByHintText","getByA11yHint","getAllByA11yHint","queryByA11yHint","queryAllByA11yHint","findByA11yHint","findAllByA11yHint","getByAccessibilityHint","getAllByAccessibilityHint","queryByAccessibilityHint","queryAllByAccessibilityHint","findByAccessibilityHint","findAllByAccessibilityHint","getByRole","getAllByRole","queryByRole","queryAllByRole","findByRole","findAllByRole","getByPlaceholderText","getAllByPlaceholderText","queryByPlaceholderText","queryAllByPlaceholderText","findByPlaceholderText","findAllByPlaceholderText","getByDisplayValue","getAllByDisplayValue","queryByDisplayValue","queryAllByDisplayValue","findByDisplayValue","findAllByDisplayValue","getByTestId","getAllByTestId","queryByTestId","queryAllByTestId","findByTestId","findAllByTestId","getByText","getAllByText","queryByText","queryAllByText","findByText","findAllByText","screen","exports","setRenderResult","renderResult","clearRenderResult"],"sources":["../src/screen.ts"],"sourcesContent":["import type { HostElement } from 'universal-test-renderer';\n\nimport type { RenderResult } from './render';\n\nconst SCREEN_ERROR = '`render` method has not been called';\n\nconst notImplemented = () => {\n throw new Error(SCREEN_ERROR);\n};\n\ninterface Screen extends RenderResult {\n isDetached?: boolean;\n}\n\nconst defaultScreen: Screen = {\n isDetached: true,\n get container(): HostElement {\n throw new Error(SCREEN_ERROR);\n },\n get root(): HostElement | null {\n throw new Error(SCREEN_ERROR);\n },\n debug: notImplemented,\n rerender: notImplemented,\n rerenderAsync: notImplemented,\n update: notImplemented,\n updateAsync: notImplemented,\n unmount: notImplemented,\n unmountAsync: notImplemented,\n toJSON: notImplemented,\n getByLabelText: notImplemented,\n getAllByLabelText: notImplemented,\n queryByLabelText: notImplemented,\n queryAllByLabelText: notImplemented,\n findByLabelText: notImplemented,\n findAllByLabelText: notImplemented,\n getByHintText: notImplemented,\n getAllByHintText: notImplemented,\n queryByHintText: notImplemented,\n queryAllByHintText: notImplemented,\n findByHintText: notImplemented,\n findAllByHintText: notImplemented,\n getByA11yHint: notImplemented,\n getAllByA11yHint: notImplemented,\n queryByA11yHint: notImplemented,\n queryAllByA11yHint: notImplemented,\n findByA11yHint: notImplemented,\n findAllByA11yHint: notImplemented,\n getByAccessibilityHint: notImplemented,\n getAllByAccessibilityHint: notImplemented,\n queryByAccessibilityHint: notImplemented,\n queryAllByAccessibilityHint: notImplemented,\n findByAccessibilityHint: notImplemented,\n findAllByAccessibilityHint: notImplemented,\n getByRole: notImplemented,\n getAllByRole: notImplemented,\n queryByRole: notImplemented,\n queryAllByRole: notImplemented,\n findByRole: notImplemented,\n findAllByRole: notImplemented,\n getByPlaceholderText: notImplemented,\n getAllByPlaceholderText: notImplemented,\n queryByPlaceholderText: notImplemented,\n queryAllByPlaceholderText: notImplemented,\n findByPlaceholderText: notImplemented,\n findAllByPlaceholderText: notImplemented,\n getByDisplayValue: notImplemented,\n getAllByDisplayValue: notImplemented,\n queryByDisplayValue: notImplemented,\n queryAllByDisplayValue: notImplemented,\n findByDisplayValue: notImplemented,\n findAllByDisplayValue: notImplemented,\n getByTestId: notImplemented,\n getAllByTestId: notImplemented,\n queryByTestId: notImplemented,\n queryAllByTestId: notImplemented,\n findByTestId: notImplemented,\n findAllByTestId: notImplemented,\n getByText: notImplemented,\n getAllByText: notImplemented,\n queryByText: notImplemented,\n queryAllByText: notImplemented,\n findByText: notImplemented,\n findAllByText: notImplemented,\n};\n\nexport let screen: Screen = defaultScreen;\n\nexport function setRenderResult(renderResult: RenderResult) {\n screen = renderResult;\n}\n\nexport function clearRenderResult() {\n screen = defaultScreen;\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function excludeConsoleMessage(logFn: (...args: unknown[]) => void, excludeMessage: string): (...args: unknown[]) => void;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.excludeConsoleMessage = excludeConsoleMessage;
|
|
7
|
+
var _util = require("util");
|
|
8
|
+
function excludeConsoleMessage(logFn, excludeMessage) {
|
|
9
|
+
return (...args) => {
|
|
10
|
+
const message = (0, _util.format)(...args);
|
|
11
|
+
if (message.includes(excludeMessage)) {
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
logFn(...args);
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=console.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"console.js","names":["_util","require","excludeConsoleMessage","logFn","excludeMessage","args","message","format","includes"],"sources":["../../src/test-utils/console.ts"],"sourcesContent":["import { format } from 'util';\n\nexport function excludeConsoleMessage(logFn: (...args: unknown[]) => void, excludeMessage: string) {\n return (...args: unknown[]) => {\n const message = format(...args);\n if (message.includes(excludeMessage)) {\n return;\n }\n\n logFn(...args);\n };\n}\n"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AAEO,SAASC,qBAAqBA,CAACC,KAAmC,EAAEC,cAAsB,EAAE;EACjG,OAAO,CAAC,GAAGC,IAAe,KAAK;IAC7B,MAAMC,OAAO,GAAG,IAAAC,YAAM,EAAC,GAAGF,IAAI,CAAC;IAC/B,IAAIC,OAAO,CAACE,QAAQ,CAACJ,cAAc,CAAC,EAAE;MACpC;IACF;IAEAD,KAAK,CAAC,GAAGE,IAAI,CAAC;EAChB,CAAC;AACH","ignoreList":[]}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.mapJsonProps = mapJsonProps;
|
|
7
|
+
function mapJsonProps(node, mapper) {
|
|
8
|
+
if (Array.isArray(node)) {
|
|
9
|
+
return node.map(e => mapJsonProps(e, mapper));
|
|
10
|
+
}
|
|
11
|
+
if (!node || typeof node === 'string') {
|
|
12
|
+
return node;
|
|
13
|
+
}
|
|
14
|
+
const resultProps = {
|
|
15
|
+
...node.props
|
|
16
|
+
};
|
|
17
|
+
Object.keys(mapper).forEach(key => {
|
|
18
|
+
if (key in node.props) {
|
|
19
|
+
resultProps[key] = mapper[key];
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
// @ts-expect-error: TODO fix type
|
|
24
|
+
const resultElement = {
|
|
25
|
+
...node,
|
|
26
|
+
props: resultProps
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(resultElement, '$$typeof', {
|
|
29
|
+
value: Symbol.for('react.test.json')
|
|
30
|
+
});
|
|
31
|
+
return resultElement;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=json.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json.js","names":["mapJsonProps","node","mapper","Array","isArray","map","e","resultProps","props","Object","keys","forEach","key","resultElement","defineProperty","value","Symbol","for"],"sources":["../../src/test-utils/json.ts"],"sourcesContent":["import type { JsonNode } from 'universal-test-renderer';\n\ntype JsonPropsMapper = {\n [key: string]: unknown;\n};\n\nexport function mapJsonProps<T extends JsonNode | JsonNode[] | null>(\n node: T,\n mapper: JsonPropsMapper,\n): T {\n if (Array.isArray(node)) {\n return node.map((e) => mapJsonProps(e, mapper)) as T;\n }\n\n if (!node || typeof node === 'string') {\n return node;\n }\n\n const resultProps: Record<string, unknown> = { ...node.props };\n Object.keys(mapper).forEach((key) => {\n if (key in node.props) {\n resultProps[key] = mapper[key];\n }\n });\n\n // @ts-expect-error: TODO fix type\n const resultElement = { ...node, props: resultProps };\n Object.defineProperty(resultElement, '$$typeof', {\n value: Symbol.for('react.test.json'),\n });\n\n return resultElement;\n}\n"],"mappings":";;;;;;AAMO,SAASA,YAAYA,CAC1BC,IAAO,EACPC,MAAuB,EACpB;EACH,IAAIC,KAAK,CAACC,OAAO,CAACH,IAAI,CAAC,EAAE;IACvB,OAAOA,IAAI,CAACI,GAAG,CAAEC,CAAC,IAAKN,YAAY,CAACM,CAAC,EAAEJ,MAAM,CAAC,CAAC;EACjD;EAEA,IAAI,CAACD,IAAI,IAAI,OAAOA,IAAI,KAAK,QAAQ,EAAE;IACrC,OAAOA,IAAI;EACb;EAEA,MAAMM,WAAoC,GAAG;IAAE,GAAGN,IAAI,CAACO;EAAM,CAAC;EAC9DC,MAAM,CAACC,IAAI,CAACR,MAAM,CAAC,CAACS,OAAO,CAAEC,GAAG,IAAK;IACnC,IAAIA,GAAG,IAAIX,IAAI,CAACO,KAAK,EAAE;MACrBD,WAAW,CAACK,GAAG,CAAC,GAAGV,MAAM,CAACU,GAAG,CAAC;IAChC;EACF,CAAC,CAAC;;EAEF;EACA,MAAMC,aAAa,GAAG;IAAE,GAAGZ,IAAI;IAAEO,KAAK,EAAED;EAAY,CAAC;EACrDE,MAAM,CAACK,cAAc,CAACD,aAAa,EAAE,UAAU,EAAE;IAC/CE,KAAK,EAAEC,MAAM,CAACC,GAAG,CAAC,iBAAiB;EACrC,CAAC,CAAC;EAEF,OAAOJ,aAAa;AACtB","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"root":["../src/act.ts","../src/cleanup.ts","../src/config.ts","../src/event-handler.ts","../src/fire-event.ts","../src/flush-micro-tasks.ts","../src/index.ts","../src/matches.ts","../src/native-state.ts","../src/pure.ts","../src/react-versions.ts","../src/render-hook.tsx","../src/render.tsx","../src/screen.ts","../src/types.ts","../src/wait-for-element-to-be-removed.ts","../src/wait-for.ts","../src/within.ts","../src/helpers/accessibility.ts","../src/helpers/component-tree.ts","../src/helpers/debug.ts","../src/helpers/errors.ts","../src/helpers/find-all.ts","../src/helpers/format-element.ts","../src/helpers/host-component-names.ts","../src/helpers/logger.ts","../src/helpers/map-props.ts","../src/helpers/object.ts","../src/helpers/pointer-events.ts","../src/helpers/text-content.ts","../src/helpers/text-input.ts","../src/helpers/timers.ts","../src/helpers/wrap-async.ts","../src/helpers/matchers/match-accessibility-state.ts","../src/helpers/matchers/match-accessibility-value.ts","../src/helpers/matchers/match-array-prop.ts","../src/helpers/matchers/match-label-text.ts","../src/helpers/matchers/match-object-prop.ts","../src/helpers/matchers/match-string-prop.ts","../src/helpers/matchers/match-text-content.ts","../src/matchers/extend-expect.ts","../src/matchers/index.ts","../src/matchers/to-be-busy.ts","../src/matchers/to-be-checked.ts","../src/matchers/to-be-disabled.ts","../src/matchers/to-be-empty-element.ts","../src/matchers/to-be-expanded.ts","../src/matchers/to-be-on-the-screen.ts","../src/matchers/to-be-partially-checked.ts","../src/matchers/to-be-selected.ts","../src/matchers/to-be-visible.ts","../src/matchers/to-contain-element.ts","../src/matchers/to-have-accessibility-value.ts","../src/matchers/to-have-accessible-name.ts","../src/matchers/to-have-display-value.ts","../src/matchers/to-have-prop.ts","../src/matchers/to-have-style.ts","../src/matchers/to-have-text-content.ts","../src/matchers/types.ts","../src/matchers/utils.ts","../src/queries/display-value.ts","../src/queries/hint-text.ts","../src/queries/label-text.ts","../src/queries/make-queries.ts","../src/queries/options.ts","../src/queries/placeholder-text.ts","../src/queries/role.ts","../src/queries/test-id.ts","../src/queries/text.ts","../src/test-utils/events.ts","../src/test-utils/
|
|
1
|
+
{"root":["../src/act.ts","../src/cleanup.ts","../src/config.ts","../src/event-handler.ts","../src/fire-event.ts","../src/flush-micro-tasks.ts","../src/index.ts","../src/matches.ts","../src/native-state.ts","../src/pure.ts","../src/react-versions.ts","../src/render-act.ts","../src/render-async.tsx","../src/render-hook.tsx","../src/render.tsx","../src/screen.ts","../src/types.ts","../src/wait-for-element-to-be-removed.ts","../src/wait-for.ts","../src/within.ts","../src/helpers/accessibility.ts","../src/helpers/component-tree.ts","../src/helpers/debug.ts","../src/helpers/errors.ts","../src/helpers/find-all.ts","../src/helpers/format-element.ts","../src/helpers/host-component-names.ts","../src/helpers/logger.ts","../src/helpers/map-props.ts","../src/helpers/object.ts","../src/helpers/pointer-events.ts","../src/helpers/text-content.ts","../src/helpers/text-input.ts","../src/helpers/timers.ts","../src/helpers/wrap-async.ts","../src/helpers/matchers/match-accessibility-state.ts","../src/helpers/matchers/match-accessibility-value.ts","../src/helpers/matchers/match-array-prop.ts","../src/helpers/matchers/match-label-text.ts","../src/helpers/matchers/match-object-prop.ts","../src/helpers/matchers/match-string-prop.ts","../src/helpers/matchers/match-text-content.ts","../src/matchers/extend-expect.ts","../src/matchers/index.ts","../src/matchers/to-be-busy.ts","../src/matchers/to-be-checked.ts","../src/matchers/to-be-disabled.ts","../src/matchers/to-be-empty-element.ts","../src/matchers/to-be-expanded.ts","../src/matchers/to-be-on-the-screen.ts","../src/matchers/to-be-partially-checked.ts","../src/matchers/to-be-selected.ts","../src/matchers/to-be-visible.ts","../src/matchers/to-contain-element.ts","../src/matchers/to-have-accessibility-value.ts","../src/matchers/to-have-accessible-name.ts","../src/matchers/to-have-display-value.ts","../src/matchers/to-have-prop.ts","../src/matchers/to-have-style.ts","../src/matchers/to-have-text-content.ts","../src/matchers/types.ts","../src/matchers/utils.ts","../src/queries/display-value.ts","../src/queries/hint-text.ts","../src/queries/label-text.ts","../src/queries/make-queries.ts","../src/queries/options.ts","../src/queries/placeholder-text.ts","../src/queries/role.ts","../src/queries/test-id.ts","../src/queries/text.ts","../src/test-utils/console.ts","../src/test-utils/events.ts","../src/test-utils/json.ts","../src/user-event/clear.ts","../src/user-event/index.ts","../src/user-event/paste.ts","../src/user-event/event-builder/base.ts","../src/user-event/event-builder/common.ts","../src/user-event/event-builder/index.ts","../src/user-event/event-builder/scroll-view.ts","../src/user-event/event-builder/text-input.ts","../src/user-event/press/index.ts","../src/user-event/press/press.ts","../src/user-event/scroll/index.ts","../src/user-event/scroll/scroll-to.ts","../src/user-event/scroll/utils.ts","../src/user-event/setup/index.ts","../src/user-event/setup/setup.ts","../src/user-event/type/index.ts","../src/user-event/type/parse-keys.ts","../src/user-event/type/type.ts","../src/user-event/utils/content-size.ts","../src/user-event/utils/dispatch-event.ts","../src/user-event/utils/index.ts","../src/user-event/utils/text-range.ts","../src/user-event/utils/wait.ts"],"version":"5.9.3"}
|
package/build/types.d.ts
CHANGED
package/build/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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":[]}
|
|
1
|
+
{"version":3,"file":"types.js","names":[],"sources":["../src/types.ts"],"sourcesContent":["/** `RefObject` type from React 19. */\nexport type RefObject<T> = {\n current: T;\n};\n\n/**\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":[]}
|
|
@@ -20,7 +20,7 @@ async function clear(element) {
|
|
|
20
20
|
}
|
|
21
21
|
|
|
22
22
|
// 1. Enter element
|
|
23
|
-
(0, _utils.dispatchEvent)(element, 'focus', _eventBuilder.EventBuilder.Common.focus());
|
|
23
|
+
await (0, _utils.dispatchEvent)(element, 'focus', _eventBuilder.EventBuilder.Common.focus());
|
|
24
24
|
|
|
25
25
|
// 2. Select all
|
|
26
26
|
const textToClear = (0, _textInput.getTextInputValue)(element);
|
|
@@ -28,7 +28,7 @@ async function clear(element) {
|
|
|
28
28
|
start: 0,
|
|
29
29
|
end: textToClear.length
|
|
30
30
|
};
|
|
31
|
-
(0, _utils.dispatchEvent)(element, 'selectionChange', _eventBuilder.EventBuilder.TextInput.selectionChange(selectionRange));
|
|
31
|
+
await (0, _utils.dispatchEvent)(element, 'selectionChange', _eventBuilder.EventBuilder.TextInput.selectionChange(selectionRange));
|
|
32
32
|
|
|
33
33
|
// 3. Press backspace with selected text
|
|
34
34
|
const emptyText = '';
|
|
@@ -40,7 +40,7 @@ async function clear(element) {
|
|
|
40
40
|
|
|
41
41
|
// 4. Exit element
|
|
42
42
|
await (0, _utils.wait)(this.config);
|
|
43
|
-
(0, _utils.dispatchEvent)(element, 'endEditing', _eventBuilder.EventBuilder.TextInput.endEditing(emptyText));
|
|
44
|
-
(0, _utils.dispatchEvent)(element, 'blur', _eventBuilder.EventBuilder.Common.blur());
|
|
43
|
+
await (0, _utils.dispatchEvent)(element, 'endEditing', _eventBuilder.EventBuilder.TextInput.endEditing(emptyText));
|
|
44
|
+
await (0, _utils.dispatchEvent)(element, 'blur', _eventBuilder.EventBuilder.Common.blur());
|
|
45
45
|
}
|
|
46
46
|
//# sourceMappingURL=clear.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clear.js","names":["_errors","require","_hostComponentNames","_pointerEvents","_textInput","_eventBuilder","_type","_utils","clear","element","isHostTextInput","ErrorWithStack","type","isEditableTextInput","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 type { HostElement } from 'universal-test-renderer';\n\nimport { ErrorWithStack } from '../helpers/errors';\nimport { isHostTextInput } from '../helpers/host-component-names';\nimport { isPointerEventEnabled } from '../helpers/pointer-events';\nimport { getTextInputValue, isEditableTextInput } from '../helpers/text-input';\nimport { EventBuilder } from './event-builder';\nimport type { UserEventInstance } from './setup';\nimport { emitTypingEvents } from './type/type';\nimport { dispatchEvent, wait } from './utils';\n\nexport async function clear(this: UserEventInstance, element: HostElement): 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 (!isEditableTextInput(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
|
|
1
|
+
{"version":3,"file":"clear.js","names":["_errors","require","_hostComponentNames","_pointerEvents","_textInput","_eventBuilder","_type","_utils","clear","element","isHostTextInput","ErrorWithStack","type","isEditableTextInput","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 type { HostElement } from 'universal-test-renderer';\n\nimport { ErrorWithStack } from '../helpers/errors';\nimport { isHostTextInput } from '../helpers/host-component-names';\nimport { isPointerEventEnabled } from '../helpers/pointer-events';\nimport { getTextInputValue, isEditableTextInput } from '../helpers/text-input';\nimport { EventBuilder } from './event-builder';\nimport type { UserEventInstance } from './setup';\nimport { emitTypingEvents } from './type/type';\nimport { dispatchEvent, wait } from './utils';\n\nexport async function clear(this: UserEventInstance, element: HostElement): 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 (!isEditableTextInput(element) || !isPointerEventEnabled(element)) {\n return;\n }\n\n // 1. Enter element\n await 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 await dispatchEvent(\n element,\n 'selectionChange',\n EventBuilder.TextInput.selectionChange(selectionRange),\n );\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 await dispatchEvent(element, 'endEditing', EventBuilder.TextInput.endEditing(emptyText));\n await dispatchEvent(element, 'blur', EventBuilder.Common.blur());\n}\n"],"mappings":";;;;;;AAEA,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,KAAA,GAAAL,OAAA;AACA,IAAAM,MAAA,GAAAN,OAAA;AAEO,eAAeO,KAAKA,CAA0BC,OAAoB,EAAiB;EACxF,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,MAAM,IAAAM,oBAAa,EAACN,OAAO,EAAE,OAAO,EAAEO,0BAAY,CAACC,MAAM,CAACC,KAAK,CAAC,CAAC,CAAC;;EAElE;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,MAAM,IAAAT,oBAAa,EACjBN,OAAO,EACP,iBAAiB,EACjBO,0BAAY,CAACS,SAAS,CAACC,eAAe,CAACL,cAAc,CACvD,CAAC;;EAED;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,MAAM,IAAAd,oBAAa,EAACN,OAAO,EAAE,YAAY,EAAEO,0BAAY,CAACS,SAAS,CAACQ,UAAU,CAACN,SAAS,CAAC,CAAC;EACxF,MAAM,IAAAZ,oBAAa,EAACN,OAAO,EAAE,MAAM,EAAEO,0BAAY,CAACC,MAAM,CAACiB,IAAI,CAAC,CAAC,CAAC;AAClE","ignoreList":[]}
|
|
@@ -20,7 +20,7 @@ async function paste(element, text) {
|
|
|
20
20
|
}
|
|
21
21
|
|
|
22
22
|
// 1. Enter element
|
|
23
|
-
(0, _utils.dispatchEvent)(element, 'focus', _eventBuilder.EventBuilder.Common.focus());
|
|
23
|
+
await (0, _utils.dispatchEvent)(element, 'focus', _eventBuilder.EventBuilder.Common.focus());
|
|
24
24
|
|
|
25
25
|
// 2. Select all
|
|
26
26
|
const textToClear = (0, _textInput.getTextInputValue)(element);
|
|
@@ -28,29 +28,29 @@ async function paste(element, text) {
|
|
|
28
28
|
start: 0,
|
|
29
29
|
end: textToClear.length
|
|
30
30
|
};
|
|
31
|
-
(0, _utils.dispatchEvent)(element, 'selectionChange', _eventBuilder.EventBuilder.TextInput.selectionChange(rangeToClear));
|
|
31
|
+
await (0, _utils.dispatchEvent)(element, 'selectionChange', _eventBuilder.EventBuilder.TextInput.selectionChange(rangeToClear));
|
|
32
32
|
|
|
33
33
|
// 3. Paste the text
|
|
34
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);
|
|
35
|
+
await (0, _utils.dispatchEvent)(element, 'change', _eventBuilder.EventBuilder.TextInput.change(text));
|
|
36
|
+
await (0, _utils.dispatchEvent)(element, 'changeText', text);
|
|
37
37
|
const rangeAfter = {
|
|
38
38
|
start: text.length,
|
|
39
39
|
end: text.length
|
|
40
40
|
};
|
|
41
|
-
(0, _utils.dispatchEvent)(element, 'selectionChange', _eventBuilder.EventBuilder.TextInput.selectionChange(rangeAfter));
|
|
41
|
+
await (0, _utils.dispatchEvent)(element, 'selectionChange', _eventBuilder.EventBuilder.TextInput.selectionChange(rangeAfter));
|
|
42
42
|
|
|
43
43
|
// According to the docs only multiline TextInput emits contentSizeChange event
|
|
44
44
|
// @see: https://reactnative.dev/docs/textinput#oncontentsizechange
|
|
45
45
|
const isMultiline = element.props.multiline === true;
|
|
46
46
|
if (isMultiline) {
|
|
47
47
|
const contentSize = (0, _utils.getTextContentSize)(text);
|
|
48
|
-
(0, _utils.dispatchEvent)(element, 'contentSizeChange', _eventBuilder.EventBuilder.TextInput.contentSizeChange(contentSize));
|
|
48
|
+
await (0, _utils.dispatchEvent)(element, 'contentSizeChange', _eventBuilder.EventBuilder.TextInput.contentSizeChange(contentSize));
|
|
49
49
|
}
|
|
50
50
|
|
|
51
51
|
// 4. Exit element
|
|
52
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());
|
|
53
|
+
await (0, _utils.dispatchEvent)(element, 'endEditing', _eventBuilder.EventBuilder.TextInput.endEditing(text));
|
|
54
|
+
await (0, _utils.dispatchEvent)(element, 'blur', _eventBuilder.EventBuilder.Common.blur());
|
|
55
55
|
}
|
|
56
56
|
//# sourceMappingURL=paste.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paste.js","names":["_errors","require","_hostComponentNames","_pointerEvents","_textInput","_nativeState","_eventBuilder","_utils","paste","element","text","isHostTextInput","ErrorWithStack","type","isEditableTextInput","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 type { HostElement } from 'universal-test-renderer';\n\nimport { ErrorWithStack } from '../helpers/errors';\nimport { isHostTextInput } from '../helpers/host-component-names';\nimport { isPointerEventEnabled } from '../helpers/pointer-events';\nimport { getTextInputValue, isEditableTextInput } from '../helpers/text-input';\nimport { nativeState } from '../native-state';\nimport { EventBuilder } from './event-builder';\nimport type { UserEventInstance } from './setup';\nimport { dispatchEvent, getTextContentSize, wait } from './utils';\n\nexport async function paste(\n this: UserEventInstance,\n element: HostElement,\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 (!isEditableTextInput(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
|
|
1
|
+
{"version":3,"file":"paste.js","names":["_errors","require","_hostComponentNames","_pointerEvents","_textInput","_nativeState","_eventBuilder","_utils","paste","element","text","isHostTextInput","ErrorWithStack","type","isEditableTextInput","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 type { HostElement } from 'universal-test-renderer';\n\nimport { ErrorWithStack } from '../helpers/errors';\nimport { isHostTextInput } from '../helpers/host-component-names';\nimport { isPointerEventEnabled } from '../helpers/pointer-events';\nimport { getTextInputValue, isEditableTextInput } from '../helpers/text-input';\nimport { nativeState } from '../native-state';\nimport { EventBuilder } from './event-builder';\nimport type { UserEventInstance } from './setup';\nimport { dispatchEvent, getTextContentSize, wait } from './utils';\n\nexport async function paste(\n this: UserEventInstance,\n element: HostElement,\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 (!isEditableTextInput(element) || !isPointerEventEnabled(element)) {\n return;\n }\n\n // 1. Enter element\n await 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 await dispatchEvent(\n element,\n 'selectionChange',\n EventBuilder.TextInput.selectionChange(rangeToClear),\n );\n\n // 3. Paste the text\n nativeState.valueForElement.set(element, text);\n await dispatchEvent(element, 'change', EventBuilder.TextInput.change(text));\n await dispatchEvent(element, 'changeText', text);\n\n const rangeAfter = { start: text.length, end: text.length };\n await dispatchEvent(\n element,\n 'selectionChange',\n EventBuilder.TextInput.selectionChange(rangeAfter),\n );\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 await dispatchEvent(\n element,\n 'contentSizeChange',\n EventBuilder.TextInput.contentSizeChange(contentSize),\n );\n }\n\n // 4. Exit element\n await wait(this.config);\n await dispatchEvent(element, 'endEditing', EventBuilder.TextInput.endEditing(text));\n await dispatchEvent(element, 'blur', EventBuilder.Common.blur());\n}\n"],"mappings":";;;;;;AAEA,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,OAAoB,EACpBC,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,MAAM,IAAAO,oBAAa,EAACP,OAAO,EAAE,OAAO,EAAEQ,0BAAY,CAACC,MAAM,CAACC,KAAK,CAAC,CAAC,CAAC;;EAElE;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,MAAM,IAAAT,oBAAa,EACjBP,OAAO,EACP,iBAAiB,EACjBQ,0BAAY,CAACS,SAAS,CAACC,eAAe,CAACL,YAAY,CACrD,CAAC;;EAED;EACAM,wBAAW,CAACC,eAAe,CAACC,GAAG,CAACrB,OAAO,EAAEC,IAAI,CAAC;EAC9C,MAAM,IAAAM,oBAAa,EAACP,OAAO,EAAE,QAAQ,EAAEQ,0BAAY,CAACS,SAAS,CAACK,MAAM,CAACrB,IAAI,CAAC,CAAC;EAC3E,MAAM,IAAAM,oBAAa,EAACP,OAAO,EAAE,YAAY,EAAEC,IAAI,CAAC;EAEhD,MAAMsB,UAAU,GAAG;IAAET,KAAK,EAAEb,IAAI,CAACe,MAAM;IAAED,GAAG,EAAEd,IAAI,CAACe;EAAO,CAAC;EAC3D,MAAM,IAAAT,oBAAa,EACjBP,OAAO,EACP,iBAAiB,EACjBQ,0BAAY,CAACS,SAAS,CAACC,eAAe,CAACK,UAAU,CACnD,CAAC;;EAED;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,MAAM,IAAAM,oBAAa,EACjBP,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,MAAM,IAAAxB,oBAAa,EAACP,OAAO,EAAE,YAAY,EAAEQ,0BAAY,CAACS,SAAS,CAACe,UAAU,CAAC/B,IAAI,CAAC,CAAC;EACnF,MAAM,IAAAM,oBAAa,EAACP,OAAO,EAAE,MAAM,EAAEQ,0BAAY,CAACC,MAAM,CAACwB,IAAI,CAAC,CAAC,CAAC;AAClE","ignoreList":[]}
|
|
@@ -8,6 +8,8 @@ exports.longPress = longPress;
|
|
|
8
8
|
exports.press = press;
|
|
9
9
|
var _act = _interopRequireDefault(require("../../act"));
|
|
10
10
|
var _eventHandler = require("../../event-handler");
|
|
11
|
+
var _componentTree = require("../../helpers/component-tree");
|
|
12
|
+
var _errors = require("../../helpers/errors");
|
|
11
13
|
var _hostComponentNames = require("../../helpers/host-component-names");
|
|
12
14
|
var _pointerEvents = require("../../helpers/pointer-events");
|
|
13
15
|
var _eventBuilder = require("../event-builder");
|
|
@@ -18,11 +20,17 @@ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e
|
|
|
18
20
|
const DEFAULT_MIN_PRESS_DURATION = exports.DEFAULT_MIN_PRESS_DURATION = 130;
|
|
19
21
|
const DEFAULT_LONG_PRESS_DELAY_MS = exports.DEFAULT_LONG_PRESS_DELAY_MS = 500;
|
|
20
22
|
async function press(element) {
|
|
23
|
+
if (!(0, _componentTree.isHostElement)(element)) {
|
|
24
|
+
throw new _errors.ErrorWithStack(`press() works only with host elements.`, press);
|
|
25
|
+
}
|
|
21
26
|
await basePress(this.config, element, {
|
|
22
27
|
type: 'press'
|
|
23
28
|
});
|
|
24
29
|
}
|
|
25
30
|
async function longPress(element, options) {
|
|
31
|
+
if (!(0, _componentTree.isHostElement)(element)) {
|
|
32
|
+
throw new _errors.ErrorWithStack(`longPress() works only with host elements.`, longPress);
|
|
33
|
+
}
|
|
26
34
|
await basePress(this.config, element, {
|
|
27
35
|
type: 'longPress',
|
|
28
36
|
duration: options?.duration ?? DEFAULT_LONG_PRESS_DELAY_MS
|
|
@@ -37,11 +45,10 @@ const basePress = async (config, element, options) => {
|
|
|
37
45
|
await emitPressabilityPressEvents(config, element, options);
|
|
38
46
|
return;
|
|
39
47
|
}
|
|
40
|
-
|
|
41
|
-
if (!hostParentElement) {
|
|
48
|
+
if (!element.parent) {
|
|
42
49
|
return;
|
|
43
50
|
}
|
|
44
|
-
await basePress(config,
|
|
51
|
+
await basePress(config, element.parent, options);
|
|
45
52
|
};
|
|
46
53
|
function isEnabledHostElement(element) {
|
|
47
54
|
if (!(0, _pointerEvents.isPointerEventEnabled)(element)) {
|
|
@@ -59,7 +66,7 @@ function isEnabledTouchResponder(element) {
|
|
|
59
66
|
return (0, _pointerEvents.isPointerEventEnabled)(element) && element.props.onStartShouldSetResponder?.();
|
|
60
67
|
}
|
|
61
68
|
function hasPressEventHandler(element) {
|
|
62
|
-
return (0, _eventHandler.
|
|
69
|
+
return (0, _eventHandler.getEventHandlerFromProps)(element.props, 'press') || (0, _eventHandler.getEventHandlerFromProps)(element.props, 'longPress') || (0, _eventHandler.getEventHandlerFromProps)(element.props, 'pressIn') || (0, _eventHandler.getEventHandlerFromProps)(element.props, 'pressOut');
|
|
63
70
|
}
|
|
64
71
|
|
|
65
72
|
/**
|
|
@@ -67,29 +74,29 @@ function hasPressEventHandler(element) {
|
|
|
67
74
|
*/
|
|
68
75
|
async function emitDirectPressEvents(config, element, options) {
|
|
69
76
|
await (0, _utils.wait)(config);
|
|
70
|
-
(0, _utils.dispatchEvent)(element, 'pressIn', _eventBuilder.EventBuilder.Common.touch());
|
|
77
|
+
await (0, _utils.dispatchEvent)(element, 'pressIn', _eventBuilder.EventBuilder.Common.touch());
|
|
71
78
|
await (0, _utils.wait)(config, options.duration);
|
|
72
79
|
|
|
73
80
|
// Long press events are emitted before `pressOut`.
|
|
74
81
|
if (options.type === 'longPress') {
|
|
75
|
-
(0, _utils.dispatchEvent)(element, 'longPress', _eventBuilder.EventBuilder.Common.touch());
|
|
82
|
+
await (0, _utils.dispatchEvent)(element, 'longPress', _eventBuilder.EventBuilder.Common.touch());
|
|
76
83
|
}
|
|
77
|
-
(0, _utils.dispatchEvent)(element, 'pressOut', _eventBuilder.EventBuilder.Common.touch());
|
|
84
|
+
await (0, _utils.dispatchEvent)(element, 'pressOut', _eventBuilder.EventBuilder.Common.touch());
|
|
78
85
|
|
|
79
86
|
// Regular press events are emitted after `pressOut` according to the React Native docs.
|
|
80
87
|
// See: https://reactnative.dev/docs/pressable#onpress
|
|
81
88
|
// Experimentally for very short presses (< 130ms) `press` events are actually emitted before `onPressOut`, but
|
|
82
89
|
// we will ignore that as in reality most pressed would be above the 130ms threshold.
|
|
83
90
|
if (options.type === 'press') {
|
|
84
|
-
(0, _utils.dispatchEvent)(element, 'press', _eventBuilder.EventBuilder.Common.touch());
|
|
91
|
+
await (0, _utils.dispatchEvent)(element, 'press', _eventBuilder.EventBuilder.Common.touch());
|
|
85
92
|
}
|
|
86
93
|
}
|
|
87
94
|
async function emitPressabilityPressEvents(config, element, options) {
|
|
88
95
|
await (0, _utils.wait)(config);
|
|
89
|
-
(0, _utils.dispatchEvent)(element, 'responderGrant', _eventBuilder.EventBuilder.Common.responderGrant());
|
|
96
|
+
await (0, _utils.dispatchEvent)(element, 'responderGrant', _eventBuilder.EventBuilder.Common.responderGrant());
|
|
90
97
|
const duration = options.duration ?? DEFAULT_MIN_PRESS_DURATION;
|
|
91
98
|
await (0, _utils.wait)(config, duration);
|
|
92
|
-
(0, _utils.dispatchEvent)(element, 'responderRelease', _eventBuilder.EventBuilder.Common.responderRelease());
|
|
99
|
+
await (0, _utils.dispatchEvent)(element, 'responderRelease', _eventBuilder.EventBuilder.Common.responderRelease());
|
|
93
100
|
|
|
94
101
|
// React Native will wait for minimal delay of DEFAULT_MIN_PRESS_DURATION
|
|
95
102
|
// before emitting the `pressOut` event. We need to wait here, so that
|