system-testing 1.0.111 → 1.0.114

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.
@@ -63,6 +63,41 @@ function resolveCliTimeout(timeoutFlag) {
63
63
  }
64
64
  throw new Error(`Invalid timeout flag: ${timeoutFlag}`);
65
65
  }
66
+ /**
67
+ * @param {any} numberFlag
68
+ * @param {string} flagName
69
+ * @returns {number | undefined}
70
+ */
71
+ function resolveCliNumber(numberFlag, flagName) {
72
+ if (numberFlag === undefined)
73
+ return undefined;
74
+ const numberValue = Number(numberFlag);
75
+ if (Number.isNaN(numberValue)) {
76
+ throw new Error(`Invalid ${flagName} flag: ${numberFlag}`);
77
+ }
78
+ return numberValue;
79
+ }
80
+ /**
81
+ * @param {Record<string, any>} flags
82
+ * @param {Record<string, any>} args
83
+ * @returns {void}
84
+ */
85
+ function applyPointerFlags(flags, args) {
86
+ const clickOffsetX = resolveCliNumber(flags["click-offset-x"], "click-offset-x");
87
+ const clickOffsetY = resolveCliNumber(flags["click-offset-y"], "click-offset-y");
88
+ const humanStepDelay = resolveCliNumber(flags["human-step-delay"], "human-step-delay");
89
+ const humanSteps = resolveCliNumber(flags["human-steps"], "human-steps");
90
+ if (flags.method !== undefined)
91
+ args.method = flags.method;
92
+ if (clickOffsetX !== undefined)
93
+ args.clickOffsetX = clickOffsetX;
94
+ if (clickOffsetY !== undefined)
95
+ args.clickOffsetY = clickOffsetY;
96
+ if (humanStepDelay !== undefined)
97
+ args.humanStepDelay = humanStepDelay;
98
+ if (humanSteps !== undefined)
99
+ args.humanSteps = humanSteps;
100
+ }
66
101
  /**
67
102
  * @param {Record<string, any>} flags
68
103
  * @returns {{command: string, args: Record<string, any>}}
@@ -125,6 +160,7 @@ export function resolveBrowserCommand(flags) {
125
160
  useBaseSelector: flags["use-base-selector"],
126
161
  visible: flags.visible
127
162
  };
163
+ applyPointerFlags(flags, args);
128
164
  if (flags["scroll-to"] !== undefined) {
129
165
  args.scrollTo = flags["scroll-to"];
130
166
  }
@@ -182,6 +218,8 @@ export function resolveBrowserCommand(flags) {
182
218
  args.methodName = flags.method;
183
219
  if (flags.arg)
184
220
  args.args = Array.isArray(flags.arg) ? flags.arg : [flags.arg];
221
+ if (flags.command !== "interact")
222
+ applyPointerFlags(flags, args);
185
223
  if (flags["with-fallback"] !== undefined)
186
224
  args.withFallback = flags["with-fallback"];
187
225
  if (timeout !== undefined)
@@ -217,4 +255,4 @@ export function resolveBrowserCommand(flags) {
217
255
  }
218
256
  throw new Error("No browser command was given");
219
257
  }
220
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLWhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY2xpLWhlbHBlcnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLFNBQVMsQ0FBQyxJQUFJO0lBQzVCLHdEQUF3RDtJQUN4RCxNQUFNLE1BQU0sR0FBRyxFQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBQyxDQUFBO0lBQ2pDLE1BQU0sT0FBTyxHQUFHLENBQUMscUJBQXFCLENBQUMsR0FBRyxFQUFFLGtCQUFrQixDQUFDLEtBQUssRUFBRSxFQUFFO1FBQ3RFLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUMzQixNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQTtZQUN6QixPQUFNO1FBQ1IsQ0FBQztRQUVELElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3RDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7UUFDekMsQ0FBQztRQUVELE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQy9CLENBQUMsQ0FBQTtJQUVELEtBQUssSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUM7UUFDakQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBRXpCLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDNUIsTUFB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QUMsZUFBZSxDQUFDO1lBQUUsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUE7UUFDaEUsSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDO1lBQUUsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUE7UUFDMUQsSUFBSSxLQUFLLENBQUMsZUFBZSxDQUFDLEtBQUssU0FBUztZQUFFLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFBO1FBQzlFLElBQUksS0FBSyxDQUFDLGtCQUFrQixDQUFDLEtBQUssU0FBUztZQUFFLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUE7UUFDdEYsSUFBSSxLQUFLLENBQUMsZUFBZSxDQUFDLEtBQUssU0FBUztZQUFFLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFBO1FBQzlFLElBQUksS0FBSyxDQUFDLGtCQUFrQixDQUFDO1lBQUUsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQTtRQUV4RSxPQUFPLEVBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTyxFQUFDLENBQUE7SUFDdkMsQ0FBQztJQUVELE1BQU0sSUFBSSxLQUFLLENBQUMsOEJBQThCLENBQUMsQ0FBQTtBQUNqRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBhcmd2XG4gKiBAcmV0dXJucyB7e186IHN0cmluZ1tdLCBmbGFnczogUmVjb3JkPHN0cmluZywgYW55Pn19XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUFyZ3YoYXJndikge1xuICAvKiogQHR5cGUge3tfOiBzdHJpbmdbXSwgZmxhZ3M6IFJlY29yZDxzdHJpbmcsIGFueT59fSAqL1xuICBjb25zdCByZXN1bHQgPSB7XzogW10sIGZsYWdzOiB7fX1cbiAgY29uc3Qgc2V0RmxhZyA9ICgvKiogQHR5cGUge3N0cmluZ30gKi8ga2V5LCAvKiogQHR5cGUge2FueX0gKi8gdmFsdWUpID0+IHtcbiAgICBpZiAoIShrZXkgaW4gcmVzdWx0LmZsYWdzKSkge1xuICAgICAgcmVzdWx0LmZsYWdzW2tleV0gPSB2YWx1ZVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHJlc3VsdC5mbGFnc1trZXldKSkge1xuICAgICAgcmVzdWx0LmZsYWdzW2tleV0gPSBbcmVzdWx0LmZsYWdzW2tleV1dXG4gICAgfVxuXG4gICAgcmVzdWx0LmZsYWdzW2tleV0ucHVzaCh2YWx1ZSlcbiAgfVxuXG4gIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBhcmd2Lmxlbmd0aDsgaW5kZXgrKykge1xuICAgIGNvbnN0IHZhbHVlID0gYXJndltpbmRleF1cblxuICAgIGlmICghdmFsdWUuc3RhcnRzV2l0aChcIi0tXCIpKSB7XG4gICAgICByZXN1bHQuXy5wdXNoKHZhbHVlKVxuICAgICAgY29udGludWVcbiAgICB9XG5cbiAgICBjb25zdCBmbGFnID0gdmFsdWUuc2xpY2UoMilcblxuICAgIGlmIChmbGFnLmluY2x1ZGVzKFwiPVwiKSkge1xuICAgICAgY29uc3QgW2tleSwgLi4ucmVzdF0gPSBmbGFnLnNwbGl0KFwiPVwiKVxuXG4gICAgICBzZXRGbGFnKGtleSwgcmVzdC5qb2luKFwiPVwiKSlcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgY29uc3QgbmV4dFZhbHVlID0gYXJndltpbmRleCArIDFdXG5cbiAgICBpZiAobmV4dFZhbHVlICYmICFuZXh0VmFsdWUuc3RhcnRzV2l0aChcIi0tXCIpKSB7XG4gICAgICBzZXRGbGFnKGZsYWcsIG5leHRWYWx1ZSlcbiAgICAgIGluZGV4ICs9IDFcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0RmxhZyhmbGFnLCB0cnVlKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXN1bHRcbn1cblxuLyoqXG4gKiBQYXJzZXMgYSBDTEkgdGltZW91dCBmbGFnIGludG8gbWlsbGlzZWNvbmRzLlxuICogQmFyZSBudW1lcmljIHZhbHVlcyBhcmUgdHJlYXRlZCBhcyBzZWNvbmRzIGZvciBDTEkgZXJnb25vbWljcy5cbiAqIEBwYXJhbSB7YW55fSB0aW1lb3V0RmxhZ1xuICogQHJldHVybnMge251bWJlciB8IHVuZGVmaW5lZH1cbiAqL1xuZnVuY3Rpb24gcmVzb2x2ZUNsaVRpbWVvdXQodGltZW91dEZsYWcpIHtcbiAgaWYgKHRpbWVvdXRGbGFnID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH1cblxuICBpZiAodHlwZW9mIHRpbWVvdXRGbGFnID09PSBcIm51bWJlclwiKSB7XG4gICAgcmV0dXJuIHRpbWVvdXRGbGFnICogMTAwMFxuICB9XG5cbiAgY29uc3QgdGltZW91dFN0cmluZyA9IFN0cmluZyh0aW1lb3V0RmxhZykudHJpbSgpXG5cbiAgaWYgKC9eXFxkKyhcXC5cXGQrKT9tcyQvaS50ZXN0KHRpbWVvdXRTdHJpbmcpKSB7XG4gICAgcmV0dXJuIE51bWJlcih0aW1lb3V0U3RyaW5nLnNsaWNlKDAsIC0yKSlcbiAgfVxuXG4gIGlmICgvXlxcZCsoXFwuXFxkKyk/cyQvaS50ZXN0KHRpbWVvdXRTdHJpbmcpKSB7XG4gICAgcmV0dXJuIE51bWJlcih0aW1lb3V0U3RyaW5nLnNsaWNlKDAsIC0xKSkgKiAxMDAwXG4gIH1cblxuICBpZiAoL15cXGQrKFxcLlxcZCspPyQvLnRlc3QodGltZW91dFN0cmluZykpIHtcbiAgICByZXR1cm4gTnVtYmVyKHRpbWVvdXRTdHJpbmcpICogMTAwMFxuICB9XG5cbiAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHRpbWVvdXQgZmxhZzogJHt0aW1lb3V0RmxhZ31gKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgYW55Pn0gZmxhZ3NcbiAqIEByZXR1cm5zIHt7Y29tbWFuZDogc3RyaW5nLCBhcmdzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+fX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVCcm93c2VyQ29tbWFuZChmbGFncykge1xuICBjb25zdCB0aW1lb3V0ID0gcmVzb2x2ZUNsaVRpbWVvdXQoZmxhZ3MudGltZW91dClcblxuICBpZiAoZmxhZ3MudmlzaXQpIHtcbiAgICAvKiogQHR5cGUge1JlY29yZDxzdHJpbmcsIGFueT59ICovXG4gICAgY29uc3QgYXJncyA9IHt1cmw6IGZsYWdzLnZpc2l0fVxuXG4gICAgaWYgKHRpbWVvdXQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgYXJncy50aW1lb3V0ID0gdGltZW91dFxuICAgIH1cblxuICAgIHJldHVybiB7YXJncywgY29tbWFuZDogXCJ2aXNpdFwifVxuICB9XG5cbiAgaWYgKGZsYWdzW1wiZGlzbWlzcy10b1wiXSkge1xuICAgIC8qKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgYW55Pn0gKi9cbiAgICBjb25zdCBhcmdzID0ge3BhdGg6IGZsYWdzW1wiZGlzbWlzcy10b1wiXX1cblxuICAgIGlmICh0aW1lb3V0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGFyZ3MudGltZW91dCA9IHRpbWVvdXRcbiAgICB9XG5cbiAgICByZXR1cm4ge2FyZ3MsIGNvbW1hbmQ6IFwiZGlzbWlzc1RvXCJ9XG4gIH1cblxuICBpZiAoZmxhZ3NbXCJmaW5kLWJ5LXRlc3QtaWRcIl0pIHtcbiAgICAvKiogQHR5cGUge1JlY29yZDxzdHJpbmcsIGFueT59ICovXG4gICAgY29uc3QgYXJncyA9IHtcbiAgICAgIHRlc3RJRDogZmxhZ3NbXCJmaW5kLWJ5LXRlc3QtaWRcIl0sXG4gICAgICB0aW1lb3V0LFxuICAgICAgdXNlQmFzZVNlbGVjdG9yOiBmbGFnc1tcInVzZS1iYXNlLXNlbGVjdG9yXCJdLFxuICAgICAgdmlzaWJsZTogZmxhZ3MudmlzaWJsZVxuICAgIH1cblxuICAgIGlmIChmbGFnc1tcInNjcm9sbC10b1wiXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBhcmdzLnNjcm9sbFRvID0gZmxhZ3NbXCJzY3JvbGwtdG9cIl1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgYXJncyxcbiAgICAgIGNvbW1hbmQ6IFwiZmluZEJ5VGVzdElEXCJcbiAgICB9XG4gIH1cblxuICBpZiAoZmxhZ3MuZmluZCkge1xuICAgIC8qKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgYW55Pn0gKi9cbiAgICBjb25zdCBhcmdzID0ge1xuICAgICAgc2VsZWN0b3I6IGZsYWdzLmZpbmQsXG4gICAgICB0aW1lb3V0LFxuICAgICAgdXNlQmFzZVNlbGVjdG9yOiBmbGFnc1tcInVzZS1iYXNlLXNlbGVjdG9yXCJdLFxuICAgICAgdmlzaWJsZTogZmxhZ3MudmlzaWJsZVxuICAgIH1cblxuICAgIGlmIChmbGFnc1tcInNjcm9sbC10b1wiXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBhcmdzLnNjcm9sbFRvID0gZmxhZ3NbXCJzY3JvbGwtdG9cIl1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgYXJncyxcbiAgICAgIGNvbW1hbmQ6IFwiZmluZFwiXG4gICAgfVxuICB9XG5cbiAgaWYgKGZsYWdzLmNsaWNrKSB7XG4gICAgLyoqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSAqL1xuICAgIGNvbnN0IGFyZ3MgPSB7XG4gICAgICBzZWxlY3RvcjogZmxhZ3MuY2xpY2ssXG4gICAgICB0aW1lb3V0LFxuICAgICAgdXNlQmFzZVNlbGVjdG9yOiBmbGFnc1tcInVzZS1iYXNlLXNlbGVjdG9yXCJdLFxuICAgICAgdmlzaWJsZTogZmxhZ3MudmlzaWJsZVxuICAgIH1cblxuICAgIGlmIChmbGFnc1tcInNjcm9sbC10b1wiXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBhcmdzLnNjcm9sbFRvID0gZmxhZ3NbXCJzY3JvbGwtdG9cIl1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgYXJncyxcbiAgICAgIGNvbW1hbmQ6IFwiY2xpY2tcIlxuICAgIH1cbiAgfVxuXG4gIGlmIChmbGFnc1tcIndhaXQtZm9yLW5vLXNlbGVjdG9yXCJdKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFyZ3M6IHtcbiAgICAgICAgc2VsZWN0b3I6IGZsYWdzW1wid2FpdC1mb3Itbm8tc2VsZWN0b3JcIl0sXG4gICAgICAgIHRpbWVvdXQsXG4gICAgICAgIHVzZUJhc2VTZWxlY3RvcjogZmxhZ3NbXCJ1c2UtYmFzZS1zZWxlY3RvclwiXVxuICAgICAgfSxcbiAgICAgIGNvbW1hbmQ6IFwid2FpdEZvck5vU2VsZWN0b3JcIlxuICAgIH1cbiAgfVxuXG4gIGlmIChmbGFnc1tcImV4cGVjdC1uby1lbGVtZW50XCJdKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFyZ3M6IHtcbiAgICAgICAgc2VsZWN0b3I6IGZsYWdzW1wiZXhwZWN0LW5vLWVsZW1lbnRcIl0sXG4gICAgICAgIHRpbWVvdXQsXG4gICAgICAgIHVzZUJhc2VTZWxlY3RvcjogZmxhZ3NbXCJ1c2UtYmFzZS1zZWxlY3RvclwiXVxuICAgICAgfSxcbiAgICAgIGNvbW1hbmQ6IFwiZXhwZWN0Tm9FbGVtZW50XCJcbiAgICB9XG4gIH1cblxuICBpZiAoZmxhZ3NbXCJzZXQtYmFzZS1zZWxlY3RvclwiXSkge1xuICAgIHJldHVybiB7YXJnczoge3NlbGVjdG9yOiBmbGFnc1tcInNldC1iYXNlLXNlbGVjdG9yXCJdfSwgY29tbWFuZDogXCJzZXRCYXNlU2VsZWN0b3JcIn1cbiAgfVxuXG4gIGlmIChmbGFnc1tcImdldC1odG1sXCJdKSB7XG4gICAgcmV0dXJuIHthcmdzOiB7fSwgY29tbWFuZDogXCJnZXRIVE1MXCJ9XG4gIH1cblxuICBpZiAoZmxhZ3NbXCJnZXQtYnJvd3Nlci1sb2dzXCJdKSB7XG4gICAgcmV0dXJuIHthcmdzOiB7fSwgY29tbWFuZDogXCJnZXRCcm93c2VyTG9nc1wifVxuICB9XG5cbiAgaWYgKGZsYWdzW1wiZ2V0LWN1cnJlbnQtdXJsXCJdKSB7XG4gICAgcmV0dXJuIHthcmdzOiB7fSwgY29tbWFuZDogXCJnZXRDdXJyZW50VXJsXCJ9XG4gIH1cblxuICBpZiAoZmxhZ3NbXCJ0YWtlLXNjcmVlbnNob3RcIl0pIHtcbiAgICByZXR1cm4ge2FyZ3M6IHt9LCBjb21tYW5kOiBcInRha2VTY3JlZW5zaG90XCJ9XG4gIH1cblxuICBpZiAoZmxhZ3MuY29tbWFuZCkge1xuICAgIGNvbnN0IGFyZ3MgPSB7fVxuXG4gICAgaWYgKGZsYWdzLnVybCkgYXJncy51cmwgPSBmbGFncy51cmxcbiAgICBpZiAoZmxhZ3MucGF0aCkgYXJncy5wYXRoID0gZmxhZ3MucGF0aFxuICAgIGlmIChmbGFncy5zZWxlY3RvcikgYXJncy5zZWxlY3RvciA9IGZsYWdzLnNlbGVjdG9yXG4gICAgaWYgKGZsYWdzW1widGVzdC1pZFwiXSkgYXJncy50ZXN0SUQgPSBmbGFnc1tcInRlc3QtaWRcIl1cbiAgICBpZiAoZmxhZ3MubWV0aG9kKSBhcmdzLm1ldGhvZE5hbWUgPSBmbGFncy5tZXRob2RcbiAgICBpZiAoZmxhZ3MuYXJnKSBhcmdzLmFyZ3MgPSBBcnJheS5pc0FycmF5KGZsYWdzLmFyZykgPyBmbGFncy5hcmcgOiBbZmxhZ3MuYXJnXVxuICAgIGlmIChmbGFnc1tcIndpdGgtZmFsbGJhY2tcIl0gIT09IHVuZGVmaW5lZCkgYXJncy53aXRoRmFsbGJhY2sgPSBmbGFnc1tcIndpdGgtZmFsbGJhY2tcIl1cbiAgICBpZiAodGltZW91dCAhPT0gdW5kZWZpbmVkKSBhcmdzLnRpbWVvdXQgPSB0aW1lb3V0XG4gICAgaWYgKGZsYWdzW1wic2Nyb2xsLXRvXCJdICE9PSB1bmRlZmluZWQpIGFyZ3Muc2Nyb2xsVG8gPSBmbGFnc1tcInNjcm9sbC10b1wiXVxuICAgIGlmIChmbGFncy52aXNpYmxlICE9PSB1bmRlZmluZWQpIGFyZ3MudmlzaWJsZSA9IGZsYWdzLnZpc2libGVcbiAgICBpZiAoZmxhZ3NbXCJ1c2UtYmFzZS1zZWxlY3RvclwiXSAhPT0gdW5kZWZpbmVkKSBhcmdzLnVzZUJhc2VTZWxlY3RvciA9IGZsYWdzW1widXNlLWJhc2Utc2VsZWN0b3JcIl1cbiAgICBpZiAoZmxhZ3Muc2NyaXB0KSBhcmdzLnNjcmlwdCA9IGZsYWdzLnNjcmlwdFxuICAgIC8vIENvb2tpZSBmbGFncyB1c2UgYSBgY29va2llLWAgcHJlZml4IHNvIHRoZSBjb29raWUgbmFtZSBkb2VzIG5vdFxuICAgIC8vIGNvbGxpZGUgd2l0aCB0aGUgZGFlbW9uLWxldmVsIGAtLW5hbWUgPG15LWJyb3dzZXI+YCBmbGFnIHRoZSBDTElcbiAgICAvLyBhbHJlYWR5IGNvbnN1bWVzIGZvciByb3V0aW5nLlxuICAgIGlmIChmbGFnc1tcImNvb2tpZS1uYW1lXCJdKSBhcmdzLm5hbWUgPSBmbGFnc1tcImNvb2tpZS1uYW1lXCJdXG4gICAgaWYgKGZsYWdzW1wiY29va2llLXZhbHVlXCJdICE9PSB1bmRlZmluZWQpIGFyZ3MudmFsdWUgPSBmbGFnc1tcImNvb2tpZS12YWx1ZVwiXVxuICAgIGlmIChmbGFnc1tcImNvb2tpZS1kb21haW5cIl0pIGFyZ3MuZG9tYWluID0gZmxhZ3NbXCJjb29raWUtZG9tYWluXCJdXG4gICAgaWYgKGZsYWdzW1wiY29va2llLXBhdGhcIl0pIGFyZ3MucGF0aCA9IGZsYWdzW1wiY29va2llLXBhdGhcIl1cbiAgICBpZiAoZmxhZ3NbXCJjb29raWUtc2VjdXJlXCJdICE9PSB1bmRlZmluZWQpIGFyZ3Muc2VjdXJlID0gZmxhZ3NbXCJjb29raWUtc2VjdXJlXCJdXG4gICAgaWYgKGZsYWdzW1wiY29va2llLWh0dHAtb25seVwiXSAhPT0gdW5kZWZpbmVkKSBhcmdzLmh0dHBPbmx5ID0gZmxhZ3NbXCJjb29raWUtaHR0cC1vbmx5XCJdXG4gICAgaWYgKGZsYWdzW1wiY29va2llLWV4cGlyeVwiXSAhPT0gdW5kZWZpbmVkKSBhcmdzLmV4cGlyeSA9IGZsYWdzW1wiY29va2llLWV4cGlyeVwiXVxuICAgIGlmIChmbGFnc1tcImNvb2tpZS1zYW1lLXNpdGVcIl0pIGFyZ3Muc2FtZVNpdGUgPSBmbGFnc1tcImNvb2tpZS1zYW1lLXNpdGVcIl1cblxuICAgIHJldHVybiB7YXJncywgY29tbWFuZDogZmxhZ3MuY29tbWFuZH1cbiAgfVxuXG4gIHRocm93IG5ldyBFcnJvcihcIk5vIGJyb3dzZXIgY29tbWFuZCB3YXMgZ2l2ZW5cIilcbn1cbiJdfQ==
258
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLWhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY2xpLWhlbHBlcnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLFNBQVMsQ0FBQyxJQUFJO0lBQzVCLHdEQUF3RDtJQUN4RCxNQUFNLE1BQU0sR0FBRyxFQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBQyxDQUFBO0lBQ2pDLE1BQU0sT0FBTyxHQUFHLENBQUMscUJBQXFCLENBQUMsR0FBRyxFQUFFLGtCQUFrQixDQUFDLEtBQUssRUFBRSxFQUFFO1FBQ3RFLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUMzQixNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQTtZQUN6QixPQUFNO1FBQ1IsQ0FBQztRQUVELElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3RDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7UUFDekMsQ0FBQztRQUVELE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQy9CLENBQUMsQ0FBQTtJQUVELEtBQUssSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUM7UUFDakQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBRXpCLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDNUIsTUFB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cyB7e186IHN0cmluZ1tdLCBmbGFnczogUmVjb3JkPHN0cmluZywgYW55Pn19XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUFyZ3YoYXJndikge1xuICAvKiogQHR5cGUge3tfOiBzdHJpbmdbXSwgZmxhZ3M6IFJlY29yZDxzdHJpbmcsIGFueT59fSAqL1xuICBjb25zdCByZXN1bHQgPSB7XzogW10sIGZsYWdzOiB7fX1cbiAgY29uc3Qgc2V0RmxhZyA9ICgvKiogQHR5cGUge3N0cmluZ30gKi8ga2V5LCAvKiogQHR5cGUge2FueX0gKi8gdmFsdWUpID0+IHtcbiAgICBpZiAoIShrZXkgaW4gcmVzdWx0LmZsYWdzKSkge1xuICAgICAgcmVzdWx0LmZsYWdzW2tleV0gPSB2YWx1ZVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHJlc3VsdC5mbGFnc1trZXldKSkge1xuICAgICAgcmVzdWx0LmZsYWdzW2tleV0gPSBbcmVzdWx0LmZsYWdzW2tleV1dXG4gICAgfVxuXG4gICAgcmVzdWx0LmZsYWdzW2tleV0ucHVzaCh2YWx1ZSlcbiAgfVxuXG4gIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBhcmd2Lmxlbmd0aDsgaW5kZXgrKykge1xuICAgIGNvbnN0IHZhbHVlID0gYXJndltpbmRleF1cblxuICAgIGlmICghdmFsdWUuc3RhcnRzV2l0aChcIi0tXCIpKSB7XG4gICAgICByZXN1bHQuXy5wdXNoKHZhbHVlKVxuICAgICAgY29udGludWVcbiAgICB9XG5cbiAgICBjb25zdCBmbGFnID0gdmFsdWUuc2xpY2UoMilcblxuICAgIGlmIChmbGFnLmluY2x1ZGVzKFwiPVwiKSkge1xuICAgICAgY29uc3QgW2tleSwgLi4ucmVzdF0gPSBmbGFnLnNwbGl0KFwiPVwiKVxuXG4gICAgICBzZXRGbGFnKGtleSwgcmVzdC5qb2luKFwiPVwiKSlcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgY29uc3QgbmV4dFZhbHVlID0gYXJndltpbmRleCArIDFdXG5cbiAgICBpZiAobmV4dFZhbHVlICYmICFuZXh0VmFsdWUuc3RhcnRzV2l0aChcIi0tXCIpKSB7XG4gICAgICBzZXRGbGFnKGZsYWcsIG5leHRWYWx1ZSlcbiAgICAgIGluZGV4ICs9IDFcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0RmxhZyhmbGFnLCB0cnVlKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXN1bHRcbn1cblxuLyoqXG4gKiBQYXJzZXMgYSBDTEkgdGltZW91dCBmbGFnIGludG8gbWlsbGlzZWNvbmRzLlxuICogQmFyZSBudW1lcmljIHZhbHVlcyBhcmUgdHJlYXRlZCBhcyBzZWNvbmRzIGZvciBDTEkgZXJnb25vbWljcy5cbiAqIEBwYXJhbSB7YW55fSB0aW1lb3V0RmxhZ1xuICogQHJldHVybnMge251bWJlciB8IHVuZGVmaW5lZH1cbiAqL1xuZnVuY3Rpb24gcmVzb2x2ZUNsaVRpbWVvdXQodGltZW91dEZsYWcpIHtcbiAgaWYgKHRpbWVvdXRGbGFnID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH1cblxuICBpZiAodHlwZW9mIHRpbWVvdXRGbGFnID09PSBcIm51bWJlclwiKSB7XG4gICAgcmV0dXJuIHRpbWVvdXRGbGFnICogMTAwMFxuICB9XG5cbiAgY29uc3QgdGltZW91dFN0cmluZyA9IFN0cmluZyh0aW1lb3V0RmxhZykudHJpbSgpXG5cbiAgaWYgKC9eXFxkKyhcXC5cXGQrKT9tcyQvaS50ZXN0KHRpbWVvdXRTdHJpbmcpKSB7XG4gICAgcmV0dXJuIE51bWJlcih0aW1lb3V0U3RyaW5nLnNsaWNlKDAsIC0yKSlcbiAgfVxuXG4gIGlmICgvXlxcZCsoXFwuXFxkKyk/cyQvaS50ZXN0KHRpbWVvdXRTdHJpbmcpKSB7XG4gICAgcmV0dXJuIE51bWJlcih0aW1lb3V0U3RyaW5nLnNsaWNlKDAsIC0xKSkgKiAxMDAwXG4gIH1cblxuICBpZiAoL15cXGQrKFxcLlxcZCspPyQvLnRlc3QodGltZW91dFN0cmluZykpIHtcbiAgICByZXR1cm4gTnVtYmVyKHRpbWVvdXRTdHJpbmcpICogMTAwMFxuICB9XG5cbiAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHRpbWVvdXQgZmxhZzogJHt0aW1lb3V0RmxhZ31gKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7YW55fSBudW1iZXJGbGFnXG4gKiBAcGFyYW0ge3N0cmluZ30gZmxhZ05hbWVcbiAqIEByZXR1cm5zIHtudW1iZXIgfCB1bmRlZmluZWR9XG4gKi9cbmZ1bmN0aW9uIHJlc29sdmVDbGlOdW1iZXIobnVtYmVyRmxhZywgZmxhZ05hbWUpIHtcbiAgaWYgKG51bWJlckZsYWcgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHVuZGVmaW5lZFxuICBjb25zdCBudW1iZXJWYWx1ZSA9IE51bWJlcihudW1iZXJGbGFnKVxuXG4gIGlmIChOdW1iZXIuaXNOYU4obnVtYmVyVmFsdWUpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkICR7ZmxhZ05hbWV9IGZsYWc6ICR7bnVtYmVyRmxhZ31gKVxuICB9XG5cbiAgcmV0dXJuIG51bWJlclZhbHVlXG59XG5cbi8qKlxuICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBmbGFnc1xuICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBhcmdzXG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqL1xuZnVuY3Rpb24gYXBwbHlQb2ludGVyRmxhZ3MoZmxhZ3MsIGFyZ3MpIHtcbiAgY29uc3QgY2xpY2tPZmZzZXRYID0gcmVzb2x2ZUNsaU51bWJlcihmbGFnc1tcImNsaWNrLW9mZnNldC14XCJdLCBcImNsaWNrLW9mZnNldC14XCIpXG4gIGNvbnN0IGNsaWNrT2Zmc2V0WSA9IHJlc29sdmVDbGlOdW1iZXIoZmxhZ3NbXCJjbGljay1vZmZzZXQteVwiXSwgXCJjbGljay1vZmZzZXQteVwiKVxuICBjb25zdCBodW1hblN0ZXBEZWxheSA9IHJlc29sdmVDbGlOdW1iZXIoZmxhZ3NbXCJodW1hbi1zdGVwLWRlbGF5XCJdLCBcImh1bWFuLXN0ZXAtZGVsYXlcIilcbiAgY29uc3QgaHVtYW5TdGVwcyA9IHJlc29sdmVDbGlOdW1iZXIoZmxhZ3NbXCJodW1hbi1zdGVwc1wiXSwgXCJodW1hbi1zdGVwc1wiKVxuXG4gIGlmIChmbGFncy5tZXRob2QgIT09IHVuZGVmaW5lZCkgYXJncy5tZXRob2QgPSBmbGFncy5tZXRob2RcbiAgaWYgKGNsaWNrT2Zmc2V0WCAhPT0gdW5kZWZpbmVkKSBhcmdzLmNsaWNrT2Zmc2V0WCA9IGNsaWNrT2Zmc2V0WFxuICBpZiAoY2xpY2tPZmZzZXRZICE9PSB1bmRlZmluZWQpIGFyZ3MuY2xpY2tPZmZzZXRZID0gY2xpY2tPZmZzZXRZXG4gIGlmIChodW1hblN0ZXBEZWxheSAhPT0gdW5kZWZpbmVkKSBhcmdzLmh1bWFuU3RlcERlbGF5ID0gaHVtYW5TdGVwRGVsYXlcbiAgaWYgKGh1bWFuU3RlcHMgIT09IHVuZGVmaW5lZCkgYXJncy5odW1hblN0ZXBzID0gaHVtYW5TdGVwc1xufVxuXG4vKipcbiAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgYW55Pn0gZmxhZ3NcbiAqIEByZXR1cm5zIHt7Y29tbWFuZDogc3RyaW5nLCBhcmdzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+fX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVCcm93c2VyQ29tbWFuZChmbGFncykge1xuICBjb25zdCB0aW1lb3V0ID0gcmVzb2x2ZUNsaVRpbWVvdXQoZmxhZ3MudGltZW91dClcblxuICBpZiAoZmxhZ3MudmlzaXQpIHtcbiAgICAvKiogQHR5cGUge1JlY29yZDxzdHJpbmcsIGFueT59ICovXG4gICAgY29uc3QgYXJncyA9IHt1cmw6IGZsYWdzLnZpc2l0fVxuXG4gICAgaWYgKHRpbWVvdXQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgYXJncy50aW1lb3V0ID0gdGltZW91dFxuICAgIH1cblxuICAgIHJldHVybiB7YXJncywgY29tbWFuZDogXCJ2aXNpdFwifVxuICB9XG5cbiAgaWYgKGZsYWdzW1wiZGlzbWlzcy10b1wiXSkge1xuICAgIC8qKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgYW55Pn0gKi9cbiAgICBjb25zdCBhcmdzID0ge3BhdGg6IGZsYWdzW1wiZGlzbWlzcy10b1wiXX1cblxuICAgIGlmICh0aW1lb3V0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGFyZ3MudGltZW91dCA9IHRpbWVvdXRcbiAgICB9XG5cbiAgICByZXR1cm4ge2FyZ3MsIGNvbW1hbmQ6IFwiZGlzbWlzc1RvXCJ9XG4gIH1cblxuICBpZiAoZmxhZ3NbXCJmaW5kLWJ5LXRlc3QtaWRcIl0pIHtcbiAgICAvKiogQHR5cGUge1JlY29yZDxzdHJpbmcsIGFueT59ICovXG4gICAgY29uc3QgYXJncyA9IHtcbiAgICAgIHRlc3RJRDogZmxhZ3NbXCJmaW5kLWJ5LXRlc3QtaWRcIl0sXG4gICAgICB0aW1lb3V0LFxuICAgICAgdXNlQmFzZVNlbGVjdG9yOiBmbGFnc1tcInVzZS1iYXNlLXNlbGVjdG9yXCJdLFxuICAgICAgdmlzaWJsZTogZmxhZ3MudmlzaWJsZVxuICAgIH1cblxuICAgIGlmIChmbGFnc1tcInNjcm9sbC10b1wiXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBhcmdzLnNjcm9sbFRvID0gZmxhZ3NbXCJzY3JvbGwtdG9cIl1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgYXJncyxcbiAgICAgIGNvbW1hbmQ6IFwiZmluZEJ5VGVzdElEXCJcbiAgICB9XG4gIH1cblxuICBpZiAoZmxhZ3MuZmluZCkge1xuICAgIC8qKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgYW55Pn0gKi9cbiAgICBjb25zdCBhcmdzID0ge1xuICAgICAgc2VsZWN0b3I6IGZsYWdzLmZpbmQsXG4gICAgICB0aW1lb3V0LFxuICAgICAgdXNlQmFzZVNlbGVjdG9yOiBmbGFnc1tcInVzZS1iYXNlLXNlbGVjdG9yXCJdLFxuICAgICAgdmlzaWJsZTogZmxhZ3MudmlzaWJsZVxuICAgIH1cblxuICAgIGlmIChmbGFnc1tcInNjcm9sbC10b1wiXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBhcmdzLnNjcm9sbFRvID0gZmxhZ3NbXCJzY3JvbGwtdG9cIl1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgYXJncyxcbiAgICAgIGNvbW1hbmQ6IFwiZmluZFwiXG4gICAgfVxuICB9XG5cbiAgaWYgKGZsYWdzLmNsaWNrKSB7XG4gICAgLyoqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSAqL1xuICAgIGNvbnN0IGFyZ3MgPSB7XG4gICAgICBzZWxlY3RvcjogZmxhZ3MuY2xpY2ssXG4gICAgICB0aW1lb3V0LFxuICAgICAgdXNlQmFzZVNlbGVjdG9yOiBmbGFnc1tcInVzZS1iYXNlLXNlbGVjdG9yXCJdLFxuICAgICAgdmlzaWJsZTogZmxhZ3MudmlzaWJsZVxuICAgIH1cbiAgICBhcHBseVBvaW50ZXJGbGFncyhmbGFncywgYXJncylcblxuICAgIGlmIChmbGFnc1tcInNjcm9sbC10b1wiXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBhcmdzLnNjcm9sbFRvID0gZmxhZ3NbXCJzY3JvbGwtdG9cIl1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgYXJncyxcbiAgICAgIGNvbW1hbmQ6IFwiY2xpY2tcIlxuICAgIH1cbiAgfVxuXG4gIGlmIChmbGFnc1tcIndhaXQtZm9yLW5vLXNlbGVjdG9yXCJdKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFyZ3M6IHtcbiAgICAgICAgc2VsZWN0b3I6IGZsYWdzW1wid2FpdC1mb3Itbm8tc2VsZWN0b3JcIl0sXG4gICAgICAgIHRpbWVvdXQsXG4gICAgICAgIHVzZUJhc2VTZWxlY3RvcjogZmxhZ3NbXCJ1c2UtYmFzZS1zZWxlY3RvclwiXVxuICAgICAgfSxcbiAgICAgIGNvbW1hbmQ6IFwid2FpdEZvck5vU2VsZWN0b3JcIlxuICAgIH1cbiAgfVxuXG4gIGlmIChmbGFnc1tcImV4cGVjdC1uby1lbGVtZW50XCJdKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFyZ3M6IHtcbiAgICAgICAgc2VsZWN0b3I6IGZsYWdzW1wiZXhwZWN0LW5vLWVsZW1lbnRcIl0sXG4gICAgICAgIHRpbWVvdXQsXG4gICAgICAgIHVzZUJhc2VTZWxlY3RvcjogZmxhZ3NbXCJ1c2UtYmFzZS1zZWxlY3RvclwiXVxuICAgICAgfSxcbiAgICAgIGNvbW1hbmQ6IFwiZXhwZWN0Tm9FbGVtZW50XCJcbiAgICB9XG4gIH1cblxuICBpZiAoZmxhZ3NbXCJzZXQtYmFzZS1zZWxlY3RvclwiXSkge1xuICAgIHJldHVybiB7YXJnczoge3NlbGVjdG9yOiBmbGFnc1tcInNldC1iYXNlLXNlbGVjdG9yXCJdfSwgY29tbWFuZDogXCJzZXRCYXNlU2VsZWN0b3JcIn1cbiAgfVxuXG4gIGlmIChmbGFnc1tcImdldC1odG1sXCJdKSB7XG4gICAgcmV0dXJuIHthcmdzOiB7fSwgY29tbWFuZDogXCJnZXRIVE1MXCJ9XG4gIH1cblxuICBpZiAoZmxhZ3NbXCJnZXQtYnJvd3Nlci1sb2dzXCJdKSB7XG4gICAgcmV0dXJuIHthcmdzOiB7fSwgY29tbWFuZDogXCJnZXRCcm93c2VyTG9nc1wifVxuICB9XG5cbiAgaWYgKGZsYWdzW1wiZ2V0LWN1cnJlbnQtdXJsXCJdKSB7XG4gICAgcmV0dXJuIHthcmdzOiB7fSwgY29tbWFuZDogXCJnZXRDdXJyZW50VXJsXCJ9XG4gIH1cblxuICBpZiAoZmxhZ3NbXCJ0YWtlLXNjcmVlbnNob3RcIl0pIHtcbiAgICByZXR1cm4ge2FyZ3M6IHt9LCBjb21tYW5kOiBcInRha2VTY3JlZW5zaG90XCJ9XG4gIH1cblxuICBpZiAoZmxhZ3MuY29tbWFuZCkge1xuICAgIGNvbnN0IGFyZ3MgPSB7fVxuXG4gICAgaWYgKGZsYWdzLnVybCkgYXJncy51cmwgPSBmbGFncy51cmxcbiAgICBpZiAoZmxhZ3MucGF0aCkgYXJncy5wYXRoID0gZmxhZ3MucGF0aFxuICAgIGlmIChmbGFncy5zZWxlY3RvcikgYXJncy5zZWxlY3RvciA9IGZsYWdzLnNlbGVjdG9yXG4gICAgaWYgKGZsYWdzW1widGVzdC1pZFwiXSkgYXJncy50ZXN0SUQgPSBmbGFnc1tcInRlc3QtaWRcIl1cbiAgICBpZiAoZmxhZ3MubWV0aG9kKSBhcmdzLm1ldGhvZE5hbWUgPSBmbGFncy5tZXRob2RcbiAgICBpZiAoZmxhZ3MuYXJnKSBhcmdzLmFyZ3MgPSBBcnJheS5pc0FycmF5KGZsYWdzLmFyZykgPyBmbGFncy5hcmcgOiBbZmxhZ3MuYXJnXVxuICAgIGlmIChmbGFncy5jb21tYW5kICE9PSBcImludGVyYWN0XCIpIGFwcGx5UG9pbnRlckZsYWdzKGZsYWdzLCBhcmdzKVxuICAgIGlmIChmbGFnc1tcIndpdGgtZmFsbGJhY2tcIl0gIT09IHVuZGVmaW5lZCkgYXJncy53aXRoRmFsbGJhY2sgPSBmbGFnc1tcIndpdGgtZmFsbGJhY2tcIl1cbiAgICBpZiAodGltZW91dCAhPT0gdW5kZWZpbmVkKSBhcmdzLnRpbWVvdXQgPSB0aW1lb3V0XG4gICAgaWYgKGZsYWdzW1wic2Nyb2xsLXRvXCJdICE9PSB1bmRlZmluZWQpIGFyZ3Muc2Nyb2xsVG8gPSBmbGFnc1tcInNjcm9sbC10b1wiXVxuICAgIGlmIChmbGFncy52aXNpYmxlICE9PSB1bmRlZmluZWQpIGFyZ3MudmlzaWJsZSA9IGZsYWdzLnZpc2libGVcbiAgICBpZiAoZmxhZ3NbXCJ1c2UtYmFzZS1zZWxlY3RvclwiXSAhPT0gdW5kZWZpbmVkKSBhcmdzLnVzZUJhc2VTZWxlY3RvciA9IGZsYWdzW1widXNlLWJhc2Utc2VsZWN0b3JcIl1cbiAgICBpZiAoZmxhZ3Muc2NyaXB0KSBhcmdzLnNjcmlwdCA9IGZsYWdzLnNjcmlwdFxuICAgIC8vIENvb2tpZSBmbGFncyB1c2UgYSBgY29va2llLWAgcHJlZml4IHNvIHRoZSBjb29raWUgbmFtZSBkb2VzIG5vdFxuICAgIC8vIGNvbGxpZGUgd2l0aCB0aGUgZGFlbW9uLWxldmVsIGAtLW5hbWUgPG15LWJyb3dzZXI+YCBmbGFnIHRoZSBDTElcbiAgICAvLyBhbHJlYWR5IGNvbnN1bWVzIGZvciByb3V0aW5nLlxuICAgIGlmIChmbGFnc1tcImNvb2tpZS1uYW1lXCJdKSBhcmdzLm5hbWUgPSBmbGFnc1tcImNvb2tpZS1uYW1lXCJdXG4gICAgaWYgKGZsYWdzW1wiY29va2llLXZhbHVlXCJdICE9PSB1bmRlZmluZWQpIGFyZ3MudmFsdWUgPSBmbGFnc1tcImNvb2tpZS12YWx1ZVwiXVxuICAgIGlmIChmbGFnc1tcImNvb2tpZS1kb21haW5cIl0pIGFyZ3MuZG9tYWluID0gZmxhZ3NbXCJjb29raWUtZG9tYWluXCJdXG4gICAgaWYgKGZsYWdzW1wiY29va2llLXBhdGhcIl0pIGFyZ3MucGF0aCA9IGZsYWdzW1wiY29va2llLXBhdGhcIl1cbiAgICBpZiAoZmxhZ3NbXCJjb29raWUtc2VjdXJlXCJdICE9PSB1bmRlZmluZWQpIGFyZ3Muc2VjdXJlID0gZmxhZ3NbXCJjb29raWUtc2VjdXJlXCJdXG4gICAgaWYgKGZsYWdzW1wiY29va2llLWh0dHAtb25seVwiXSAhPT0gdW5kZWZpbmVkKSBhcmdzLmh0dHBPbmx5ID0gZmxhZ3NbXCJjb29raWUtaHR0cC1vbmx5XCJdXG4gICAgaWYgKGZsYWdzW1wiY29va2llLWV4cGlyeVwiXSAhPT0gdW5kZWZpbmVkKSBhcmdzLmV4cGlyeSA9IGZsYWdzW1wiY29va2llLWV4cGlyeVwiXVxuICAgIGlmIChmbGFnc1tcImNvb2tpZS1zYW1lLXNpdGVcIl0pIGFyZ3Muc2FtZVNpdGUgPSBmbGFnc1tcImNvb2tpZS1zYW1lLXNpdGVcIl1cblxuICAgIHJldHVybiB7YXJncywgY29tbWFuZDogZmxhZ3MuY29tbWFuZH1cbiAgfVxuXG4gIHRocm93IG5ldyBFcnJvcihcIk5vIGJyb3dzZXIgY29tbWFuZCB3YXMgZ2l2ZW5cIilcbn1cbiJdfQ==
package/build/cli.js CHANGED
@@ -12,6 +12,7 @@ function printHelp() {
12
12
  system-testing browser-command [--name my-browser] [--port 1991] --visit=https://example.com
13
13
  system-testing browser-command [--name my-browser] --find-by-test-id someID [--timeout 15]
14
14
  system-testing browser-command [--name my-browser] --take-screenshot
15
+ system-testing browser-command [--name my-browser] --click selector [--method human] [--click-offset-x 32] [--click-offset-y 28] [--human-steps 5] [--human-step-delay 75]
15
16
  system-testing browser-command [--name my-browser] --command=executeScript --script='return document.title' [--arg ...]
16
17
  system-testing browser-command [--name my-browser] --command=addCookie --cookie-name=auth --cookie-value=... [--cookie-domain=127.0.0.1] [--cookie-path=/]
17
18
  `);
@@ -80,4 +81,4 @@ main(process.argv.slice(2)).catch((error) => {
80
81
  console.error(error instanceof Error ? error.message : String(error));
81
82
  process.exit(1);
82
83
  });
83
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NsaS5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBRUEsT0FBTyxvQkFBb0IsTUFBTSw2QkFBNkIsQ0FBQTtBQUM5RCxPQUFPLGNBQWMsTUFBTSxzQkFBc0IsQ0FBQTtBQUNqRCxPQUFPLGVBQWUsTUFBTSx1QkFBdUIsQ0FBQTtBQUNuRCxPQUFPLEVBQUMsU0FBUyxFQUFFLHFCQUFxQixFQUFDLE1BQU0sa0JBQWtCLENBQUE7QUFFakUsc0JBQXNCO0FBQ3RCLFNBQVMsU0FBUztJQUNoQixPQUFPLENBQUMsR0FBRyxDQUFDOzs7Ozs7Ozs7Q0FTYixDQUFDLENBQUE7QUFDRixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsS0FBSyxVQUFVLElBQUksQ0FBQyxJQUFJO0lBQ3RCLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUM5QixNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBRS9CLElBQUksQ0FBQyxXQUFXLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0QyxTQUFTLEVBQUUsQ0FBQTtRQUNYLE9BQU07SUFDUixDQUFDO0lBRUQsSUFBSSxXQUFXLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDOUIsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUV4QixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDVixNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUE7UUFDNUMsQ0FBQztRQUVELE1BQU0sY0FBYyxHQUFHLElBQUksY0FBYyxDQUFDO1lBQ3hDLE9BQU8sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQztZQUNqQyxXQUFXLEVBQUU7Z0JBQ1gsTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxD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SUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDOUMsQ0FBQztTQUFNLENBQUM7UUFDTixNQUFNLElBQUksS0FBSyxDQUFDLG9CQUFvQixXQUFXLEVBQUUsQ0FBQyxDQUFBO0lBQ3BELENBQUM7QUFDSCxDQUFDO0FBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7SUFDMUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQTtJQUNyRSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO0FBQ2pCLENBQUMsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiIyEvdXNyL2Jpbi9lbnYgbm9kZVxuXG5pbXBvcnQgQnJvd3NlckNvbW1hbmRDbGllbnQgZnJvbSBcIi4vYnJvd3Nlci1jb21tYW5kLWNsaWVudC5qc1wiXG5pbXBvcnQgQnJvd3NlclByb2Nlc3MgZnJvbSBcIi4vYnJvd3Nlci1wcm9jZXNzLmpzXCJcbmltcG9ydCBCcm93c2VyUmVnaXN0cnkgZnJvbSBcIi4vYnJvd3Nlci1yZWdpc3RyeS5qc1wiXG5pbXBvcnQge3BhcnNlQXJndiwgcmVzb2x2ZUJyb3dzZXJDb21tYW5kfSBmcm9tIFwiLi9jbGktaGVscGVycy5qc1wiXG5cbi8qKiBAcmV0dXJucyB7dm9pZH0gKi9cbmZ1bmN0aW9uIHByaW50SGVscCgpIHtcbiAgY29uc29sZS5sb2coYFVzYWdlOlxuICBzeXN0ZW0tdGVzdGluZyBicm93c2VyIDxuYW1lPiBbLS1wb3J0IDE5OTFdIFstLWJhc2UtdXJsIGh0dHBzOi8vZXhhbXBsZS5jb21dXG4gIHN5c3RlbS10ZXN0aW5nIGJyb3dzZXItbGlzdFxuICBzeXN0ZW0tdGVzdGluZyBicm93c2VyLXN0b3AgWy0tbmFtZSBteS1icm93c2VyXVxuICBzeXN0ZW0tdGVzdGluZyBicm93c2VyLWNvbW1hbmQgWy0tbmFtZSBteS1icm93c2VyXSBbLS1wb3J0IDE5OTFdIC0tdmlzaXQ9aHR0cHM6Ly9leGFtcGxlLmNvbVxuICBzeXN0ZW0tdGVzdGluZyBicm93c2VyLWNvbW1hbmQgWy0tbmFtZSBteS1icm93c2VyXSAtLWZpbmQtYnktdGVzdC1pZCBzb21lSUQgWy0tdGltZW91dCAxNV1cbiAgc3lzdGVtLXRlc3RpbmcgYnJvd3Nlci1jb21tYW5kIFstLW5hbWUgbXktYnJvd3Nlcl0gLS10YWtlLXNjcmVlbnNob3RcbiAgc3lzdGVtLXRlc3RpbmcgYnJvd3Nlci1jb21tYW5kIFstLW5hbWUgbXktYnJvd3Nlcl0gLS1jb21tYW5kPWV4ZWN1dGVTY3JpcHQgLS1zY3JpcHQ9J3JldHVybiBkb2N1bWVudC50aXRsZScgWy0tYXJnIC4uLl1cbiAgc3lzdGVtLXRlc3RpbmcgYnJvd3Nlci1jb21tYW5kIFstLW5hbWUgbXktYnJvd3Nlcl0gLS1jb21tYW5kPWFkZENvb2tpZSAtLWNvb2tpZS1uYW1lPWF1dGggLS1jb29raWUtdmFsdWU9Li4uIFstLWNvb2tpZS1kb21haW49MTI3LjAuMC4xXSBbLS1jb29raWUtcGF0aD0vXVxuYClcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBhcmd2XG4gKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn1cbiAqL1xuYXN5bmMgZnVuY3Rpb24gbWFpbihhcmd2KSB7XG4gIGNvbnN0IHBhcnNlZCA9IHBhcnNlQXJndihhcmd2KVxuICBjb25zdCBtYWluQ29tbWFuZCA9IHBhcnNlZC5fWzBdXG5cbiAgaWYgKCFtYWluQ29tbWFuZCB8fCBwYXJzZWQuZmxhZ3MuaGVscCkge1xuICAgIHByaW50SGVscCgpXG4gICAgcmV0dXJuXG4gIH1cblxuICBpZiAobWFpbkNvbW1hbmQgPT09IFwiYnJvd3NlclwiKSB7XG4gICAgY29uc3QgbmFtZSA9IHBhcnNlZC5fWzFdXG5cbiAgICBpZiAoIW5hbWUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcImJyb3dzZXIgcmVxdWlyZXMgYSBuYW1lXCIpXG4gICAgfVxuXG4gICAgY29uc3QgYnJvd3NlclByb2Nlc3MgPSBuZXcgQnJvd3NlclByb2Nlc3Moe1xuICAgICAgYmFzZVVybDogcGFyc2VkLmZsYWdzW1wiYmFzZS11cmxcIl0sXG4gICAgICBicm93c2VyQXJnczoge1xuICAgICAgICBkcml2ZXI6IHBhcnNlZC5mbGFncy5kcml2ZXIgPyB7dHlwZTogcGFyc2VkLmZsYWdzLmRyaXZlcn0gOiB1bmRlZmluZWRcbiAgICAgIH0sXG4gICAgICBkZWJ1ZzogcGFyc2VkLmZsYWdzLmRlYnVnID09PSB0cnVlIHx8IHBhcnNlZC5mbGFncy5kZWJ1ZyA9PT0gXCJ0cnVlXCIsXG4gICAgICBuYW1lLFxuICAgICAgcG9ydDogcGFyc2VkLmZsYWdzLnBvcnQgPyBOdW1iZXIocGFyc2VkLmZsYWdzLnBvcnQpIDogMFxuICAgIH0pXG5cbiAgICBhd2FpdCBicm93c2VyUHJvY2Vzcy5zdGFydCgpXG4gICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkoe25hbWUsIHBpZDogcHJvY2Vzcy5waWQsIHBvcnQ6IGJyb3dzZXJQcm9jZXNzLnBvcnR9KSlcbiAgICBhd2FpdCBuZXcgUHJvbWlzZSgoKSA9PiB7fSlcbiAgfSBlbHNlIGlmIChtYWluQ29tbWFuZCA9PT0gXCJicm93c2VyLWxpc3RcIikge1xuICAgIGNvbnN0IGVudHJpZXMgPSBhd2FpdCBCcm93c2VyUmVnaXN0cnkubGlzdCgpXG5cbiAgICBpZiAocGFyc2VkLmZsYWdzLmpzb24pIHtcbiAgICAgIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KGVudHJpZXMsIG51bGwsIDIpKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBlbnRyeSBvZiBlbnRyaWVzKSB7XG4gICAgICBjb25zb2xlLmxvZyhgJHtlbnRyeS5uYW1lfVxcdCR7ZW50cnkucG9ydH1cXHRwaWQ9JHtlbnRyeS5waWR9YClcbiAgICB9XG4gIH0gZWxzZSBpZiAobWFpbkNvbW1hbmQgPT09IFwiYnJvd3Nlci1zdG9wXCIpIHtcbiAgICBjb25zdCBzdG9wcGVkRW50cnkgPSBhd2FpdCBCcm93c2VyUmVnaXN0cnkuc3RvcChwYXJzZWQuZmxhZ3MubmFtZSlcblxuICAgIGlmIChwYXJzZWQuZmxhZ3MuanNvbikge1xuICAgICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkoc3RvcHBlZEVudHJ5LCBudWxsLCAyKSlcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnNvbGUubG9nKGBTdG9wcGVkICR7c3RvcHBlZEVudHJ5Lm5hbWV9XFx0cGlkPSR7c3RvcHBlZEVudHJ5LnBpZH1gKVxuICB9IGVsc2UgaWYgKG1haW5Db21tYW5kID09PSBcImJyb3dzZXItY29tbWFuZFwiKSB7XG4gICAgY29uc3QgY2xpZW50ID0gbmV3IEJyb3dzZXJDb21tYW5kQ2xpZW50KHtcbiAgICAgIG5hbWU6IHBhcnNlZC5mbGFncy5uYW1lLFxuICAgICAgcG9ydDogcGFyc2VkLmZsYWdzLnBvcnQgPyBOdW1iZXIocGFyc2VkLmZsYWdzLnBvcnQpIDogdW5kZWZpbmVkXG4gICAgfSlcbiAgICBjb25zdCB7YXJncywgY29tbWFuZH0gPSByZXNvbHZlQnJvd3NlckNvbW1hbmQocGFyc2VkLmZsYWdzKVxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGNsaWVudC5zZW5kKHthcmdzLCBjb21tYW5kLCB0eXBlOiBcImJyb3dzZXItY29tbWFuZFwifSlcblxuICAgIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KHJlc3VsdCwgbnVsbCwgMikpXG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIGNvbW1hbmQ6ICR7bWFpbkNvbW1hbmR9YClcbiAgfVxufVxuXG5tYWluKHByb2Nlc3MuYXJndi5zbGljZSgyKSkuY2F0Y2goKGVycm9yKSA9PiB7XG4gIGNvbnNvbGUuZXJyb3IoZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpKVxuICBwcm9jZXNzLmV4aXQoMSlcbn0pXG4iXX0=
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NsaS5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBRUEsT0FBTyxvQkFBb0IsTUFBTSw2QkFBNkIsQ0FBQTtBQUM5RCxPQUFPLGNBQWMsTUFBTSxzQkFBc0IsQ0FBQTtBQUNqRCxPQUFPLGVBQWUsTUFBTSx1QkFBdUIsQ0FBQTtBQUNuRCxPQUFPLEVBQUMsU0FBUyxFQUFFLHFCQUFxQixFQUFDLE1BQU0sa0JBQWtCLENBQUE7QUFFakUsc0JBQXNCO0FBQ3RCLFNBQVMsU0FBUztJQUNoQixPQUFPLENBQUMsR0FBRyxDQUFDOzs7Ozs7Ozs7O0NBVWIsQ0FBQyxDQUFBO0FBQ0YsQ0FBQztBQUVEOzs7R0FHRztBQUNILEtBQUssVUFBVSxJQUFJLENBQUMsSUFBSTtJQUN0QixNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDOUIsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUUvQixJQUFJLENBQUMsV0FBVyxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdEMsU0FBUyxFQUFFLENBQUE7UUFDWCxPQUFNO0lBQ1IsQ0FBQztJQUVELElBQUksV0FBVyxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQzlCLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFFeEIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ1YsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFBO1FBQzVDLENBQUM7UUFFRCxNQUFNLGNBQWMsR0FBRyxJQUFJLGNBQWMsQ0FBQztZQUN4QyxPQUFPLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUM7WUFDakMsV0FBVyxFQUFFO2dCQUNYLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUzthQUN0RTtZQUNELEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssS0FBSyxJQUFJLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLEtBQUssTUFBTTtZQUNuRSxJQUFJO1lBQ0osSUFBSSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN4RCxDQUFDLENBQUE7UUFFRixNQUFNLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtRQUM1QixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLE9BQU8sQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLGNBQWMsQ0FBQyxJQUFJLEVBQUMsQ0FBQyxDQUFDLENBQUE7UUFDaEYsTUFBTSxJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUMsQ0FBQTtJQUM3QixDQUFDO1NBQU0sSUFBSSxXQUFXLEtBQUssY0FBYyxFQUFFLENBQUM7UUFDMUMsTUFBTSxPQUFPLEdBQUcsTUFBTSxlQUFlLENBQUMsSUFBSSxFQUFFLENBQUE7UUFFNUMsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3RCLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUE7WUFDN0MsT0FBTTtRQUNSLENBQUM7UUFFRCxLQUFLLE1BQU0sS0FBSyxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQzVCLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxLQUFLLEtBQUssQ0FBQyxJQUFJLFNBQVMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUE7UUFDL0QsQ0FBQztJQUNILENBQUM7U0FBTSxJQUFJLFdBQVcsS0FBSyxjQUFjLEVBQUUsQ0FBQztRQUMxQyxNQUFNLFlBQVksR0FBRyxNQUFNLGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUVsRSxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDdEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtZQUNsRCxPQUFNO1FBQ1IsQ0FBQztRQUVELE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxZQUFZLENBQUMsSUFBSSxTQUFTLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFBO0lBQ3RFLENBQUM7U0FBTSxJQUFJLFdBQVcsS0FBSyxpQkFBaUIsRUFBRSxDQUFDO1FBQzdDLE1BQU0sTUFBTSxHQUFHLElBQUksb0JBQW9CLENBQUM7WUFDdEMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSTtZQUN2QixJQUFJLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTO1NBQ2hFLENBQUMsQ0FBQTtRQUNGLE1BQU0sRUFBQyxJQUFJLEVBQUUsT0FBTyxFQUFDLEdBQUcscUJBQXFCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQzNELE1BQU0sTUFBTSxHQUFHLE1BQU0sTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFDLENBQUMsQ0FBQTtRQUUxRSxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQzlDLENBQUM7U0FBTSxDQUFDO1FBQ04sTUFBTSxJQUFJLEtBQUssQ0FBQyxvQkFBb0IsV0FBVyxFQUFFLENBQUMsQ0FBQTtJQUNwRCxDQUFDO0FBQ0gsQ0FBQztBQUVELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO0lBQzFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUE7SUFDckUsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUNqQixDQUFDLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIiMhL3Vzci9iaW4vZW52IG5vZGVcblxuaW1wb3J0IEJyb3dzZXJDb21tYW5kQ2xpZW50IGZyb20gXCIuL2Jyb3dzZXItY29tbWFuZC1jbGllbnQuanNcIlxuaW1wb3J0IEJyb3dzZXJQcm9jZXNzIGZyb20gXCIuL2Jyb3dzZXItcHJvY2Vzcy5qc1wiXG5pbXBvcnQgQnJvd3NlclJlZ2lzdHJ5IGZyb20gXCIuL2Jyb3dzZXItcmVnaXN0cnkuanNcIlxuaW1wb3J0IHtwYXJzZUFyZ3YsIHJlc29sdmVCcm93c2VyQ29tbWFuZH0gZnJvbSBcIi4vY2xpLWhlbHBlcnMuanNcIlxuXG4vKiogQHJldHVybnMge3ZvaWR9ICovXG5mdW5jdGlvbiBwcmludEhlbHAoKSB7XG4gIGNvbnNvbGUubG9nKGBVc2FnZTpcbiAgc3lzdGVtLXRlc3RpbmcgYnJvd3NlciA8bmFtZT4gWy0tcG9ydCAxOTkxXSBbLS1iYXNlLXVybCBodHRwczovL2V4YW1wbGUuY29tXVxuICBzeXN0ZW0tdGVzdGluZyBicm93c2VyLWxpc3RcbiAgc3lzdGVtLXRlc3RpbmcgYnJvd3Nlci1zdG9wIFstLW5hbWUgbXktYnJvd3Nlcl1cbiAgc3lzdGVtLXRlc3RpbmcgYnJvd3Nlci1jb21tYW5kIFstLW5hbWUgbXktYnJvd3Nlcl0gWy0tcG9ydCAxOTkxXSAtLXZpc2l0PWh0dHBzOi8vZXhhbXBsZS5jb21cbiAgc3lzdGVtLXRlc3RpbmcgYnJvd3Nlci1jb21tYW5kIFstLW5hbWUgbXktYnJvd3Nlcl0gLS1maW5kLWJ5LXRlc3QtaWQgc29tZUlEIFstLXRpbWVvdXQgMTVdXG4gIHN5c3RlbS10ZXN0aW5nIGJyb3dzZXItY29tbWFuZCBbLS1uYW1lIG15LWJyb3dzZXJdIC0tdGFrZS1zY3JlZW5zaG90XG4gIHN5c3RlbS10ZXN0aW5nIGJyb3dzZXItY29tbWFuZCBbLS1uYW1lIG15LWJyb3dzZXJdIC0tY2xpY2sgc2VsZWN0b3IgWy0tbWV0aG9kIGh1bWFuXSBbLS1jbGljay1vZmZzZXQteCAzMl0gWy0tY2xpY2stb2Zmc2V0LXkgMjhdIFstLWh1bWFuLXN0ZXBzIDVdIFstLWh1bWFuLXN0ZXAtZGVsYXkgNzVdXG4gIHN5c3RlbS10ZXN0aW5nIGJyb3dzZXItY29tbWFuZCBbLS1uYW1lIG15LWJyb3dzZXJdIC0tY29tbWFuZD1leGVjdXRlU2NyaXB0IC0tc2NyaXB0PSdyZXR1cm4gZG9jdW1lbnQudGl0bGUnIFstLWFyZyAuLi5dXG4gIHN5c3RlbS10ZXN0aW5nIGJyb3dzZXItY29tbWFuZCBbLS1uYW1lIG15LWJyb3dzZXJdIC0tY29tbWFuZD1hZGRDb29raWUgLS1jb29raWUtbmFtZT1hdXRoIC0tY29va2llLXZhbHVlPS4uLiBbLS1jb29raWUtZG9tYWluPTEyNy4wLjAuMV0gWy0tY29va2llLXBhdGg9L11cbmApXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmdbXX0gYXJndlxuICogQHJldHVybnMge1Byb21pc2U8dm9pZD59XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIG1haW4oYXJndikge1xuICBjb25zdCBwYXJzZWQgPSBwYXJzZUFyZ3YoYXJndilcbiAgY29uc3QgbWFpbkNvbW1hbmQgPSBwYXJzZWQuX1swXVxuXG4gIGlmICghbWFpbkNvbW1hbmQgfHwgcGFyc2VkLmZsYWdzLmhlbHApIHtcbiAgICBwcmludEhlbHAoKVxuICAgIHJldHVyblxuICB9XG5cbiAgaWYgKG1haW5Db21tYW5kID09PSBcImJyb3dzZXJcIikge1xuICAgIGNvbnN0IG5hbWUgPSBwYXJzZWQuX1sxXVxuXG4gICAgaWYgKCFuYW1lKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJicm93c2VyIHJlcXVpcmVzIGEgbmFtZVwiKVxuICAgIH1cblxuICAgIGNvbnN0IGJyb3dzZXJQcm9jZXNzID0gbmV3IEJyb3dzZXJQcm9jZXNzKHtcbiAgICAgIGJhc2VVcmw6IHBhcnNlZC5mbGFnc1tcImJhc2UtdXJsXCJdLFxuICAgICAgYnJvd3NlckFyZ3M6IHtcbiAgICAgICAgZHJpdmVyOiBwYXJzZWQuZmxhZ3MuZHJpdmVyID8ge3R5cGU6IHBhcnNlZC5mbGFncy5kcml2ZXJ9IDogdW5kZWZpbmVkXG4gICAgICB9LFxuICAgICAgZGVidWc6IHBhcnNlZC5mbGFncy5kZWJ1ZyA9PT0gdHJ1ZSB8fCBwYXJzZWQuZmxhZ3MuZGVidWcgPT09IFwidHJ1ZVwiLFxuICAgICAgbmFtZSxcbiAgICAgIHBvcnQ6IHBhcnNlZC5mbGFncy5wb3J0ID8gTnVtYmVyKHBhcnNlZC5mbGFncy5wb3J0KSA6IDBcbiAgICB9KVxuXG4gICAgYXdhaXQgYnJvd3NlclByb2Nlc3Muc3RhcnQoKVxuICAgIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KHtuYW1lLCBwaWQ6IHByb2Nlc3MucGlkLCBwb3J0OiBicm93c2VyUHJvY2Vzcy5wb3J0fSkpXG4gICAgYXdhaXQgbmV3IFByb21pc2UoKCkgPT4ge30pXG4gIH0gZWxzZSBpZiAobWFpbkNvbW1hbmQgPT09IFwiYnJvd3Nlci1saXN0XCIpIHtcbiAgICBjb25zdCBlbnRyaWVzID0gYXdhaXQgQnJvd3NlclJlZ2lzdHJ5Lmxpc3QoKVxuXG4gICAgaWYgKHBhcnNlZC5mbGFncy5qc29uKSB7XG4gICAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShlbnRyaWVzLCBudWxsLCAyKSlcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgICAgY29uc29sZS5sb2coYCR7ZW50cnkubmFtZX1cXHQke2VudHJ5LnBvcnR9XFx0cGlkPSR7ZW50cnkucGlkfWApXG4gICAgfVxuICB9IGVsc2UgaWYgKG1haW5Db21tYW5kID09PSBcImJyb3dzZXItc3RvcFwiKSB7XG4gICAgY29uc3Qgc3RvcHBlZEVudHJ5ID0gYXdhaXQgQnJvd3NlclJlZ2lzdHJ5LnN0b3AocGFyc2VkLmZsYWdzLm5hbWUpXG5cbiAgICBpZiAocGFyc2VkLmZsYWdzLmpzb24pIHtcbiAgICAgIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KHN0b3BwZWRFbnRyeSwgbnVsbCwgMikpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zb2xlLmxvZyhgU3RvcHBlZCAke3N0b3BwZWRFbnRyeS5uYW1lfVxcdHBpZD0ke3N0b3BwZWRFbnRyeS5waWR9YClcbiAgfSBlbHNlIGlmIChtYWluQ29tbWFuZCA9PT0gXCJicm93c2VyLWNvbW1hbmRcIikge1xuICAgIGNvbnN0IGNsaWVudCA9IG5ldyBCcm93c2VyQ29tbWFuZENsaWVudCh7XG4gICAgICBuYW1lOiBwYXJzZWQuZmxhZ3MubmFtZSxcbiAgICAgIHBvcnQ6IHBhcnNlZC5mbGFncy5wb3J0ID8gTnVtYmVyKHBhcnNlZC5mbGFncy5wb3J0KSA6IHVuZGVmaW5lZFxuICAgIH0pXG4gICAgY29uc3Qge2FyZ3MsIGNvbW1hbmR9ID0gcmVzb2x2ZUJyb3dzZXJDb21tYW5kKHBhcnNlZC5mbGFncylcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBjbGllbnQuc2VuZCh7YXJncywgY29tbWFuZCwgdHlwZTogXCJicm93c2VyLWNvbW1hbmRcIn0pXG5cbiAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShyZXN1bHQsIG51bGwsIDIpKVxuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBjb21tYW5kOiAke21haW5Db21tYW5kfWApXG4gIH1cbn1cblxubWFpbihwcm9jZXNzLmFyZ3Yuc2xpY2UoMikpLmNhdGNoKChlcnJvcikgPT4ge1xuICBjb25zb2xlLmVycm9yKGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogU3RyaW5nKGVycm9yKSlcbiAgcHJvY2Vzcy5leGl0KDEpXG59KVxuIl19
@@ -118,6 +118,14 @@ export default class AppiumDriver extends WebDriverDriver {
118
118
  * @returns {Promise<import("selenium-webdriver").WebElement>} Native element containing the text.
119
119
  */
