appium-remote-debugger 15.2.9 → 15.2.11

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 (48) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/build/lib/mixins/connect.d.ts +47 -31
  3. package/build/lib/mixins/connect.d.ts.map +1 -1
  4. package/build/lib/mixins/connect.js +105 -86
  5. package/build/lib/mixins/connect.js.map +1 -1
  6. package/build/lib/mixins/cookies.d.ts +17 -13
  7. package/build/lib/mixins/cookies.d.ts.map +1 -1
  8. package/build/lib/mixins/cookies.js +12 -12
  9. package/build/lib/mixins/cookies.js.map +1 -1
  10. package/build/lib/mixins/events.d.ts +32 -31
  11. package/build/lib/mixins/events.d.ts.map +1 -1
  12. package/build/lib/mixins/events.js +21 -24
  13. package/build/lib/mixins/events.js.map +1 -1
  14. package/build/lib/mixins/execute.d.ts +35 -24
  15. package/build/lib/mixins/execute.d.ts.map +1 -1
  16. package/build/lib/mixins/execute.js +34 -26
  17. package/build/lib/mixins/execute.js.map +1 -1
  18. package/build/lib/mixins/message-handlers.d.ts +63 -43
  19. package/build/lib/mixins/message-handlers.d.ts.map +1 -1
  20. package/build/lib/mixins/message-handlers.js +74 -57
  21. package/build/lib/mixins/message-handlers.js.map +1 -1
  22. package/build/lib/mixins/misc.d.ts +34 -24
  23. package/build/lib/mixins/misc.d.ts.map +1 -1
  24. package/build/lib/mixins/misc.js +27 -21
  25. package/build/lib/mixins/misc.js.map +1 -1
  26. package/build/lib/mixins/navigate.d.ts +39 -27
  27. package/build/lib/mixins/navigate.d.ts.map +1 -1
  28. package/build/lib/mixins/navigate.js +31 -31
  29. package/build/lib/mixins/navigate.js.map +1 -1
  30. package/build/lib/mixins/screenshot.d.ts +21 -11
  31. package/build/lib/mixins/screenshot.d.ts.map +1 -1
  32. package/build/lib/mixins/screenshot.js +10 -14
  33. package/build/lib/mixins/screenshot.js.map +1 -1
  34. package/build/tsconfig.tsbuildinfo +1 -1
  35. package/lib/mixins/{connect.js → connect.ts} +153 -113
  36. package/lib/mixins/cookies.ts +61 -0
  37. package/lib/mixins/events.ts +91 -0
  38. package/lib/mixins/{execute.js → execute.ts} +59 -33
  39. package/lib/mixins/message-handlers.ts +272 -0
  40. package/lib/mixins/misc.ts +136 -0
  41. package/lib/mixins/{navigate.js → navigate.ts} +44 -41
  42. package/lib/mixins/screenshot.ts +52 -0
  43. package/package.json +1 -1
  44. package/lib/mixins/cookies.js +0 -53
  45. package/lib/mixins/events.js +0 -81
  46. package/lib/mixins/message-handlers.js +0 -224
  47. package/lib/mixins/misc.js +0 -121
  48. package/lib/mixins/screenshot.js +0 -43
@@ -60,15 +60,15 @@ const PAGE_LOAD_STRATEGY = Object.freeze({
60
60
  NORMAL: 'normal'
61
61
  });
62
62
  /**
63
- * @this {RemoteDebugger}
64
- * @returns {void}
63
+ * Emits a frame detached event when a frame is detached from the page.
64
+ * This is typically called by the RPC client when receiving a Page.frameDetached event.
65
65
  */
66
66
  function frameDetached() {
67
67
  this.emit(events_1.events.EVENT_FRAMES_DETACHED);
68
68
  }
69
69
  /**
70
- * @this {RemoteDebugger}
71
- * @returns {void}
70
+ * Cancels the current page load operation by unregistering from page readiness
71
+ * notifications and canceling any pending page load delay.
72
72
  */
