@multiplatform.one/test-utils 7.83.0 → 7.83.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,79 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all) __defProp(target, name, {
7
+ get: all[name],
8
+ enumerable: true
9
+ });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
14
+ get: () => from[key],
15
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
16
+ });
17
+ }
18
+ return to;
19
+ };
20
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
21
+ value: true
22
+ }), mod);
23
+ var frames_exports = {};
24
+ __export(frames_exports, {
25
+ createAnimationFrames: () => createAnimationFrames,
26
+ holdAnimationFrames: () => holdAnimationFrames
27
+ });
28
+ module.exports = __toCommonJS(frames_exports);
29
+ var import_vitest = require("vitest");
30
+ function createAnimationFrames() {
31
+ const pending = /* @__PURE__ */new Map();
32
+ let last = 0;
33
+ let closed = false;
34
+ return {
35
+ request(callback) {
36
+ last += 1;
37
+ const handle = last;
38
+ if (closed) return handle;
39
+ pending.set(handle, setTimeout(() => {
40
+ if (pending.delete(handle)) callback(performance.now());
41
+ }, 0));
42
+ return handle;
43
+ },
44
+ cancel(handle) {
45
+ clearTimeout(pending.get(handle));
46
+ pending.delete(handle);
47
+ },
48
+ close() {
49
+ closed = true;
50
+ for (const timer of pending.values()) clearTimeout(timer);
51
+ pending.clear();
52
+ }
53
+ };
54
+ }
55
+ function holdAnimationFrames() {
56
+ const pending = /* @__PURE__ */new Map();
57
+ let last = 0;
58
+ import_vitest.vi.stubGlobal("requestAnimationFrame", callback => {
59
+ last += 1;
60
+ pending.set(last, callback);
61
+ return last;
62
+ });
63
+ import_vitest.vi.stubGlobal("cancelAnimationFrame", handle => {
64
+ pending.delete(handle);
65
+ });
66
+ return {
67
+ get pending() {
68
+ return pending.size;
69
+ },
70
+ flush() {
71
+ for (const handle of [...pending.keys()]) {
72
+ const callback = pending.get(handle);
73
+ if (!callback) continue;
74
+ pending.delete(handle);
75
+ callback(performance.now());
76
+ }
77
+ }
78
+ };
79
+ }
@@ -0,0 +1,104 @@
1
+ "use strict";
2
+
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all) __defProp(target, name, {
9
+ get: all[name],
10
+ enumerable: true
11
+ });
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
16
+ get: () => from[key],
17
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
18
+ });
19
+ }
20
+ return to;
21
+ };
22
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
23
+ value: true
24
+ }), mod);
25
+ var frames_exports = {};
26
+ __export(frames_exports, {
27
+ createAnimationFrames: () => createAnimationFrames,
28
+ holdAnimationFrames: () => holdAnimationFrames
29
+ });
30
+ module.exports = __toCommonJS(frames_exports);
31
+ var import_vitest = require("vitest");
32
+ function createAnimationFrames() {
33
+ var pending = /* @__PURE__ */new Map();
34
+ var last = 0;
35
+ var closed = false;
36
+ return {
37
+ request(callback) {
38
+ last += 1;
39
+ var handle = last;
40
+ if (closed) return handle;
41
+ pending.set(handle, setTimeout(function () {
42
+ if (pending.delete(handle)) callback(performance.now());
43
+ }, 0));
44
+ return handle;
45
+ },
46
+ cancel(handle) {
47
+ clearTimeout(pending.get(handle));
48
+ pending.delete(handle);
49
+ },
50
+ close() {
51
+ closed = true;
52
+ var _iteratorNormalCompletion = true,
53
+ _didIteratorError = false,
54
+ _iteratorError = void 0;
55
+ try {
56
+ for (var _iterator = pending.values()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
57
+ var timer = _step.value;
58
+ clearTimeout(timer);
59
+ }
60
+ } catch (err) {
61
+ _didIteratorError = true;
62
+ _iteratorError = err;
63
+ } finally {
64
+ try {
65
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
66
+ _iterator.return();
67
+ }
68
+ } finally {
69
+ if (_didIteratorError) {
70
+ throw _iteratorError;
71
+ }
72
+ }
73
+ }
74
+ pending.clear();
75
+ }
76
+ };
77
+ }
78
+ function holdAnimationFrames() {
79
+ var pending = /* @__PURE__ */new Map();
80
+ var last = 0;
81
+ import_vitest.vi.stubGlobal("requestAnimationFrame", function (callback) {
82
+ last += 1;
83
+ pending.set(last, callback);
84
+ return last;
85
+ });
86
+ import_vitest.vi.stubGlobal("cancelAnimationFrame", function (handle) {
87
+ pending.delete(handle);
88
+ });
89
+ return {
90
+ get pending() {
91
+ return pending.size;
92
+ },
93
+ flush() {
94
+ for (var _i = 0, _iter = [...pending.keys()]; _i < _iter.length; _i++) {
95
+ var handle = _iter[_i];
96
+ var callback = pending.get(handle);
97
+ if (!callback) continue;
98
+ pending.delete(handle);
99
+ callback(performance.now());
100
+ }
101
+ }
102
+ };
103
+ }
104
+ //# sourceMappingURL=frames.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__defProp","Object","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toCommonJS","mod","value","frames_exports","createAnimationFrames","holdAnimationFrames","module","exports","import_vitest","require","pending","Map","last","closed","request","callback","handle","set","setTimeout","delete","performance","now","cancel","clearTimeout","close","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","values","Symbol","iterator","_step","next","done","timer","err","return","clear","vi","stubGlobal","size","flush","_i","_iter","keys","length"],"sources":["frames.native.js"],"sourcesContent":["\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar frames_exports = {};\n__export(frames_exports, {\n createAnimationFrames: () => createAnimationFrames,\n holdAnimationFrames: () => holdAnimationFrames\n});\nmodule.exports = __toCommonJS(frames_exports);\nvar import_vitest = require(\"vitest\");\nfunction createAnimationFrames() {\n var pending = /* @__PURE__ */ new Map();\n var last = 0;\n var closed = false;\n return {\n request(callback) {\n last += 1;\n var handle = last;\n if (closed) return handle;\n pending.set(handle, setTimeout(function() {\n if (pending.delete(handle)) callback(performance.now());\n }, 0));\n return handle;\n },\n cancel(handle) {\n clearTimeout(pending.get(handle));\n pending.delete(handle);\n },\n close() {\n closed = true;\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = pending.values()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var timer = _step.value;\n clearTimeout(timer);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n pending.clear();\n }\n };\n}\nfunction holdAnimationFrames() {\n var pending = /* @__PURE__ */ new Map();\n var last = 0;\n import_vitest.vi.stubGlobal(\"requestAnimationFrame\", function(callback) {\n last += 1;\n pending.set(last, callback);\n return last;\n });\n import_vitest.vi.stubGlobal(\"cancelAnimationFrame\", function(handle) {\n pending.delete(handle);\n });\n return {\n get pending() {\n return pending.size;\n },\n flush() {\n for (var _i = 0, _iter = [\n ...pending.keys()\n ]; _i < _iter.length; _i++) {\n var handle = _iter[_i];\n var callback = pending.get(handle);\n if (!callback) continue;\n pending.delete(handle);\n callback(performance.now());\n }\n }\n };\n}\n//# sourceMappingURL=frames.js.map\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,289 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all) __defProp(target, name, {
7
+ get: all[name],
8
+ enumerable: true
9
+ });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
14
+ get: () => from[key],
15
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
16
+ });
17
+ }
18
+ return to;
19
+ };
20
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
21
+ value: true
22
+ }), mod);
23
+ var index_exports = {};
24
+ __export(index_exports, {
25
+ TestProviders: () => TestProviders,
26
+ act: () => import_react2.act,
27
+ afterEach: () => import_vitest.afterEach,
28
+ beforeEach: () => import_vitest.beforeEach,
29
+ createFixture: () => createFixture,
30
+ createMemoryCookies: () => createMemoryCookies,
31
+ describe: () => import_vitest.describe,
32
+ expect: () => import_vitest.expect,
33
+ findTextInContainer: () => findTextInContainer,
34
+ fireEvent: () => import_react2.fireEvent,
35
+ it: () => import_vitest.it,
36
+ modelFirstFocusableShow: () => modelFirstFocusableShow,
37
+ render: () => import_react2.render,
38
+ renderWithProviders: () => renderWithProviders,
39
+ screen: () => import_react2.screen,
40
+ vi: () => import_vitest.vi,
41
+ waitFor: () => import_react2.waitFor,
42
+ waitForElement: () => waitForElement,
43
+ within: () => import_react2.within
44
+ });
45
+ module.exports = __toCommonJS(index_exports);
46
+ var import_config = require("@tamagui/config");
47
+ var import_v5_css = require("@tamagui/config/v5-css");
48
+ var import_react = require("@testing-library/react");
49
+ var import_tamagui = require("tamagui");
50
+ var import_react_query = require("@tanstack/react-query");
51
+ var import_react_cookie = require("react-cookie");
52
+ var import_react2 = require("@testing-library/react");
53
+ var import_vitest = require("vitest");
54
+ var import_jsx_runtime = require("react/jsx-runtime");
55
+ const tamaguiConfig = (() => {
56
+ try {
57
+ const {
58
+ createTamagui
59
+ } = require("tamagui");
60
+ return createTamagui({
61
+ ...import_config.configWithoutAnimations,
62
+ animations: import_v5_css.animationsCSS
63
+ });
64
+ } catch {
65
+ return import_config.configWithoutAnimations;
66
+ }
67
+ })();
68
+ function createDefaultQueryClient() {
69
+ return new import_react_query.QueryClient({
70
+ defaultOptions: {
71
+ queries: {
72
+ retry: false,
73
+ gcTime: 0
74
+ },
75
+ mutations: {
76
+ retry: false
77
+ }
78
+ }
79
+ });
80
+ }
81
+ function createMemoryCookies(initial = {}) {
82
+ const jar = new import_react_cookie.Cookies(initial);
83
+ Reflect.set(jar, "HAS_DOCUMENT_COOKIE", false);
84
+ return jar;
85
+ }
86
+ function enhanceRenderResult(result) {
87
+ const container = result.container;
88
+ return {
89
+ ...result,
90
+ getInput: name => {
91
+ if (name) {
92
+ return container.querySelector(`input[name="${name}"]`) || container.querySelector(`input[aria-label*="${name}"]`) || container.querySelector('input[type="text"]') || container.querySelector("input:not([type])");
93
+ }
94
+ return container.querySelector('input[type="text"]') || container.querySelector("input:not([type])") || container.querySelector("input");
95
+ },
96
+ getAllInputs: () => Array.from(container.querySelectorAll('input[type="text"], input:not([type]), input')),
97
+ getButton: text => {
98
+ const buttons = Array.from(container.querySelectorAll("button"));
99
+ for (const btn of buttons) {
100
+ if (btn && typeof btn.getAttribute !== "function" && Element.prototype.getAttribute) {
101
+ btn.getAttribute = Element.prototype.getAttribute.bind(btn);
102
+ }
103
+ }
104
+ const nativeButton = buttons.find(btn => btn.textContent?.includes(text) || btn.getAttribute("aria-label")?.includes(text));
105
+ if (nativeButton) return nativeButton;
106
+ const roleButtons = Array.from(container.querySelectorAll('[role="button"]'));
107
+ for (const btn of roleButtons) {
108
+ if (btn && typeof btn.getAttribute !== "function" && Element.prototype.getAttribute) {
109
+ btn.getAttribute = Element.prototype.getAttribute.bind(btn);
110
+ }
111
+ }
112
+ return roleButtons.find(btn => btn.textContent?.includes(text) || btn.getAttribute("aria-label")?.includes(text));
113
+ },
114
+ getSubmitButton: () => {
115
+ const submitByType = container.querySelector('button[type="submit"]');
116
+ if (submitByType) return submitByType;
117
+ const roleButtonByText = Array.from(container.querySelectorAll('[role="button"]')).find(btn => btn.textContent?.toLowerCase().includes("submit"));
118
+ if (roleButtonByText) return roleButtonByText;
119
+ const submitByText = Array.from(container.querySelectorAll("button")).find(btn => btn.textContent?.toLowerCase().includes("submit"));
120
+ if (submitByText) return submitByText;
121
+ const buttonByType = Array.from(container.querySelectorAll('button[type="button"]')).find(btn => !btn.getAttribute("role") || btn.getAttribute("role") === "button");
122
+ if (buttonByType) return buttonByType;
123
+ const anyButton = Array.from(container.querySelectorAll("button")).find(btn => !btn.getAttribute("role") || btn.getAttribute("role") === "button");
124
+ if (anyButton) return anyButton;
125
+ return container.querySelector('[role="button"]');
126
+ },
127
+ findTextElement: text => {
128
+ try {
129
+ const containerQueries = (0, import_react.within)(container);
130
+ return containerQueries.queryByText(text, {
131
+ exact: false
132
+ }) || void 0;
133
+ } catch {
134
+ const allElements = Array.from(container.querySelectorAll("*"));
135
+ return allElements.find(el => el.textContent?.includes(text));
136
+ }
137
+ },
138
+ getTextArea: name => {
139
+ if (name) {
140
+ return container.querySelector(`textarea[name="${name}"]`) || container.querySelector(`textarea[aria-label*="${name}"]`) || container.querySelector("textarea");
141
+ }
142
+ return container.querySelector("textarea");
143
+ },
144
+ getCheckbox: name => {
145
+ if (name) {
146
+ return container.querySelector(`[role="checkbox"][aria-labelledby*="${name}"]`) || container.querySelector(`input[type="checkbox"][name="${name}"]`);
147
+ }
148
+ return container.querySelector('[role="checkbox"]') || container.querySelector('input[type="checkbox"]');
149
+ },
150
+ getRadio: value => {
151
+ if (value) {
152
+ return container.querySelector(`input[type="radio"][value="${value}"]`) || container.querySelector(`[role="radio"][aria-label*="${value}"]`);
153
+ }
154
+ return container.querySelector('input[type="radio"]') || container.querySelector('[role="radio"]');
155
+ },
156
+ getSelect: name => {
157
+ if (name) {
158
+ return container.querySelector(`select[name="${name}"]`) || container.querySelector(`[role="combobox"][aria-label*="${name}"]`);
159
+ }
160
+ return container.querySelector("select") || container.querySelector('[role="combobox"]');
161
+ },
162
+ getSlider: name => {
163
+ if (name) {
164
+ return container.querySelector(`[role="slider"][aria-label*="${name}"]`) || container.querySelector(`input[type="range"][name="${name}"]`);
165
+ }
166
+ return container.querySelector('[role="slider"]') || container.querySelector('input[type="range"]');
167
+ },
168
+ getSwitch: name => {
169
+ if (name) {
170
+ return container.querySelector(`[role="switch"][aria-label*="${name}"]`) || container.querySelector(`input[type="checkbox"][name="${name}"]`);
171
+ }
172
+ return container.querySelector('[role="switch"]') || container.querySelector('input[type="checkbox"]');
173
+ },
174
+ getLabel: text => {
175
+ return container.querySelector("label")?.textContent?.includes(text) ? container.querySelector("label") : Array.from(container.querySelectorAll('[role="label"], [aria-label]')).find(el => el.textContent?.includes(text) || el.getAttribute("aria-label")?.includes(text));
176
+ },
177
+ getError: () => {
178
+ return container.querySelector('[role="alert"]') || container.querySelector('[aria-live="polite"]') || Array.from(container.querySelectorAll("*")).find(el => (el.className?.includes("error") || el.className?.includes("Error")) && el.textContent);
179
+ }
180
+ };
181
+ }
182
+ function TestProviders({
183
+ children
184
+ }) {
185
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.TamaguiProvider, {
186
+ config: tamaguiConfig,
187
+ defaultTheme: "light",
188
+ disableInjectCSS: true,
189
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.YStack, {
190
+ flex: 1,
191
+ backgroundColor: "$background",
192
+ children
193
+ })
194
+ });
195
+ }
196
+ function renderWithProviders(ui, options = {}) {
197
+ const {
198
+ tamagui = true,
199
+ queryClient = true,
200
+ cookies = true,
201
+ theme: _theme = false,
202
+ frappe: _frappe = false,
203
+ keycloak: _keycloak = false,
204
+ ...renderOptions
205
+ } = options;
206
+ const jar = cookies === false ? void 0 : typeof cookies === "object" ? cookies : createMemoryCookies();
207
+ function Wrapper({
208
+ children
209
+ }) {
210
+ let content = children;
211
+ if (queryClient) {
212
+ const client = queryClient instanceof import_react_query.QueryClient ? queryClient : createDefaultQueryClient();
213
+ content = /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_react_query.QueryClientProvider, {
214
+ client,
215
+ children: content
216
+ });
217
+ }
218
+ if (jar) {
219
+ content = /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_react_cookie.CookiesProvider, {
220
+ cookies: jar,
221
+ children: content
222
+ });
223
+ }
224
+ if (tamagui) {
225
+ content = /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.TamaguiProvider, {
226
+ config: tamaguiConfig,
227
+ defaultTheme: "light",
228
+ disableInjectCSS: true,
229
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.YStack, {
230
+ flex: 1,
231
+ backgroundColor: "$background",
232
+ children: content
233
+ })
234
+ });
235
+ }
236
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, {
237
+ children: content
238
+ });
239
+ }
240
+ const result = (0, import_react.render)(ui, {
241
+ wrapper: Wrapper,
242
+ ...renderOptions
243
+ });
244
+ return enhanceRenderResult(result);
245
+ }
246
+ function findTextInContainer(container, text) {
247
+ const elements = container.querySelectorAll("*");
248
+ for (let i = 0; i < elements.length; i++) {
249
+ const element = elements[i];
250
+ if (element.textContent?.includes(text)) {
251
+ return element;
252
+ }
253
+ }
254
+ return null;
255
+ }
256
+ async function waitForElement(getFn, timeout = 3e3) {
257
+ const startTime = Date.now();
258
+ while (Date.now() - startTime < timeout) {
259
+ const element = getFn();
260
+ if (element) return element;
261
+ await new Promise(resolve => setTimeout(resolve, 50));
262
+ }
263
+ throw new Error("Element not found within timeout");
264
+ }
265
+ function modelFirstFocusableShow() {
266
+ const proto = HTMLDialogElement.prototype;
267
+ const original = Object.getOwnPropertyDescriptor(proto, "show");
268
+ proto.show = function show() {
269
+ this.setAttribute("open", "");
270
+ const first = Array.from(this.querySelectorAll("*")).find(el => el.hasAttribute("tabindex") || el.matches("input, button, select, textarea, a[href]") && !el.disabled);
271
+ first?.focus();
272
+ };
273
+ return () => {
274
+ if (original) Object.defineProperty(proto, "show", original);else delete proto.show;
275
+ };
276
+ }
277
+ function createFixture(doctype, overrides) {
278
+ const suffix = Math.random().toString(36).substring(2, 6);
279
+ const base = {
280
+ name: `${doctype}-${suffix}`
281
+ };
282
+ if (overrides) {
283
+ return {
284
+ ...base,
285
+ ...overrides
286
+ };
287
+ }
288
+ return base;
289
+ }