120
120
  findByNativeText(expectedText: string, args?: FindArgs): Promise<import("selenium-webdriver").WebElement>;
121
+ /**
122
+ * Waits until a test id owns expected visible text or an accessibility label.
123
+ * @param {string} testId Stable native resource id suffix.
124
+ * @param {string} expectedText Text that must appear under the test id.
125
+ * @param {FindArgs} [args] Optional lookup settings.
126
+ * @returns {Promise<void>}
127
+ */
128
+ waitForTestIDText(testId: string, expectedText: string, args?: FindArgs): Promise<void>;
121
129
  /**
122
130
  * Finds a native Android control by resource id, scrolling it into view first when requested.
123
131
  * @param {string} testId Stable native resource id suffix.
@@ -132,6 +140,18 @@ export default class AppiumDriver extends WebDriverDriver {
132
140
  * @returns {Promise<import("selenium-webdriver").WebElement>} Matching native element.
133
141
  */
134
142
  findNativeControlWithScrolling(lookup: NativeControlLookup, args?: FindArgs): Promise<import("selenium-webdriver").WebElement>;
143
+ /**
144
+ * Searches native content around the current viewport so retained offsets and
145
+ * below-fold targets are both reachable without exhausting the timeout budget.
146
+ * @param {() => Promise<import("selenium-webdriver").WebElement>} directFind Lookup to retry after each scroll.
147
+ * @param {string[]} scrollContainerTestIDs Native test IDs that may identify scroll containers.
148
+ * @returns {Promise<import("selenium-webdriver").WebElement>} Matching control.
149
+ */
150
+ findNativeControlWithViewportScan(directFind: () => Promise<import("selenium-webdriver").WebElement>, scrollContainerTestIDs: string[]): Promise<import("selenium-webdriver").WebElement>;
151
+ /**
152
+ * @returns {NativeViewportScrollState} Fresh scroll fallback state.
153
+ */
154
+ newNativeViewportScrollState(): NativeViewportScrollState;
135
155
  /**
136
156
  * Runs explicit native polling without Appium's implicit wait extending every failed probe.
137
157
  * @template TResult Result type.
@@ -141,18 +161,20 @@ export default class AppiumDriver extends WebDriverDriver {
141
161
  */
