testplane 9.0.7 → 9.0.9

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.
Files changed (39) hide show
  1. package/build/package.json +3 -3
  2. package/build/src/browser/client-bridge/index.d.ts +4 -1
  3. package/build/src/browser/client-bridge/index.js +7 -7
  4. package/build/src/browser/client-bridge/index.js.map +1 -1
  5. package/build/src/browser/client-scripts/browser-utils/build/bundle.compat.js +1 -1
  6. package/build/src/browser/client-scripts/browser-utils/build/bundle.native.js +1 -1
  7. package/build/src/browser/client-scripts/browser-utils/tsc-out/client-scripts/shared/lib.compat.js +31 -9
  8. package/build/src/browser/client-scripts/browser-utils/tsc-out/client-scripts/shared/lib.native.js +23 -9
  9. package/build/src/browser/client-scripts/screen-shooter/build/bundle.compat.js +13 -13
  10. package/build/src/browser/client-scripts/screen-shooter/build/bundle.native.js +13 -13
  11. package/build/src/browser/client-scripts/screen-shooter/tsc-out/client-scripts/screen-shooter/implementation.js +60 -35
  12. package/build/src/browser/client-scripts/screen-shooter/tsc-out/client-scripts/screen-shooter/operations.js +73 -49
  13. package/build/src/browser/client-scripts/screen-shooter/tsc-out/client-scripts/screen-shooter/utils/clip-rect.js +27 -3
  14. package/build/src/browser/client-scripts/screen-shooter/tsc-out/client-scripts/screen-shooter/utils/dom.js +2 -2
  15. package/build/src/browser/client-scripts/screen-shooter/tsc-out/client-scripts/screen-shooter/utils/pseudo-element-rect.js +10 -7
  16. package/build/src/browser/client-scripts/screen-shooter/tsc-out/client-scripts/screen-shooter/utils/scroll.js +42 -15
  17. package/build/src/browser/client-scripts/screen-shooter/tsc-out/client-scripts/screen-shooter/utils/z-index.js +25 -1
  18. package/build/src/browser/client-scripts/screen-shooter/tsc-out/client-scripts/shared/lib.compat.js +31 -9
  19. package/build/src/browser/client-scripts/screen-shooter/tsc-out/client-scripts/shared/lib.native.js +23 -9
  20. package/build/src/browser/commands/assert-view/index.js +1 -1
  21. package/build/src/browser/commands/assert-view/index.js.map +1 -1
  22. package/build/src/browser/commands/switchToRepl.js +3 -2
  23. package/build/src/browser/commands/switchToRepl.js.map +1 -1
  24. package/build/src/browser/commands/waitForStaticToLoad.js +54 -33
  25. package/build/src/browser/commands/waitForStaticToLoad.js.map +1 -1
  26. package/build/src/browser/history/rrweb.js +8 -0
  27. package/build/src/browser/history/rrweb.js.map +1 -1
  28. package/build/src/browser/history/utils.js +1 -1
  29. package/build/src/browser/history/utils.js.map +1 -1
  30. package/build/src/browser/new-browser.js +6 -2
  31. package/build/src/browser/new-browser.js.map +1 -1
  32. package/build/src/browser/screen-shooter/elements-screen-shooter.d.ts +3 -2
  33. package/build/src/browser/screen-shooter/elements-screen-shooter.js +49 -44
  34. package/build/src/browser/screen-shooter/elements-screen-shooter.js.map +1 -1
  35. package/build/src/browser/screen-shooter/operations/wait-for-selectors-to-settle.d.ts +3 -1
  36. package/build/src/browser/screen-shooter/operations/wait-for-selectors-to-settle.js +37 -17
  37. package/build/src/browser/screen-shooter/operations/wait-for-selectors-to-settle.js.map +1 -1
  38. package/build/src/bundle/cjs/index.js +203 -17209
  39. package/package.json +3 -3
@@ -10,6 +10,29 @@ var __assign = (this && this.__assign) || function () {
10
10
  };
11
11
  return __assign.apply(this, arguments);
12
12
  };
13
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ var desc = Object.getOwnPropertyDescriptor(m, k);
16
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
17
+ desc = { enumerable: true, get: function() { return m[k]; } };
18
+ }
19
+ Object.defineProperty(o, k2, desc);
20
+ }) : (function(o, m, k, k2) {
21
+ if (k2 === undefined) k2 = k;
22
+ o[k2] = m[k];
23
+ }));
24
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
25
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
26
+ }) : function(o, v) {
27
+ o["default"] = v;
28
+ });
29
+ var __importStar = (this && this.__importStar) || function (mod) {
30
+ if (mod && mod.__esModule) return mod;
31
+ var result = {};
32
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
33
+ __setModuleDefault(result, mod);
34
+ return result;
35
+ };
13
36
  var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
14
37
  if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
