askui 0.20.0 → 0.20.2

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 (226) hide show
  1. package/dist/cjs/core/annotation/annotation-writer.js.map +1 -0
  2. package/dist/cjs/core/annotation/annotation.js.map +1 -0
  3. package/dist/cjs/core/inference-response/inference-response.js.map +1 -0
  4. package/dist/cjs/core/inference-response/invalid-model-type-error.js.map +1 -0
  5. package/dist/cjs/core/inference-response/model-type.js.map +1 -0
  6. package/dist/cjs/core/model/annotation-result/annotation-interface.js.map +1 -0
  7. package/dist/cjs/core/model/annotation-result/boundary-box.js.map +1 -0
  8. package/dist/cjs/core/model/annotation-result/detected-element.js.map +1 -0
  9. package/dist/cjs/core/model/custom-element-json.js.map +1 -0
  10. package/dist/cjs/core/model/custom-element.js.map +1 -0
  11. package/dist/cjs/core/reporting/default-step.js.map +1 -0
  12. package/dist/cjs/core/reporting/index.js.map +1 -0
  13. package/dist/cjs/core/reporting/instruction.js.map +1 -0
  14. package/dist/cjs/core/reporting/reporter-config.js.map +1 -0
  15. package/dist/cjs/core/reporting/reporter.js.map +1 -0
  16. package/dist/cjs/core/reporting/snapshot-detail-level.js.map +1 -0
  17. package/dist/cjs/core/reporting/snapshot.js.map +1 -0
  18. package/dist/cjs/core/reporting/step-reporter.js.map +1 -0
  19. package/dist/cjs/core/reporting/step-run.js.map +1 -0
  20. package/dist/cjs/core/reporting/step-status-end.js.map +1 -0
  21. package/dist/cjs/core/reporting/step-status.js.map +1 -0
  22. package/dist/cjs/core/reporting/step.js.map +1 -0
  23. package/dist/cjs/core/runner-protocol/index.js.map +1 -0
  24. package/dist/cjs/core/runner-protocol/request/capture-screenshot-request.js.map +1 -0
  25. package/dist/cjs/core/runner-protocol/request/control-request.js.map +1 -0
  26. package/dist/cjs/core/runner-protocol/request/get-server-process-pid.js.map +1 -0
  27. package/dist/cjs/core/runner-protocol/request/index.js.map +1 -0
  28. package/dist/cjs/core/runner-protocol/request/interactive-annotation-request.js.map +1 -0
  29. package/dist/cjs/core/runner-protocol/request/read-recording-request.js.map +1 -0
  30. package/dist/cjs/core/runner-protocol/request/runner-protocol-request.js.map +1 -0
  31. package/dist/cjs/core/runner-protocol/request/start-recording-request.js.map +1 -0
  32. package/dist/cjs/core/runner-protocol/request/stop-recording-request.js.map +1 -0
  33. package/dist/cjs/core/runner-protocol/response/index.js.map +1 -0
  34. package/dist/cjs/core/ui-control-commands/action.js.map +1 -0
  35. package/dist/cjs/core/ui-control-commands/control-command-code.js.map +1 -0
  36. package/dist/cjs/core/ui-control-commands/control-command.js.map +1 -0
  37. package/dist/cjs/core/ui-control-commands/index.js.map +1 -0
  38. package/dist/cjs/core/ui-control-commands/input-event.js.map +1 -0
  39. package/dist/cjs/execution/config-error.js.map +1 -0
  40. package/dist/cjs/execution/control-command-error.js.map +1 -0
  41. package/dist/cjs/execution/credentials-args.js.map +1 -0
  42. package/dist/cjs/execution/dsl.d.ts +202 -61
  43. package/dist/cjs/execution/dsl.js +279 -96
  44. package/dist/cjs/execution/dsl.js.map +1 -0
  45. package/dist/cjs/execution/execution-runtime.js.map +1 -0
  46. package/dist/cjs/execution/index.js.map +1 -0
  47. package/dist/cjs/execution/inference-client.js.map +1 -0
  48. package/dist/cjs/execution/inference-response-error.js.map +1 -0
  49. package/dist/cjs/execution/is-image-required-interface.js.map +1 -0
  50. package/dist/cjs/execution/misc.js.map +1 -0
  51. package/dist/cjs/execution/model-composition-branch.js.map +1 -0
  52. package/dist/cjs/execution/read-environment-credentials.js.map +1 -0
  53. package/dist/cjs/execution/read-recording-response-stream-handler.js.map +1 -0
  54. package/dist/cjs/execution/repeat-error.js.map +1 -0
  55. package/dist/cjs/execution/ui-control-client-dependency-builder.js.map +1 -0
  56. package/dist/cjs/execution/ui-control-client.js.map +1 -0
  57. package/dist/cjs/execution/ui-controller-client-connection-state.js.map +1 -0
  58. package/dist/cjs/execution/ui-controller-client-error.js.map +1 -0
  59. package/dist/cjs/execution/ui-controller-client-interface.js.map +1 -0
  60. package/dist/cjs/execution/ui-controller-client.js.map +1 -0
  61. package/dist/cjs/lib/download-binaries.js.map +1 -0
  62. package/dist/cjs/lib/index.js.map +1 -0
  63. package/dist/cjs/lib/interactive_cli/add-script-package-json.d.ts +1 -0
  64. package/dist/cjs/lib/interactive_cli/add-script-package-json.js +39 -0
  65. package/dist/cjs/lib/interactive_cli/add-script-package-json.js.map +1 -0
  66. package/dist/cjs/lib/interactive_cli/cli-options-interface.js.map +1 -0
  67. package/dist/cjs/lib/interactive_cli/cli.js.map +1 -0
  68. package/dist/cjs/lib/interactive_cli/create-example-project.js.map +1 -0
  69. package/dist/cjs/lib/interactive_cli/index.js.map +1 -0
  70. package/dist/cjs/lib/libfuse-error.js.map +1 -0
  71. package/dist/cjs/lib/logger.js.map +1 -0
  72. package/dist/cjs/lib/timeout-error.js.map +1 -0
  73. package/dist/cjs/lib/ui-controller-args.js.map +1 -0
  74. package/dist/cjs/lib/ui-controller-darwin.js.map +1 -0
  75. package/dist/cjs/lib/ui-controller-facade.js.map +1 -0
  76. package/dist/cjs/lib/ui-controller-linux.js.map +1 -0
  77. package/dist/cjs/lib/ui-controller-win32.js.map +1 -0
  78. package/dist/cjs/lib/ui-controller.js.map +1 -0
  79. package/dist/cjs/lib/unkown-error.js.map +1 -0
  80. package/dist/cjs/lib/wayland-error.js.map +1 -0
  81. package/dist/cjs/main.js.map +1 -0
  82. package/dist/cjs/shared/index.js.map +1 -0
  83. package/dist/cjs/shared/log-levels.js.map +1 -0
  84. package/dist/cjs/shared/proxy-agent-args.js.map +1 -0
  85. package/dist/cjs/utils/analytics/analytics-interface.js.map +1 -0
  86. package/dist/cjs/utils/analytics/analytics.js.map +1 -0
  87. package/dist/cjs/utils/analytics/index.js.map +1 -0
  88. package/dist/cjs/utils/analytics/installation-timestamp-create-error.js.map +1 -0
  89. package/dist/cjs/utils/analytics/installation-timestamp-get-error.js.map +1 -0
  90. package/dist/cjs/utils/analytics/installation-timestamp.js.map +1 -0
  91. package/dist/cjs/utils/analytics/user-identifier-interface.js.map +1 -0
  92. package/dist/cjs/utils/analytics/user-identifier.js.map +1 -0
  93. package/dist/cjs/utils/base_64_image/base-64-image-error.js.map +1 -0
  94. package/dist/cjs/utils/base_64_image/base-64-image-string-error.js.map +1 -0
  95. package/dist/cjs/utils/base_64_image/base-64-image.js.map +1 -0
  96. package/dist/cjs/utils/base_64_image/sharp.js.map +1 -0
  97. package/dist/cjs/utils/http/credentials.js.map +1 -0
  98. package/dist/cjs/utils/http/custom-errors/authentication-http-client-error.js.map +1 -0
  99. package/dist/cjs/utils/http/custom-errors/client-http-client-error.js.map +1 -0
  100. package/dist/cjs/utils/http/custom-errors/general-http-client-error.js.map +1 -0
  101. package/dist/cjs/utils/http/custom-errors/http-client-error.js.map +1 -0
  102. package/dist/cjs/utils/http/custom-errors/index.js.map +1 -0
  103. package/dist/cjs/utils/http/custom-errors/server-http-client-error.js.map +1 -0
  104. package/dist/cjs/utils/http/custom-errors/unkown-http-client-error.js.map +1 -0
  105. package/dist/cjs/utils/http/http-client-got.js.map +1 -0
  106. package/dist/cjs/utils/http/index.js.map +1 -0
  107. package/dist/cjs/utils/image-resize-errors/image-resizing-base-error.js.map +1 -0
  108. package/dist/cjs/utils/image-resize-errors/index.js.map +1 -0
  109. package/dist/cjs/utils/path.js.map +1 -0
  110. package/dist/cjs/utils/proxy/proxy-builder.js.map +1 -0
  111. package/dist/cjs/utils/resized-image-interface.js.map +1 -0
  112. package/dist/cjs/utils/transformations.js.map +1 -0
  113. package/dist/esm/core/annotation/annotation-writer.js.map +1 -0
  114. package/dist/esm/core/annotation/annotation.js.map +1 -0
  115. package/dist/esm/core/inference-response/inference-response.js.map +1 -0
  116. package/dist/esm/core/inference-response/invalid-model-type-error.js.map +1 -0
  117. package/dist/esm/core/inference-response/model-type.js.map +1 -0
  118. package/dist/esm/core/model/annotation-result/annotation-interface.js.map +1 -0
  119. package/dist/esm/core/model/annotation-result/boundary-box.js.map +1 -0
  120. package/dist/esm/core/model/annotation-result/detected-element.js.map +1 -0
  121. package/dist/esm/core/model/custom-element-json.js.map +1 -0
  122. package/dist/esm/core/model/custom-element.js.map +1 -0
  123. package/dist/esm/core/reporting/default-step.js.map +1 -0
  124. package/dist/esm/core/reporting/index.js.map +1 -0
  125. package/dist/esm/core/reporting/instruction.js.map +1 -0
  126. package/dist/esm/core/reporting/reporter-config.js.map +1 -0
  127. package/dist/esm/core/reporting/reporter.js.map +1 -0
  128. package/dist/esm/core/reporting/snapshot-detail-level.js.map +1 -0
  129. package/dist/esm/core/reporting/snapshot.js.map +1 -0
  130. package/dist/esm/core/reporting/step-reporter.js.map +1 -0
  131. package/dist/esm/core/reporting/step-run.js.map +1 -0
  132. package/dist/esm/core/reporting/step-status-end.js.map +1 -0
  133. package/dist/esm/core/reporting/step-status.js.map +1 -0
  134. package/dist/esm/core/reporting/step.js.map +1 -0
  135. package/dist/esm/core/runner-protocol/index.js.map +1 -0
  136. package/dist/esm/core/runner-protocol/request/capture-screenshot-request.js.map +1 -0
  137. package/dist/esm/core/runner-protocol/request/control-request.js.map +1 -0
  138. package/dist/esm/core/runner-protocol/request/get-server-process-pid.js.map +1 -0
  139. package/dist/esm/core/runner-protocol/request/index.js.map +1 -0
  140. package/dist/esm/core/runner-protocol/request/interactive-annotation-request.js.map +1 -0
  141. package/dist/esm/core/runner-protocol/request/read-recording-request.js.map +1 -0
  142. package/dist/esm/core/runner-protocol/request/runner-protocol-request.js.map +1 -0
  143. package/dist/esm/core/runner-protocol/request/start-recording-request.js.map +1 -0
  144. package/dist/esm/core/runner-protocol/request/stop-recording-request.js.map +1 -0
  145. package/dist/esm/core/runner-protocol/response/index.js.map +1 -0
  146. package/dist/esm/core/ui-control-commands/action.js.map +1 -0
  147. package/dist/esm/core/ui-control-commands/control-command-code.js.map +1 -0
  148. package/dist/esm/core/ui-control-commands/control-command.js.map +1 -0
  149. package/dist/esm/core/ui-control-commands/index.js.map +1 -0
  150. package/dist/esm/core/ui-control-commands/input-event.js.map +1 -0
  151. package/dist/esm/execution/config-error.js.map +1 -0
  152. package/dist/esm/execution/control-command-error.js.map +1 -0
  153. package/dist/esm/execution/credentials-args.js.map +1 -0
  154. package/dist/esm/execution/dsl.d.ts +202 -61
  155. package/dist/esm/execution/dsl.js +279 -96
  156. package/dist/esm/execution/dsl.js.map +1 -0
  157. package/dist/esm/execution/execution-runtime.js.map +1 -0
  158. package/dist/esm/execution/index.js.map +1 -0
  159. package/dist/esm/execution/inference-client.js.map +1 -0
  160. package/dist/esm/execution/inference-response-error.js.map +1 -0
  161. package/dist/esm/execution/is-image-required-interface.js.map +1 -0
  162. package/dist/esm/execution/misc.js.map +1 -0
  163. package/dist/esm/execution/model-composition-branch.js.map +1 -0
  164. package/dist/esm/execution/read-environment-credentials.js.map +1 -0
  165. package/dist/esm/execution/read-recording-response-stream-handler.js.map +1 -0
  166. package/dist/esm/execution/repeat-error.js.map +1 -0
  167. package/dist/esm/execution/ui-control-client-dependency-builder.js.map +1 -0
  168. package/dist/esm/execution/ui-control-client.js.map +1 -0
  169. package/dist/esm/execution/ui-controller-client-connection-state.js.map +1 -0
  170. package/dist/esm/execution/ui-controller-client-error.js.map +1 -0
  171. package/dist/esm/execution/ui-controller-client-interface.js.map +1 -0
  172. package/dist/esm/execution/ui-controller-client.js.map +1 -0
  173. package/dist/esm/lib/download-binaries.js.map +1 -0
  174. package/dist/esm/lib/index.js.map +1 -0
  175. package/dist/esm/lib/interactive_cli/add-script-package-json.d.ts +1 -0
  176. package/dist/esm/lib/interactive_cli/add-script-package-json.js +32 -0
  177. package/dist/esm/lib/interactive_cli/add-script-package-json.js.map +1 -0
  178. package/dist/esm/lib/interactive_cli/cli-options-interface.js.map +1 -0
  179. package/dist/esm/lib/interactive_cli/cli.js.map +1 -0
  180. package/dist/esm/lib/interactive_cli/create-example-project.js.map +1 -0
  181. package/dist/esm/lib/interactive_cli/index.js.map +1 -0
  182. package/dist/esm/lib/libfuse-error.js.map +1 -0
  183. package/dist/esm/lib/logger.js.map +1 -0
  184. package/dist/esm/lib/timeout-error.js.map +1 -0
  185. package/dist/esm/lib/ui-controller-args.js.map +1 -0
  186. package/dist/esm/lib/ui-controller-darwin.js.map +1 -0
  187. package/dist/esm/lib/ui-controller-facade.js.map +1 -0
  188. package/dist/esm/lib/ui-controller-linux.js.map +1 -0
  189. package/dist/esm/lib/ui-controller-win32.js.map +1 -0
  190. package/dist/esm/lib/ui-controller.js.map +1 -0
  191. package/dist/esm/lib/unkown-error.js.map +1 -0
  192. package/dist/esm/lib/wayland-error.js.map +1 -0
  193. package/dist/esm/main.js.map +1 -0
  194. package/dist/esm/shared/index.js.map +1 -0
  195. package/dist/esm/shared/log-levels.js.map +1 -0
  196. package/dist/esm/shared/proxy-agent-args.js.map +1 -0
  197. package/dist/esm/utils/analytics/analytics-interface.js.map +1 -0
  198. package/dist/esm/utils/analytics/analytics.js.map +1 -0
  199. package/dist/esm/utils/analytics/index.js.map +1 -0
  200. package/dist/esm/utils/analytics/installation-timestamp-create-error.js.map +1 -0
  201. package/dist/esm/utils/analytics/installation-timestamp-get-error.js.map +1 -0
  202. package/dist/esm/utils/analytics/installation-timestamp.js.map +1 -0
  203. package/dist/esm/utils/analytics/user-identifier-interface.js.map +1 -0
  204. package/dist/esm/utils/analytics/user-identifier.js.map +1 -0
  205. package/dist/esm/utils/base_64_image/base-64-image-error.js.map +1 -0
  206. package/dist/esm/utils/base_64_image/base-64-image-string-error.js.map +1 -0
  207. package/dist/esm/utils/base_64_image/base-64-image.js.map +1 -0
  208. package/dist/esm/utils/base_64_image/sharp.js.map +1 -0
  209. package/dist/esm/utils/http/credentials.js.map +1 -0
  210. package/dist/esm/utils/http/custom-errors/authentication-http-client-error.js.map +1 -0
  211. package/dist/esm/utils/http/custom-errors/client-http-client-error.js.map +1 -0
  212. package/dist/esm/utils/http/custom-errors/general-http-client-error.js.map +1 -0
  213. package/dist/esm/utils/http/custom-errors/http-client-error.js.map +1 -0
  214. package/dist/esm/utils/http/custom-errors/index.js.map +1 -0
  215. package/dist/esm/utils/http/custom-errors/server-http-client-error.js.map +1 -0
  216. package/dist/esm/utils/http/custom-errors/unkown-http-client-error.js.map +1 -0
  217. package/dist/esm/utils/http/http-client-got.js.map +1 -0
  218. package/dist/esm/utils/http/index.js.map +1 -0
  219. package/dist/esm/utils/image-resize-errors/image-resizing-base-error.js.map +1 -0
  220. package/dist/esm/utils/image-resize-errors/index.js.map +1 -0
  221. package/dist/esm/utils/path.js.map +1 -0
  222. package/dist/esm/utils/proxy/proxy-builder.js.map +1 -0
  223. package/dist/esm/utils/resized-image-interface.js.map +1 -0
  224. package/dist/esm/utils/transformations.js.map +1 -0
  225. package/dist/example_projects_templates/configs/jasmine.config.json +12 -0
  226. package/package.json +3 -3
