You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
144 lines
5.0 KiB
144 lines
5.0 KiB
4 months ago
|
/* istanbul ignore file */
|
||
|
import { __spreadArray } from "tslib";
|
||
|
/*
|
||
|
Something in this file does not compile correctly while measuring code coverage
|
||
|
and will lead to a
|
||
|
Uncaught [ReferenceError: cov_1zb8w312au is not defined]
|
||
|
if we do not ignore this file in code coverage.
|
||
|
|
||
|
As we only use this file in our internal tests, we can safely ignore it.
|
||
|
*/
|
||
|
import { within, screen } from "@testing-library/dom";
|
||
|
import { JSDOM, VirtualConsole } from "jsdom";
|
||
|
import { applyStackTrace, captureStackTrace } from "./traces.js";
|
||
|
/** @internal */
|
||
|
var RenderInstance = /** @class */ (function () {
|
||
|
function RenderInstance(baseRender, snapshot, stringifiedDOM, renderedComponents) {
|
||
|
this.snapshot = snapshot;
|
||
|
this.stringifiedDOM = stringifiedDOM;
|
||
|
this.renderedComponents = renderedComponents;
|
||
|
this.id = baseRender.id;
|
||
|
this.phase = baseRender.phase;
|
||
|
this.actualDuration = baseRender.actualDuration;
|
||
|
this.baseDuration = baseRender.baseDuration;
|
||
|
this.startTime = baseRender.startTime;
|
||
|
this.commitTime = baseRender.commitTime;
|
||
|
this.count = baseRender.count;
|
||
|
}
|
||
|
Object.defineProperty(RenderInstance.prototype, "domSnapshot", {
|
||
|
get: function () {
|
||
|
if (this._domSnapshot)
|
||
|
return this._domSnapshot;
|
||
|
if (!this.stringifiedDOM) {
|
||
|
throw new Error("DOM snapshot is not available - please set the `snapshotDOM` option");
|
||
|
}
|
||
|
var virtualConsole = new VirtualConsole();
|
||
|
var stackTrace = captureStackTrace("RenderInstance.get");
|
||
|
virtualConsole.on("jsdomError", function (error) {
|
||
|
throw applyStackTrace(error, stackTrace);
|
||
|
});
|
||
|
var snapDOM = new JSDOM(this.stringifiedDOM, {
|
||
|
runScripts: "dangerously",
|
||
|
virtualConsole: virtualConsole,
|
||
|
});
|
||
|
var document = snapDOM.window.document;
|
||
|
var body = document.body;
|
||
|
var script = document.createElement("script");
|
||
|
script.type = "text/javascript";
|
||
|
script.text = "\n ".concat(errorOnDomInteraction.toString(), ";\n ").concat(errorOnDomInteraction.name, "();\n ");
|
||
|
body.appendChild(script);
|
||
|
body.removeChild(script);
|
||
|
return (this._domSnapshot = body);
|
||
|
},
|
||
|
enumerable: false,
|
||
|
configurable: true
|
||
|
});
|
||
|
Object.defineProperty(RenderInstance.prototype, "withinDOM", {
|
||
|
get: function () {
|
||
|
var _this = this;
|
||
|
var snapScreen = Object.assign(within(this.domSnapshot), {
|
||
|
debug: function () {
|
||
|
var _a = [];
|
||
|
for (var _i = 0; _i < arguments.length; _i++) {
|
||
|
_a[_i] = arguments[_i];
|
||
|
}
|
||
|
var _b = _a[0], dom = _b === void 0 ? _this.domSnapshot : _b, rest = _a.slice(1);
|
||
|
screen.debug.apply(screen, __spreadArray([dom], rest, false));
|
||
|
},
|
||
|
logTestingPlaygroundURL: function () {
|
||
|
var _a = [];
|
||
|
for (var _i = 0; _i < arguments.length; _i++) {
|
||
|
_a[_i] = arguments[_i];
|
||
|
}
|
||
|
var _b = _a[0], dom = _b === void 0 ? _this.domSnapshot : _b, rest = _a.slice(1);
|
||
|
screen.logTestingPlaygroundURL.apply(screen, __spreadArray([dom], rest, false));
|
||
|
},
|
||
|
});
|
||
|
return function () { return snapScreen; };
|
||
|
},
|
||
|
enumerable: false,
|
||
|
configurable: true
|
||
|
});
|
||
|
return RenderInstance;
|
||
|
}());
|
||
|
export { RenderInstance };
|
||
|
/** @internal */
|
||
|
export function errorOnDomInteraction() {
|
||
|
var events = [
|
||
|
"auxclick",
|
||
|
"blur",
|
||
|
"change",
|
||
|
"click",
|
||
|
"copy",
|
||
|
"cut",
|
||
|
"dblclick",
|
||
|
"drag",
|
||
|
"dragend",
|
||
|
"dragenter",
|
||
|
"dragleave",
|
||
|
"dragover",
|
||
|
"dragstart",
|
||
|
"drop",
|
||
|
"focus",
|
||
|
"focusin",
|
||
|
"focusout",
|
||
|
"input",
|
||
|
"keydown",
|
||
|
"keypress",
|
||
|
"keyup",
|
||
|
"mousedown",
|
||
|
"mouseenter",
|
||
|
"mouseleave",
|
||
|
"mousemove",
|
||
|
"mouseout",
|
||
|
"mouseover",
|
||
|
"mouseup",
|
||
|
"paste",
|
||
|
"pointercancel",
|
||
|
"pointerdown",
|
||
|
"pointerenter",
|
||
|
"pointerleave",
|
||
|
"pointermove",
|
||
|
"pointerout",
|
||
|
"pointerover",
|
||
|
"pointerup",
|
||
|
"scroll",
|
||
|
"select",
|
||
|
"selectionchange",
|
||
|
"selectstart",
|
||
|
"submit",
|
||
|
"toggle",
|
||
|
"touchcancel",
|
||
|
"touchend",
|
||
|
"touchmove",
|
||
|
"touchstart",
|
||
|
"wheel",
|
||
|
];
|
||
|
function warnOnDomInteraction() {
|
||
|
throw new Error("\n DOM interaction with a snapshot detected in test.\n Please don't interact with the DOM you get from `withinDOM`,\n but still use `screen' to get elements for simulating user interaction.\n ");
|
||
|
}
|
||
|
events.forEach(function (event) {
|
||
|
document.addEventListener(event, warnOnDomInteraction);
|
||
|
});
|
||
|
}
|
||
|
//# sourceMappingURL=Render.js.map
|