15
38
  if (ar || !(i in from)) {
@@ -22,6 +45,7 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
22
45
  exports.__esModule = true;
23
46
  exports.disablePointerEvents = exports.disableAnimations = exports.cleanupSavedScrolls = exports.prepareFullPageScrollCleanup = exports.saveScrollPositions = exports.scrollToCaptureAreaIfNeeded = exports.computePixelRatio = exports.computeCanHaveCaret = exports.computeDocumentSize = exports.computeSafeArea = exports.computeIgnoreAreas = exports.computeCaptureSpecs = exports.computeElementPositionsProbe = exports.computeViewportOffset = exports.computeViewportSize = exports.computeScrollOffset = void 0;
24
47
  var _isomorphic_1 = require("@isomorphic");
48
+ var lib = __importStar(require("@lib"));
25
49
  var outside_of_viewport_1 = require("./errors/outside-of-viewport");
26
50
  var descriptions_1 = require("./utils/descriptions");
27
51
  var dom_1 = require("./utils/dom");
@@ -33,7 +57,7 @@ var z_index_1 = require("./utils/z-index");
33
57
  var pseudo_element_rect_1 = require("./utils/pseudo-element-rect");
34
58
  var user_agent_1 = require("./utils/user-agent");
35
59
  function computeScrollOffset(element) {
36
- return ((0, scroll_1.isRootLikeElement)(element) ? window.scrollY : element.scrollTop);
60
+ return ((0, scroll_1.isRootLikeElement)(element) ? window.pageYOffset : element.scrollTop);
37
61
  }
38
62
  exports.computeScrollOffset = computeScrollOffset;
39
63
  function computeViewportSize() {
@@ -53,8 +77,8 @@ function computeViewportSize() {
53
77
  exports.computeViewportSize = computeViewportSize;
54
78
  function computeViewportOffset() {
55
79
  return {
56
- left: window.scrollX,
57
- top: window.scrollY
80
+ left: window.pageXOffset,
81
+ top: window.pageYOffset
58
82
  };
59
83
  }
60
84
  exports.computeViewportOffset = computeViewportOffset;
@@ -93,19 +117,19 @@ function computeElementPositionsProbe(gridSize) {
93
117
  return probe;
94
118
  }
95
119
  exports.computeElementPositionsProbe = computeElementPositionsProbe;
96
- function computeCaptureSpecs(selectors, logger) {
97
- if (selectors.length === 0) {
98
- throw new Error("No selectors to compute capture area");
120
+ function computeCaptureSpecs(targets, logger) {
121
+ if (targets.length === 0) {
122
+ throw new Error("No targets to compute capture area");
99
123
  }
100
124
  logger === null || logger === void 0 ? void 0 : logger("========== <computeCaptureSpecs> ==========");
101
- logger === null || logger === void 0 ? void 0 : logger("selectors:", selectors);
125
+ logger === null || logger === void 0 ? void 0 : logger("targets:", targets);
102
126
  var startTime = performance.now();
103
127
  var elements = [];
104
- for (var i = 0; i < selectors.length; i++) {
105
- var parsedSelector = (0, pseudo_element_rect_1.parseCaptureSelector)(selectors[i]);
106
- var element = document.querySelector(parsedSelector.elementSelector);
128
+ for (var i = 0; i < targets.length; i++) {
129
+ var parsedTarget = (0, pseudo_element_rect_1.parseCaptureTarget)(targets[i]);
130
+ var element = lib.queryFirst(parsedTarget.elementTarget);
107
131
  if (element) {
108
- elements.push({ element: element, pseudoElement: parsedSelector.pseudoElement });
132
+ elements.push({ element: element, pseudoElement: parsedTarget.pseudoElement });
109
133
  }
110
134
  }
111
135
  function getCaptureSpec(element, pseudoElement) {
@@ -138,16 +162,16 @@ function computeCaptureSpecs(selectors, logger) {
138
162
  return captureSpecs;
139
163
  }
140
164
  exports.computeCaptureSpecs = computeCaptureSpecs;
141
- function computeIgnoreAreas(selectors) {
142
- if (selectors === void 0) { selectors = []; }
165
+ function computeIgnoreAreas(targets) {
166
+ if (targets === void 0) { targets = []; }
143
167
  var ignoreAreas = [];
144
- for (var s = 0; s < selectors.length; s++) {
145
- var parsedSelector = (0, pseudo_element_rect_1.parseCaptureSelector)(selectors[s]);
146
- var nodeList = document.querySelectorAll(parsedSelector.elementSelector);
147
- for (var i = 0; i < nodeList.length; i++) {
148
- var rect = parsedSelector.pseudoElement
149
- ? (0, element_rect_1.getPseudoElementCaptureRect)(nodeList[i], parsedSelector.pseudoElement)
150
- : (0, element_rect_1.getElementCaptureRect)(nodeList[i]);
168
+ for (var targetIndex = 0; targetIndex < targets.length; targetIndex++) {
169
+ var parsedTarget = (0, pseudo_element_rect_1.parseCaptureTarget)(targets[targetIndex]);
170
+ var elements = lib.queryAll(parsedTarget.elementTarget);
171
+ for (var i = 0; i < elements.length; i++) {
172
+ var rect = parsedTarget.pseudoElement
173
+ ? (0, element_rect_1.getPseudoElementCaptureRect)(elements[i], parsedTarget.pseudoElement)
174
+ : (0, element_rect_1.getElementCaptureRect)(elements[i]);
151
175
  if (rect !== null) {
152
176
  ignoreAreas.push(rect);
153
177
  }
@@ -156,7 +180,7 @@ function computeIgnoreAreas(selectors) {
156
180
  return ignoreAreas;
157
181
  }
158
182
  exports.computeIgnoreAreas = computeIgnoreAreas;
159
- function computeSafeArea(selectorsToCapture, scrollElement, logger) {
183
+ function computeSafeArea(targetsToCapture, scrollElement, logger) {
160
184
  var _a, _b;
161
185
  logger === null || logger === void 0 ? void 0 : logger("========== <computeSafeArea> ==========");
162
186
  var startTime = performance.now();
@@ -167,10 +191,10 @@ function computeSafeArea(selectorsToCapture, scrollElement, logger) {
167
191
  width: viewportSize.width,
168
192
  height: viewportSize.height
169
193
  };
170
- var captureElements = selectorsToCapture
171
- .map(function (s) { return document.querySelector((0, pseudo_element_rect_1.parseCaptureSelector)(s).elementSelector); })
194
+ var captureElements = targetsToCapture
195
+ .map(function (target) { return lib.queryFirst((0, pseudo_element_rect_1.parseCaptureTarget)(target).elementTarget); })
172
196
  .filter(function (e) { return e !== null; });
173
- var captureSpecs = computeCaptureSpecs(selectorsToCapture).map(function (s) { return s.full; });
197
+ var captureSpecs = computeCaptureSpecs(targetsToCapture).map(function (s) { return s.full; });
174
198
  if (captureSpecs.length === 0) {
175
199
  return { top: viewportRect.top, height: viewportRect.height };
176
200
  }
@@ -217,10 +241,10 @@ function computeSafeArea(selectorsToCapture, scrollElement, logger) {
217
241
  var singleCaptureElement = captureElements.length === 1 ? captureElements[0] : null;
218
242
  var _loop_1 = function (idx) {
219
243
  var el = allElements[idx];
220
- if (scrollEl === el || el.contains(scrollEl)) {
244
+ if (scrollEl === el || lib.contains(el, scrollEl)) {
221
245
  return "continue";
222
246
  }
223
- if (singleCaptureElement && (el === singleCaptureElement || el.contains(singleCaptureElement))) {
247
+ if (singleCaptureElement && (el === singleCaptureElement || lib.contains(el, singleCaptureElement))) {
224
248
  return "continue";
225
249
  }
226
250
  var computedStyle = getComputedStyle(el);
@@ -246,20 +270,20 @@ function computeSafeArea(selectorsToCapture, scrollElement, logger) {
246
270
  var adjustedRect = (0, element_rect_1.domRectToViewportCss)(bcr);
247
271
  var fixedPositionedParent = (0, dom_1.findFixedPositionedParent)(el);
248
272
  var isInsideScrollContextFixedParent = fixedPositionedParent !== null &&
249
- (fixedPositionedParent === scrollEl || fixedPositionedParent.contains(scrollEl));
273
+ (fixedPositionedParent === scrollEl || lib.contains(fixedPositionedParent, scrollEl));
250
274
  if (position === "fixed" || (fixedPositionedParent && !isInsideScrollContextFixedParent)) {
251
275
  likelyInterferes = true;
252
276
  // If the fixed element is inside a capture element, it's almost certainly interfering
253
- shouldSkipZIndexCheck = captureElements.some(function (capEl) { return capEl.contains(el); });
277
+ shouldSkipZIndexCheck = captureElements.some(function (capEl) { return lib.contains(capEl, el); });
254
278
  }
255
279
  else if (position === "absolute") {
256
280
  // Skip absolutely positioned elements that are inside capture elements
257
- if (captureElements.some(function (capEl) { return capEl.contains(el); }))
281
+ if (captureElements.some(function (capEl) { return lib.contains(capEl, el); }))
258
282
  return "continue";
259
283
  // Absolute elements interfere only if positioned relative to ancestor outside scroll container
260
284
  var containingBlock = (0, dom_1.findContainingBlock)(el);
261
285
  // scrollElem may be window, in which case it doesn't have a contains method
262
- if (scrollEl !== document.documentElement && !scrollEl.contains(containingBlock)) {
286
+ if (scrollEl !== document.documentElement && !lib.contains(scrollEl, containingBlock)) {
263
287
  likelyInterferes = true;
264
288
  }
265
289
  }
@@ -272,7 +296,7 @@ function computeSafeArea(selectorsToCapture, scrollElement, logger) {
272
296
  var scrollParentBcr = scrollParent.getBoundingClientRect();
273
297
  topValue += (0, scroll_1.isRootLikeElement)(scrollParent) ? 0 : scrollParentBcr.top;
274
298
  shouldSkipZIndexCheck =
275
- captureElements.some(function (capEl) { return capEl === el || capEl.contains(el); }) &&
299
+ captureElements.some(function (capEl) { return capEl === el || lib.contains(capEl, el); }) &&
276
300
  (scrollParent === scrollEl || ((0, scroll_1.isRootLikeElement)(scrollParent) && (0, scroll_1.isRootLikeElement)(scrollEl)));
277
301
  if (!isNaN(topValue)) {
278
302
  adjustedRect = {
@@ -395,18 +419,19 @@ function computePixelRatio(usePixelRatio) {
395
419
  return window.screen.deviceXDPI / window.screen.logicalXDPI || 1;
396
420
  }
397
421
  exports.computePixelRatio = computePixelRatio;
398
- function scrollToCaptureAreaIfNeeded(selectorsToCapture, captureElementFromTop, allowViewportOverflow, selectorToScroll, logger) {
422
+ function scrollToCaptureAreaIfNeeded(targetsToCapture, captureElementFromTop, allowViewportOverflow, targetToScroll, logger) {
399
423
  var viewportSize = computeViewportSize();
400
424
  var viewport = __assign({ top: 0, left: 0 }, viewportSize);
401
- var captureSpecsResult = computeCaptureSpecs(selectorsToCapture);
425
+ var captureSpecsResult = computeCaptureSpecs(targetsToCapture);
402
426
  if (!captureSpecsResult)
403
427
  return {};
404
- var scrollTarget = selectorToScroll ? document.querySelector(selectorToScroll) : null;
405
- var selectorsForScrollParentSearch = selectorsToCapture.map(function (selector) { return (0, pseudo_element_rect_1.parseCaptureSelector)(selector).elementSelector; });
406
- var initialScrollElem = scrollTarget !== null && scrollTarget !== void 0 ? scrollTarget : (0, scroll_1.getCommonScrollParent)(selectorsForScrollParentSearch);
407
- var readableSelectorToScrollDescr = selectorToScroll !== null && selectorToScroll !== void 0 ? selectorToScroll : (0, descriptions_1.getReadableElementDescriptor)(initialScrollElem);
428
+ var scrollTarget = targetToScroll ? lib.queryFirst(targetToScroll) : null;
429
+ var initialScrollElem = scrollTarget !== null && scrollTarget !== void 0 ? scrollTarget : (0, scroll_1.getCommonScrollParent)(targetsToCapture);
430
+ var readableSelectorToScrollDescr = typeof targetToScroll === "string"
431
+ ? targetToScroll
432
+ : (0, descriptions_1.getReadableElementDescriptor)(scrollTarget !== null && scrollTarget !== void 0 ? scrollTarget : initialScrollElem);
408
433
  var captureArea = (0, _isomorphic_1.getCoveringRect)(captureSpecsResult.map(function (s) { return s.full; }));
409
- var safeArea = computeSafeArea(selectorsToCapture, initialScrollElem, logger);
434
+ var safeArea = computeSafeArea(targetsToCapture, initialScrollElem, logger);
410
435
  var captureAndSafeAreasIntersection = (0, _isomorphic_1.getIntersection)(captureArea, safeArea);
411
436
  var captureAndViewportIntersection = (0, _isomorphic_1.getIntersection)(captureArea, viewport);
412
437
  var expectedVisibleHeight = Math.min(captureArea.height, safeArea.height);
@@ -439,15 +464,15 @@ function scrollToCaptureAreaIfNeeded(selectorsToCapture, captureElementFromTop,
439
464
  }
440
465
  logger === null || logger === void 0 ? void 0 : logger("scrollToCaptureAreaIfNeeded: scrolling is required", {
441
466
  scrollElement: readableSelectorToScrollDescr,
442
- requestedSelectorToScroll: selectorToScroll !== null && selectorToScroll !== void 0 ? selectorToScroll : null,
443
- selectorMatched: Boolean(scrollTarget)
467
+ requestedTargetToScroll: targetToScroll !== null && targetToScroll !== void 0 ? targetToScroll : null,
468
+ targetResolved: Boolean(scrollTarget)
444
469
  });
445
470
  var scrollChain = __spreadArray([], (0, scroll_1.getScrollParentsChain)(initialScrollElem), true);
446
471
  if (scrollChain[scrollChain.length - 1] !== initialScrollElem) {
447
472
  scrollChain.push(initialScrollElem);
448
473
  }
449
474
  for (var i = 1; i < scrollChain.length; i++) {
450
- var currentSafeArea = computeSafeArea(selectorsToCapture, scrollChain[i - 1]);
475
+ var currentSafeArea = computeSafeArea(targetsToCapture, scrollChain[i - 1]);
451
476
  var childTop = scrollChain[i].getBoundingClientRect().top;
452
477
  var scrollDelta = childTop - currentSafeArea.top;
453
478
  logger === null || logger === void 0 ? void 0 : logger("scrollToCaptureAreaIfNeeded: scrolling chain element", {
@@ -457,10 +482,10 @@ function scrollToCaptureAreaIfNeeded(selectorsToCapture, captureElementFromTop,
457
482
  });
458
483
  (0, scroll_1.scrollElementBy)(scrollChain[i - 1], scrollDelta, logger);
459
484
  }
460
- var finalCaptureArea = (0, _isomorphic_1.getCoveringRect)(computeCaptureSpecs(selectorsToCapture).map(function (s) { return s.full; }));
485
+ var finalCaptureArea = (0, _isomorphic_1.getCoveringRect)(computeCaptureSpecs(targetsToCapture).map(function (s) { return s.full; }));
461
486
  if (!finalCaptureArea)
462
487
  return {};
463
- var finalSafeArea = computeSafeArea(selectorsToCapture, initialScrollElem);
488
+ var finalSafeArea = computeSafeArea(targetsToCapture, initialScrollElem);
464
489
  var finalScrollDelta = finalCaptureArea.top - finalSafeArea.top;
465
490
  logger === null || logger === void 0 ? void 0 : logger("scrollToCaptureAreaIfNeeded: final alignment scroll", {
466
491
  scrollElement: readableSelectorToScrollDescr,
@@ -483,8 +508,8 @@ function saveElementScrollPosition(element) {
483
508
  var savedPosition = (0, scroll_1.isRootLikeElement)(element)
484
509
  ? {
485
510
  element: element,
486
- left: window.scrollX,
487
- top: window.scrollY
511
+ left: window.pageXOffset,
512
+ top: window.pageYOffset
488
513
  }
489
514
  : {
490
515
  element: element,
@@ -493,11 +518,10 @@ function saveElementScrollPosition(element) {
493
518
  };
494
519
  namespaceData.savedScrollPositions.push(savedPosition);
495
520
  }
496
- function saveScrollPositions(selectorsToCapture, selectorToScroll) {
521
+ function saveScrollPositions(targetsToCapture, targetToScroll) {
497
522
  (0, dom_1.getScreenshooterNamespaceData)().savedScrollPositions = [];
498
- var scrollTarget = selectorToScroll ? document.querySelector(selectorToScroll) : null;
499
- var selectorsForScrollParentSearch = selectorsToCapture.map(function (selector) { return (0, pseudo_element_rect_1.parseCaptureSelector)(selector).elementSelector; });
500
- var initialScrollElement = scrollTarget !== null && scrollTarget !== void 0 ? scrollTarget : (0, scroll_1.getCommonScrollParent)(selectorsForScrollParentSearch);
523
+ var scrollTarget = targetToScroll ? lib.queryFirst(targetToScroll) : null;
524
+ var initialScrollElement = scrollTarget !== null && scrollTarget !== void 0 ? scrollTarget : (0, scroll_1.getCommonScrollParent)(targetsToCapture);
501
525
  var scrollChain = __spreadArray([], (0, scroll_1.getScrollParentsChain)(initialScrollElement), true);
502
526
  if (scrollChain[scrollChain.length - 1] !== initialScrollElement) {
503
527
  scrollChain.push(initialScrollElement);
@@ -1,7 +1,31 @@
1
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
+ };
2
25
  exports.__esModule = true;
3
26
  exports.getClipRect = void 0;
4
27
  var _isomorphic_1 = require("@isomorphic");
28
+ var lib = __importStar(require("@lib"));
5
29
  var element_rect_1 = require("./element-rect");
6
30
  var scroll_1 = require("./scroll");
7
31
  var dom_1 = require("./dom");
@@ -45,15 +69,15 @@ function getFixedAncestors(element) {
45
69
  function escapesOverflowClippingViaAbsoluteContainingBlocks(clippingElement, absoluteContainingBlocks) {
46
70
  return absoluteContainingBlocks.some(function (_a) {
47
71
  var absoluteAncestor = _a.absoluteAncestor, containingBlock = _a.containingBlock;
48
- if (absoluteAncestor === clippingElement || !clippingElement.contains(absoluteAncestor)) {
72
+ if (absoluteAncestor === clippingElement || !lib.contains(clippingElement, absoluteAncestor)) {
49
73
  return false;
50
74
  }
51
- return containingBlock !== clippingElement && containingBlock.contains(clippingElement);
75
+ return containingBlock !== clippingElement && lib.contains(containingBlock, clippingElement);
52
76
  });
53
77
  }
54
78
  /** Fixed-position descendants escape clipping of ancestors above the fixed ancestor */
55
79
  function escapesOverflowClippingViaFixedAncestors(clippingElement, fixedAncestors) {
56
- return fixedAncestors.some(function (fixedAncestor) { return fixedAncestor !== clippingElement && clippingElement.contains(fixedAncestor); });
80
+ return fixedAncestors.some(function (fixedAncestor) { return fixedAncestor !== clippingElement && lib.contains(clippingElement, fixedAncestor); });
57
81
  }
58
82
  /**
59
83
  * Computes the clip rect for an element by intersecting the content boxes
@@ -71,11 +71,11 @@ function forEachRoot(cb) {
71
71
  }
72
72
  exports.forEachRoot = forEachRoot;
73
73
  function getParentElement(node) {
74
- if (node instanceof ShadowRoot)
74
+ if (lib.isShadowRoot(node))
75
75
  return node.host;
76
76
  if (node instanceof Element) {
77
77
  var root = lib.getRootNode(node);
78
- return node.parentElement || (root instanceof ShadowRoot ? root.host : null);
78
+ return node.parentElement || (lib.isShadowRoot(root) ? root.host : null);
79
79
  }
80
80
  return node.parentNode instanceof Element ? node.parentNode : null;
81
81
  }
@@ -1,23 +1,26 @@
1
1
  "use strict";
2
2
  exports.__esModule = true;
3
- exports.getPseudoElementRect = exports.parseCaptureSelector = exports.PSEUDO_ELEMENTS = void 0;
3
+ exports.getPseudoElementRect = exports.parseCaptureTarget = exports.PSEUDO_ELEMENTS = void 0;
4
4
  exports.PSEUDO_ELEMENTS = ["::before", "::after"];
5
5
  var PSEUDO_SELECTOR_REGEXP = /(.*?)(::before|::after)\s*$/i;
6
- function parseCaptureSelector(selector) {
7
- var match = selector.match(PSEUDO_SELECTOR_REGEXP);
6
+ function parseCaptureTarget(target) {
7
+ if (typeof target !== "string") {
8
+ return { elementTarget: target, pseudoElement: null };
9
+ }
10
+ var match = target.match(PSEUDO_SELECTOR_REGEXP);
8
11
  if (!match) {
9
- return { elementSelector: selector, pseudoElement: null };
12
+ return { elementTarget: target, pseudoElement: null };
10
13
  }
11
14
  var elementSelector = match[1].trim();
12
15
  if (!elementSelector) {
13
- return { elementSelector: selector, pseudoElement: null };
16
+ return { elementTarget: target, pseudoElement: null };
14
17
  }
15
18
  return {
16
- elementSelector: elementSelector,
19
+ elementTarget: elementSelector,
17
20
  pseudoElement: match[2].toLowerCase()
18
21
  };
19
22
  }
20
- exports.parseCaptureSelector = parseCaptureSelector;
23
+ exports.parseCaptureTarget = parseCaptureTarget;
21
24
  function getElementBorderWidths(element) {
22
25
  var style = getComputedStyle(element);
23
26
  return {
@@ -1,16 +1,43 @@
1
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
+ };
2
25
  exports.__esModule = true;
3
26
  exports.scrollElementToOffset = exports.scrollElementBy = exports.performScrollFixForSafariIfNeeded = exports.isRootLikeElement = exports.getCommonScrollParent = exports.getScrollParentsChain = exports.getScrollParent = void 0;
27
+ var lib = __importStar(require("@lib"));
4
28
  var dom_1 = require("./dom");
5
29
  var user_agent_1 = require("./user-agent");
6
30
  var PSEUDO_SELECTOR_REGEXP = /(.*?)(::before|::after)\s*$/i;
7
- function getElementSelector(selector) {
8
- var match = selector.match(PSEUDO_SELECTOR_REGEXP);
31
+ function getElementTarget(target) {
32
+ if (typeof target !== "string") {
33
+ return target;
34
+ }
35
+ var match = target.match(PSEUDO_SELECTOR_REGEXP);
9
36
  if (!match) {
10
- return selector;
37
+ return target;
11
38
  }
12
39
  var elementSelector = match[1].trim();
13
- return elementSelector || selector;
40
+ return elementSelector || target;
14
41
  }
15
42
  function isScrollable(element) {
16
43
  var overflowY = getComputedStyle(element).overflowY;
@@ -43,9 +70,9 @@ function getScrollParentsChain(element) {
43
70
  return chain;
44
71
  }
45
72
  exports.getScrollParentsChain = getScrollParentsChain;
46
- function getCommonScrollParent(selectors) {
47
- var elements = selectors
48
- .map(function (s) { return document.querySelector(getElementSelector(s)); })
73
+ function getCommonScrollParent(targets) {
74
+ var elements = targets
75
+ .map(function (target) { return lib.queryFirst(getElementTarget(target)); })
49
76
  .filter(function (e) { return e !== null; });
50
77
  if (elements.length === 0)
51
78
  return document.documentElement;
@@ -73,7 +100,7 @@ function getCommonScrollParent(selectors) {
73
100
  }
74
101
  exports.getCommonScrollParent = getCommonScrollParent;
75
102
  function getElementScrollTop(element) {
76
- return isRootLikeElement(element) ? window.scrollY : element.scrollTop;
103
+ return isRootLikeElement(element) ? window.pageYOffset : element.scrollTop;
77
104
  }
78
105
  var SCROLL_APPLY_MAX_WAIT_MS = 50;
79
106
  var SCROLL_APPLY_MAX_ITERATIONS = 10000;
@@ -97,8 +124,8 @@ function performScrollFixForSafariIfNeeded(targetY) {
97
124
  if (!(0, user_agent_1.isSafariMobile)()) {
98
125
  return;
99
126
  }
100
- if (window.scrollY < 100 && targetY < 100) {
101
- window.scrollTo(window.scrollX, 100);
127
+ if (window.pageYOffset < 100 && targetY < 100) {
128
+ window.scrollTo(window.pageXOffset, 100);
102
129
  }
103
130
  }
104
131
  exports.performScrollFixForSafariIfNeeded = performScrollFixForSafariIfNeeded;
@@ -106,14 +133,14 @@ function scrollElementBy(element, deltaY, logger) {
106
133
  var delta = deltaY;
107
134
  var isRootLike = isRootLikeElement(element);
108
135
  var scrollMetricsElement = isRootLike ? getPageScrollElement() : element;
109
- var currentScrollY = isRootLike ? window.scrollY : element.scrollTop;
136
+ var currentScrollY = isRootLike ? window.pageYOffset : element.scrollTop;
110
137
  // Clamping is needed due to a bug in safari - https://bugs.webkit.org/show_bug.cgi?id=179735
111
138
  var maxScrollY = scrollMetricsElement.scrollHeight - scrollMetricsElement.clientHeight;
112
139
  var targetY = Math.max(0, Math.min(currentScrollY + delta, maxScrollY));
113
140
  if (isRootLike) {
114
- logger === null || logger === void 0 ? void 0 : logger("scrollElementBy: scrolling window.scrollTo(" + window.scrollX + ", " + targetY + ")");
141
+ logger === null || logger === void 0 ? void 0 : logger("scrollElementBy: scrolling window.scrollTo(" + window.pageXOffset + ", " + targetY + ")");
115
142
  performScrollFixForSafariIfNeeded(targetY);
116
- window.scrollTo(window.scrollX, targetY);
143
+ window.scrollTo(window.pageXOffset, targetY);
117
144
  }
118
145
  else {
119
146
  logger === null || logger === void 0 ? void 0 : logger("scrollElementBy: scrolling element.scrollTo(" + element.scrollLeft + ", " + targetY + ")");
@@ -132,13 +159,13 @@ exports.scrollElementBy = scrollElementBy;
132
159
  function scrollElementToOffset(element, offset) {
133
160
  var isRootLike = isRootLikeElement(element);
134
161
  var scrollMetricsElement = isRootLike ? getPageScrollElement() : element;
135
- var currentScrollY = isRootLike ? window.scrollY : element.scrollTop;
162
+ var currentScrollY = isRootLike ? window.pageYOffset : element.scrollTop;
136
163
  // Clamping is needed due to a bug in safari - https://bugs.webkit.org/show_bug.cgi?id=179735
137
164
  var maxScrollY = scrollMetricsElement.scrollHeight - scrollMetricsElement.clientHeight;
138
165
  var targetY = Math.max(0, Math.min(offset, maxScrollY));
139
166
  if (isRootLike) {
140
167
  performScrollFixForSafariIfNeeded(targetY);
141
- window.scrollTo(window.scrollX, targetY);
168
+ window.scrollTo(window.pageXOffset, targetY);
142
169
  }
143
170
  else {
144
171
  element.scrollTo(element.scrollLeft, targetY);
@@ -1,6 +1,30 @@
1
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
+ };
2
25
  exports.__esModule = true;
3
26
  exports.isChainBehind = exports.buildZChain = void 0;
27
+ var lib = __importStar(require("@lib"));
4
28
  var dom_1 = require("./dom");
5
29
  function getCssProp(style, prop) {
6
30
  return style[prop];
@@ -88,7 +112,7 @@ function getClosestStackingContext(node) {
88
112
  if (!node || node === document.documentElement) {
89
113
  return document.documentElement;
90
114
  }
91
- if (node instanceof ShadowRoot) {
115
+ if (lib.isShadowRoot(node)) {
92
116
  return getClosestStackingContext(node.host);
93
117
  }
94
118
  if (!(node instanceof Element)) {
@@ -26,23 +26,29 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
26
26
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
27
  };
28
28
  exports.__esModule = true;
29
- exports.matchMedia = exports.getComputedStyle = exports.getRootNode = exports.trim = exports.queryAll = exports.queryFirst = void 0;
29
+ exports.matchMedia = exports.getComputedStyle = exports.contains = exports.isShadowRoot = exports.getRootNode = exports.trim = exports.queryAll = exports.queryFirst = void 0;
30
30
  /// <reference types="./sizzle" />
31
31
  var sizzle_1 = __importDefault(require("sizzle"));
32
32
  var xpath = __importStar(require("./xpath"));
33
- function queryFirst(selector) {
34
- if (xpath.isXpathSelector(selector)) {
35
- return xpath.queryFirst(selector);
33
+ function queryFirst(target) {
34
+ if (typeof target !== "string") {
35
+ return target;
36
36
  }
37
- var elems = (0, sizzle_1["default"])(trim(selector) + ":first");
37
+ if (xpath.isXpathSelector(target)) {
38
+ return xpath.queryFirst(target);
39
+ }
40
+ var elems = (0, sizzle_1["default"])(trim(target) + ":first");
38
41
  return elems.length > 0 ? elems[0] : null;
39
42
  }
40
43
  exports.queryFirst = queryFirst;
41
- function queryAll(selector) {
42
- if (xpath.isXpathSelector(selector)) {
43
- return xpath.queryAll(selector);
44
+ function queryAll(target) {
45
+ if (typeof target !== "string") {
46
+ return [target];
47
+ }
48
+ if (xpath.isXpathSelector(target)) {
49
+ return xpath.queryAll(target);
44
50
  }
45
- return (0, sizzle_1["default"])(selector);
51
+ return (0, sizzle_1["default"])(target);
46
52
  }
47
53
  exports.queryAll = queryAll;
48
54
  function trim(str) {
@@ -59,6 +65,22 @@ function getRootNode(node) {
59
65
  return root;
60
66
  }
61
67
  exports.getRootNode = getRootNode;
68
+ function isShadowRoot(node) {
69
+ return typeof ShadowRoot !== "undefined" && node instanceof ShadowRoot;
70
+ }
71
+ exports.isShadowRoot = isShadowRoot;
72
+ function contains(parent, node) {
73
+ if (typeof parent.contains === "function") {
74
+ return parent.contains(node);
75
+ }
76
+ for (var current = node; current; current = current.parentNode) {
77
+ if (current === parent) {
78
+ return true;
79
+ }
80
+ }
81
+ return false;
82
+ }
83
+ exports.contains = contains;
62
84
  var getComputedStyle_1 = require("./polyfills/getComputedStyle");
63
85
  __createBinding(exports, getComputedStyle_1, "getComputedStyle");
64
86
  var matchMedia_1 = require("./polyfills/matchMedia");
@@ -23,20 +23,26 @@ var __importStar = (this && this.__importStar) || function (mod) {
23
23
  return result;
24
24
  };
25
25
  exports.__esModule = true;
26
- exports.getRootNode = exports.trim = exports.matchMedia = exports.getComputedStyle = exports.queryAll = exports.queryFirst = void 0;
26
+ exports.contains = exports.isShadowRoot = exports.getRootNode = exports.trim = exports.matchMedia = exports.getComputedStyle = exports.queryAll = exports.queryFirst = void 0;
27
27
  var xpath = __importStar(require("./xpath"));
28
- function queryFirst(selector) {
29
- if (xpath.isXpathSelector(selector)) {
30
- return xpath.queryFirst(selector);
28
+ function queryFirst(target) {
29
+ if (typeof target !== "string") {
30
+ return target;
31
31
  }
32
- return document.querySelector(selector);
32
+ if (xpath.isXpathSelector(target)) {
33
+ return xpath.queryFirst(target);
34
+ }
35
+ return document.querySelector(target);
33
36
  }
34
37
  exports.queryFirst = queryFirst;
35
- function queryAll(selector) {
36
- if (xpath.isXpathSelector(selector)) {
37
- return xpath.queryAll(selector);
38
+ function queryAll(target) {
39
+ if (typeof target !== "string") {
40
+ return [target];
41
+ }
42
+ if (xpath.isXpathSelector(target)) {
43
+ return xpath.queryAll(target);
38
44
  }
39
- return Array.from(document.querySelectorAll(selector));
45
+ return Array.from(document.querySelectorAll(target));
40
46
  }
41
47
  exports.queryAll = queryAll;
42
48
  function getComputedStyle(element, pseudoElement) {
@@ -55,3 +61,11 @@ function getRootNode(node) {
55
61
  return node.getRootNode();
56
62
  }
57
63
  exports.getRootNode = getRootNode;
64
+ function isShadowRoot(node) {
65
+ return node instanceof ShadowRoot;
66
+ }
67
+ exports.isShadowRoot = isShadowRoot;
68
+ function contains(parent, node) {
69
+ return parent.contains(node);
70
+ }
71
+ exports.contains = contains;
@@ -196,7 +196,7 @@ module.exports.default = browser => {
196
196
  await this.waitForExist({ timeoutMsg: "custom timeout msg" }).catch(() => {
197
197
  throw new Error(`element ("${this.selector}") still not existing after ${this.options.waitforTimeout} ms`);
198
198
  });
199
- return assertView(state, this.selector, opts);
199
+ return assertView(state, this, opts);
200
200
  }, true);
201
201
  };
202
202
  //# sourceMappingURL=index.js.map