@@ -1,8 +1,3 @@
1
- /* eslint-disable @typescript-eslint/no-use-before-define */
2
- /* eslint-disable @typescript-eslint/naming-convention */
3
- /* eslint-disable max-classes-per-file */
4
- /* eslint-disable max-len */
5
- // Autogenerated from typescript.template file
6
1
  export var Separators;
7
2
  (function (Separators) {
8
3
  Separators["STRING"] = "<|string|>";
@@ -27,8 +22,12 @@ class FluentBase {
27
22
  const newParamsList = FluentBase.addParams(paramsList, this._params);
28
23
  if (this instanceof FluentCommand) {
29
24
  const fluentCommand = this;
30
- const customElements = newParamsList.has('customElement') ? newParamsList.get('customElement') : [];
31
- const aiElementNames = newParamsList.has('aiElementName') ? newParamsList.get('aiElementName') : [];
25
+ const customElements = newParamsList.has('customElement')
26
+ ? newParamsList.get('customElement')
27
+ : [];
28
+ const aiElementNames = newParamsList.has('aiElementName')
29
+ ? newParamsList.get('aiElementName')
30
+ : [];
32
31
  return fluentCommand.fluentCommandExecutor(newCurrentInstruction.trim(), {
33
32
  customElementsJson: customElements,
34
33
  aiElementNames,
@@ -44,8 +43,12 @@ class FluentBase {
44
43
  const newParamsList = FluentBase.addParams(paramsList, this._params);
45
44
  if (this instanceof Getter) {
46
45
  const getter = this;
47
- const customElements = newParamsList.has('customElement') ? newParamsList.get('customElement') : [];
48
- const aiElementNames = newParamsList.has('aiElementName') ? newParamsList.get('aiElementName') : [];
46
+ const customElements = newParamsList.has('customElement')
47
+ ? newParamsList.get('customElement')
48
+ : [];
49
+ const aiElementNames = newParamsList.has('aiElementName')
50
+ ? newParamsList.get('aiElementName')
51
+ : [];
49
52
  return getter.getterExecutor(newCurrentInstruction.trim(), {
50
53
  customElementsJson: customElements,
51
54
  aiElementNames,
@@ -56,8 +59,12 @@ class FluentBase {
56
59
  }
57
60
  return this.prev.getterStringBuilder(newCurrentInstruction, newParamsList);
58
61
  }
59
- get textStr() { return this._textStr; }
60
- get params() { return this._params; }
62
+ get textStr() {
63
+ return this._textStr;
64
+ }
65
+ get params() {
66
+ return this._params;
67
+ }
61
68
  }
62
69
  export class Exec extends FluentBase {
63
70
  exec() {
@@ -204,6 +211,7 @@ export class FluentFilters extends FluentBase {
204
211
  return new FluentFiltersOrRelations(this);
205
212
  }
206
213
  /**
214
+ * Filters for a UI element 'table'.
207
215
  *
208
216
  * @return {FluentFiltersOrRelations}
209
217
  */
@@ -232,6 +240,8 @@ export class FluentFilters extends FluentBase {
232
240
  * await aui.click().text().withTextRegex('\b[Ss]\w+').exec();
233
241
  * ```
234
242
  *
243
+ * @param {string} [text] - A text to be matched.
244
+ *
235
245
  * @return {FluentFiltersOrRelations}
236
246
  */
237
247
  text(text) {
@@ -264,9 +274,9 @@ export class FluentFilters extends FluentBase {
264
274
  return new FluentFiltersOrRelations(this);
265
275
  }
266
276
  /**
267
- * Filters for a 'custom element', that is a UI element which is defined by providing an image and other parameters such as degree of rotation. It allows filtering for a UI element based on an image instead of using text or element descriptions like `button().withText('Submit')` in `await aui.click().button().withText('Submit').exec()`.
277
+ * Filters for a 'custom element', that is a UI element that is defined by providing an image and other parameters such as degree of rotation. It allows filtering for a UI element based on an image instead of using text or element descriptions like `button().withText('Submit')` in `await aui.click().button().withText('Submit').exec()`.
268
278
  *
269
- * See the tutorial - [Custom Element](https://docs.askui.com/docs/general/Tutorials/custom-element) for more detail.
279
+ * See the tutorial - [Custom Element](https://docs.askui.com/docs/general/Element%20Selection/custom-elements) for more details.
270
280
  *
271
281
  * **Example**
272
282
  * ```typescript
@@ -297,7 +307,7 @@ export class FluentFilters extends FluentBase {
297
307
  * - **rotationDegreePerStep** (*`number`, optional*):
298
308
  * - Step size in rotation degree. Rotates the custom image by this step size until 360° is exceeded. The range is from `0` to `360`. Defaults to `0`.
299
309
  * - **imageCompareFormat** (*`'RGB' | 'grayscale' | 'edges'`, optional*):
300
- * - The color compare style. 'edges' compares only edges, 'greyscale' compares the brightness of each pixel whereas 'RGB' compares all three colors (red, green, blue). Defaults to 'grayscale'.
310
+ * - The color compare style. `'edges'` compares only edges, `'greyscale'` compares the brightness of each pixel whereas `'RGB'` compares all three colors (red, green, blue). Defaults to `'grayscale'`.
301
311
  *
302
312
  *
303
313
  * @param {CustomElementJson} customElement - The custom element to filter for.
@@ -312,7 +322,13 @@ export class FluentFilters extends FluentBase {
312
322
  return new FluentFiltersOrRelations(this);
313
323
  }
314
324
  /**
315
- * Detects an AI Element created with the workflow creator.
325
+ * Detects an AI Element created with the [snipping workflow](https://docs.askui.com/docs/general/Components/aielement#snipping-workflow).
326
+ *
327
+ * **Examples:**
328
+ *
329
+ * ```typescript
330
+ * await aui.click().aiElement('askui-logo').exec();
331
+ * ```
316
332
  *
317
333
  * @param {string} aiElementName - Name of the AI Element.
318
334
  *
@@ -400,13 +416,13 @@ export class FluentFilters extends FluentBase {
400
416
  * 'other' === withText('text') => false
401
417
  *
402
418
  * // optional parameter: similarity_score
403
- * '978-0-201-00650-6' == withText('978-0-201-00') => true with 82.76 similarity
404
- * '978-0-201-00650-6' == withText('978-0-201-00', 90) => false with 82.76 < 90 similarity
405
- * '978-0-201-00650-6' == withText('978-0-201-00', 90) => true with 93.75 < 90 similarity
419
+ * '978-0-201-00650-6' == withText("978-0-201-00", 90) => false with 82.76 < 90 similarity
420
+ * '978-0-201-00650-6' == withText("978-0-201-00650", 90) => true with 93.75 > 90 similarity
406
421
  * ```
407
422
  * ![](https://docs.askui.com/img/gif/withText.gif)
408
423
  *
409
424
  * @param {string} text - A text to be matched.
425
+ * @param {number} [similarityScore=70] - Similarity score minimum value, it should be between `0` and `100`.
410
426
  *
411
427
  * @return {FluentFiltersOrRelations}
412
428
  */
@@ -510,9 +526,13 @@ export class FluentFilters extends FluentBase {
510
526
  * The text description inside the `matching()` should describe the element visually.
511
527
  * It understands color, some famous company/product names, general descriptions.
512
528
  *
513
- * It sometimes requires a bit of playing around to find a matching description:
514
- * E.g. `puzzle piece` can fail while `an icon showing a puzzle piece` might work.
515
- * Generally the more detail the better.
529
+ * **Important: _Matching only returns the best matching element when you use it with `get()`_**
530
+ *
531
+ * A bit of playing around to find a matching description is sometimes needed:
532
+ * E.g., `puzzle piece` can fail while `an icon showing a puzzle piece` might work.
533
+ * Generally, the more detail the better.
534
+ *
535
+ * We also recommend to not restrict the type of element by using the general selector `element()` as shown in the examples below.
516
536
  *
517
537
  * **Examples:**
518
538
  * ```typescript
@@ -684,7 +704,12 @@ export class FluentFiltersOrRelations extends FluentFilters {
684
704
  /**
685
705
  * Filters for an element right of another element.
686
706
  *
687
- * Takes an optional parameter `index` to select the `nth` element (starting with 0)
707
+ * Takes an optional parameter `index` to select the nth element (defaults to `0`).
708
+ *
709
+ * Takes an optional parameter `intersection_area` to specify which elements right of the other element are filtered for based on their vertical position (y-coordinates of bounding box):
710
+ * - `"element_center_line"` - considered right of the other element if element's bounding box intersects with a horizontal line passing through the center of the other element
711
+ * - `"element_edge_area"` - considered right of the other element if element's bounding box intersects with an area between the top and the bottom edge of the other element
712
+ * - `"display_edge_area"` - considered right of the other element no matter where it is placed vertically on the screen (y-axis)
688
713
  *
689
714
  * **Examples:**
690
715
  * ```typescript
@@ -702,21 +727,32 @@ export class FluentFiltersOrRelations extends FluentFilters {
702
727
  * ```
703
728
  * ![](https://docs.askui.com/img/gif/rightOf.gif)
704
729
  *
730
+ * @param {number} [index=0] - Index of element to filter for going into the direction specified. Defaults to `0` which is the first element (zero-indexed) found in that direction.
731
+ * @param {INTERSECTION_AREA} [intersection_area="element_edge_area"] - Intersecting with either `"element_center_line"`, `"element_edge_area"` or `"display_edge_area"`. Defaults to `"element_edge_area"`.
732
+ *
705
733
  * @return {FluentFilters}
706
734
  */
707
- rightOf(optionalIndex = 0) {
735
+ rightOf(index = 0, intersection_area = 'element_edge_area') {
708
736
  this._textStr = '';
709
- if (optionalIndex !== undefined) {
710
- this._textStr += `index ${optionalIndex}`;
737
+ if (index !== undefined) {
738
+ this._textStr += `index ${index}`;
711
739
  }
712
740
  this._textStr += ' right';
713
741
  this._textStr += ' of';
742
+ if (intersection_area !== undefined) {
743
+ this._textStr += ` intersection_area ${intersection_area}`;
744
+ }
714
745
  return new FluentFilters(this);
715
746
  }
716
747
  /**
717
748
  * Filters for an element left of another element.
718
749
  *
719
- * Takes an optional parameter `index` to select the `nth` element (starting with 0)
750
+ * Takes an optional parameter `index` to select the nth element (defaults to `0`).
751
+ *
752
+ * Takes an optional parameter `intersection_area` to specify which elements left of the other element are filtered for based on their vertical position (y-coordinates of bounding box):
753
+ * - `"element_center_line"` - considered left of the other element if element's bounding box intersects with a horizontal line passing through the center of the other element
754
+ * - `"element_edge_area"` - considered left of the other element if element's bounding box intersects with an area between the top and the bottom edge of the other element
755
+ * - `"display_edge_area"` - considered left of the other element no matter where it is placed vertically on the screen (y-axis)
720
756
  *
721
757
  * **Examples:**
722
758
  * ```typescript
@@ -734,21 +770,32 @@ export class FluentFiltersOrRelations extends FluentFilters {
734
770
  * ```
735
771
  * ![](https://docs.askui.com/img/gif/leftOf.gif)
736
772
  *
773
+ * @param {number} [index=0] - Index of element to filter for going into the direction specified. Defaults to `0` which is the first element (zero-indexed) found in that direction.
774
+ * @param {INTERSECTION_AREA} [intersection_area="element_edge_area"] - Intersecting with either `"element_center_line"`, `"element_edge_area"` or `"display_edge_area"`. Defaults to `"element_edge_area"`.
775
+ *
737
776
  * @return {FluentFilters}
738
777
  */
739
- leftOf(optionalIndex = 0) {
778
+ leftOf(index = 0, intersection_area = 'element_edge_area') {
740
779
  this._textStr = '';
741
- if (optionalIndex !== undefined) {
742
- this._textStr += `index ${optionalIndex}`;
780
+ if (index !== undefined) {
781
+ this._textStr += `index ${index}`;
743
782
  }
744
783
  this._textStr += ' left';
745
784
  this._textStr += ' of';
785
+ if (intersection_area !== undefined) {
786
+ this._textStr += ` intersection_area ${intersection_area}`;
787
+ }
746
788
  return new FluentFilters(this);
747
789
  }
748
790
  /**
749
791
  * Filters for an element below another element.
750
792
  *
751
- * Takes an optional parameter `index` to select the `nth` element (starting with 0)
793
+ * Takes an optional parameter `index` to select the nth element (defaults to `0`).
794
+ *
795
+ * Takes an optional parameter `intersection_area` to specify which elements below of the other element are filtered for based on their horizontal position (y-coordinates of bounding box):
796
+ * - `"element_center_line"` - considered below of the other element if element's bounding box intersects with a vertical line passing through the center of the other element
797
+ * - `"element_edge_area"` - considered below of the other element if element's bounding box intersects with an area between the left and the right edge of the other element
798
+ * - `"display_edge_area"` - considered below of the other element no matter where it is placed horizontally on the screen (y-axis)
752
799
  *
753
800
  * **Examples:**
754
801
  * ```typescript
@@ -772,20 +819,31 @@ export class FluentFiltersOrRelations extends FluentFilters {
772
819
  * ```
773
820
  * ![](https://docs.askui.com/img/gif/below.gif)
774
821
  *
822
+ * @param {number} [index=0] - Index of element to filter for going into the direction specified. Defaults to `0` which is the first element (zero-indexed) found in that direction.
823
+ * @param {INTERSECTION_AREA} [intersection_area="element_edge_area"] - Intersecting with either `"element_center_line"`, `"element_edge_area"` or `"display_edge_area"`. Defaults to `"element_edge_area"`.
824
+ *
775
825
  * @return {FluentFilters}
776
826
  */
777
- below(optionalIndex = 0) {
827
+ below(index = 0, intersection_area = 'element_edge_area') {
778
828
  this._textStr = '';
779
- if (optionalIndex !== undefined) {
780
- this._textStr += `index ${optionalIndex}`;
829
+ if (index !== undefined) {
830
+ this._textStr += `index ${index}`;
781
831
  }
782
832
  this._textStr += ' below';
833
+ if (intersection_area !== undefined) {
834
+ this._textStr += ` intersection_area ${intersection_area}`;
835
+ }
783
836
  return new FluentFilters(this);
784
837
  }
785
838
  /**
786
839
  * Filters for an element above another element.
787
840
  *
788
- * Takes an optional parameter `index` to select the `nth` element (starting with 0)
841
+ * Takes an optional parameter `index` to select the nth element (defaults to `0`).
842
+ *
843
+ * Takes an optional parameter `intersection_area` to specify which elements above of the other element are filtered for based on their horizontal position (y-coordinates of bounding box):
844
+ * - `"element_center_line"` - considered above of the other element if element's bounding box intersects with a vertical line passing through the center of the other element
845
+ * - `"element_edge_area"` - considered above of the other element if element's bounding box intersects with an area between the left and the right edge of the other element
846
+ * - `"display_edge_area"` - considered above of the other element no matter where it is placed horizontally on the screen (y-axis)
789
847
  *
790
848
  * **Examples:**
791
849
  * ```typescript
@@ -809,14 +867,20 @@ export class FluentFiltersOrRelations extends FluentFilters {
809
867
  * ```
810
868
  * ![](https://docs.askui.com/img/gif/above.gif)
811
869
  *
870
+ * @param {number} [index=0] - Index of element to filter for going into the direction specified. Defaults to `0` which is the first element (zero-indexed) found in that direction.
871
+ * @param {INTERSECTION_AREA} [intersection_area="element_edge_area"] - Intersecting with either `"element_center_line"`, `"element_edge_area"` or `"display_edge_area"`. Defaults to `"element_edge_area"`.
872
+ *
812
873
  * @return {FluentFilters}
813
874
  */
814
- above(optionalIndex = 0) {
875
+ above(index = 0, intersection_area = 'element_edge_area') {
815
876
  this._textStr = '';
816
- if (optionalIndex !== undefined) {
817
- this._textStr += `index ${optionalIndex}`;
877
+ if (index !== undefined) {
878
+ this._textStr += `index ${index}`;
818
879
  }
819
880
  this._textStr += ' above';
881
+ if (intersection_area !== undefined) {
882
+ this._textStr += ` intersection_area ${intersection_area}`;
883
+ }
820
884
  return new FluentFilters(this);
821
885
  }
822
886
  /**
@@ -1021,6 +1085,7 @@ export class FluentFiltersCondition extends FluentBase {
1021
1085
  return new FluentFiltersOrRelationsCondition(this);
1022
1086
  }
1023
1087
  /**
1088
+ * Filters for a UI element 'table'.
1024
1089
  *
1025
1090
  * @return {FluentFiltersOrRelationsCondition}
1026
1091
  */
@@ -1049,6 +1114,8 @@ export class FluentFiltersCondition extends FluentBase {
1049
1114
  * await aui.click().text().withTextRegex('\b[Ss]\w+').exec();
1050
1115
  * ```
1051
1116
  *
1117
+ * @param {string} [text] - A text to be matched.
1118
+ *
1052
1119
  * @return {FluentFiltersOrRelationsCondition}
1053
1120
  */
1054
1121
  text(text) {
@@ -1081,9 +1148,9 @@ export class FluentFiltersCondition extends FluentBase {
1081
1148
  return new FluentFiltersOrRelationsCondition(this);
1082
1149
  }
1083
1150
  /**
1084
- * Filters for a 'custom element', that is a UI element which is defined by providing an image and other parameters such as degree of rotation. It allows filtering for a UI element based on an image instead of using text or element descriptions like `button().withText('Submit')` in `await aui.click().button().withText('Submit').exec()`.
1151
+ * Filters for a 'custom element', that is a UI element that is defined by providing an image and other parameters such as degree of rotation. It allows filtering for a UI element based on an image instead of using text or element descriptions like `button().withText('Submit')` in `await aui.click().button().withText('Submit').exec()`.
1085
1152
  *
1086
- * See the tutorial - [Custom Element](https://docs.askui.com/docs/general/Tutorials/custom-element) for more detail.
1153
+ * See the tutorial - [Custom Element](https://docs.askui.com/docs/general/Element%20Selection/custom-elements) for more details.
1087
1154
  *
1088
1155
  * **Example**
1089
1156
  * ```typescript
@@ -1114,7 +1181,7 @@ export class FluentFiltersCondition extends FluentBase {
1114
1181
  * - **rotationDegreePerStep** (*`number`, optional*):
1115
1182
  * - Step size in rotation degree. Rotates the custom image by this step size until 360° is exceeded. The range is from `0` to `360`. Defaults to `0`.
1116
1183
  * - **imageCompareFormat** (*`'RGB' | 'grayscale' | 'edges'`, optional*):
1117
- * - The color compare style. 'edges' compares only edges, 'greyscale' compares the brightness of each pixel whereas 'RGB' compares all three colors (red, green, blue). Defaults to 'grayscale'.
1184
+ * - The color compare style. `'edges'` compares only edges, `'greyscale'` compares the brightness of each pixel whereas `'RGB'` compares all three colors (red, green, blue). Defaults to `'grayscale'`.
1118
1185
  *
1119
1186
  *
1120
1187
  * @param {CustomElementJson} customElement - The custom element to filter for.
@@ -1129,7 +1196,13 @@ export class FluentFiltersCondition extends FluentBase {
1129
1196
  return new FluentFiltersOrRelationsCondition(this);
1130
1197
  }
1131
1198
  /**
1132
- * Detects an AI Element created with the workflow creator.
1199
+ * Detects an AI Element created with the [snipping workflow](https://docs.askui.com/docs/general/Components/aielement#snipping-workflow).
1200
+ *
1201
+ * **Examples:**
1202
+ *
1203
+ * ```typescript
1204
+ * await aui.click().aiElement('askui-logo').exec();
1205
+ * ```
1133
1206
  *
1134
1207
  * @param {string} aiElementName - Name of the AI Element.
1135
1208
  *
@@ -1217,13 +1290,13 @@ export class FluentFiltersCondition extends FluentBase {
1217
1290
  * 'other' === withText('text') => false
1218
1291
  *
1219
1292
  * // optional parameter: similarity_score
1220
- * '978-0-201-00650-6' == withText('978-0-201-00') => true with 82.76 similarity
1221
- * '978-0-201-00650-6' == withText('978-0-201-00', 90) => false with 82.76 < 90 similarity
1222
- * '978-0-201-00650-6' == withText('978-0-201-00', 90) => true with 93.75 < 90 similarity
1293
+ * '978-0-201-00650-6' == withText("978-0-201-00", 90) => false with 82.76 < 90 similarity
1294
+ * '978-0-201-00650-6' == withText("978-0-201-00650", 90) => true with 93.75 > 90 similarity
1223
1295
  * ```
1224
1296
  * ![](https://docs.askui.com/img/gif/withText.gif)
1225
1297
  *
1226
1298
  * @param {string} text - A text to be matched.
1299
+ * @param {number} [similarityScore=70] - Similarity score minimum value, it should be between `0` and `100`.
1227
1300
  *
1228
1301
  * @return {FluentFiltersOrRelationsCondition}
1229
1302
  */
@@ -1327,9 +1400,13 @@ export class FluentFiltersCondition extends FluentBase {
1327
1400
  * The text description inside the `matching()` should describe the element visually.
1328
1401
  * It understands color, some famous company/product names, general descriptions.
1329
1402
  *
1330
- * It sometimes requires a bit of playing around to find a matching description:
1331
- * E.g. `puzzle piece` can fail while `an icon showing a puzzle piece` might work.
1332
- * Generally the more detail the better.
1403
+ * **Important: _Matching only returns the best matching element when you use it with `get()`_**
1404
+ *
1405
+ * A bit of playing around to find a matching description is sometimes needed:
1406
+ * E.g., `puzzle piece` can fail while `an icon showing a puzzle piece` might work.
1407
+ * Generally, the more detail the better.
1408
+ *
1409
+ * We also recommend to not restrict the type of element by using the general selector `element()` as shown in the examples below.
1333
1410
  *
1334
1411
  * **Examples:**
1335
1412
  * ```typescript
@@ -1501,7 +1578,12 @@ export class FluentFiltersOrRelationsCondition extends FluentFiltersCondition {
1501
1578
  /**
1502
1579
  * Filters for an element right of another element.
1503
1580
  *
1504
- * Takes an optional parameter `index` to select the `nth` element (starting with 0)
1581
+ * Takes an optional parameter `index` to select the nth element (defaults to `0`).
1582
+ *
1583
+ * Takes an optional parameter `intersection_area` to specify which elements right of the other element are filtered for based on their vertical position (y-coordinates of bounding box):
1584
+ * - `"element_center_line"` - considered right of the other element if element's bounding box intersects with a horizontal line passing through the center of the other element
1585
+ * - `"element_edge_area"` - considered right of the other element if element's bounding box intersects with an area between the top and the bottom edge of the other element
1586
+ * - `"display_edge_area"` - considered right of the other element no matter where it is placed vertically on the screen (y-axis)
1505
1587
  *
1506
1588
  * **Examples:**
1507
1589
  * ```typescript
@@ -1519,21 +1601,32 @@ export class FluentFiltersOrRelationsCondition extends FluentFiltersCondition {
1519
1601
  * ```
1520
1602
  * ![](https://docs.askui.com/img/gif/rightOf.gif)
1521
1603
  *
1604
+ * @param {number} [index=0] - Index of element to filter for going into the direction specified. Defaults to `0` which is the first element (zero-indexed) found in that direction.
1605
+ * @param {INTERSECTION_AREA} [intersection_area="element_edge_area"] - Intersecting with either `"element_center_line"`, `"element_edge_area"` or `"display_edge_area"`. Defaults to `"element_edge_area"`.
1606
+ *
1522
1607
  * @return {FluentFiltersCondition}
1523
1608
  */
1524
- rightOf(optionalIndex = 0) {
1609
+ rightOf(index = 0, intersection_area = 'element_edge_area') {
1525
1610
  this._textStr = '';
1526
- if (optionalIndex !== undefined) {
1527
- this._textStr += `index ${optionalIndex}`;
1611
+ if (index !== undefined) {
1612
+ this._textStr += `index ${index}`;
1528
1613
  }
1529
1614
  this._textStr += ' right';
1530
1615
  this._textStr += ' of';
1616
+ if (intersection_area !== undefined) {
1617
+ this._textStr += ` intersection_area ${intersection_area}`;
1618
+ }
1531
1619
  return new FluentFiltersCondition(this);
1532
1620
  }
1533
1621
  /**
1534
1622
  * Filters for an element left of another element.
1535
1623
  *
1536
- * Takes an optional parameter `index` to select the `nth` element (starting with 0)
1624
+ * Takes an optional parameter `index` to select the nth element (defaults to `0`).
1625
+ *
1626
+ * Takes an optional parameter `intersection_area` to specify which elements left of the other element are filtered for based on their vertical position (y-coordinates of bounding box):
1627
+ * - `"element_center_line"` - considered left of the other element if element's bounding box intersects with a horizontal line passing through the center of the other element
1628
+ * - `"element_edge_area"` - considered left of the other element if element's bounding box intersects with an area between the top and the bottom edge of the other element
1629
+ * - `"display_edge_area"` - considered left of the other element no matter where it is placed vertically on the screen (y-axis)
1537
1630
  *
1538
1631
  * **Examples:**
1539
1632
  * ```typescript
@@ -1551,21 +1644,32 @@ export class FluentFiltersOrRelationsCondition extends FluentFiltersCondition {
1551
1644
  * ```
1552
1645
  * ![](https://docs.askui.com/img/gif/leftOf.gif)
1553
1646
  *
1647
+ * @param {number} [index=0] - Index of element to filter for going into the direction specified. Defaults to `0` which is the first element (zero-indexed) found in that direction.
1648
+ * @param {INTERSECTION_AREA} [intersection_area="element_edge_area"] - Intersecting with either `"element_center_line"`, `"element_edge_area"` or `"display_edge_area"`. Defaults to `"element_edge_area"`.
1649
+ *
1554
1650
  * @return {FluentFiltersCondition}
1555
1651
  */
1556
- leftOf(optionalIndex = 0) {
1652
+ leftOf(index = 0, intersection_area = 'element_edge_area') {
1557
1653
  this._textStr = '';
1558
- if (optionalIndex !== undefined) {
1559
- this._textStr += `index ${optionalIndex}`;
1654
+ if (index !== undefined) {
1655
+ this._textStr += `index ${index}`;
1560
1656
  }
1561
1657
  this._textStr += ' left';
1562
1658
  this._textStr += ' of';
1659
+ if (intersection_area !== undefined) {
1660
+ this._textStr += ` intersection_area ${intersection_area}`;
1661
+ }
1563
1662
  return new FluentFiltersCondition(this);
1564
1663
  }
1565
1664
  /**
1566
1665
  * Filters for an element below another element.
1567
1666
  *
1568
- * Takes an optional parameter `index` to select the `nth` element (starting with 0)
1667
+ * Takes an optional parameter `index` to select the nth element (defaults to `0`).
1668
+ *
1669
+ * Takes an optional parameter `intersection_area` to specify which elements below of the other element are filtered for based on their horizontal position (y-coordinates of bounding box):
1670
+ * - `"element_center_line"` - considered below of the other element if element's bounding box intersects with a vertical line passing through the center of the other element
1671
+ * - `"element_edge_area"` - considered below of the other element if element's bounding box intersects with an area between the left and the right edge of the other element
1672
+ * - `"display_edge_area"` - considered below of the other element no matter where it is placed horizontally on the screen (y-axis)
1569
1673
  *
1570
1674
  * **Examples:**
1571
1675
  * ```typescript
@@ -1589,20 +1693,31 @@ export class FluentFiltersOrRelationsCondition extends FluentFiltersCondition {
1589
1693
  * ```
1590
1694
  * ![](https://docs.askui.com/img/gif/below.gif)
1591
1695
  *
1696
+ * @param {number} [index=0] - Index of element to filter for going into the direction specified. Defaults to `0` which is the first element (zero-indexed) found in that direction.
1697
+ * @param {INTERSECTION_AREA} [intersection_area="element_edge_area"] - Intersecting with either `"element_center_line"`, `"element_edge_area"` or `"display_edge_area"`. Defaults to `"element_edge_area"`.
1698
+ *
1592
1699
  * @return {FluentFiltersCondition}
1593
1700
  */
1594
- below(optionalIndex = 0) {
1701
+ below(index = 0, intersection_area = 'element_edge_area') {
1595
1702
  this._textStr = '';
1596
- if (optionalIndex !== undefined) {
1597
- this._textStr += `index ${optionalIndex}`;
1703
+ if (index !== undefined) {
1704
+ this._textStr += `index ${index}`;
1598
1705
  }
1599
1706
  this._textStr += ' below';
1707
+ if (intersection_area !== undefined) {
1708
+ this._textStr += ` intersection_area ${intersection_area}`;
1709
+ }
1600
1710
  return new FluentFiltersCondition(this);
1601
1711
  }
1602
1712
  /**
1603
1713
  * Filters for an element above another element.
1604
1714
  *
1605
- * Takes an optional parameter `index` to select the `nth` element (starting with 0)
1715
+ * Takes an optional parameter `index` to select the nth element (defaults to `0`).
1716
+ *
1717
+ * Takes an optional parameter `intersection_area` to specify which elements above of the other element are filtered for based on their horizontal position (y-coordinates of bounding box):
1718
+ * - `"element_center_line"` - considered above of the other element if element's bounding box intersects with a vertical line passing through the center of the other element
1719
+ * - `"element_edge_area"` - considered above of the other element if element's bounding box intersects with an area between the left and the right edge of the other element
1720
+ * - `"display_edge_area"` - considered above of the other element no matter where it is placed horizontally on the screen (y-axis)
1606
1721
  *
1607
1722
  * **Examples:**
1608
1723
  * ```typescript
@@ -1626,14 +1741,20 @@ export class FluentFiltersOrRelationsCondition extends FluentFiltersCondition {
1626
1741
  * ```
1627
1742
  * ![](https://docs.askui.com/img/gif/above.gif)
1628
1743
  *
1744
+ * @param {number} [index=0] - Index of element to filter for going into the direction specified. Defaults to `0` which is the first element (zero-indexed) found in that direction.
1745
+ * @param {INTERSECTION_AREA} [intersection_area="element_edge_area"] - Intersecting with either `"element_center_line"`, `"element_edge_area"` or `"display_edge_area"`. Defaults to `"element_edge_area"`.
1746
+ *
1629
1747
  * @return {FluentFiltersCondition}
1630
1748
  */
1631
- above(optionalIndex = 0) {
1749
+ above(index = 0, intersection_area = 'element_edge_area') {
1632
1750
  this._textStr = '';
1633
- if (optionalIndex !== undefined) {
1634
- this._textStr += `index ${optionalIndex}`;
1751
+ if (index !== undefined) {
1752
+ this._textStr += `index ${index}`;
1635
1753
  }
1636
1754
  this._textStr += ' above';
1755
+ if (intersection_area !== undefined) {
1756
+ this._textStr += ` intersection_area ${intersection_area}`;
1757
+ }
1637
1758
  return new FluentFiltersCondition(this);
1638
1759
  }
1639
1760
  /**
@@ -2038,7 +2159,7 @@ export class FluentCommand extends FluentBase {
2038
2159
  return new Exec(this);
2039
2160
  }
2040
2161
  /**
2041
- * Executes a shell command on the device your UiController is connected to.
2162
+ * Executes a shell command on the device your AskUI Controller is connected to.
2042
2163
  *
2043
2164
  * **Example:**
2044
2165
  * ```typescript
@@ -2517,6 +2638,7 @@ export class FluentFiltersGetter extends FluentBase {
2517
2638
  return new FluentFiltersOrRelationsGetter(this);
2518
2639
  }
2519
2640
  /**
2641
+ * Filters for a UI element 'table'.
2520
2642
  *
2521
2643
  * @return {FluentFiltersOrRelationsGetter}
2522
2644
  */
@@ -2545,6 +2667,8 @@ export class FluentFiltersGetter extends FluentBase {
2545
2667
  * await aui.click().text().withTextRegex('\b[Ss]\w+').exec();
2546
2668
  * ```
2547
2669
  *
2670
+ * @param {string} [text] - A text to be matched.
2671
+ *
2548
2672
  * @return {FluentFiltersOrRelationsGetter}
2549
2673
  */
2550
2674
  text(text) {
@@ -2577,9 +2701,9 @@ export class FluentFiltersGetter extends FluentBase {
2577
2701
  return new FluentFiltersOrRelationsGetter(this);
2578
2702
  }
2579
2703
  /**
2580
- * Filters for a 'custom element', that is a UI element which is defined by providing an image and other parameters such as degree of rotation. It allows filtering for a UI element based on an image instead of using text or element descriptions like `button().withText('Submit')` in `await aui.click().button().withText('Submit').exec()`.
2704
+ * Filters for a 'custom element', that is a UI element that is defined by providing an image and other parameters such as degree of rotation. It allows filtering for a UI element based on an image instead of using text or element descriptions like `button().withText('Submit')` in `await aui.click().button().withText('Submit').exec()`.
2581
2705
  *
2582
- * See the tutorial - [Custom Element](https://docs.askui.com/docs/general/Tutorials/custom-element) for more detail.
2706
+ * See the tutorial - [Custom Element](https://docs.askui.com/docs/general/Element%20Selection/custom-elements) for more details.
2583
2707
  *
2584
2708
  * **Example**
2585
2709
  * ```typescript
@@ -2610,7 +2734,7 @@ export class FluentFiltersGetter extends FluentBase {
2610
2734
  * - **rotationDegreePerStep** (*`number`, optional*):
2611
2735
  * - Step size in rotation degree. Rotates the custom image by this step size until 360° is exceeded. The range is from `0` to `360`. Defaults to `0`.
2612
2736
  * - **imageCompareFormat** (*`'RGB' | 'grayscale' | 'edges'`, optional*):
2613
- * - The color compare style. 'edges' compares only edges, 'greyscale' compares the brightness of each pixel whereas 'RGB' compares all three colors (red, green, blue). Defaults to 'grayscale'.
2737
+ * - The color compare style. `'edges'` compares only edges, `'greyscale'` compares the brightness of each pixel whereas `'RGB'` compares all three colors (red, green, blue). Defaults to `'grayscale'`.
2614
2738
  *
2615
2739
  *
2616
2740
  * @param {CustomElementJson} customElement - The custom element to filter for.
@@ -2625,7 +2749,13 @@ export class FluentFiltersGetter extends FluentBase {
2625
2749
  return new FluentFiltersOrRelationsGetter(this);
2626
2750
  }
2627
2751
  /**
2628
- * Detects an AI Element created with the workflow creator.
2752
+ * Detects an AI Element created with the [snipping workflow](https://docs.askui.com/docs/general/Components/aielement#snipping-workflow).
2753
+ *
2754
+ * **Examples:**
2755
+ *
2756
+ * ```typescript
2757
+ * await aui.click().aiElement('askui-logo').exec();
2758
+ * ```
2629
2759
  *
2630
2760
  * @param {string} aiElementName - Name of the AI Element.
2631
2761
  *
@@ -2713,13 +2843,13 @@ export class FluentFiltersGetter extends FluentBase {
2713
2843
  * 'other' === withText('text') => false
2714
2844
  *
2715
2845
  * // optional parameter: similarity_score
2716
- * '978-0-201-00650-6' == withText('978-0-201-00') => true with 82.76 similarity
2717
- * '978-0-201-00650-6' == withText('978-0-201-00', 90) => false with 82.76 < 90 similarity
2718
- * '978-0-201-00650-6' == withText('978-0-201-00', 90) => true with 93.75 < 90 similarity
2846
+ * '978-0-201-00650-6' == withText("978-0-201-00", 90) => false with 82.76 < 90 similarity
2847
+ * '978-0-201-00650-6' == withText("978-0-201-00650", 90) => true with 93.75 > 90 similarity
2719
2848
  * ```
2720
2849
  * ![](https://docs.askui.com/img/gif/withText.gif)
2721
2850
  *
2722
2851
  * @param {string} text - A text to be matched.
2852
+ * @param {number} [similarityScore=70] - Similarity score minimum value, it should be between `0` and `100`.
2723
2853
  *
2724
2854
  * @return {FluentFiltersOrRelationsGetter}
2725
2855
  */
@@ -2823,9 +2953,13 @@ export class FluentFiltersGetter extends FluentBase {
2823
2953
  * The text description inside the `matching()` should describe the element visually.
2824
2954
  * It understands color, some famous company/product names, general descriptions.
2825
2955
  *
2826
- * It sometimes requires a bit of playing around to find a matching description:
2827
- * E.g. `puzzle piece` can fail while `an icon showing a puzzle piece` might work.
2828
- * Generally the more detail the better.
2956
+ * **Important: _Matching only returns the best matching element when you use it with `get()`_**
2957
+ *
2958
+ * A bit of playing around to find a matching description is sometimes needed:
2959
+ * E.g., `puzzle piece` can fail while `an icon showing a puzzle piece` might work.
2960
+ * Generally, the more detail the better.
2961
+ *
2962
+ * We also recommend to not restrict the type of element by using the general selector `element()` as shown in the examples below.
2829
2963
  *
2830
2964
  * **Examples:**
2831
2965
  * ```typescript
@@ -2997,7 +3131,12 @@ export class FluentFiltersOrRelationsGetter extends FluentFiltersGetter {
2997
3131
  /**
2998
3132
  * Filters for an element right of another element.
2999
3133
  *
3000
- * Takes an optional parameter `index` to select the `nth` element (starting with 0)
3134
+ * Takes an optional parameter `index` to select the nth element (defaults to `0`).
3135
+ *
3136
+ * Takes an optional parameter `intersection_area` to specify which elements right of the other element are filtered for based on their vertical position (y-coordinates of bounding box):
3137
+ * - `"element_center_line"` - considered right of the other element if element's bounding box intersects with a horizontal line passing through the center of the other element
3138
+ * - `"element_edge_area"` - considered right of the other element if element's bounding box intersects with an area between the top and the bottom edge of the other element
3139
+ * - `"display_edge_area"` - considered right of the other element no matter where it is placed vertically on the screen (y-axis)
3001
3140
  *
3002
3141
  * **Examples:**
3003
3142
  * ```typescript
@@ -3015,21 +3154,32 @@ export class FluentFiltersOrRelationsGetter extends FluentFiltersGetter {
3015
3154
  * ```
3016
3155
  * ![](https://docs.askui.com/img/gif/rightOf.gif)
3017
3156
  *
3157
+ * @param {number} [index=0] - Index of element to filter for going into the direction specified. Defaults to `0` which is the first element (zero-indexed) found in that direction.
3158
+ * @param {INTERSECTION_AREA} [intersection_area="element_edge_area"] - Intersecting with either `"element_center_line"`, `"element_edge_area"` or `"display_edge_area"`. Defaults to `"element_edge_area"`.
3159
+ *
3018
3160
  * @return {FluentFiltersGetter}
3019
3161
  */
3020
- rightOf(optionalIndex = 0) {
3162
+ rightOf(index = 0, intersection_area = 'element_edge_area') {
3021
3163
  this._textStr = '';
3022
- if (optionalIndex !== undefined) {
3023
- this._textStr += `index ${optionalIndex}`;
3164
+ if (index !== undefined) {
3165
+ this._textStr += `index ${index}`;
3024
3166
  }
3025
3167
  this._textStr += ' right';
3026
3168
  this._textStr += ' of';
3169
+ if (intersection_area !== undefined) {
3170
+ this._textStr += ` intersection_area ${intersection_area}`;
3171
+ }
3027
3172
  return new FluentFiltersGetter(this);
3028
3173
  }
3029
3174
  /**
3030
3175
  * Filters for an element left of another element.
3031
3176
  *
3032
- * Takes an optional parameter `index` to select the `nth` element (starting with 0)
3177
+ * Takes an optional parameter `index` to select the nth element (defaults to `0`).
3178
+ *
3179
+ * Takes an optional parameter `intersection_area` to specify which elements left of the other element are filtered for based on their vertical position (y-coordinates of bounding box):
3180
+ * - `"element_center_line"` - considered left of the other element if element's bounding box intersects with a horizontal line passing through the center of the other element
3181
+ * - `"element_edge_area"` - considered left of the other element if element's bounding box intersects with an area between the top and the bottom edge of the other element
3182
+ * - `"display_edge_area"` - considered left of the other element no matter where it is placed vertically on the screen (y-axis)
3033
3183
  *
3034
3184
  * **Examples:**
3035
3185
  * ```typescript
@@ -3047,21 +3197,32 @@ export class FluentFiltersOrRelationsGetter extends FluentFiltersGetter {
3047
3197
  * ```
3048
3198
  * ![](https://docs.askui.com/img/gif/leftOf.gif)
3049
3199
  *
3200
+ * @param {number} [index=0] - Index of element to filter for going into the direction specified. Defaults to `0` which is the first element (zero-indexed) found in that direction.
3201
+ * @param {INTERSECTION_AREA} [intersection_area="element_edge_area"] - Intersecting with either `"element_center_line"`, `"element_edge_area"` or `"display_edge_area"`. Defaults to `"element_edge_area"`.
3202
+ *
3050
3203
  * @return {FluentFiltersGetter}
3051
3204
  */
3052
- leftOf(optionalIndex = 0) {
3205
+ leftOf(index = 0, intersection_area = 'element_edge_area') {
3053
3206
  this._textStr = '';
3054
- if (optionalIndex !== undefined) {
3055
- this._textStr += `index ${optionalIndex}`;
3207
+ if (index !== undefined) {
3208
+ this._textStr += `index ${index}`;
3056
3209
  }
3057
3210
  this._textStr += ' left';
3058
3211
  this._textStr += ' of';
3212
+ if (intersection_area !== undefined) {
3213
+ this._textStr += ` intersection_area ${intersection_area}`;
3214
+ }
3059
3215
  return new FluentFiltersGetter(this);
3060
3216
  }
3061
3217
  /**
3062
3218
  * Filters for an element below another element.
3063
3219
  *
3064
- * Takes an optional parameter `index` to select the `nth` element (starting with 0)
3220
+ * Takes an optional parameter `index` to select the nth element (defaults to `0`).
3221
+ *
3222
+ * Takes an optional parameter `intersection_area` to specify which elements below of the other element are filtered for based on their horizontal position (y-coordinates of bounding box):
3223
+ * - `"element_center_line"` - considered below of the other element if element's bounding box intersects with a vertical line passing through the center of the other element
3224
+ * - `"element_edge_area"` - considered below of the other element if element's bounding box intersects with an area between the left and the right edge of the other element
3225
+ * - `"display_edge_area"` - considered below of the other element no matter where it is placed horizontally on the screen (y-axis)
3065
3226
  *
3066
3227
  * **Examples:**
3067
3228
  * ```typescript
@@ -3085,20 +3246,31 @@ export class FluentFiltersOrRelationsGetter extends FluentFiltersGetter {
3085
3246
  * ```
3086
3247
  * ![](https://docs.askui.com/img/gif/below.gif)
3087
3248
  *
3249
+ * @param {number} [index=0] - Index of element to filter for going into the direction specified. Defaults to `0` which is the first element (zero-indexed) found in that direction.
3250
+ * @param {INTERSECTION_AREA} [intersection_area="element_edge_area"] - Intersecting with either `"element_center_line"`, `"element_edge_area"` or `"display_edge_area"`. Defaults to `"element_edge_area"`.
3251
+ *
3088
3252
  * @return {FluentFiltersGetter}
3089
3253
  */
3090
- below(optionalIndex = 0) {
3254
+ below(index = 0, intersection_area = 'element_edge_area') {
3091
3255
  this._textStr = '';
3092
- if (optionalIndex !== undefined) {
3093
- this._textStr += `index ${optionalIndex}`;
3256
+ if (index !== undefined) {
3257
+ this._textStr += `index ${index}`;
3094
3258
  }
3095
3259
  this._textStr += ' below';
3260
+ if (intersection_area !== undefined) {
3261
+ this._textStr += ` intersection_area ${intersection_area}`;
3262
+ }
3096
3263
  return new FluentFiltersGetter(this);
3097
3264
  }
3098
3265
  /**
3099
3266
  * Filters for an element above another element.
3100
3267
  *
3101
- * Takes an optional parameter `index` to select the `nth` element (starting with 0)
3268
+ * Takes an optional parameter `index` to select the nth element (defaults to `0`).
3269
+ *
3270
+ * Takes an optional parameter `intersection_area` to specify which elements above of the other element are filtered for based on their horizontal position (y-coordinates of bounding box):
3271
+ * - `"element_center_line"` - considered above of the other element if element's bounding box intersects with a vertical line passing through the center of the other element
3272
+ * - `"element_edge_area"` - considered above of the other element if element's bounding box intersects with an area between the left and the right edge of the other element
3273
+ * - `"display_edge_area"` - considered above of the other element no matter where it is placed horizontally on the screen (y-axis)
3102
3274
  *
3103
3275
  * **Examples:**
3104
3276
  * ```typescript
@@ -3122,14 +3294,20 @@ export class FluentFiltersOrRelationsGetter extends FluentFiltersGetter {
3122
3294
  * ```
3123
3295
  * ![](https://docs.askui.com/img/gif/above.gif)
3124
3296
  *
3297
+ * @param {number} [index=0] - Index of element to filter for going into the direction specified. Defaults to `0` which is the first element (zero-indexed) found in that direction.
3298
+ * @param {INTERSECTION_AREA} [intersection_area="element_edge_area"] - Intersecting with either `"element_center_line"`, `"element_edge_area"` or `"display_edge_area"`. Defaults to `"element_edge_area"`.
3299
+ *
3125
3300
  * @return {FluentFiltersGetter}
3126
3301
  */
3127
- above(optionalIndex = 0) {
3302
+ above(index = 0, intersection_area = 'element_edge_area') {
3128
3303
  this._textStr = '';
3129
- if (optionalIndex !== undefined) {
3130
- this._textStr += `index ${optionalIndex}`;
3304
+ if (index !== undefined) {
3305
+ this._textStr += `index ${index}`;
3131
3306
  }
3132
3307
  this._textStr += ' above';
3308
+ if (intersection_area !== undefined) {
3309
+ this._textStr += ` intersection_area ${intersection_area}`;
3310
+ }
3133
3311
  return new FluentFiltersGetter(this);
3134
3312
  }
3135
3313
  /**
@@ -3191,10 +3369,10 @@ export class FluentFiltersOrRelationsGetter extends FluentFiltersGetter {
3191
3369
  return new FluentFiltersGetter(this);
3192
3370
  }
3193
3371
  /**
3194
- * Returns a list of detected elements
3195
- *
3196
- * @return {DetectedElement[]}
3197
- */
3372
+ * Returns a list of detected elements
3373
+ *
3374
+ * @return {DetectedElement[]}
3375
+ */
3198
3376
  exec() {
3199
3377
  return this.getterStringBuilder();
3200
3378
  }
@@ -3210,6 +3388,9 @@ export class Getter extends FluentCommand {
3210
3388
  *
3211
3389
  * **Examples:**
3212
3390
  * ```typescript
3391
+ * // ************************************ //
3392
+ * // Log the DetectedElements completely //
3393
+ * // ************************************ //
3213
3394
  * const text = await aui.get().text('Sign').exec();
3214
3395
  * console.log(text);
3215
3396
  *
@@ -3228,6 +3409,7 @@ export class Getter extends FluentCommand {
3228
3409
  * ]
3229
3410
  * ```
3230
3411
  *
3412
+ * ```typescript
3231
3413
  * // *************************************************** //
3232
3414
  * // Examples on how to work with the returned elements //
3233
3415
  * // *************************************************** //
@@ -3311,6 +3493,7 @@ export class Getter extends FluentCommand {
3311
3493
  * xmax: 1178.8204241071428,
3312
3494
  * ymax: 180.83512834821428
3313
3495
  * },
3496
+ * },
3314
3497
  * DetectedElement {
3315
3498
  * name: 'ICON',
3316
3499
  * text: 'search',
@@ -3320,8 +3503,8 @@ export class Getter extends FluentCommand {
3320
3503
  * xmax: 450.6304241071428,
3321
3504
  * ymax: 950.47812834821428
3322
3505
  * },
3323
- * ... 381 more items
3324
- * }
3506
+ * },
3507
+ * ... 381 more items
3325
3508
  * ]
3326
3509
  * ```
3327
3510
  *