testcafe 1.18.3 → 1.18.4
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 +13 -0
- package/lib/browser/provider/built-in/dedicated/chrome/cdp-client/automations/click/create-mouse-click-strategy.js +59 -0
- package/lib/browser/provider/built-in/dedicated/chrome/cdp-client/shared-adapter-initializer.js +15 -1
- package/lib/browser/provider/built-in/dedicated/chrome/cdp-client/utils/dom-utils.js +94 -3
- package/lib/browser/provider/built-in/dedicated/chrome/cdp-client/utils/position-utils.js +38 -7
- package/lib/browser/provider/built-in/dedicated/chrome/cdp-client/utils/style-utils.js +8 -15
- package/lib/client/automation/index.js +1699 -1380
- package/lib/client/automation/index.min.js +1 -1
- package/lib/client/core/index.js +33 -4
- package/lib/client/core/index.min.js +1 -1
- package/lib/client/core/scroll/index.js +2 -2
- package/lib/client/core/utils/shared/position.js +2 -2
- package/lib/client/driver/index.js +143 -94
- package/lib/client/driver/index.min.js +1 -1
- package/lib/client/proxyless/index.js +5 -3
- package/lib/shared/actions/action-executor.js +4 -4
- package/lib/shared/actions/automations/click/index.js +53 -0
- package/lib/shared/actions/automations/click/mouse-click-strategy-base.js +21 -0
- package/lib/shared/actions/automations/move.js +4 -4
- package/lib/shared/actions/automations/visible-element-automation.js +162 -0
- package/lib/shared/actions/get-element.js +68 -0
- package/lib/shared/actions/utils/is-window-iframe.js +8 -0
- package/lib/shared/actions/utils/offsets.js +33 -0
- package/lib/shared/actions/utils/screen-point-to-client.js +15 -0
- package/package.json +3 -3
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const adapter_1 = require("../adapter");
|
|
7
|
+
const is_window_iframe_1 = __importDefault(require("./utils/is-window-iframe"));
|
|
8
|
+
function ensureImageMap(imgElement, areaElement) {
|
|
9
|
+
return adapter_1.adapter.PromiseCtor.resolve(adapter_1.adapter.dom.closest(areaElement, 'map'))
|
|
10
|
+
.then(mapElement => {
|
|
11
|
+
return mapElement && mapElement.name === adapter_1.adapter.dom.getImgMapName(imgElement) ? areaElement : imgElement;
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
function findElementOrNonEmptyChildFromPoint(point, element) {
|
|
15
|
+
return adapter_1.adapter.PromiseCtor.resolve(adapter_1.adapter.position.getElementFromPoint(point))
|
|
16
|
+
.then(topElement => {
|
|
17
|
+
return adapter_1.adapter.PromiseCtor.resolve(adapter_1.adapter.dom.containsElement(element, topElement))
|
|
18
|
+
.then(containsEl => containsEl && adapter_1.adapter.dom.getNodeText(topElement))
|
|
19
|
+
.then(isNonEmptyChild => isNonEmptyChild || topElement && adapter_1.adapter.dom.isNodeEqual(topElement, element) ? topElement : null);
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
function correctTopElementByExpectedElement(topElement, expectedElement) {
|
|
23
|
+
if (!expectedElement || !topElement || adapter_1.adapter.dom.isNodeEqual(topElement, expectedElement))
|
|
24
|
+
return topElement;
|
|
25
|
+
const isTREFElement = adapter_1.adapter.dom.getTagName(expectedElement) === 'tref';
|
|
26
|
+
// NOTE: 'document.elementFromPoint' can't find these types of elements
|
|
27
|
+
if (isTREFElement)
|
|
28
|
+
return expectedElement;
|
|
29
|
+
// NOTE: T299665 - Incorrect click automation for images with an associated map element in Firefox
|
|
30
|
+
// All browsers return the <area> element from document.getElementFromPoint, but
|
|
31
|
+
// Firefox returns the <img> element. We should accomplish this for Firefox as well.
|
|
32
|
+
const isImageMapArea = adapter_1.adapter.dom.getTagName(expectedElement) === 'area' && adapter_1.adapter.dom.isImgElement(topElement);
|
|
33
|
+
if (adapter_1.adapter.browser.isFirefox && isImageMapArea)
|
|
34
|
+
return ensureImageMap(topElement, expectedElement);
|
|
35
|
+
// NOTE: try to find a multi-line link by its rectangle (T163678)
|
|
36
|
+
return adapter_1.adapter.PromiseCtor.resolve(adapter_1.adapter.dom.closest(expectedElement, 'a'))
|
|
37
|
+
.then(anchor => !!anchor)
|
|
38
|
+
.then(isLinkOrChildExpected => {
|
|
39
|
+
if (!isLinkOrChildExpected)
|
|
40
|
+
return false;
|
|
41
|
+
return adapter_1.adapter.PromiseCtor.resolve(adapter_1.adapter.dom.containsElement(expectedElement, topElement))
|
|
42
|
+
.then(containsElement => containsElement && adapter_1.adapter.dom.getNodeText(topElement))
|
|
43
|
+
.then(isTopElementChildOfLink => !isTopElementChildOfLink && adapter_1.adapter.dom.getNodeText(expectedElement));
|
|
44
|
+
})
|
|
45
|
+
.then(shouldSearchForMultilineLink => {
|
|
46
|
+
if (!shouldSearchForMultilineLink)
|
|
47
|
+
return topElement;
|
|
48
|
+
return adapter_1.adapter.PromiseCtor.resolve(adapter_1.adapter.position.getClientDimensions(expectedElement))
|
|
49
|
+
.then(linkRect => findElementOrNonEmptyChildFromPoint({ x: linkRect.right - 1, y: linkRect.top + 1 }, expectedElement)
|
|
50
|
+
.then(el => el || findElementOrNonEmptyChildFromPoint({ x: linkRect.left + 1, y: linkRect.bottom - 1 }, expectedElement))
|
|
51
|
+
.then(el => el || topElement));
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
function getElementFromPoint(point, win, expectedEl) {
|
|
55
|
+
return adapter_1.adapter.getElementExceptUI(point)
|
|
56
|
+
.then((topElement) => {
|
|
57
|
+
// NOTE: when trying to get an element by elementFromPoint in iframe and the target
|
|
58
|
+
// element is under any of shadow-ui elements, you will get null (only in IE).
|
|
59
|
+
// In this case, you should hide a top window's shadow-ui root to obtain an element.
|
|
60
|
+
let resChain = adapter_1.adapter.PromiseCtor.resolve(topElement);
|
|
61
|
+
if (!topElement && is_window_iframe_1.default(win) && point.x > 0 && point.y > 0)
|
|
62
|
+
resChain = resChain.then(() => adapter_1.adapter.getElementExceptUI(point, true));
|
|
63
|
+
return resChain.then((element) => correctTopElementByExpectedElement(element, expectedEl));
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
exports.default = getElementFromPoint;
|
|
67
|
+
module.exports = exports.default;
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWVsZW1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2hhcmVkL2FjdGlvbnMvZ2V0LWVsZW1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSx3Q0FBcUM7QUFDckMsZ0ZBQXNEO0FBS3RELFNBQVMsY0FBYyxDQUFLLFVBQWEsRUFBRSxXQUFjO0lBQ3JELE9BQU8saUJBQU8sQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLGlCQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDdEUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFO1FBQ2YsT0FBTyxVQUFVLElBQUksVUFBVSxDQUFDLElBQUksS0FBSyxpQkFBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDO0lBQzlHLENBQUMsQ0FBQyxDQUFDO0FBQ1gsQ0FBQztBQUVELFNBQVMsbUNBQW1DLENBQUssS0FBNkIsRUFBRSxPQUFXO0lBQ3ZGLE9BQU8saUJBQU8sQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLGlCQUFPLENBQUMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzFFLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRTtRQUNmLE9BQU8saUJBQU8sQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLGlCQUFPLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUM7YUFDL0UsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsVUFBVSxJQUFJLGlCQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUNyRSxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxlQUFlLElBQUksVUFBVSxJQUFJLGlCQUFPLENBQUMs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LENBQTZCLEtBQTZCLEVBQUUsR0FBTSxFQUFFLFVBQWM7SUFDekgsT0FBTyxpQkFBTyxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQztTQUNuQyxJQUFJLENBQUMsQ0FBQyxVQUFhLEVBQUUsRUFBRTtRQUNwQixtRkFBbUY7UUFDbkYsOEVBQThFO1FBQzlFLG9GQUFvRjtRQUNwRixJQUFJLFFBQVEsR0FBRyxpQkFBTyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFdkQsSUFBSSxDQUFDLFVBQVUsSUFBSSwwQkFBYyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQztZQUNoRSxRQUFRLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxpQkFBTyxDQUFDLGtCQUFrQixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBRTVFLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQVUsRUFBRSxFQUFFLENBQUMsa0NBQWtDLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFDbEcsQ0FBQyxDQUFDLENBQUM7QUFDWCxDQUFDO0FBYkQsc0NBYUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhZGFwdGVyIH0gZnJvbSAnLi4vYWRhcHRlcic7XG5pbXBvcnQgaXNJZnJhbWVXaW5kb3cgZnJvbSAnLi91dGlscy9pcy13aW5kb3ctaWZyYW1lJztcbmltcG9ydCB7IEF4aXNWYWx1ZXNEYXRhIH0gZnJvbSAnLi4vdXRpbHMvdmFsdWVzL2F4aXMtdmFsdWVzJztcbmltcG9ydCB7IFNoYXJlZFdpbmRvdyB9IGZyb20gJy4uL3R5cGVzJztcblxuXG5mdW5jdGlvbiBlbnN1cmVJbWFnZU1hcDxFPiAoaW1nRWxlbWVudDogRSwgYXJlYUVsZW1lbnQ6IEUpOiBQcm9taXNlPEU+IHtcbiAgICByZXR1cm4gYWRhcHRlci5Qcm9taXNlQ3Rvci5yZXNvbHZlKGFkYXB0ZXIuZG9tLmNsb3Nlc3QoYXJlYUVsZW1lbnQsICdtYXAnKSlcbiAgICAgICAgLnRoZW4obWFwRWxlbWVudCA9PiB7XG4gICAgICAgICAgICByZXR1cm4gbWFwRWxlbWVudCAmJiBtYXBFbGVtZW50Lm5hbWUgPT09IGFkYXB0ZXIuZG9tLmdldEltZ01hcE5hbWUoaW1nRWxlbWVudCkgPyBhcmVhRWxlbWVudCA6IGltZ0VsZW1lbnQ7XG4gICAgICAgIH0pO1xufVxuXG5mdW5jdGlvbiBmaW5kRWxlbWVudE9yTm9uRW1wdHlDaGlsZEZyb21Qb2ludDxFPiAocG9pbnQ6IEF4aXNWYWx1ZXNEYXRhPG51bWJlcj4sIGVsZW1lbnQ/OiBFKTogUHJvbWlzZTxFIHwgbnVsbD4ge1xuICAgIHJldHVybiBhZGFwdGVyLlByb21pc2VDdG9yLnJlc29sdmUoYWRhcHRlci5wb3NpdGlvbi5nZXRFbGVtZW50RnJvbVBvaW50KHBvaW50KSlcbiAgICAgICAgLnRoZW4odG9wRWxlbWVudCA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYWRhcHRlci5Qcm9taXNlQ3Rvci5yZXNvbHZlKGFkYXB0ZXIuZG9tLmNvbnRhaW5zRWxlbWVudChlbGVtZW50LCB0b3BFbGVtZW50KSlcbiAgICAgICAgICAgICAgICAudGhlbihjb250YWluc0VsID0+IGNvbnRhaW5zRWwgJiYgYWRhcHRlci5kb20uZ2V0Tm9kZVRleHQodG9wRWxlbWVudCkpXG4gICAgICAgICAgICAgICAgLnRoZW4oaXNOb25FbXB0eUNoaWxkID0+IGlzTm9uRW1wdHlDaGlsZCB8fCB0b3BFbGVtZW50ICYmIGFkYXB0ZXIuZG9tLmlzTm9kZUVxdWFsKHRvcEVsZW1lbnQsIGVsZW1lbnQpID8gdG9wRWxlbWVudCA6IG51bGwpO1xuICAgICAgICB9KTtcbn1cblxuZnVuY3Rpb24gY29ycmVjdFRvcEVsZW1lbnRCeUV4cGVjdGVkRWxlbWVudDxFPiAodG9wRWxlbWVudDogRSwgZXhwZWN0ZWRFbGVtZW50PzogRSk6IFByb21pc2U8RT4gfCBFIHtcbiAgICBpZiAoIWV4cGVjdGVkRWxlbWVudCB8fCAhdG9wRWxlbWVudCB8fCBhZGFwdGVyLmRvbS5pc05vZGVFcXVhbCh0b3BFbGVtZW50LCBleHBlY3RlZEVsZW1lbnQpKVxuICAgICAgICByZXR1cm4gdG9wRWxlbWVudDtcblxuICAgIGNvbnN0IGlzVFJFRkVsZW1lbnQgPSBhZGFwdGVyLmRvbS5nZXRUYWdOYW1lKGV4cGVjdGVkRWxlbWVudCkgPT09ICd0cmVmJztcblxuICAgIC8vIE5PVEU6ICdkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50JyBjYW4ndCBmaW5kIHRoZXNlIHR5cGVzIG9mIGVsZW1lbnRzXG4gICAgaWYgKGlzVFJFRkVsZW1lbnQpXG4gICAgICAgIHJldHVybiBleHBlY3RlZEVsZW1lbnQ7XG5cbiAgICAvLyBOT1RFOiBUMjk5NjY1IC0gSW5jb3JyZWN0IGNsaWNrIGF1dG9tYXRpb24gZm9yIGltYWdlcyB3aXRoIGFuIGFzc29jaWF0ZWQgbWFwIGVsZW1lbnQgaW4gRmlyZWZveFxuICAgIC8vIEFsbCBicm93c2VycyByZXR1cm4gdGhlIDxhcmVhPiBlbGVtZW50IGZyb20gZG9jdW1lbnQuZ2V0RWxlbWVudEZyb21Qb2ludCwgYnV0XG4gICAgLy8gRmlyZWZveCByZXR1cm5zIHRoZSA8aW1nPiBlbGVtZW50LiBXZSBzaG91bGQgYWNjb21wbGlzaCB0aGlzIGZvciBGaXJlZm94IGFzIHdlbGwuXG4gICAgY29uc3QgaXNJbWFnZU1hcEFyZWEgPSBhZGFwdGVyLmRvbS5nZXRUYWdOYW1lKGV4cGVjdGVkRWxlbWVudCkgPT09ICdhcmVhJyAmJiBhZGFwdGVyLmRvbS5pc0ltZ0VsZW1lbnQodG9wRWxlbWVudCk7XG5cbiAgICBpZiAoYWRhcHRlci5icm93c2VyLmlzRmlyZWZveCAmJiBpc0ltYWdlTWFwQXJlYSlcbiAgICAgICAgcmV0dXJuIGVuc3VyZUltYWdlTWFwKHRvcEVsZW1lbnQsIGV4cGVjdGVkRWxlbWVudCk7XG5cbiAgICAvLyBOT1RFOiB0cnkgdG8gZmluZCBhIG11bHRpLWxpbmUgbGluayBieSBpdHMgcmVjdGFuZ2xlIChUMTYzNjc4KVxuICAgIHJldHVybiBhZGFwdGVyLlByb21pc2VDdG9yLnJlc29sdmUoYWRhcHRlci5kb20uY2xvc2VzdChleHBlY3RlZEVsZW1lbnQsICdhJykpXG4gICAgICAgIC50aGVuKGFuY2hvciA9PiAhIWFuY2hvcilcbiAgICAgICAgLnRoZW4oaXNMaW5rT3JDaGlsZEV4cGVjdGVkID0+IHtcbiAgICAgICAgICAgIGlmICghaXNMaW5rT3JDaGlsZEV4cGVjdGVkKVxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcblxuICAgICAgICAgICAgcmV0dXJuIGFkYXB0ZXIuUHJvbWlzZUN0b3IucmVzb2x2ZShhZGFwdGVyLmRvbS5jb250YWluc0VsZW1lbnQoZXhwZWN0ZWRFbGVtZW50LCB0b3BFbGVtZW50KSlcbiAgICAgICAgICAgICAgICAudGhlbihjb250YWluc0VsZW1lbnQgPT4gY29udGFpbnNFbGVtZW50ICYmIGFkYXB0ZXIuZG9tLmdldE5vZGVUZXh0KHRvcEVsZW1lbnQpKVxuICAgICAgICAgICAgICAgIC50aGVuKGlzVG9wRWxlbWVudENoaWxkT2ZMaW5rID0+ICFpc1RvcEVsZW1lbnRDaGlsZE9mTGluayAmJiBhZGFwdGVyLmRvbS5nZXROb2RlVGV4dChleHBlY3RlZEVsZW1lbnQpKTtcbiAgICAgICAgfSlcbiAgICAgICAgLnRoZW4oc2hvdWxkU2VhcmNoRm9yTXVsdGlsaW5lTGluayA9PiB7XG4gICAgICAgICAgICBpZiAoIXNob3VsZFNlYXJjaEZvck11bHRpbGluZUxpbmspXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRvcEVsZW1lbnQ7XG5cbiAgICAgICAgICAgIHJldHVybiBhZGFwdGVyLlByb21pc2VDdG9yLnJlc29sdmUoYWRhcHRlci5wb3NpdGlvbi5nZXRDbGllbnREaW1lbnNpb25zKGV4cGVjdGVkRWxlbWVudCkpXG4gICAgICAgICAgICAgICAgLnRoZW4obGlua1JlY3QgPT4gZmluZEVsZW1lbnRPck5vbkVtcHR5Q2hpbGRGcm9tUG9pbnQoeyB4OiBsaW5rUmVjdC5yaWdodCAtIDEsIHk6IGxpbmtSZWN0LnRvcCArIDEgfSwgZXhwZWN0ZWRFbGVtZW50KVxuICAgICAgICAgICAgICAgICAgICAudGhlbihlbCA9PiBlbCB8fCBmaW5kRWxlbWVudE9yTm9uRW1wdHlDaGlsZEZyb21Qb2ludCh7IHg6IGxpbmtSZWN0LmxlZnQgKyAxLCB5OiBsaW5rUmVjdC5ib3R0b20gLSAxIH0sIGV4cGVjdGVkRWxlbWVudCkpXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKGVsID0+IGVsIHx8IHRvcEVsZW1lbnQpKTtcbiAgICAgICAgfSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldEVsZW1lbnRGcm9tUG9pbnQ8RSwgVyBleHRlbmRzIFNoYXJlZFdpbmRvdz4gKHBvaW50OiBBeGlzVmFsdWVzRGF0YTxudW1iZXI+LCB3aW46IFcsIGV4cGVjdGVkRWw/OiBFKTogUHJvbWlzZTxFPiB7XG4gICAgcmV0dXJuIGFkYXB0ZXIuZ2V0RWxlbWVudEV4Y2VwdFVJKHBvaW50KVxuICAgICAgICAudGhlbigodG9wRWxlbWVudDogRSkgPT4ge1xuICAgICAgICAgICAgLy8gTk9URTogd2hlbiB0cnlpbmcgdG8gZ2V0IGFuIGVsZW1lbnQgYnkgZWxlbWVudEZyb21Qb2ludCBpbiBpZnJhbWUgYW5kIHRoZSB0YXJnZXRcbiAgICAgICAgICAgIC8vIGVsZW1lbnQgaXMgdW5kZXIgYW55IG9mIHNoYWRvdy11aSBlbGVtZW50cywgeW91IHdpbGwgZ2V0IG51bGwgKG9ubHkgaW4gSUUpLlxuICAgICAgICAgICAgLy8gSW4gdGhpcyBjYXNlLCB5b3Ugc2hvdWxkIGhpZGUgYSB0b3Agd2luZG93J3Mgc2hhZG93LXVpIHJvb3QgdG8gb2J0YWluIGFuIGVsZW1lbnQuXG4gICAgICAgICAgICBsZXQgcmVzQ2hhaW4gPSBhZGFwdGVyLlByb21pc2VDdG9yLnJlc29sdmUodG9wRWxlbWVudCk7XG5cbiAgICAgICAgICAgIGlmICghdG9wRWxlbWVudCAmJiBpc0lmcmFtZVdpbmRvdyh3aW4pICYmIHBvaW50LnggPiAwICYmIHBvaW50LnkgPiAwKVxuICAgICAgICAgICAgICAgIHJlc0NoYWluID0gcmVzQ2hhaW4udGhlbigoKSA9PiBhZGFwdGVyLmdldEVsZW1lbnRFeGNlcHRVSShwb2ludCwgdHJ1ZSkpO1xuXG4gICAgICAgICAgICByZXR1cm4gcmVzQ2hhaW4udGhlbigoZWxlbWVudDogRSkgPT4gY29ycmVjdFRvcEVsZW1lbnRCeUV4cGVjdGVkRWxlbWVudChlbGVtZW50LCBleHBlY3RlZEVsKSk7XG4gICAgICAgIH0pO1xufVxuIl19
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
function isIframeWindow(window) {
|
|
4
|
+
return !window.parent || window.parent !== window;
|
|
5
|
+
}
|
|
6
|
+
exports.default = isIframeWindow;
|
|
7
|
+
module.exports = exports.default;
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMtd2luZG93LWlmcmFtZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zaGFyZWQvYWN0aW9ucy91dGlscy9pcy13aW5kb3ctaWZyYW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBRUEsU0FBd0IsY0FBYyxDQUFFLE1BQW9CO0lBQ3hELE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssTUFBTSxDQUFDO0FBQ3RELENBQUM7QUFGRCxpQ0FFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNoYXJlZFdpbmRvdyB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNJZnJhbWVXaW5kb3cgKHdpbmRvdzogU2hhcmVkV2luZG93KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF3aW5kb3cucGFyZW50IHx8IHdpbmRvdy5wYXJlbnQgIT09IHdpbmRvdztcbn1cbiJdfQ==
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getOffsetOptions = exports.getDefaultAutomationOffsets = void 0;
|
|
4
|
+
const adapter_1 = require("../../adapter");
|
|
5
|
+
function calcOffset(size) {
|
|
6
|
+
const offset = size / 2;
|
|
7
|
+
return offset < 1 ? 0 : Math.round(offset);
|
|
8
|
+
}
|
|
9
|
+
async function getDefaultAutomationOffsets(element) {
|
|
10
|
+
const rect = await adapter_1.adapter.position.getElementRectangle(element);
|
|
11
|
+
const offsetX = calcOffset(rect.width);
|
|
12
|
+
const offsetY = calcOffset(rect.height);
|
|
13
|
+
return { offsetX, offsetY };
|
|
14
|
+
}
|
|
15
|
+
exports.getDefaultAutomationOffsets = getDefaultAutomationOffsets;
|
|
16
|
+
async function getOffsetOptions(element, offsetX, offsetY) {
|
|
17
|
+
const defaultOffsets = await getDefaultAutomationOffsets(element);
|
|
18
|
+
offsetX = typeof offsetX === 'number' ? Math.round(offsetX) : defaultOffsets.offsetX;
|
|
19
|
+
offsetY = typeof offsetY === 'number' ? Math.round(offsetY) : defaultOffsets.offsetY;
|
|
20
|
+
if (offsetX > 0 && offsetY > 0)
|
|
21
|
+
return { offsetX, offsetY };
|
|
22
|
+
const dimensions = await adapter_1.adapter.position.getClientDimensions(element);
|
|
23
|
+
const width = Math.round(Math.max(element.scrollWidth, dimensions.width));
|
|
24
|
+
const height = Math.round(Math.max(element.scrollHeight, dimensions.height));
|
|
25
|
+
const maxX = dimensions.scrollbar.right + dimensions.border.left + dimensions.border.right + width;
|
|
26
|
+
const maxY = dimensions.scrollbar.bottom + dimensions.border.top + dimensions.border.bottom + height;
|
|
27
|
+
return {
|
|
28
|
+
offsetX: offsetX < 0 ? maxX + offsetX : offsetX,
|
|
29
|
+
offsetY: offsetY < 0 ? maxY + offsetY : offsetY,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
exports.getOffsetOptions = getOffsetOptions;
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2Zmc2V0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zaGFyZWQvYWN0aW9ucy91dGlscy9vZmZzZXRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJDQUF3QztBQUV4QyxTQUFTLFVBQVUsQ0FBRSxJQUFZO0lBQzdCLE1BQU0sTUFBTSxHQUFHLElBQUksR0FBRyxDQUFDLENBQUM7SUFFeEIsT0FBTyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDL0MsQ0FBQztBQUVNLEtBQUssVUFBVSwyQkFBMkIsQ0FBRSxPQUFZO0lBQzNELE1BQU0sSUFBSSxHQUFNLE1BQU0saUJBQU8sQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFcEUsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QyxNQUFNLE9BQU8sR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRXhDLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLENBQUM7QUFDaEMsQ0FBQztBQVBELGtFQU9DO0FBRU0sS0FBSyxVQUFVLGdCQUFnQixDQUFFLE9BQVksRUFBRSxPQUFnQixFQUFFLE9BQWdCO0lBQ3BGLE1BQU0sY0FBYyxHQUFHLE1BQU0sMkJBQTJCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFbEUsT0FBTyxHQUFHLE9BQU8sT0FBTyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQztJQUNyRixPQUFPLEdBQUcsT0FBTyxPQUFPLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDO0lBRXJGLElBQUksT0FBTyxHQUFHLENBQUMsSUFBSSxPQUFPLEdBQUcsQ0FBQztRQUMxQixPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFDO0lBRWhDLE1BQU0sVUFBVSxHQUFHLE1BQU0saUJBQU8sQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdkUsTUFBTSxLQUFLLEdBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDL0UsTUFBTSxNQUFNLEdBQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDakYsTUFBTSxJQUFJLEdBQVMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3pHLE1BQU0sSUFBSSxHQUFTLFVBQVUsQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsR0FBRyxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUUzRyxPQUFPO1FBQ0gsT0FBTyxFQUFFLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU87UUFDL0MsT0FBTyxFQUFFLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU87S0FDbEQsQ0FBQztBQUNOLENBQUM7QUFuQkQsNENBbUJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYWRhcHRlciB9IGZyb20gJy4uLy4uL2FkYXB0ZXInO1xuXG5mdW5jdGlvbiBjYWxjT2Zmc2V0IChzaXplOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnN0IG9mZnNldCA9IHNpemUgLyAyO1xuXG4gICAgcmV0dXJuIG9mZnNldCA8IDEgPyAwIDogTWF0aC5yb3VuZChvZmZzZXQpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0RGVmYXVsdEF1dG9tYXRpb25PZmZzZXRzIChlbGVtZW50OiBhbnkpOiBQcm9taXNlPHsgb2Zmc2V0WDogbnVtYmVyOyBvZmZzZXRZOiBudW1iZXIgfT4ge1xuICAgIGNvbnN0IHJlY3QgICAgPSBhd2FpdCBhZGFwdGVyLnBvc2l0aW9uLmdldEVsZW1lbnRSZWN0YW5nbGUoZWxlbWVudCk7XG5cbiAgICBjb25zdCBvZmZzZXRYID0gY2FsY09mZnNldChyZWN0LndpZHRoKTtcbiAgICBjb25zdCBvZmZzZXRZID0gY2FsY09mZnNldChyZWN0LmhlaWdodCk7XG5cbiAgICByZXR1cm4geyBvZmZzZXRYLCBvZmZzZXRZIH07XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRPZmZzZXRPcHRpb25zIChlbGVtZW50OiBhbnksIG9mZnNldFg/OiBudW1iZXIsIG9mZnNldFk/OiBudW1iZXIpOiBQcm9taXNlPHsgb2Zmc2V0WDogbnVtYmVyOyBvZmZzZXRZOiBudW1iZXIgfT4ge1xuICAgIGNvbnN0IGRlZmF1bHRPZmZzZXRzID0gYXdhaXQgZ2V0RGVmYXVsdEF1dG9tYXRpb25PZmZzZXRzKGVsZW1lbnQpO1xuXG4gICAgb2Zmc2V0WCA9IHR5cGVvZiBvZmZzZXRYID09PSAnbnVtYmVyJyA/IE1hdGgucm91bmQob2Zmc2V0WCkgOiBkZWZhdWx0T2Zmc2V0cy5vZmZzZXRYO1xuICAgIG9mZnNldFkgPSB0eXBlb2Ygb2Zmc2V0WSA9PT0gJ251bWJlcicgPyBNYXRoLnJvdW5kKG9mZnNldFkpIDogZGVmYXVsdE9mZnNldHMub2Zmc2V0WTtcblxuICAgIGlmIChvZmZzZXRYID4gMCAmJiBvZmZzZXRZID4gMClcbiAgICAgICAgcmV0dXJuIHsgb2Zmc2V0WCwgb2Zmc2V0WSB9O1xuXG4gICAgY29uc3QgZGltZW5zaW9ucyA9IGF3YWl0IGFkYXB0ZXIucG9zaXRpb24uZ2V0Q2xpZW50RGltZW5zaW9ucyhlbGVtZW50KTtcbiAgICBjb25zdCB3aWR0aCAgICAgID0gTWF0aC5yb3VuZChNYXRoLm1heChlbGVtZW50LnNjcm9sbFdpZHRoLCBkaW1lbnNpb25zLndpZHRoKSk7XG4gICAgY29uc3QgaGVpZ2h0ICAgICA9IE1hdGgucm91bmQoTWF0aC5tYXgoZWxlbWVudC5zY3JvbGxIZWlnaHQsIGRpbWVuc2lvbnMuaGVpZ2h0KSk7XG4gICAgY29uc3QgbWF4WCAgICAgICA9IGRpbWVuc2lvbnMuc2Nyb2xsYmFyLnJpZ2h0ICsgZGltZW5zaW9ucy5ib3JkZXIubGVmdCArIGRpbWVuc2lvbnMuYm9yZGVyLnJpZ2h0ICsgd2lkdGg7XG4gICAgY29uc3QgbWF4WSAgICAgICA9IGRpbWVuc2lvbnMuc2Nyb2xsYmFyLmJvdHRvbSArIGRpbWVuc2lvbnMuYm9yZGVyLnRvcCArIGRpbWVuc2lvbnMuYm9yZGVyLmJvdHRvbSArIGhlaWdodDtcblxuICAgIHJldHVybiB7XG4gICAgICAgIG9mZnNldFg6IG9mZnNldFggPCAwID8gbWF4WCArIG9mZnNldFggOiBvZmZzZXRYLFxuICAgICAgICBvZmZzZXRZOiBvZmZzZXRZIDwgMCA/IG1heFkgKyBvZmZzZXRZIDogb2Zmc2V0WSxcbiAgICB9O1xufVxuIl19
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const adapter_1 = require("../../adapter");
|
|
4
|
+
async function convertToClient(element, point) {
|
|
5
|
+
const elementScroll = await adapter_1.adapter.style.getElementScroll(element);
|
|
6
|
+
const hasScroll = await adapter_1.adapter.style.hasScroll(element);
|
|
7
|
+
if (!/html/i.test(element.tagName) && hasScroll) {
|
|
8
|
+
point.x -= elementScroll.left;
|
|
9
|
+
point.y -= elementScroll.top;
|
|
10
|
+
}
|
|
11
|
+
return adapter_1.adapter.position.offsetToClientCoords(point);
|
|
12
|
+
}
|
|
13
|
+
exports.default = convertToClient;
|
|
14
|
+
module.exports = exports.default;
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyZWVuLXBvaW50LXRvLWNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zaGFyZWQvYWN0aW9ucy91dGlscy9zY3JlZW4tcG9pbnQtdG8tY2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsMkNBQXdDO0FBR3pCLEtBQUssVUFBVSxlQUFlLENBQUUsT0FBWSxFQUFFLEtBQTZCO0lBQ3RGLE1BQU0sYUFBYSxHQUFHLE1BQU0saUJBQU8sQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDcEUsTUFBTSxTQUFTLEdBQU8sTUFBTSxpQkFBTyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFN0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLFNBQVMsRUFBRTtRQUM3QyxLQUFLLENBQUMsQ0FBQyxJQUFJLGFBQWEsQ0FBQyxJQUFJLENBQUM7UUFDOUIsS0FBSyxDQUFDLENBQUMsSUFBSSxhQUFhLENBQUMsR0FBRyxDQUFDO0tBQ2hDO0lBRUQsT0FBTyxpQkFBTyxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN4RCxDQUFDO0FBVkQsa0NBVUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhZGFwdGVyIH0gZnJvbSAnLi4vLi4vYWRhcHRlcic7XG5pbXBvcnQgQXhpc1ZhbHVlcywgeyBBeGlzVmFsdWVzRGF0YSB9IGZyb20gJy4uLy4uL3V0aWxzL3ZhbHVlcy9heGlzLXZhbHVlcyc7XG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIGNvbnZlcnRUb0NsaWVudCAoZWxlbWVudDogYW55LCBwb2ludDogQXhpc1ZhbHVlc0RhdGE8bnVtYmVyPik6IFByb21pc2U8QXhpc1ZhbHVlczxudW1iZXI+PiB7XG4gICAgY29uc3QgZWxlbWVudFNjcm9sbCA9IGF3YWl0IGFkYXB0ZXIuc3R5bGUuZ2V0RWxlbWVudFNjcm9sbChlbGVtZW50KTtcbiAgICBjb25zdCBoYXNTY3JvbGwgICAgID0gYXdhaXQgYWRhcHRlci5zdHlsZS5oYXNTY3JvbGwoZWxlbWVudCk7XG5cbiAgICBpZiAoIS9odG1sL2kudGVzdChlbGVtZW50LnRhZ05hbWUpICYmIGhhc1Njcm9sbCkge1xuICAgICAgICBwb2ludC54IC09IGVsZW1lbnRTY3JvbGwubGVmdDtcbiAgICAgICAgcG9pbnQueSAtPSBlbGVtZW50U2Nyb2xsLnRvcDtcbiAgICB9XG5cbiAgICByZXR1cm4gYWRhcHRlci5wb3NpdGlvbi5vZmZzZXRUb0NsaWVudENvb3Jkcyhwb2ludCk7XG59XG4iXX0=
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "testcafe",
|
|
3
3
|
"description": "Automated browser testing for the modern web development stack.",
|
|
4
4
|
"license": "MIT",
|
|
5
|
-
"version": "1.18.
|
|
5
|
+
"version": "1.18.4",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "Developer Express Inc.",
|
|
8
8
|
"url": "https://www.devexpress.com/"
|
|
@@ -110,7 +110,7 @@
|
|
|
110
110
|
"is-stream": "^2.0.0",
|
|
111
111
|
"json5": "^2.1.0",
|
|
112
112
|
"lodash": "^4.17.13",
|
|
113
|
-
"log-update-async-hook": "^2.0.
|
|
113
|
+
"log-update-async-hook": "^2.0.4",
|
|
114
114
|
"make-dir": "^3.0.0",
|
|
115
115
|
"mime-db": "^1.41.0",
|
|
116
116
|
"moment": "^2.10.3",
|
|
@@ -134,7 +134,7 @@
|
|
|
134
134
|
"source-map-support": "^0.5.16",
|
|
135
135
|
"strip-bom": "^2.0.0",
|
|
136
136
|
"testcafe-browser-tools": "2.0.22",
|
|
137
|
-
"testcafe-hammerhead": "24.5.
|
|
137
|
+
"testcafe-hammerhead": "24.5.14",
|
|
138
138
|
"testcafe-legacy-api": "5.1.2",
|
|
139
139
|
"testcafe-reporter-dashboard": "0.2.5",
|
|
140
140
|
"testcafe-reporter-json": "^2.1.0",
|