@mui/internal-test-utils 1.0.0-dev.20240529-082515-213b5e33ab
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/CHANGELOG.md +5 -0
- package/LICENSE +21 -0
- package/README.md +9 -0
- package/build/.tsbuildinfo +1 -0
- package/build/KarmaReporterReactProfiler.d.ts +51 -0
- package/build/KarmaReporterReactProfiler.d.ts.map +1 -0
- package/build/KarmaReporterReactProfiler.js +68 -0
- package/build/KarmaReporterReactProfiler.js.map +1 -0
- package/build/components.d.ts +36 -0
- package/build/components.d.ts.map +1 -0
- package/build/components.js +78 -0
- package/build/components.js.map +1 -0
- package/build/createDOM.d.ts +3 -0
- package/build/createDOM.d.ts.map +1 -0
- package/build/createDOM.js +60 -0
- package/build/createDOM.js.map +1 -0
- package/build/createDescribe.d.ts +8 -0
- package/build/createDescribe.d.ts.map +1 -0
- package/build/createDescribe.js +22 -0
- package/build/createDescribe.js.map +1 -0
- package/build/createMount.d.ts +9 -0
- package/build/createMount.d.ts.map +1 -0
- package/build/createMount.js +120 -0
- package/build/createMount.js.map +1 -0
- package/build/createRenderer.d.ts +231 -0
- package/build/createRenderer.d.ts.map +1 -0
- package/build/createRenderer.js +506 -0
- package/build/createRenderer.js.map +1 -0
- package/build/createRenderer.test.d.ts +2 -0
- package/build/createRenderer.test.d.ts.map +1 -0
- package/build/createRenderer.test.js +48 -0
- package/build/createRenderer.test.js.map +1 -0
- package/build/describeConformance.d.ts +152 -0
- package/build/describeConformance.d.ts.map +1 -0
- package/build/describeConformance.js +815 -0
- package/build/describeConformance.js.map +1 -0
- package/build/findOutermostIntrinsic.d.ts +14 -0
- package/build/findOutermostIntrinsic.d.ts.map +1 -0
- package/build/findOutermostIntrinsic.js +22 -0
- package/build/findOutermostIntrinsic.js.map +1 -0
- package/build/findOutermostIntrinsic.test.d.ts +2 -0
- package/build/findOutermostIntrinsic.test.d.ts.map +1 -0
- package/build/findOutermostIntrinsic.test.js +70 -0
- package/build/findOutermostIntrinsic.test.js.map +1 -0
- package/build/fireDiscreteEvent.d.ts +7 -0
- package/build/fireDiscreteEvent.d.ts.map +1 -0
- package/build/fireDiscreteEvent.js +98 -0
- package/build/fireDiscreteEvent.js.map +1 -0
- package/build/flushMicrotasks.d.ts +2 -0
- package/build/flushMicrotasks.d.ts.map +1 -0
- package/build/flushMicrotasks.js +11 -0
- package/build/flushMicrotasks.js.map +1 -0
- package/build/focusVisible.d.ts +7 -0
- package/build/focusVisible.d.ts.map +1 -0
- package/build/focusVisible.js +33 -0
- package/build/focusVisible.js.map +1 -0
- package/build/index.d.ts +18 -0
- package/build/index.d.ts.map +1 -0
- package/build/index.js +59 -0
- package/build/index.js.map +1 -0
- package/build/init.d.ts +2 -0
- package/build/init.d.ts.map +1 -0
- package/build/init.js +42 -0
- package/build/init.js.map +1 -0
- package/build/initMatchers.d.ts +81 -0
- package/build/initMatchers.d.ts.map +1 -0
- package/build/initMatchers.js +431 -0
- package/build/initMatchers.js.map +1 -0
- package/build/initMatchers.test.d.ts +2 -0
- package/build/initMatchers.test.d.ts.map +1 -0
- package/build/initMatchers.test.js +103 -0
- package/build/initMatchers.test.js.map +1 -0
- package/build/initPlaywrightMatchers.d.ts +25 -0
- package/build/initPlaywrightMatchers.d.ts.map +1 -0
- package/build/initPlaywrightMatchers.js +63 -0
- package/build/initPlaywrightMatchers.js.map +1 -0
- package/build/mochaHooks.d.ts +25 -0
- package/build/mochaHooks.d.ts.map +1 -0
- package/build/mochaHooks.js +171 -0
- package/build/mochaHooks.js.map +1 -0
- package/build/mochaHooks.test.d.ts +2 -0
- package/build/mochaHooks.test.d.ts.map +1 -0
- package/build/mochaHooks.test.js +112 -0
- package/build/mochaHooks.test.js.map +1 -0
- package/build/setup.d.ts +2 -0
- package/build/setup.d.ts.map +1 -0
- package/build/setup.js +10 -0
- package/build/setup.js.map +1 -0
- package/build/setupBabel.d.ts +2 -0
- package/build/setupBabel.d.ts.map +1 -0
- package/build/setupBabel.js +5 -0
- package/build/setupBabel.js.map +1 -0
- package/build/setupBabelPlaywright.d.ts +2 -0
- package/build/setupBabelPlaywright.d.ts.map +1 -0
- package/build/setupBabelPlaywright.js +11 -0
- package/build/setupBabelPlaywright.js.map +1 -0
- package/build/setupJSDOM.d.ts +7 -0
- package/build/setupJSDOM.d.ts.map +1 -0
- package/build/setupJSDOM.js +17 -0
- package/build/setupJSDOM.js.map +1 -0
- package/build/setupKarma.d.ts +2 -0
- package/build/setupKarma.d.ts.map +1 -0
- package/build/setupKarma.js +56 -0
- package/build/setupKarma.js.map +1 -0
- package/build/until.d.ts +2 -0
- package/build/until.d.ts.map +1 -0
- package/build/until.js +26 -0
- package/build/until.js.map +1 -0
- package/build/until.test.d.ts +2 -0
- package/build/until.test.d.ts.map +1 -0
- package/build/until.test.js +118 -0
- package/build/until.test.js.map +1 -0
- package/build/userEvent.d.ts +8 -0
- package/build/userEvent.d.ts.map +1 -0
- package/build/userEvent.js +61 -0
- package/build/userEvent.js.map +1 -0
- package/package.json +76 -0
- package/src/KarmaReporterReactProfiler.js +81 -0
- package/src/components.tsx +61 -0
- package/src/createDOM.d.ts +9 -0
- package/src/createDOM.js +67 -0
- package/src/createDescribe.ts +31 -0
- package/src/createMount.tsx +136 -0
- package/src/createRenderer.test.js +31 -0
- package/src/createRenderer.tsx +737 -0
- package/src/describeConformance.tsx +1117 -0
- package/src/findOutermostIntrinsic.test.js +68 -0
- package/src/findOutermostIntrinsic.ts +19 -0
- package/src/fireDiscreteEvent.ts +76 -0
- package/src/flushMicrotasks.ts +8 -0
- package/src/focusVisible.ts +28 -0
- package/src/index.ts +24 -0
- package/src/init.js +15 -0
- package/src/initMatchers.test.js +126 -0
- package/src/initMatchers.ts +658 -0
- package/src/initPlaywrightMatchers.ts +96 -0
- package/src/mochaHooks.js +209 -0
- package/src/mochaHooks.test.js +113 -0
- package/src/setup.js +10 -0
- package/src/setupBabel.js +3 -0
- package/src/setupBabelPlaywright.js +10 -0
- package/src/setupJSDOM.js +20 -0
- package/src/setupKarma.js +65 -0
- package/src/until.js +28 -0
- package/src/until.test.js +120 -0
- package/src/userEvent.ts +35 -0
- package/tsconfig.build.json +17 -0
- package/tsconfig.json +12 -0
|
@@ -0,0 +1,506 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
26
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
27
|
+
};
|
|
28
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
29
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
30
|
+
};
|
|
31
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
32
|
+
exports.screen = exports.fireEvent = exports.cleanup = exports.act = exports.fireTouchChangedEvent = exports.createRenderer = void 0;
|
|
33
|
+
/* eslint-env mocha */
|
|
34
|
+
const React = __importStar(require("react"));
|
|
35
|
+
const ReactDOMServer = __importStar(require("react-dom/server"));
|
|
36
|
+
const cache_1 = __importDefault(require("@emotion/cache"));
|
|
37
|
+
const react_1 = require("@emotion/react");
|
|
38
|
+
const pure_1 = require("@testing-library/react/pure");
|
|
39
|
+
Object.defineProperty(exports, "cleanup", { enumerable: true, get: function () { return pure_1.cleanup; } });
|
|
40
|
+
const sinon_1 = require("sinon");
|
|
41
|
+
const enableDispatchingProfiler = process.env.TEST_GATE === 'enable-dispatching-profiler';
|
|
42
|
+
function noTrace(interactionName, callback) {
|
|
43
|
+
return callback();
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Path used in Error.prototype.stack.
|
|
47
|
+
*
|
|
48
|
+
* Computed in `before` hook.
|
|
49
|
+
*/
|
|
50
|
+
let workspaceRoot;
|
|
51
|
+
let interactionID = 0;
|
|
52
|
+
const interactionStack = [];
|
|
53
|
+
/**
|
|
54
|
+
* interactionName - Human readable label for this particular interaction.
|
|
55
|
+
*/
|
|
56
|
+
function traceByStackSync(interactionName, callback) {
|
|
57
|
+
const { stack } = new Error();
|
|
58
|
+
const testLines = stack
|
|
59
|
+
.split(/\r?\n/)
|
|
60
|
+
.map((line) => {
|
|
61
|
+
// anonymous functions create a "weird" stackframe like
|
|
62
|
+
// "at path/to/actual.test.js (path/to/utility/file.js <- karma.test.js)"
|
|
63
|
+
// and we just want "path/to/actual.test.js" not "karma.test.js"
|
|
64
|
+
// TODO: Only supports chrome at the moment
|
|
65
|
+
const fileMatch = line.match(/([^\s(]+\.test\.(js|ts|tsx)):(\d+):(\d+)/);
|
|
66
|
+
if (fileMatch === null) {
|
|
67
|
+
return null;
|
|
68
|
+
}
|
|
69
|
+
return { name: fileMatch[1], line: +fileMatch[3], column: +fileMatch[4] };
|
|
70
|
+
})
|
|
71
|
+
.filter((maybeTestFile) => {
|
|
72
|
+
return maybeTestFile !== null;
|
|
73
|
+
})
|
|
74
|
+
.map((file) => {
|
|
75
|
+
return `${file.name.replace(workspaceRoot, '')}:${file.line}:${file.column}`;
|
|
76
|
+
});
|
|
77
|
+
const originLine = testLines[testLines.length - 1] ?? 'unknown line';
|
|
78
|
+
interactionID += 1;
|
|
79
|
+
const interaction = {
|
|
80
|
+
id: interactionID,
|
|
81
|
+
name: `${originLine} (${interactionName})`,
|
|
82
|
+
timestamp: performance.now(),
|
|
83
|
+
};
|
|
84
|
+
interactionStack.push(interaction);
|
|
85
|
+
try {
|
|
86
|
+
return callback();
|
|
87
|
+
}
|
|
88
|
+
finally {
|
|
89
|
+
interactionStack.pop();
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
class NoopProfiler {
|
|
93
|
+
constructor() {
|
|
94
|
+
this.id = 'noop';
|
|
95
|
+
}
|
|
96
|
+
// eslint-disable-next-line class-methods-use-this
|
|
97
|
+
onRender() { }
|
|
98
|
+
// eslint-disable-next-line class-methods-use-this
|
|
99
|
+
report() { }
|
|
100
|
+
}
|
|
101
|
+
class DispatchingProfiler {
|
|
102
|
+
constructor(test) {
|
|
103
|
+
this.renders = [];
|
|
104
|
+
this.onRender = (id, phase, actualDuration, baseDuration, startTime, commitTime) => {
|
|
105
|
+
// Do minimal work here to keep the render fast.
|
|
106
|
+
// Though it's unclear whether work here affects the profiler results.
|
|
107
|
+
// But even if it doesn't we'll keep the test feedback snappy.
|
|
108
|
+
this.renders.push([
|
|
109
|
+
id,
|
|
110
|
+
phase,
|
|
111
|
+
actualDuration,
|
|
112
|
+
baseDuration,
|
|
113
|
+
startTime,
|
|
114
|
+
commitTime,
|
|
115
|
+
interactionStack.slice(),
|
|
116
|
+
]);
|
|
117
|
+
};
|
|
118
|
+
this.id = test.fullTitle();
|
|
119
|
+
}
|
|
120
|
+
report() {
|
|
121
|
+
const event = new window.CustomEvent('reactProfilerResults', {
|
|
122
|
+
detail: {
|
|
123
|
+
[this.id]: this.renders.map((entry) => {
|
|
124
|
+
return {
|
|
125
|
+
phase: entry[1],
|
|
126
|
+
actualDuration: entry[2],
|
|
127
|
+
baseDuration: entry[3],
|
|
128
|
+
startTime: entry[4],
|
|
129
|
+
commitTime: entry[5],
|
|
130
|
+
interactions: entry[6],
|
|
131
|
+
};
|
|
132
|
+
}),
|
|
133
|
+
},
|
|
134
|
+
});
|
|
135
|
+
window.dispatchEvent(event);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
const UsedProfiler = enableDispatchingProfiler ? DispatchingProfiler : NoopProfiler;
|
|
139
|
+
const traceSync = enableDispatchingProfiler ? traceByStackSync : noTrace;
|
|
140
|
+
function queryAllDescriptionsOf(baseElement, element) {
|
|
141
|
+
const ariaDescribedBy = element.getAttribute('aria-describedby');
|
|
142
|
+
if (ariaDescribedBy === null) {
|
|
143
|
+
return [];
|
|
144
|
+
}
|
|
145
|
+
return ariaDescribedBy
|
|
146
|
+
.split(' ')
|
|
147
|
+
.map((id) => {
|
|
148
|
+
return document.getElementById(id);
|
|
149
|
+
})
|
|
150
|
+
.filter((maybeElement) => {
|
|
151
|
+
return maybeElement !== null && baseElement.contains(maybeElement);
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
const [queryDescriptionOf, getAllDescriptionsOf, getDescriptionOf, findAllDescriptionsOf, findDescriptionOf,] = (0, pure_1.buildQueries)(queryAllDescriptionsOf, function getMultipleError() {
|
|
155
|
+
return `Found multiple descriptions.`;
|
|
156
|
+
}, function getMissingError() {
|
|
157
|
+
return `Found no describing element.`;
|
|
158
|
+
});
|
|
159
|
+
const queryAllByMuiTest = pure_1.queryHelpers.queryAllByAttribute.bind(null, 'data-mui-test');
|
|
160
|
+
const [queryByMuiTest, getAllByMuiTest, getByMuiTest, findAllByMuiTest, findByMuiTest] = (0, pure_1.buildQueries)(queryAllByMuiTest, function getMultipleError(container, dataMuiTest) {
|
|
161
|
+
return `Found multiple elements with the data-mui-test attribute of: ${dataMuiTest}`;
|
|
162
|
+
}, function getMissingError(container, dataMuiTest) {
|
|
163
|
+
return `Found no element with the data-mui-test attribute of: ${dataMuiTest}`;
|
|
164
|
+
});
|
|
165
|
+
const customQueries = {
|
|
166
|
+
queryDescriptionOf,
|
|
167
|
+
queryAllDescriptionsOf,
|
|
168
|
+
getDescriptionOf,
|
|
169
|
+
getAllDescriptionsOf,
|
|
170
|
+
findDescriptionOf,
|
|
171
|
+
findAllDescriptionsOf,
|
|
172
|
+
/**
|
|
173
|
+
* @deprecated Use `queryAllByTestId` instead
|
|
174
|
+
*/
|
|
175
|
+
queryAllByMuiTest,
|
|
176
|
+
/**
|
|
177
|
+
* @deprecated Use `queryByTestId` instead
|
|
178
|
+
*/
|
|
179
|
+
queryByMuiTest,
|
|
180
|
+
/**
|
|
181
|
+
* @deprecated Use `getAllByTestId` instead
|
|
182
|
+
*/
|
|
183
|
+
getAllByMuiTest,
|
|
184
|
+
/**
|
|
185
|
+
* @deprecated Use `getByTestId` instead
|
|
186
|
+
*/
|
|
187
|
+
getByMuiTest,
|
|
188
|
+
/**
|
|
189
|
+
* @deprecated Use `findAllByTestId` instead
|
|
190
|
+
*/
|
|
191
|
+
findAllByMuiTest,
|
|
192
|
+
/**
|
|
193
|
+
* @deprecated Use `findByTestId` instead
|
|
194
|
+
*/
|
|
195
|
+
findByMuiTest,
|
|
196
|
+
};
|
|
197
|
+
function render(element, configuration) {
|
|
198
|
+
const { container, hydrate, wrapper } = configuration;
|
|
199
|
+
const testingLibraryRenderResult = traceSync('render', () => (0, pure_1.render)(element, {
|
|
200
|
+
container,
|
|
201
|
+
hydrate,
|
|
202
|
+
queries: { ...pure_1.queries, ...customQueries },
|
|
203
|
+
wrapper,
|
|
204
|
+
}));
|
|
205
|
+
const result = {
|
|
206
|
+
...testingLibraryRenderResult,
|
|
207
|
+
forceUpdate() {
|
|
208
|
+
traceSync('forceUpdate', () => testingLibraryRenderResult.rerender(React.cloneElement(element, {
|
|
209
|
+
'data-force-update': String(Math.random()),
|
|
210
|
+
})));
|
|
211
|
+
},
|
|
212
|
+
setProps(props) {
|
|
213
|
+
traceSync('setProps', () => testingLibraryRenderResult.rerender(React.cloneElement(element, props)));
|
|
214
|
+
},
|
|
215
|
+
};
|
|
216
|
+
return result;
|
|
217
|
+
}
|
|
218
|
+
function renderToString(element, configuration) {
|
|
219
|
+
const { container, wrapper: Wrapper } = configuration;
|
|
220
|
+
traceSync('renderToString', () => {
|
|
221
|
+
container.innerHTML = ReactDOMServer.renderToString(React.createElement(Wrapper, null, element));
|
|
222
|
+
});
|
|
223
|
+
return {
|
|
224
|
+
container,
|
|
225
|
+
hydrate() {
|
|
226
|
+
return render(element, { ...configuration, hydrate: true });
|
|
227
|
+
},
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
function createClock(defaultMode, config) {
|
|
231
|
+
let clock = null;
|
|
232
|
+
let mode = defaultMode;
|
|
233
|
+
beforeEach(() => {
|
|
234
|
+
if (mode === 'fake') {
|
|
235
|
+
clock = (0, sinon_1.useFakeTimers)({
|
|
236
|
+
now: config,
|
|
237
|
+
// useIsFocusVisible schedules a global timer that needs to persist regardless of whether components are mounted or not.
|
|
238
|
+
// Technically we'd want to reset all modules between tests but we don't have that technology.
|
|
239
|
+
// In the meantime just continue to clear native timers like with did for the past years when using `sinon` < 8.
|
|
240
|
+
shouldClearNativeTimers: true,
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
});
|
|
244
|
+
afterEach(() => {
|
|
245
|
+
clock?.restore();
|
|
246
|
+
clock = null;
|
|
247
|
+
});
|
|
248
|
+
return {
|
|
249
|
+
tick(timeoutMS) {
|
|
250
|
+
if (clock === null) {
|
|
251
|
+
throw new Error(`Can't advance the real clock. Did you mean to call this on fake clock?`);
|
|
252
|
+
}
|
|
253
|
+
traceSync('tick', () => {
|
|
254
|
+
(0, pure_1.act)(() => {
|
|
255
|
+
clock.tick(timeoutMS);
|
|
256
|
+
});
|
|
257
|
+
});
|
|
258
|
+
},
|
|
259
|
+
runAll() {
|
|
260
|
+
if (clock === null) {
|
|
261
|
+
throw new Error(`Can't advance the real clock. Did you mean to call this on fake clock?`);
|
|
262
|
+
}
|
|
263
|
+
traceSync('runAll', () => {
|
|
264
|
+
(0, pure_1.act)(() => {
|
|
265
|
+
clock.runAll();
|
|
266
|
+
});
|
|
267
|
+
});
|
|
268
|
+
},
|
|
269
|
+
runToLast() {
|
|
270
|
+
if (clock === null) {
|
|
271
|
+
throw new Error(`Can't advance the real clock. Did you mean to call this on fake clock?`);
|
|
272
|
+
}
|
|
273
|
+
traceSync('runToLast', () => {
|
|
274
|
+
(0, pure_1.act)(() => {
|
|
275
|
+
clock.runToLast();
|
|
276
|
+
});
|
|
277
|
+
});
|
|
278
|
+
},
|
|
279
|
+
isReal() {
|
|
280
|
+
return setTimeout.hasOwnProperty('clock') === false;
|
|
281
|
+
},
|
|
282
|
+
withFakeTimers() {
|
|
283
|
+
before(() => {
|
|
284
|
+
mode = 'fake';
|
|
285
|
+
});
|
|
286
|
+
after(() => {
|
|
287
|
+
mode = defaultMode;
|
|
288
|
+
});
|
|
289
|
+
},
|
|
290
|
+
restore() {
|
|
291
|
+
clock?.restore();
|
|
292
|
+
},
|
|
293
|
+
};
|
|
294
|
+
}
|
|
295
|
+
function createRenderer(globalOptions = {}) {
|
|
296
|
+
const { clock: clockMode = 'real', clockConfig, strict: globalStrict = true, strictEffects: globalStrictEffects = globalStrict, } = globalOptions;
|
|
297
|
+
// save stack to re-use in test-hooks
|
|
298
|
+
const { stack: createClientRenderStack } = new Error();
|
|
299
|
+
const clock = createClock(clockMode, clockConfig);
|
|
300
|
+
/**
|
|
301
|
+
* Flag whether `createRenderer` was called in a suite i.e. describe() block.
|
|
302
|
+
* For legacy reasons `createRenderer` might accidentally be called in a before(Each) hook.
|
|
303
|
+
*/
|
|
304
|
+
let wasCalledInSuite = false;
|
|
305
|
+
before(function beforeHook() {
|
|
306
|
+
wasCalledInSuite = true;
|
|
307
|
+
if (enableDispatchingProfiler) {
|
|
308
|
+
// TODO windows?
|
|
309
|
+
const filename = new Error()
|
|
310
|
+
.stack.split(/\r?\n/)
|
|
311
|
+
.map((line) => {
|
|
312
|
+
const fileMatch =
|
|
313
|
+
// chrome: " at Context.beforeHook (webpack-internal:///./test/utils/createRenderer.tsx:257:24)""
|
|
314
|
+
line.match(/\(([^)]+):\d+:\d+\)/) ??
|
|
315
|
+
// firefox: "beforeHook@webpack-internal:///./test/utils/createRenderer.tsx:257:24"
|
|
316
|
+
line.match(/@(.*?):\d+:\d+$/);
|
|
317
|
+
if (fileMatch === null) {
|
|
318
|
+
return null;
|
|
319
|
+
}
|
|
320
|
+
return fileMatch[1];
|
|
321
|
+
})
|
|
322
|
+
.find((file) => {
|
|
323
|
+
return file?.endsWith('createRenderer.tsx');
|
|
324
|
+
});
|
|
325
|
+
workspaceRoot = filename.replace('test/utils/createRenderer.tsx', '');
|
|
326
|
+
}
|
|
327
|
+
});
|
|
328
|
+
let emotionCache = null;
|
|
329
|
+
/**
|
|
330
|
+
* target container for SSR
|
|
331
|
+
*/
|
|
332
|
+
let serverContainer;
|
|
333
|
+
/**
|
|
334
|
+
* Flag whether all setup for `configuredClientRender` was completed.
|
|
335
|
+
* For legacy reasons `configuredClientRender` might accidentally be called in a before(Each) hook.
|
|
336
|
+
*/
|
|
337
|
+
let prepared = false;
|
|
338
|
+
let profiler = null;
|
|
339
|
+
beforeEach(function beforeEachHook() {
|
|
340
|
+
if (!wasCalledInSuite) {
|
|
341
|
+
const error = new Error('Unable to run `before` hook for `createRenderer`. This usually indicates that `createRenderer` was called in a `before` hook instead of in a `describe()` block.');
|
|
342
|
+
error.stack = createClientRenderStack;
|
|
343
|
+
throw error;
|
|
344
|
+
}
|
|
345
|
+
const test = this.currentTest;
|
|
346
|
+
if (test === undefined) {
|
|
347
|
+
throw new Error('Unable to find the currently running test. This is a bug with the client-renderer. Please report this issue to a maintainer.');
|
|
348
|
+
}
|
|
349
|
+
profiler = new UsedProfiler(test);
|
|
350
|
+
emotionCache = (0, cache_1.default)({ key: 'emotion-client-render' });
|
|
351
|
+
serverContainer = document.createElement('div');
|
|
352
|
+
document.body.appendChild(serverContainer);
|
|
353
|
+
prepared = true;
|
|
354
|
+
});
|
|
355
|
+
afterEach(() => {
|
|
356
|
+
if (!clock.isReal()) {
|
|
357
|
+
const error = Error("Can't cleanup before fake timers are restored.\n" +
|
|
358
|
+
'Be sure to:\n' +
|
|
359
|
+
' 1. Only use `clock` from `createRenderer`.\n' +
|
|
360
|
+
' 2. Call `createRenderer` in a suite and not any test hook (for example `beforeEach`) or test itself (for example `it`).');
|
|
361
|
+
// Use saved stack otherwise the stack trace will not include the test location.
|
|
362
|
+
error.stack = createClientRenderStack;
|
|
363
|
+
throw error;
|
|
364
|
+
}
|
|
365
|
+
(0, pure_1.cleanup)();
|
|
366
|
+
profiler.report();
|
|
367
|
+
profiler = null;
|
|
368
|
+
emotionCache.sheet.tags.forEach((styleTag) => {
|
|
369
|
+
styleTag.remove();
|
|
370
|
+
});
|
|
371
|
+
emotionCache = null;
|
|
372
|
+
serverContainer.remove();
|
|
373
|
+
serverContainer = null;
|
|
374
|
+
});
|
|
375
|
+
function createWrapper(options) {
|
|
376
|
+
const { strict = globalStrict, strictEffects = globalStrictEffects, wrapper: InnerWrapper = React.Fragment, } = options;
|
|
377
|
+
const usesLegacyRoot = !React.version.startsWith('18');
|
|
378
|
+
const Mode = strict && (strictEffects || usesLegacyRoot) ? React.StrictMode : React.Fragment;
|
|
379
|
+
return function Wrapper({ children }) {
|
|
380
|
+
return (React.createElement(Mode, null,
|
|
381
|
+
React.createElement(react_1.CacheProvider, { value: emotionCache },
|
|
382
|
+
React.createElement(React.Profiler, { id: profiler.id, onRender: profiler.onRender },
|
|
383
|
+
React.createElement(InnerWrapper, null, children)))));
|
|
384
|
+
};
|
|
385
|
+
}
|
|
386
|
+
return {
|
|
387
|
+
clock,
|
|
388
|
+
render(element, options = {}) {
|
|
389
|
+
if (!prepared) {
|
|
390
|
+
throw new Error('Unable to finish setup before `render()` was called. ' +
|
|
391
|
+
'This usually indicates that `render()` was called in a `before()` or `beforeEach` hook. ' +
|
|
392
|
+
'Move the call into each `it()`. Otherwise you cannot run a specific test and we cannot isolate each test.');
|
|
393
|
+
}
|
|
394
|
+
return render(element, {
|
|
395
|
+
...options,
|
|
396
|
+
hydrate: false,
|
|
397
|
+
wrapper: createWrapper(options),
|
|
398
|
+
});
|
|
399
|
+
},
|
|
400
|
+
renderToString(element, options = {}) {
|
|
401
|
+
if (!prepared) {
|
|
402
|
+
throw new Error('Unable to finish setup before `render()` was called. ' +
|
|
403
|
+
'This usually indicates that `render()` was called in a `before()` or `beforeEach` hook. ' +
|
|
404
|
+
'Move the call into each `it()`. Otherwise you cannot run a specific test and we cannot isolate each test.');
|
|
405
|
+
}
|
|
406
|
+
const { container = serverContainer, ...localOptions } = options;
|
|
407
|
+
return renderToString(element, {
|
|
408
|
+
...localOptions,
|
|
409
|
+
container,
|
|
410
|
+
wrapper: createWrapper(options),
|
|
411
|
+
});
|
|
412
|
+
},
|
|
413
|
+
};
|
|
414
|
+
}
|
|
415
|
+
exports.createRenderer = createRenderer;
|
|
416
|
+
const fireEvent = ((target, event, ...args) => {
|
|
417
|
+
return traceSync(`firEvent.${event.type}`, () => (0, pure_1.fireEvent)(target, event, ...args));
|
|
418
|
+
});
|
|
419
|
+
exports.fireEvent = fireEvent;
|
|
420
|
+
Object.keys(pure_1.fireEvent).forEach(
|
|
421
|
+
// @ts-expect-error
|
|
422
|
+
(eventType) => {
|
|
423
|
+
fireEvent[eventType] = (...args) => traceSync(`firEvent.${eventType}`, () => pure_1.fireEvent[eventType](...args));
|
|
424
|
+
});
|
|
425
|
+
const originalFireEventKeyDown = pure_1.fireEvent.keyDown;
|
|
426
|
+
fireEvent.keyDown = (desiredTarget, options = {}) => {
|
|
427
|
+
const element = desiredTarget;
|
|
428
|
+
// `element` shouldn't be `document` but we catch this later anyway
|
|
429
|
+
const document = element.ownerDocument || element;
|
|
430
|
+
const target = document.activeElement || document.body || document.documentElement;
|
|
431
|
+
if (target !== element) {
|
|
432
|
+
// see https://www.w3.org/TR/uievents/#keydown
|
|
433
|
+
const error = new Error(`\`keydown\` events can only be targeted at the active element which is ${(0, pure_1.prettyDOM)(target, undefined, { maxDepth: 1 })}`);
|
|
434
|
+
// We're only interested in the callsite of fireEvent.keyDown
|
|
435
|
+
error.stack = error
|
|
436
|
+
.stack.split('\n')
|
|
437
|
+
.filter((line) => !/at Function.key/.test(line))
|
|
438
|
+
.join('\n');
|
|
439
|
+
throw error;
|
|
440
|
+
}
|
|
441
|
+
return traceSync('fireEvent.keyDown', () => originalFireEventKeyDown(element, options));
|
|
442
|
+
};
|
|
443
|
+
const originalFireEventKeyUp = pure_1.fireEvent.keyUp;
|
|
444
|
+
fireEvent.keyUp = (desiredTarget, options = {}) => {
|
|
445
|
+
const element = desiredTarget;
|
|
446
|
+
// `element` shouldn't be `document` but we catch this later anyway
|
|
447
|
+
const document = element.ownerDocument || element;
|
|
448
|
+
const target = document.activeElement || document.body || document.documentElement;
|
|
449
|
+
if (target !== element) {
|
|
450
|
+
// see https://www.w3.org/TR/uievents/#keyup
|
|
451
|
+
const error = new Error(`\`keyup\` events can only be targeted at the active element which is ${(0, pure_1.prettyDOM)(target, undefined, { maxDepth: 1 })}`);
|
|
452
|
+
// We're only interested in the callsite of fireEvent.keyUp
|
|
453
|
+
error.stack = error
|
|
454
|
+
.stack.split('\n')
|
|
455
|
+
.filter((line) => !/at Function.key/.test(line))
|
|
456
|
+
.join('\n');
|
|
457
|
+
throw error;
|
|
458
|
+
}
|
|
459
|
+
return traceSync('fireEvent.keyUp', () => originalFireEventKeyUp(element, options));
|
|
460
|
+
};
|
|
461
|
+
function fireTouchChangedEvent(target, type, options) {
|
|
462
|
+
const { changedTouches } = options;
|
|
463
|
+
const originalGetBoundingClientRect = target.getBoundingClientRect;
|
|
464
|
+
target.getBoundingClientRect = () => ({
|
|
465
|
+
x: 0,
|
|
466
|
+
y: 0,
|
|
467
|
+
bottom: 0,
|
|
468
|
+
height: 0,
|
|
469
|
+
left: 0,
|
|
470
|
+
right: 0,
|
|
471
|
+
top: 0,
|
|
472
|
+
width: 0,
|
|
473
|
+
toJSON() {
|
|
474
|
+
return {
|
|
475
|
+
x: 0,
|
|
476
|
+
y: 0,
|
|
477
|
+
bottom: 0,
|
|
478
|
+
height: 0,
|
|
479
|
+
left: 0,
|
|
480
|
+
right: 0,
|
|
481
|
+
top: 0,
|
|
482
|
+
width: 0,
|
|
483
|
+
};
|
|
484
|
+
},
|
|
485
|
+
});
|
|
486
|
+
const event = new window.TouchEvent(type, {
|
|
487
|
+
bubbles: true,
|
|
488
|
+
cancelable: true,
|
|
489
|
+
composed: true,
|
|
490
|
+
changedTouches: changedTouches.map((opts) => new window.Touch({
|
|
491
|
+
target,
|
|
492
|
+
identifier: 0,
|
|
493
|
+
...opts,
|
|
494
|
+
})),
|
|
495
|
+
});
|
|
496
|
+
fireEvent(target, event);
|
|
497
|
+
target.getBoundingClientRect = originalGetBoundingClientRect;
|
|
498
|
+
}
|
|
499
|
+
exports.fireTouchChangedEvent = fireTouchChangedEvent;
|
|
500
|
+
function act(callback) {
|
|
501
|
+
return traceSync('act', () => (0, pure_1.act)(callback));
|
|
502
|
+
}
|
|
503
|
+
exports.act = act;
|
|
504
|
+
__exportStar(require("@testing-library/react/pure"), exports);
|
|
505
|
+
exports.screen = (0, pure_1.within)(document.body, { ...pure_1.queries, ...customQueries });
|
|
506
|
+
//# sourceMappingURL=createRenderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createRenderer.js","sourceRoot":"","sources":["../src/createRenderer.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createRenderer.test.d.ts","sourceRoot":"","sources":["../src/createRenderer.test.js"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
const chai_1 = require("chai");
|
|
27
|
+
const React = __importStar(require("react"));
|
|
28
|
+
const ReactDOM = __importStar(require("react-dom"));
|
|
29
|
+
const createRenderer_1 = require("./createRenderer");
|
|
30
|
+
describe('createRenderer', () => {
|
|
31
|
+
const { render } = (0, createRenderer_1.createRenderer)();
|
|
32
|
+
it('allows querying descriptions', () => {
|
|
33
|
+
function Component() {
|
|
34
|
+
return (React.createElement(React.Fragment, null,
|
|
35
|
+
React.createElement("div", { id: "target", "aria-describedby": "r:1 r:2 r:3" }, "I have a description."),
|
|
36
|
+
ReactDOM.createPortal(React.createElement("div", { id: "r:1" }, "Description 1"), document.body),
|
|
37
|
+
React.createElement("div", { id: "r:2" }, "Description 2"),
|
|
38
|
+
React.createElement("div", { id: "r:3" }, "Description 3")));
|
|
39
|
+
}
|
|
40
|
+
const { getAllDescriptionsOf } = render(React.createElement(Component, null));
|
|
41
|
+
const descriptions = getAllDescriptionsOf(document.getElementById('target'));
|
|
42
|
+
(0, chai_1.expect)(descriptions).to.have.length(3);
|
|
43
|
+
(0, chai_1.expect)(descriptions[0]).to.have.property('id', 'r:1');
|
|
44
|
+
(0, chai_1.expect)(descriptions[1]).to.have.property('id', 'r:2');
|
|
45
|
+
(0, chai_1.expect)(descriptions[2]).to.have.property('id', 'r:3');
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
//# sourceMappingURL=createRenderer.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createRenderer.test.js","sourceRoot":"","sources":["../src/createRenderer.test.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+BAA8B;AAC9B,6CAA+B;AAC/B,oDAAsC;AACtC,qDAAkD;AAElD,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,MAAM,EAAE,MAAM,EAAE,GAAG,IAAA,+BAAc,GAAE,CAAC;IAEpC,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,SAAS,SAAS;YAChB,OAAO,CACL,oBAAC,KAAK,CAAC,QAAQ;gBACb,6BAAK,EAAE,EAAC,QAAQ,sBAAkB,aAAa,4BAEzC;gBACL,QAAQ,CAAC,YAAY,CAAC,6BAAK,EAAE,EAAC,KAAK,oBAAoB,EAAE,QAAQ,CAAC,IAAI,CAAC;gBAExE,6BAAK,EAAE,EAAC,KAAK,oBAAoB;gBACjC,6BAAK,EAAE,EAAC,KAAK,oBAAoB,CAClB,CAClB,CAAC;QACJ,CAAC;QACD,MAAM,EAAE,oBAAoB,EAAE,GAAG,MAAM,CAAC,oBAAC,SAAS,OAAG,CAAC,CAAC;QAEvD,MAAM,YAAY,GAAG,oBAAoB,CAAC,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC7E,IAAA,aAAM,EAAC,YAAY,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACvC,IAAA,aAAM,EAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACtD,IAAA,aAAM,EAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACtD,IAAA,aAAM,EAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|