73
73
  function cancelPageLoad() {
74
74
  this.log.debug('Unregistering from page readiness notifications');
@@ -76,12 +76,14 @@ function cancelPageLoad() {
76
76
  (0, property_accessors_1.getPageLoadDelay)(this)?.cancel();
77
77
  }
78
78
  /**
79
- * Return if current readState can be handles as page load completes
80
- * for the given page load strategy.
79
+ * Determines if the current readyState indicates that page loading is completed
80
+ * based on the configured page load strategy.
81
81
  *
82
- * @this {RemoteDebugger}
83
- * @param {string} readyState
84
- * @returns {boolean}
82
+ * @param readyState - The document readyState value ('loading', 'interactive', or 'complete').
83
+ * @returns True if the page load is considered complete for the current strategy:
84
+ * - 'eager': returns true when readyState is not 'loading'
85
+ * - 'none': always returns true
86
+ * - 'normal' (default): returns true only when readyState is 'complete'
85
87
  */
86
88
  function isPageLoadingCompleted(readyState) {
87
89
  const pageLoadStrategy = lodash_1.default.toLower((0, property_accessors_1.getPageLoadStartegy)(this));
@@ -97,9 +99,12 @@ function isPageLoadingCompleted(readyState) {
97
99
  }
98
100
  }
99
101
  /**
100
- * @this {RemoteDebugger}
101
- * @param {timing.Timer?} [startPageLoadTimer]
102
- * @returns {Promise<void>}
102
+ * Waits for the DOM to be ready by periodically checking the page readiness state.
103
+ * Uses exponential backoff for retry intervals and respects the configured page load
104
+ * strategy and timeout settings.
105
+ *
106
+ * @param startPageLoadTimer - Optional timer instance to use for tracking elapsed time.
107
+ * If not provided, a new timer will be created and started.
103
108
  */
104
109
  async function waitForDom(startPageLoadTimer) {
105
110
  const readinessTimeoutMs = this.pageLoadMs;
@@ -108,7 +113,6 @@ async function waitForDom(startPageLoadTimer) {
108
113
  let isPageLoading = true;
109
114
  (0, property_accessors_1.setPageLoading)(this, true);
110
115
  (0, property_accessors_1.setPageLoadDelay)(this, support_1.util.cancellableDelay(readinessTimeoutMs));
111
- /** @type {B<void>} */
112
116
  const pageReadinessPromise = bluebird_1.default.resolve((async () => {
113
117
  let retry = 0;
114
118
  while (isPageLoading) {
@@ -141,7 +145,6 @@ async function waitForDom(startPageLoadTimer) {
141
145
  retry++;
142
146
  }
143
147
  })());
144
- /** @type {B<void>} */
145
148
  const cancellationPromise = bluebird_1.default.resolve((async () => {
146
149
  try {
147
150
  await (0, property_accessors_1.getPageLoadDelay)(this);
@@ -158,9 +161,13 @@ async function waitForDom(startPageLoadTimer) {
158
161
  }
159
162
  }
160
163
  /**
161
- * @this {RemoteDebugger}
162
- * @param {number} [timeoutMs]
163
- * @returns {Promise<boolean>}
164
+ * Checks if the current page is ready by executing a JavaScript command to
165
+ * retrieve the document readyState and evaluating it against the page load strategy.
166
+ *
167
+ * @param timeoutMs - Optional timeout in milliseconds for the readyState check.
168
+ * If not provided, uses the configured page ready timeout.
169
+ * @returns A promise that resolves to true if the page is ready according to
170
+ * the page load strategy, false otherwise or if the check times out.
164
171
  */
165
172
  async function checkPageIsReady(timeoutMs) {
166
173
  const readyCmd = 'document.readyState;';
@@ -185,9 +192,12 @@ async function checkPageIsReady(timeoutMs) {
185
192
  }
186
193
  }
187
194
  /**
188
- * @this {RemoteDebugger}
189
- * @param {string} url
190
- * @returns {Promise<void>}
195
+ * Navigates to a new URL and waits for the page to be ready.
196
+ * Validates the URL format, waits for the page to be available, sends the navigation
197
+ * command, and monitors for the Page.loadEventFired event or timeout.
198
+ *
199
+ * @param url - The URL to navigate to. Must be a valid URL format.
200
+ * @throws TypeError if the provided URL is not a valid URL format.
191
201
  */
192
202
  async function navToUrl(url) {
193
203
  const { appIdKey, pageIdKey } = (0, utils_1.checkParams)({
@@ -203,20 +213,14 @@ async function navToUrl(url) {
203
213
  }
204
214
  this.log.debug(`Navigating to new URL: '${url}'`);
205
215
  (0, property_accessors_1.setNavigatingToPage)(this, true);
206
- await rpcClient.waitForPage(
207
- /** @type {import('../types').AppIdKey} */ (appIdKey),
208
- /** @type {import('../types').PageIdKey} */ (pageIdKey));
216
+ await rpcClient.waitForPage(appIdKey, pageIdKey);
209
217
  const readinessTimeoutMs = this.pageLoadMs;
210
- /** @type {(() => void)|undefined} */
211
218
  let onPageLoaded;
212
- /** @type {NodeJS.Timeout|undefined|null} */
213
219
  let onPageLoadedTimeout;
214
220
  (0, property_accessors_1.setPageLoadDelay)(this, support_1.util.cancellableDelay(readinessTimeoutMs));
215
221
  (0, property_accessors_1.setPageLoading)(this, true);
216
222
  let isPageLoading = true;
217
- // /** @type {Promise<void>|null} */
218
223
  const start = new support_1.timing.Timer().start();
219
- /** @type {B<void>} */
220
224
  const pageReadinessPromise = new bluebird_1.default((resolve) => {
221
225
  onPageLoadedTimeout = setTimeout(() => {
222
226
  if (isPageLoading) {
@@ -245,7 +249,6 @@ async function navToUrl(url) {
245
249
  pageIdKey,
246
250
  });
247
251
  });
248
- /** @type {B<void>} */
249
252
  const cancellationPromise = bluebird_1.default.resolve((async () => {
250
253
  try {
251
254
  await (0, property_accessors_1.getPageLoadDelay)(this);
@@ -269,7 +272,4 @@ async function navToUrl(url) {
269
272
  }
270
273
  }
271
274
  }
272
- /**
273
- * @typedef {import('../remote-debugger').RemoteDebugger} RemoteDebugger
274
- */
275
275
  //# sourceMappingURL=navigate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"navigate.js","sourceRoot":"","sources":["../../../lib/mixins/navigate.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"navigate.js","sourceRoot":"","sources":["../../../lib/mixins/navigate.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,24 @@
1
+ import type { RemoteDebugger } from '../remote-debugger';
2
+ import type { Rect } from '@appium/types';
1
3
  /**
2
- * Capture a rect of the page or by default the viewport
3
- * @this {RemoteDebugger}
4
- * @param {ScreenshotCaptureOptions} [opts={}] if rect is null capture the whole
5
- * coordinate system else capture the rect in the given coordinateSystem
6
- * @returns {Promise<string>} a base64 encoded string of the screenshot
4
+ * Options for capturing a screenshot.
7
5
  */
8
- export function captureScreenshot(this: import("../remote-debugger").RemoteDebugger, opts?: ScreenshotCaptureOptions): Promise<string>;
9
- export type ScreenshotCaptureOptions = {
10
- rect?: import("@appium/types").Rect | null | undefined;
11
- coordinateSystem?: "Viewport" | "Page" | undefined;
12
- };
13
- export type RemoteDebugger = import("../remote-debugger").RemoteDebugger;
6
+ export interface ScreenshotCaptureOptions {
7
+ /** The rectangle to capture. If null, captures the whole viewport. */
8
+ rect?: Rect | null;
9
+ /** The coordinate system to use for the rectangle. */
10
+ coordinateSystem?: 'Viewport' | 'Page';
11
+ }
12
+ /**
13
+ * Captures a screenshot of a rectangular area of the page or the entire viewport.
14
+ * If no rectangle is provided, captures the full viewport by default.
15
+ *
16
+ * @param opts - Screenshot capture options. If not provided, captures the entire viewport.
17
+ * - rect: The rectangle to capture. If null, captures the whole viewport.
18
+ * - coordinateSystem: The coordinate system to use ('Viewport' or 'Page').
19
+ * Defaults to 'Viewport'.
20
+ * @returns A promise that resolves to a base64-encoded string of the screenshot
21
+ * (without the data URL prefix).
22
+ */
23
+ export declare function captureScreenshot(this: RemoteDebugger, opts?: ScreenshotCaptureOptions): Promise<string>;
14
24
  //# sourceMappingURL=screenshot.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"screenshot.d.ts","sourceRoot":"","sources":["../../../lib/mixins/screenshot.js"],"names":[],"mappings":"AAKA;;;;;;GAMG;AACH,4FAJW,wBAAwB,GAEtB,OAAO,CAAC,MAAM,CAAC,CAsB3B;;;;;6BASY,OAAO,oBAAoB,EAAE,cAAc"}
1
+ {"version":3,"file":"screenshot.d.ts","sourceRoot":"","sources":["../../../lib/mixins/screenshot.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAE1C;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,sEAAsE;IACtE,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB,sDAAsD;IACtD,gBAAgB,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC;CACxC;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,cAAc,EACpB,IAAI,GAAE,wBAA6B,GAClC,OAAO,CAAC,MAAM,CAAC,CAoBjB"}
@@ -3,16 +3,20 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.captureScreenshot = captureScreenshot;
4
4
  const property_accessors_1 = require("./property-accessors");
5
5
  /**
6
- * Capture a rect of the page or by default the viewport
7
- * @this {RemoteDebugger}
8
- * @param {ScreenshotCaptureOptions} [opts={}] if rect is null capture the whole
9
- * coordinate system else capture the rect in the given coordinateSystem
10
- * @returns {Promise<string>} a base64 encoded string of the screenshot
6
+ * Captures a screenshot of a rectangular area of the page or the entire viewport.
7
+ * If no rectangle is provided, captures the full viewport by default.
8
+ *
9
+ * @param opts - Screenshot capture options. If not provided, captures the entire viewport.
10
+ * - rect: The rectangle to capture. If null, captures the whole viewport.
11
+ * - coordinateSystem: The coordinate system to use ('Viewport' or 'Page').
12
+ * Defaults to 'Viewport'.
13
+ * @returns A promise that resolves to a base64-encoded string of the screenshot
14
+ * (without the data URL prefix).
11
15
  */
12
16
  async function captureScreenshot(opts = {}) {
13
17
  const { rect = null, coordinateSystem = 'Viewport' } = opts;
14
18
  this.log.debug('Capturing screenshot');
15
- const arect = rect ?? /** @type {import('@appium/types').Rect} */ (await this.executeAtom('execute_script', ['return {x: 0, y: 0, width: window.innerWidth, height: window.innerHeight}', []]));
19
+ const arect = rect ?? await this.executeAtom('execute_script', ['return {x: 0, y: 0, width: window.innerWidth, height: window.innerHeight}', []]);
16
20
  const response = await this.requireRpcClient().send('Page.snapshotRect', {
17
21
  ...arect,
18
22
  appIdKey: (0, property_accessors_1.getAppIdKey)(this),
@@ -24,12 +28,4 @@ async function captureScreenshot(opts = {}) {
24
28
  }
25
29
  return response.dataURL.replace(/^data:image\/png;base64,/, '');
26
30
  }
27
- /**
28
- * @typedef {Object} ScreenshotCaptureOptions
29
- * @property {import('@appium/types').Rect | null} [rect=null]
30
- * @property {"Viewport" | "Page"} [coordinateSystem="Viewport"]
31
- */
32
- /**
33
- * @typedef {import('../remote-debugger').RemoteDebugger} RemoteDebugger
34
- */
35
31
  //# sourceMappingURL=screenshot.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"screenshot.js","sourceRoot":"","sources":["../../../lib/mixins/screenshot.js"],"names":[],"mappings":";;AAYA,8CAoBC;AAhCD,6DAG8B;AAE9B;;;;;;GAMG;AACI,KAAK,UAAU,iBAAiB,CAAC,IAAI,GAAG,EAAE;IAC/C,MAAM,EAAC,IAAI,GAAG,IAAI,EAAE,gBAAgB,GAAG,UAAU,EAAC,GAAG,IAAI,CAAC;IAC1D,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAEvC,MAAM,KAAK,GAAG,IAAI,IAAI,2CAA2C,CAAC,CAAC,MAAM,IAAI,CAAC,WAAW,CACvF,gBAAgB,EAChB,CAAC,2EAA2E,EAAE,EAAE,CAAC,CAClF,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,mBAAmB,EAAE;QACvE,GAAG,KAAK;QACR,QAAQ,EAAE,IAAA,gCAAW,EAAC,IAAI,CAAC;QAC3B,SAAS,EAAE,IAAA,iCAAY,EAAC,IAAI,CAAC;QAC7B,gBAAgB;KACjB,CAAC,CAAC;IAEH,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;IAED,OAAO,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,0BAA0B,EAAE,EAAE,CAAC,CAAC;AAClE,CAAC;AAED;;;;GAIG;AAEH;;GAEG"}
1
+ {"version":3,"file":"screenshot.js","sourceRoot":"","sources":["../../../lib/mixins/screenshot.ts"],"names":[],"mappings":";;AA4BA,8CAuBC;AAnDD,6DAG8B;AAc9B;;;;;;;;;;GAUG;AACI,KAAK,UAAU,iBAAiB,CAErC,OAAiC,EAAE;IAEnC,MAAM,EAAC,IAAI,GAAG,IAAI,EAAE,gBAAgB,GAAG,UAAU,EAAC,GAAG,IAAI,CAAC;IAC1D,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAEvC,MAAM,KAAK,GAAG,IAAI,IAAK,MAAM,IAAI,CAAC,WAAW,CAC3C,gBAAgB,EAChB,CAAC,2EAA2E,EAAE,EAAE,CAAC,CACzE,CAAC;IACX,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,mBAAmB,EAAE;QACvE,GAAG,KAAK;QACR,QAAQ,EAAE,IAAA,gCAAW,EAAC,IAAI,CAAC;QAC3B,SAAS,EAAE,IAAA,iCAAY,EAAC,IAAI,CAAC;QAC7B,gBAAgB;KACjB,CAAC,CAAC;IAEH,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;IAED,OAAO,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,0BAA0B,EAAE,EAAE,CAAC,CAAC;AAClE,CAAC"}