142
162
  withNativeImplicitWait<TResult>(implicitWaitMs: number, callback: () => Promise<TResult>): Promise<TResult>;
143
163
  /**
144
- * Scrolls the visible native viewport down when UiScrollable cannot identify the owning ScrollView.
164
+ * Scrolls the visible native viewport when UiScrollable cannot identify the owning ScrollView.
145
165
  * @param {NativeViewportScrollState} scrollState Per-lookup Appium scroll state.
146
166
  * @param {string[]} scrollContainerTestIDs Native test IDs that may identify scroll containers.
167
+ * @param {NativeViewportScrollDirection} direction Direction to scroll the content.
147
168
  * @returns {Promise<void>} Resolves after Appium performs the gesture.
148
169
  */
149
- scrollNativeViewportDown(scrollState: NativeViewportScrollState, scrollContainerTestIDs: string[]): Promise<void>;
170
+ scrollNativeViewport(scrollState: NativeViewportScrollState, scrollContainerTestIDs: string[], direction: NativeViewportScrollDirection): Promise<void>;
150
171
  /**
151
172
  * Scrolls a specific native Android element by test id when Appium exposes it as a scroll container.
152
173
  * @param {string} testId Stable native resource id suffix.
174
+ * @param {NativeViewportScrollDirection} direction Direction to scroll the content.
153
175
  * @returns {Promise<boolean>} Whether Appium reported more content to scroll.
154
176
  */
155
- scrollNativeElementDown(testId: string): Promise<boolean>;
177
+ scrollNativeElement(testId: string, direction: NativeViewportScrollDirection): Promise<boolean>;
156
178
  /**
157
179
  * Moves an offscreen Android control into a ScrollView-backed native hierarchy.
158
180
  * @param {string} uiSelector UiAutomator selector for the target control.
@@ -203,6 +225,10 @@ export type NativeViewportScrollState = {
203
225
  tryElementScroll: boolean;
204
226
  tryViewportScroll: boolean;
205
227
  };
228
+ /**
229
+ * Native viewport scroll direction.
230
+ */
231
+ export type NativeViewportScrollDirection = "down" | "up";
206
232
  /**
207
233
  * Native Android lookup work executed by the scrolling poller.
208
234
  */