donobu 2.39.0 → 2.41.0

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 (93) hide show
  1. package/dist/assets/generated/version +1 -1
  2. package/dist/esm/assets/generated/version +1 -1
  3. package/dist/esm/lib/DonobuExtendedPage.d.ts +9 -0
  4. package/dist/esm/lib/DonobuExtendedPage.d.ts.map +1 -1
  5. package/dist/esm/lib/SmartSelector.d.ts +68 -0
  6. package/dist/esm/lib/SmartSelector.d.ts.map +1 -0
  7. package/dist/esm/lib/SmartSelector.js +51 -0
  8. package/dist/esm/lib/SmartSelector.js.map +1 -0
  9. package/dist/esm/lib/testExtension.d.ts.map +1 -1
  10. package/dist/esm/lib/testExtension.js +7 -0
  11. package/dist/esm/lib/testExtension.js.map +1 -1
  12. package/dist/esm/managers/CodeGenerator.d.ts +5 -0
  13. package/dist/esm/managers/CodeGenerator.d.ts.map +1 -1
  14. package/dist/esm/managers/CodeGenerator.js +55 -7
  15. package/dist/esm/managers/CodeGenerator.js.map +1 -1
  16. package/dist/esm/managers/DonobuFlow.d.ts +1 -0
  17. package/dist/esm/managers/DonobuFlow.d.ts.map +1 -1
  18. package/dist/esm/managers/DonobuFlow.js +21 -11
  19. package/dist/esm/managers/DonobuFlow.js.map +1 -1
  20. package/dist/esm/models/ElementSelector.d.ts +1 -1
  21. package/dist/esm/models/ElementSelector.d.ts.map +1 -1
  22. package/dist/esm/models/ElementSelector.js +1 -0
  23. package/dist/esm/models/ElementSelector.js.map +1 -1
  24. package/dist/esm/tools/ChooseSelectOptionTool.d.ts +1 -1
  25. package/dist/esm/tools/InputRandomizedEmailAddressTool.d.ts +4 -4
  26. package/dist/esm/tools/InputRandomizedEmailAddressTool.d.ts.map +1 -1
  27. package/dist/esm/tools/InputRandomizedEmailAddressTool.js +1 -0
  28. package/dist/esm/tools/InputRandomizedEmailAddressTool.js.map +1 -1
  29. package/dist/esm/tools/InputTextTool.d.ts +4 -4
  30. package/dist/esm/tools/InputTextTool.d.ts.map +1 -1
  31. package/dist/esm/tools/InputTextTool.js +1 -0
  32. package/dist/esm/tools/InputTextTool.js.map +1 -1
  33. package/dist/esm/tools/PressKeyTool.d.ts +1 -1
  34. package/dist/esm/tools/RememberPageTextTool.d.ts +1 -1
  35. package/dist/esm/tools/RememberPageTextTool.d.ts.map +1 -1
  36. package/dist/esm/tools/RememberPageTextTool.js +1 -1
  37. package/dist/esm/tools/RememberPageTextTool.js.map +1 -1
  38. package/dist/esm/tools/ReplayableInteraction.d.ts +3 -6
  39. package/dist/esm/tools/ReplayableInteraction.d.ts.map +1 -1
  40. package/dist/esm/tools/ReplayableInteraction.js +7 -11
  41. package/dist/esm/tools/ReplayableInteraction.js.map +1 -1
  42. package/dist/esm/tools/ScrollPageTool.d.ts +1 -1
  43. package/dist/esm/tools/SolveMfaChallenge.d.ts +1 -1
  44. package/dist/esm/utils/BrowserUtils.d.ts +53 -0
  45. package/dist/esm/utils/BrowserUtils.d.ts.map +1 -1
  46. package/dist/esm/utils/BrowserUtils.js +333 -4
  47. package/dist/esm/utils/BrowserUtils.js.map +1 -1
  48. package/dist/lib/DonobuExtendedPage.d.ts +9 -0
  49. package/dist/lib/DonobuExtendedPage.d.ts.map +1 -1
  50. package/dist/lib/SmartSelector.d.ts +68 -0
  51. package/dist/lib/SmartSelector.d.ts.map +1 -0
  52. package/dist/lib/SmartSelector.js +51 -0
  53. package/dist/lib/SmartSelector.js.map +1 -0
  54. package/dist/lib/testExtension.d.ts.map +1 -1
  55. package/dist/lib/testExtension.js +7 -0
  56. package/dist/lib/testExtension.js.map +1 -1
  57. package/dist/managers/CodeGenerator.d.ts +5 -0
  58. package/dist/managers/CodeGenerator.d.ts.map +1 -1
  59. package/dist/managers/CodeGenerator.js +55 -7
  60. package/dist/managers/CodeGenerator.js.map +1 -1
  61. package/dist/managers/DonobuFlow.d.ts +1 -0
  62. package/dist/managers/DonobuFlow.d.ts.map +1 -1
  63. package/dist/managers/DonobuFlow.js +21 -11
  64. package/dist/managers/DonobuFlow.js.map +1 -1
  65. package/dist/models/ElementSelector.d.ts +1 -1
  66. package/dist/models/ElementSelector.d.ts.map +1 -1
  67. package/dist/models/ElementSelector.js +1 -0
  68. package/dist/models/ElementSelector.js.map +1 -1
  69. package/dist/tools/ChooseSelectOptionTool.d.ts +1 -1
  70. package/dist/tools/InputRandomizedEmailAddressTool.d.ts +4 -4
  71. package/dist/tools/InputRandomizedEmailAddressTool.d.ts.map +1 -1
  72. package/dist/tools/InputRandomizedEmailAddressTool.js +1 -0
  73. package/dist/tools/InputRandomizedEmailAddressTool.js.map +1 -1
  74. package/dist/tools/InputTextTool.d.ts +4 -4
  75. package/dist/tools/InputTextTool.d.ts.map +1 -1
  76. package/dist/tools/InputTextTool.js +1 -0
  77. package/dist/tools/InputTextTool.js.map +1 -1
  78. package/dist/tools/PressKeyTool.d.ts +1 -1
  79. package/dist/tools/RememberPageTextTool.d.ts +1 -1
  80. package/dist/tools/RememberPageTextTool.d.ts.map +1 -1
  81. package/dist/tools/RememberPageTextTool.js +1 -1
  82. package/dist/tools/RememberPageTextTool.js.map +1 -1
  83. package/dist/tools/ReplayableInteraction.d.ts +3 -6
  84. package/dist/tools/ReplayableInteraction.d.ts.map +1 -1
  85. package/dist/tools/ReplayableInteraction.js +7 -11
  86. package/dist/tools/ReplayableInteraction.js.map +1 -1
  87. package/dist/tools/ScrollPageTool.d.ts +1 -1
  88. package/dist/tools/SolveMfaChallenge.d.ts +1 -1
  89. package/dist/utils/BrowserUtils.d.ts +53 -0
  90. package/dist/utils/BrowserUtils.d.ts.map +1 -1
  91. package/dist/utils/BrowserUtils.js +333 -4
  92. package/dist/utils/BrowserUtils.js.map +1 -1
  93. package/package.json +1 -1
@@ -12,6 +12,7 @@ export type BROWSER_TYPE_NAME = 'firefox' | 'chromium' | 'chrome' | 'webkit' | '
12
12
  * - BrowserBase cloud browser integration
13
13
  * - Complete storage state management (cookies, localStorage, sessionStorage)
14
14
  * - Proxy configuration and environment variable integration
15
+ * - Native Chrome installation support via CDP for "Desktop Chrome" device
15
16
  *
16
17
  * Supports multiple browser engines: Chromium, Chrome, Firefox, WebKit, and iOS Safari.
17
18
  *
@@ -23,6 +24,12 @@ export type BROWSER_TYPE_NAME = 'firefox' | 'chromium' | 'chrome' | 'webkit' | '
23
24
  * };
24
25
  * const context = await BrowserUtils.create(config, './output');
25
26
  *
27
+ * // Use native Chrome installation (special case)
28
+ * const chromeConfig: BrowserConfig = {
29
+ * using: { type: 'device', deviceName: 'Desktop Chrome' }
30
+ * };
31
+ * const chromeContext = await BrowserUtils.create(chromeConfig, './output');
32
+ *
26
33
  * // Get supported devices
27
34
  * const devices = BrowserUtils.getSupportedDevices();
28
35
  *
@@ -36,6 +43,7 @@ export type BROWSER_TYPE_NAME = 'firefox' | 'chromium' | 'chrome' | 'webkit' | '
36
43
  */
37
44
  export declare class BrowserUtils {
38
45
  private static readonly DEFAULT_DEVICE_NAME;
46
+ private static readonly DESKTOP_CHROME_DEVICE_NAME;
39
47
  /**
40
48
  * Loads all the pre-canned browser device configurations from the local
41
49
  * filesystem.
@@ -52,6 +60,9 @@ export declare class BrowserUtils {
52
60
  * Creates a browser context based on the provided configuration.
53
61
  * Supports different browser types including device emulation, remote instances, and BrowserBase.
54
62
  *
63
+ * Special case: When deviceName is "Desktop Chrome", launches the user's native Chrome
64
+ * installation and connects via CDP instead of using Playwright's bundled browser.
65
+ *
55
66
  * @param browserConfig - Configuration object specifying browser type and settings.
56
67
  * @param videoDir - If present, record video and store the artifacts in this directory.
57
68
  * @param storageState - Optional browser storage state to restore (cookies, localStorage, sessionStorage).
@@ -66,6 +77,48 @@ export declare class BrowserUtils {
66
77
  * @returns A promise that resolves to the complete browser storage state
67
78
  */
68
79
  static getBrowserStorageState(browserContext: BrowserContext): Promise<BrowserStorageState>;
80
+ /**
81
+ * Launches the user's native Chrome installation and connects to it via CDP.
82
+ * This provides access to the user's real Chrome profile, extensions, and settings.
83
+ *
84
+ * @param headless - Whether to run Chrome in headless mode
85
+ * @param storageState - Optional browser storage state to restore
86
+ * @param proxy - Optional proxy configuration for the browser
87
+ * @returns A promise that resolves to an object containing the browser and browser context
88
+ * @throws {Error} When Chrome cannot be launched or CDP connection fails
89
+ */
90
+ private static forNativeChrome;
91
+ /**
92
+ * Launches the native Chrome browser with the specified arguments.
93
+ * Attempts to find Chrome in common installation locations across different platforms.
94
+ *
95
+ * @param args - Command line arguments to pass to Chrome
96
+ * @returns The spawned Chrome process
97
+ * @throws {Error} When Chrome executable cannot be found or launched
98
+ */
99
+ private static launchNativeChrome;
100
+ /**
101
+ * Returns an array of possible Chrome executable paths for the current platform.
102
+ *
103
+ * @returns Array of potential Chrome executable paths
104
+ */
105
+ private static getChromePaths;
106
+ /**
107
+ * Finds an available port starting from the given port number.
108
+ *
109
+ * @param startPort - The port number to start checking from
110
+ * @returns Promise that resolves to an available port number
111
+ */
112
+ private static findAvailablePort;
113
+ /**
114
+ * Waits for Chrome's CDP endpoint to become available.
115
+ *
116
+ * @param cdpUrl - The CDP endpoint URL to wait for
117
+ * @param maxAttempts - Maximum number of connection attempts
118
+ * @param delayMs - Delay between attempts in milliseconds
119
+ * @throws {Error} When CDP endpoint doesn't become available within the timeout
120
+ */
121
+ private static waitForCDP;
69
122
  /**
70
123
  * Connects to an existing Chromium browser using the Chrome DevTools Protocol (CDP) at the given URL.
71
124
  *
@@ -1 +1 @@
1
- {"version":3,"file":"BrowserUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/BrowserUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,cAAc,EAGf,MAAM,YAAY,CAAC;AAIpB,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAEpE,OAAO,EAA0B,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAIhF,MAAM,MAAM,iBAAiB,GACzB,SAAS,GACT,UAAU,GACV,QAAQ,GACR,QAAQ,GACR,KAAK,CAAC;AAEV;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAAsB;IAEjE;;;;;;;;;;OAUG;WACW,mBAAmB,IAAI,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC;IAY/D;;;;;;;;;OASG;WACiB,MAAM,CACxB,aAAa,EAAE,aAAa,EAC5B,QAAQ,CAAC,EAAE,MAAM,EACjB,YAAY,CAAC,EAAE,mBAAmB,GACjC,OAAO,CAAC,cAAc,CAAC;IAwF1B;;;;;OAKG;WACiB,sBAAsB,CACxC,cAAc,EAAE,cAAc,GAC7B,OAAO,CAAC,mBAAmB,CAAC;IAgF/B;;;;;;;;OAQG;mBACkB,gBAAgB;IAiCrC;;;;;;;;;;;;OAYG;mBACkB,SAAS;IA8B9B;;;;;;;OAOG;IACH,OAAO,CAAC,MAAM,CAAC,8BAA8B;IAgD7C;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,CAAC,wBAAwB;IAyBvC;;;;;;;;;OASG;mBACkB,UAAU;IAqC/B;;;;;;;;;;;;;OAaG;mBACkB,cAAc;IA2BnC;;;;;;;;OAQG;mBACkB,2BAA2B;IAkChD;;;;;;OAMG;WACiB,oCAAoC,CACtD,cAAc,EAAE,cAAc,EAC9B,YAAY,CAAC,EAAE,mBAAmB,GACjC,OAAO,CAAC,IAAI,CAAC;IAwChB;;;;;;;OAOG;IACH,OAAO,CAAC,MAAM,CAAC,UAAU;CAgB1B"}
1
+ {"version":3,"file":"BrowserUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/BrowserUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,cAAc,EAGf,MAAM,YAAY,CAAC;AAIpB,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAEpE,OAAO,EAA0B,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAUhF,MAAM,MAAM,iBAAiB,GACzB,SAAS,GACT,UAAU,GACV,QAAQ,GACR,QAAQ,GACR,KAAK,CAAC;AAEV;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAAsB;IACjE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,0BAA0B,CAAoB;IAEtE;;;;;;;;;;OAUG;WACW,mBAAmB,IAAI,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC;IAY/D;;;;;;;;;;;;OAYG;WACiB,MAAM,CACxB,aAAa,EAAE,aAAa,EAC5B,QAAQ,CAAC,EAAE,MAAM,EACjB,YAAY,CAAC,EAAE,mBAAmB,GACjC,OAAO,CAAC,cAAc,CAAC;IAoG1B;;;;;OAKG;WACiB,sBAAsB,CACxC,cAAc,EAAE,cAAc,GAC7B,OAAO,CAAC,mBAAmB,CAAC;IAkF/B;;;;;;;;;OASG;mBACkB,eAAe;IAuKpC;;;;;;;OAOG;mBACkB,kBAAkB;IAyDvC;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;IAiC7B;;;;;OAKG;mBACkB,iBAAiB;IA8BtC;;;;;;;OAOG;mBACkB,UAAU;IAuC/B;;;;;;;;OAQG;mBACkB,gBAAgB;IAiCrC;;;;;;;;;;;;OAYG;mBACkB,SAAS;IA8B9B;;;;;;;OAOG;IACH,OAAO,CAAC,MAAM,CAAC,8BAA8B;IAgD7C;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,CAAC,wBAAwB;IAyBvC;;;;;;;;;OASG;mBACkB,UAAU;IAqC/B;;;;;;;;;;;;;OAaG;mBACkB,cAAc;IA2BnC;;;;;;;;OAQG;mBACkB,2BAA2B;IAkChD;;;;;;OAMG;WACiB,oCAAoC,CACtD,cAAc,EAAE,cAAc,EAC9B,YAAY,CAAC,EAAE,mBAAmB,GACjC,OAAO,CAAC,IAAI,CAAC;IAwChB;;;;;;;OAOG;IACH,OAAO,CAAC,MAAM,CAAC,UAAU;CAgB1B"}
@@ -10,6 +10,11 @@ const InvalidParamValueException_1 = require("../exceptions/InvalidParamValueExc
10
10
  const path_1 = __importDefault(require("path"));
11
11
  const envVars_1 = require("../envVars");
12
12
  const Logger_1 = require("./Logger");
13
+ const child_process_1 = require("child_process");
14
+ const util_1 = require("util");
15
+ const promises_1 = __importDefault(require("node:fs/promises"));
16
+ const os_1 = __importDefault(require("os"));
17
+ const sleep = (0, util_1.promisify)(setTimeout);
13
18
  /**
14
19
  * Utility class for managing browser instances and contexts across different browser types and configurations.
15
20
  *
@@ -19,6 +24,7 @@ const Logger_1 = require("./Logger");
19
24
  * - BrowserBase cloud browser integration
20
25
  * - Complete storage state management (cookies, localStorage, sessionStorage)
21
26
  * - Proxy configuration and environment variable integration
27
+ * - Native Chrome installation support via CDP for "Desktop Chrome" device
22
28
  *
23
29
  * Supports multiple browser engines: Chromium, Chrome, Firefox, WebKit, and iOS Safari.
24
30
  *
@@ -30,6 +36,12 @@ const Logger_1 = require("./Logger");
30
36
  * };
31
37
  * const context = await BrowserUtils.create(config, './output');
32
38
  *
39
+ * // Use native Chrome installation (special case)
40
+ * const chromeConfig: BrowserConfig = {
41
+ * using: { type: 'device', deviceName: 'Desktop Chrome' }
42
+ * };
43
+ * const chromeContext = await BrowserUtils.create(chromeConfig, './output');
44
+ *
33
45
  * // Get supported devices
34
46
  * const devices = BrowserUtils.getSupportedDevices();
35
47
  *
@@ -64,6 +76,9 @@ class BrowserUtils {
64
76
  * Creates a browser context based on the provided configuration.
65
77
  * Supports different browser types including device emulation, remote instances, and BrowserBase.
66
78
  *
79
+ * Special case: When deviceName is "Desktop Chrome", launches the user's native Chrome
80
+ * installation and connects via CDP instead of using Playwright's bundled browser.
81
+ *
67
82
  * @param browserConfig - Configuration object specifying browser type and settings.
68
83
  * @param videoDir - If present, record video and store the artifacts in this directory.
69
84
  * @param storageState - Optional browser storage state to restore (cookies, localStorage, sessionStorage).
@@ -76,7 +91,14 @@ class BrowserUtils {
76
91
  let browserContext;
77
92
  switch (type) {
78
93
  case 'device': {
79
- ({ browser, browserContext } = await BrowserUtils.forDevice(browserConfig.using.deviceName ?? BrowserUtils.DEFAULT_DEVICE_NAME, browserConfig.using.headless ?? false, videoDir, storageState, browserConfig.using.proxy));
94
+ const deviceName = browserConfig.using.deviceName ?? BrowserUtils.DEFAULT_DEVICE_NAME;
95
+ // Special case for Desktop Chrome - use native Chrome installation via CDP
96
+ if (deviceName === BrowserUtils.DESKTOP_CHROME_DEVICE_NAME) {
97
+ ({ browser, browserContext } = await BrowserUtils.forNativeChrome(browserConfig.using.headless ?? false, storageState, browserConfig.using.proxy));
98
+ }
99
+ else {
100
+ ({ browser, browserContext } = await BrowserUtils.forDevice(deviceName, browserConfig.using.headless ?? false, videoDir, storageState, browserConfig.using.proxy));
101
+ }
80
102
  BrowserUtils.patchClose(browserContext, () => browser.close());
81
103
  break;
82
104
  }
@@ -153,13 +175,14 @@ class BrowserUtils {
153
175
  const pages = browserContext.pages();
154
176
  // Process each page to collect sessionStorage data
155
177
  for (const page of pages) {
178
+ const pageUrl = page.url();
156
179
  try {
157
- if (page.url().startsWith('about:')) {
180
+ if (pageUrl.length === 0 || pageUrl.startsWith('about:')) {
158
181
  // Skip pages that might have navigation errors or are about:blank.
159
182
  continue;
160
183
  }
161
184
  // Get the origin for the current page
162
- const pageOrigin = new URL(page.url()).origin;
185
+ const pageOrigin = new URL(pageUrl).origin;
163
186
  // Find if we already have an entry for this origin
164
187
  let originEntry = result.origins.find((entry) => entry.origin === pageOrigin);
165
188
  // If not, create a new entry
@@ -193,12 +216,317 @@ class BrowserUtils {
193
216
  originEntry.sessionStorage = sessionStorageItems;
194
217
  }
195
218
  catch (error) {
196
- Logger_1.appLogger.warn(`Failed to extract sessionStorage for page: ${page.url()}`, error);
219
+ Logger_1.appLogger.warn(`Failed to extract sessionStorage for page: ${pageUrl}`, error);
197
220
  continue;
198
221
  }
199
222
  }
200
223
  return result;
201
224
  }
225
+ /**
226
+ * Launches the user's native Chrome installation and connects to it via CDP.
227
+ * This provides access to the user's real Chrome profile, extensions, and settings.
228
+ *
229
+ * @param headless - Whether to run Chrome in headless mode
230
+ * @param storageState - Optional browser storage state to restore
231
+ * @param proxy - Optional proxy configuration for the browser
232
+ * @returns A promise that resolves to an object containing the browser and browser context
233
+ * @throws {Error} When Chrome cannot be launched or CDP connection fails
234
+ */
235
+ static async forNativeChrome(headless, storageState, proxy) {
236
+ // Always use a dedicated user-data-dir to avoid handing off to an existing Chrome.
237
+ const userDataDir = await promises_1.default.mkdtemp(path_1.default.join(os_1.default.tmpdir(), 'donobu-chrome-'));
238
+ // Chrome will choose a free port and write it into DevToolsActivePort in userDataDir.
239
+ const chromeArgs = [
240
+ `--user-data-dir=${userDataDir}`,
241
+ '--remote-debugging-port=0',
242
+ '--disable-field-trial-config',
243
+ '--disable-background-networking',
244
+ '--disable-background-timer-throttling',
245
+ '--disable-backgrounding-occluded-windows',
246
+ '--disable-back-forward-cache',
247
+ '--disable-breakpad',
248
+ '--disable-client-side-phishing-detection',
249
+ '--disable-component-extensions-with-background-pages',
250
+ '--disable-component-update',
251
+ '--no-default-browser-check',
252
+ '--disable-default-apps',
253
+ '--disable-dev-shm-usage',
254
+ '--disable-features=AcceptCHFrame,AvoidUnnecessaryBeforeUnloadCheckSync,DestroyProfileOnBrowserClose,DialMediaRouteProvider,GlobalMediaControls,HttpsUpgrades,LensOverlay,MediaRouter,PaintHolding,ThirdPartyStoragePartitioning,Translate,AutoDeElevate,AutomationControlled',
255
+ '--enable-features=CDPScreenshotNewSurface',
256
+ '--allow-pre-commit-input',
257
+ '--disable-hang-monitor',
258
+ '--disable-ipc-flooding-protection',
259
+ '--disable-popup-blocking',
260
+ '--disable-prompt-on-repost',
261
+ '--disable-renderer-backgrounding',
262
+ '--force-color-profile=srgb',
263
+ '--metrics-recording-only',
264
+ '--no-first-run',
265
+ '--password-store=basic',
266
+ '--use-mock-keychain',
267
+ '--no-service-autorun',
268
+ '--export-tagged-pdf',
269
+ '--disable-search-engine-choice-screen',
270
+ '--unsafely-disable-devtools-self-xss-warnings',
271
+ '--edge-skip-compat-layer-relaunch',
272
+ '--enable-unsafe-swiftshader',
273
+ 'about:blank',
274
+ ];
275
+ if (headless) {
276
+ chromeArgs.push('--headless=new');
277
+ }
278
+ const expandedProxy = BrowserUtils.expandProxyConfiguration(proxy);
279
+ if (expandedProxy) {
280
+ chromeArgs.push(`--proxy-server=${expandedProxy.server}`);
281
+ if (expandedProxy.bypass) {
282
+ chromeArgs.push(`--proxy-bypass-list=${expandedProxy.bypass}`);
283
+ }
284
+ }
285
+ Logger_1.appLogger.info(`Launching Chrome with args: ${chromeArgs.join(' ')}`);
286
+ const chromeProcess = await BrowserUtils.launchNativeChrome(chromeArgs);
287
+ // Helper: read DevToolsActivePort written by Chrome when --remote-debugging-port=0 is used
288
+ const readDevToolsPort = async (maxAttempts = 200, delayMs = 100) => {
289
+ const file = path_1.default.join(userDataDir, 'DevToolsActivePort');
290
+ for (let i = 0; i < maxAttempts; i++) {
291
+ try {
292
+ const contents = (await promises_1.default.readFile(file, 'utf8')).trim().split('\n');
293
+ // Format: first line is the port, second is the WebSocket path.
294
+ const port = Number(contents[0]);
295
+ if (!Number.isNaN(port)) {
296
+ return port;
297
+ }
298
+ }
299
+ catch {
300
+ /* file not ready yet */
301
+ }
302
+ await sleep(delayMs);
303
+ }
304
+ throw new Error('DevToolsActivePort not found; Chrome did not expose CDP');
305
+ };
306
+ let browser;
307
+ try {
308
+ const port = await readDevToolsPort();
309
+ const cdpUrl = `http://localhost:${port}`;
310
+ Logger_1.appLogger.info(`Connecting to Chrome CDP at: ${cdpUrl}`);
311
+ browser = await playwright_1.chromium.connectOverCDP(cdpUrl);
312
+ // IMPORTANT: Reuse the default (already-open) non-incognito context.
313
+ // Calling browser.newContext() would create an incognito context -> extra window.
314
+ const existingContexts = browser.contexts();
315
+ if (existingContexts.length === 0) {
316
+ throw new Error('No default Chrome context found after CDP connect');
317
+ }
318
+ const browserContext = existingContexts[0];
319
+ // Apply storage state (cookies) if provided.
320
+ if (storageState?.cookies?.length) {
321
+ try {
322
+ await browserContext.addCookies(storageState.cookies);
323
+ }
324
+ catch (e) {
325
+ Logger_1.appLogger.warn('Failed to add cookies to existing Chrome context', e);
326
+ }
327
+ }
328
+ // (sessionStorage/localStorage restoration happens via attachSessionStorageToBrowserContext later)
329
+ // Patch close: close Playwright connection, then Chrome, then remove temp profile.
330
+ const originalClose = browser.close.bind(browser);
331
+ browser.close = async () => {
332
+ try {
333
+ await originalClose();
334
+ }
335
+ catch (e) {
336
+ Logger_1.appLogger.warn('Error closing browser connection', e);
337
+ }
338
+ try {
339
+ if (!chromeProcess.killed) {
340
+ chromeProcess.kill('SIGTERM');
341
+ await sleep(1000);
342
+ if (!chromeProcess.killed) {
343
+ chromeProcess.kill('SIGKILL');
344
+ }
345
+ }
346
+ }
347
+ catch (e) {
348
+ Logger_1.appLogger.warn('Error terminating Chrome process', e);
349
+ }
350
+ try {
351
+ await promises_1.default.rm(userDataDir, { recursive: true, force: true });
352
+ }
353
+ catch (e) {
354
+ Logger_1.appLogger.warn('Error removing temp userDataDir', e);
355
+ }
356
+ };
357
+ return { browser, browserContext };
358
+ }
359
+ catch (error) {
360
+ try {
361
+ if (browser) {
362
+ await browser.close();
363
+ }
364
+ }
365
+ catch { }
366
+ try {
367
+ if (!chromeProcess.killed) {
368
+ chromeProcess.kill('SIGKILL');
369
+ }
370
+ }
371
+ catch { }
372
+ throw new Error(`Failed to connect to native Chrome: ${error.message}`);
373
+ }
374
+ }
375
+ /**
376
+ * Launches the native Chrome browser with the specified arguments.
377
+ * Attempts to find Chrome in common installation locations across different platforms.
378
+ *
379
+ * @param args - Command line arguments to pass to Chrome
380
+ * @returns The spawned Chrome process
381
+ * @throws {Error} When Chrome executable cannot be found or launched
382
+ */
383
+ static async launchNativeChrome(args) {
384
+ const chromePaths = BrowserUtils.getChromePaths();
385
+ for (const chromePath of chromePaths) {
386
+ try {
387
+ Logger_1.appLogger.info(`Attempting to launch Chrome from: ${chromePath}`);
388
+ const process = (0, child_process_1.spawn)(chromePath, args, {
389
+ detached: false,
390
+ stdio: ['ignore', 'pipe', 'pipe'], // Capture stdout and stderr
391
+ });
392
+ // Set up error handling for the process
393
+ process.on('error', (error) => {
394
+ Logger_1.appLogger.error(`Chrome process error: ${error.message}`);
395
+ });
396
+ process.stdout?.on('data', (data) => {
397
+ Logger_1.appLogger.debug(`Chrome stdout: ${data.toString()}`);
398
+ });
399
+ process.stderr?.on('data', (data) => {
400
+ const message = data.toString();
401
+ // Don't log as error if it's just informational Chrome output
402
+ if (message.includes('DevTools listening on')) {
403
+ Logger_1.appLogger.info(`Chrome: ${message.trim()}`);
404
+ }
405
+ else {
406
+ Logger_1.appLogger.debug(`Chrome stderr: ${message}`);
407
+ }
408
+ });
409
+ // Wait a bit to see if the process starts successfully
410
+ await sleep(1000); // Increased wait time
411
+ if (!process.killed && process.pid) {
412
+ Logger_1.appLogger.info(`Launched Chrome from: ${chromePath} (PID: ${process.pid})`);
413
+ return process;
414
+ }
415
+ else {
416
+ Logger_1.appLogger.warn(`Chrome process died immediately for path: ${chromePath}`);
417
+ }
418
+ }
419
+ catch (error) {
420
+ Logger_1.appLogger.debug(`Failed to launch Chrome from ${chromePath}:`, error);
421
+ continue;
422
+ }
423
+ }
424
+ throw new Error('Could not find or launch Chrome. Please ensure Chrome is installed.');
425
+ }
426
+ /**
427
+ * Returns an array of possible Chrome executable paths for the current platform.
428
+ *
429
+ * @returns Array of potential Chrome executable paths
430
+ */
431
+ static getChromePaths() {
432
+ const platform = process.platform;
433
+ switch (platform) {
434
+ case 'win32':
435
+ return [
436
+ 'C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe',
437
+ 'C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe',
438
+ process.env.LOCALAPPDATA +
439
+ '\\Google\\Chrome\\Application\\chrome.exe',
440
+ ].filter(Boolean);
441
+ case 'darwin':
442
+ return [
443
+ '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome',
444
+ '/Applications/Google Chrome Canary.app/Contents/MacOS/Google Chrome Canary',
445
+ '/usr/bin/google-chrome',
446
+ ];
447
+ case 'linux':
448
+ return [
449
+ '/usr/bin/google-chrome',
450
+ '/usr/bin/google-chrome-stable',
451
+ '/usr/bin/chromium-browser',
452
+ '/usr/bin/chromium',
453
+ '/snap/bin/chromium',
454
+ ];
455
+ default:
456
+ return ['/usr/bin/google-chrome', '/usr/bin/chromium'];
457
+ }
458
+ }
459
+ /**
460
+ * Finds an available port starting from the given port number.
461
+ *
462
+ * @param startPort - The port number to start checking from
463
+ * @returns Promise that resolves to an available port number
464
+ */
465
+ static async findAvailablePort(startPort) {
466
+ const net = require('net');
467
+ return new Promise((resolve, reject) => {
468
+ const server = net.createServer();
469
+ server.listen(startPort, () => {
470
+ const port = server.address()?.port;
471
+ server.close(() => {
472
+ if (port) {
473
+ resolve(port);
474
+ }
475
+ else {
476
+ reject(new Error('Could not determine port'));
477
+ }
478
+ });
479
+ });
480
+ server.on('error', (err) => {
481
+ if (err.code === 'EADDRINUSE') {
482
+ // Port is in use, try the next one
483
+ BrowserUtils.findAvailablePort(startPort + 1)
484
+ .then(resolve)
485
+ .catch(reject);
486
+ }
487
+ else {
488
+ reject(err);
489
+ }
490
+ });
491
+ });
492
+ }
493
+ /**
494
+ * Waits for Chrome's CDP endpoint to become available.
495
+ *
496
+ * @param cdpUrl - The CDP endpoint URL to wait for
497
+ * @param maxAttempts - Maximum number of connection attempts
498
+ * @param delayMs - Delay between attempts in milliseconds
499
+ * @throws {Error} When CDP endpoint doesn't become available within the timeout
500
+ */
501
+ static async waitForCDP(cdpUrl, maxAttempts = 60, // Increased from 30
502
+ delayMs = 500) {
503
+ for (let attempt = 1; attempt <= maxAttempts; attempt++) {
504
+ try {
505
+ Logger_1.appLogger.debug(`CDP connection attempt ${attempt}/${maxAttempts}`);
506
+ const response = await fetch(`${cdpUrl}/json/version`, {
507
+ signal: AbortSignal.timeout(2000), // 2 second timeout per attempt
508
+ });
509
+ if (response.ok) {
510
+ const data = await response.json();
511
+ Logger_1.appLogger.info(`CDP endpoint ready. Browser: ${data.Browser}, WebKit: ${data['WebKit-Version']}`);
512
+ return;
513
+ }
514
+ else {
515
+ Logger_1.appLogger.debug(`CDP endpoint returned status: ${response.status}`);
516
+ }
517
+ }
518
+ catch (error) {
519
+ if (attempt % 10 === 0) {
520
+ // Log every 10 attempts to avoid spam
521
+ Logger_1.appLogger.debug(`CDP not ready yet (attempt ${attempt}): ${error.message}`);
522
+ }
523
+ }
524
+ if (attempt === maxAttempts) {
525
+ throw new Error(`Chrome CDP endpoint not available after ${maxAttempts} attempts (${(maxAttempts * delayMs) / 1000}s)`);
526
+ }
527
+ await sleep(delayMs);
528
+ }
529
+ }
202
530
  /**
203
531
  * Connects to an existing Chromium browser using the Chrome DevTools Protocol (CDP) at the given URL.
204
532
  *
@@ -486,4 +814,5 @@ class BrowserUtils {
486
814
  }
487
815
  exports.BrowserUtils = BrowserUtils;
488
816
  BrowserUtils.DEFAULT_DEVICE_NAME = 'Desktop Chromium';
817
+ BrowserUtils.DESKTOP_CHROME_DEVICE_NAME = 'Desktop Chrome';
489
818
  //# sourceMappingURL=BrowserUtils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BrowserUtils.js","sourceRoot":"","sources":["../../../src/utils/BrowserUtils.ts"],"names":[],"mappings":";;;;;;AAMA,2CAAuD;AACvD,2CAAwC;AACxC,yFAAsF;AAGtF,gDAAwB;AAExB,wCAAgD;AAChD,qCAAqC;AASrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAa,YAAY;IAGvB;;;;;;;;;;OAUG;IACI,MAAM,CAAC,mBAAmB;QAC/B,MAAM,UAAU,GAAG,qBAAS,CAAC,kBAAkB,CAC7C,cAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CACO,CAAC;QAEnC,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC1D,CAAC;QAED,OAAO,IAAI,GAAG,CAAwB,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;IACpE,CAAC;IAED;;;;;;;;;OASG;IACI,MAAM,CAAC,KAAK,CAAC,MAAM,CACxB,aAA4B,EAC5B,QAAiB,EACjB,YAAkC;QAElC,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC;QACtC,IAAI,OAAgB,CAAC;QACrB,IAAI,cAA8B,CAAC;QAEnC,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,MAAM,YAAY,CAAC,SAAS,CACzD,aAAa,CAAC,KAAK,CAAC,UAAU,IAAI,YAAY,CAAC,mBAAmB,EAClE,aAAa,CAAC,KAAK,CAAC,QAAQ,IAAI,KAAK,EACrC,QAAQ,EACR,YAAY,EACZ,aAAa,CAAC,KAAK,CAAC,KAAK,CAC1B,CAAC,CAAC;gBACH,YAAY,CAAC,UAAU,CAAC,cAAc,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;gBAC/D,MAAM;YACR,CAAC;YACD,KAAK,gBAAgB,CAAC,CAAC,CAAC;gBACtB,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,MAAM,YAAY,CAAC,gBAAgB,CAChE,aAAa,CAAC,KAAK,CAAC,GAAG,EACvB,QAAQ,EACR,YAAY,CACb,CAAC,CAAC;gBACH,YAAY,CAAC,UAAU,CAAC,cAAc,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;gBAC/D,MAAM;YACR,CAAC;YACD,KAAK,aAAa,CAAC,CAAC,CAAC;gBACnB,IAAI,eAAe,CAAC;gBACpB,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE;oBAC3C,MAAM,YAAY,CAAC,cAAc,CAC/B,aAAa,CAAC,KAAK,CAAC,WAAW,EAC/B,QAAQ,EACR,YAAY,CACb,CAAC,CAAC;gBACL,YAAY,CAAC,UAAU,CAAC,cAAc,EAAE,KAAK,IAAI,EAAE;oBACjD,IAAI,CAAC;wBACH,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;oBACxB,CAAC;oBAAC,OAAO,MAAM,EAAE,CAAC;wBAChB,qEAAqE;oBACvE,CAAC;oBAED,MAAM,IAAI,GAAG;wBACX,SAAS,EAAE,eAAe,CAAC,SAAS;wBACpC,MAAM,EAAE,iBAAiB;qBAC1B,CAAC;oBACF,MAAM,QAAQ,GAAG,aAAG,CAAC,mBAAmB,IAAI,EAAE,CAAC;oBAC/C,MAAM,OAAO,GAAG;wBACd,MAAM,EAAE,MAAM;wBACd,OAAO,EAAE;4BACP,cAAc,EAAE,QAAQ;4BACxB,cAAc,EAAE,kBAAkB;yBACnC;wBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;qBAC3B,CAAC;oBAEF,IAAI,CAAC;wBACH,MAAM,IAAI,GAAG,MAAM,KAAK,CACtB,2CAA2C,eAAe,CAAC,EAAE,EAAE,EAC/D,OAAO,CACR,CAAC;wBAEF,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;4BACb,kBAAS,CAAC,IAAI,CACZ,0CAA0C,eAAe,CAAC,EAAE,mBAAmB,IAAI,CAAC,UAAU,EAAE,CACjG,CAAC;wBACJ,CAAC;oBACH,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,4DAA4D;wBAC5D,kBAAS,CAAC,IAAI,CACZ,0CAA0C,eAAe,CAAC,EAAE,GAAG,EAC/D,KAAK,CACN,CAAC;oBACJ,CAAC;gBACH,CAAC,CAAC,CAAC;gBACH,MAAM;YACR,CAAC;YACD,OAAO,CAAC,CAAC,CAAC;gBACR,MAAM,IAAI,uDAA0B,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YACrD,CAAC;QACH,CAAC;QAED,MAAM,YAAY,CAAC,oCAAoC,CACrD,cAAc,EACd,YAAY,CACb,CAAC;QACF,OAAO,cAAc,CAAC;IACxB,CAAC;IAED;;;;;OAKG;IACI,MAAM,CAAC,KAAK,CAAC,sBAAsB,CACxC,cAA8B;QAE9B,IAAI,MAA2B,CAAC;QAEhC,IAAI,CAAC;YACH,kEAAkE;YAClE,MAAM,GAAG,MAAM,cAAc,CAAC,YAAY,CAAC;gBACzC,SAAS,EAAE,IAAI;aAChB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,kBAAS,CAAC,IAAI,CACZ,0EAA0E,EAC1E,KAAK,CACN,CAAC;YACF,MAAM,GAAG,MAAM,cAAc,CAAC,YAAY,CAAC;gBACzC,SAAS,EAAE,KAAK;aACjB,CAAC,CAAC;QACL,CAAC;QAED,+BAA+B;QAC/B,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,EAAE,CAAC;QAErC,mDAAmD;QACnD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC;gBACH,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACpC,mEAAmE;oBACnE,SAAS;gBACX,CAAC;gBACD,sCAAsC;gBACtC,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC;gBAE9C,mDAAmD;gBACnD,IAAI,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CACnC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,UAAU,CACvC,CAAC;gBAEF,6BAA6B;gBAC7B,IAAI,CAAC,WAAW,EAAE,CAAC;oBACjB,WAAW,GAAG;wBACZ,MAAM,EAAE,UAAU;wBAClB,YAAY,EAAE,EAAE;wBAChB,cAAc,EAAE,EAAE;qBACnB,CAAC;oBACF,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBACnC,CAAC;qBAAM,IAAI,CAAC,CAAC,gBAAgB,IAAI,WAAW,CAAC,EAAE,CAAC;oBAC9C,4EAA4E;oBAC3E,WAAmB,CAAC,cAAc,GAAG,EAAE,CAAC;gBAC3C,CAAC;gBAED,uCAAuC;gBACvC,MAAM,mBAAmB,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;oBACnD,MAAM,KAAK,GAAG,EAAE,CAAC;oBAEjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;wBAC/C,MAAM,IAAI,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;wBAEnC,IAAI,IAAI,EAAE,CAAC;4BACT,KAAK,CAAC,IAAI,CAAC;gCACT,IAAI;gCACJ,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE;6BAC1C,CAAC,CAAC;wBACL,CAAC;oBACH,CAAC;oBACD,OAAO,KAAK,CAAC;gBACf,CAAC,CAAC,CAAC;gBAEH,+CAA+C;gBAC9C,WAAmB,CAAC,cAAc,GAAG,mBAAmB,CAAC;YAC5D,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,kBAAS,CAAC,IAAI,CACZ,8CAA8C,IAAI,CAAC,GAAG,EAAE,EAAE,EAC1D,KAAK,CACN,CAAC;gBACF,SAAS;YACX,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;;;;;OAQG;IACK,MAAM,CAAC,KAAK,CAAC,gBAAgB,CACnC,wBAAgC,EAChC,QAAiB,EACjB,YAAkC;QAElC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,qBAAQ,CAAC,cAAc,CAAC,wBAAwB,CAAC,CAAC;YAExE,IAAI,CAAC;gBACH,MAAM,cAAc,GAA0B;oBAC5C,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACxD,CAAC;gBAEF,IAAI,YAAY,EAAE,CAAC;oBACjB,cAAc,CAAC,YAAY,GAAG,YAAY,CAAC;gBAC7C,CAAC;gBAED,OAAO;oBACL,OAAO,EAAE,OAAO;oBAChB,cAAc,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC;iBACzD,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;gBACtB,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,IAAI,uDAA0B,CAClC,0BAA0B,EAC1B,wBAAwB,CACzB,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;OAYG;IACK,MAAM,CAAC,KAAK,CAAC,SAAS,CAC5B,UAAkB,EAClB,QAAiB,EACjB,QAAiB,EACjB,YAAkC,EAClC,KAA8B;QAE9B,MAAM,EAAE,eAAe,EAAE,qBAAqB,EAAE,GAC9C,IAAI,CAAC,8BAA8B,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAE5D,IAAI,YAAY,EAAE,CAAC;YACjB,qBAAqB,CAAC,YAAY,GAAG,YAAY,CAAC;QACpD,CAAC;QAED,MAAM,aAAa,GAAkB;YACnC,QAAQ;YACR,IAAI,EAAE;gBACJ,6BAA6B;gBAC7B,+CAA+C;aAChD;YACD,KAAK,EAAE,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC;SAC5C,CAAC;QAEF,OAAO,MAAM,IAAI,CAAC,UAAU,CAC1B,eAAe,EACf,aAAa,EACb,qBAAqB,CACtB,CAAC;IACJ,CAAC;IAED;;;;;;;OAOG;IACK,MAAM,CAAC,8BAA8B,CAC3C,UAAkB,EAClB,QAAiB;QAKjB,MAAM,aAAa,GAAG,YAAY,CAAC,mBAAmB,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAEzE,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,IAAI,uDAA0B,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;QACjE,CAAC;QAED,MAAM,qBAAqB,GAA0B;YACnD,SAAS,EAAE,aAAa,CAAC,SAAS;YAClC,GAAG,CAAC,QAAQ;gBACV,CAAC,CAAC;oBACE,WAAW,EAAE;wBACX,GAAG,EAAE,QAAQ;wBACb,IAAI,EAAE;4BACJ,KAAK,EAAE,aAAa,CAAC,QAAQ,EAAE,KAAK,IAAI,IAAI;4BAC5C,MAAM,EAAE,aAAa,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG;yBAC9C;qBACF;iBACF;gBACH,CAAC,CAAC,EAAE,CAAC;YACP,QAAQ,EAAE;gBACR,KAAK,EAAE,aAAa,CAAC,QAAQ,EAAE,KAAK,IAAI,IAAI;gBAC5C,MAAM,EAAE,aAAa,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG;aAC9C;YACD,MAAM,EAAE;gBACN,KAAK,EACH,aAAa,CAAC,MAAM,EAAE,KAAK,IAAI,aAAa,CAAC,QAAQ,EAAE,KAAK,IAAI,IAAI;gBACtE,MAAM,EACJ,aAAa,CAAC,MAAM,EAAE,MAAM,IAAI,aAAa,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG;aACxE;YACD,iBAAiB,EAAE,aAAa,CAAC,iBAAiB,IAAI,GAAG;YACzD,QAAQ,EAAE,aAAa,CAAC,QAAQ,IAAI,KAAK;YACzC,QAAQ,EAAE,aAAa,CAAC,QAAQ,IAAI,KAAK;SAC1C,CAAC;QAEF,OAAO;YACL,eAAe,EACb,aAAa,CAAC,kBAAkB,CAAC,WAAW,EAAuB;YACrE,qBAAqB,EAAE,qBAAqB;SAC7C,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACK,MAAM,CAAC,wBAAwB,CACrC,KAA6B;QAE7B,MAAM,cAAc,GAAG,aAAG,CAAC,YAAY,CAAC;QACxC,MAAM,gBAAgB,GAAG,aAAG,CAAC,cAAc,CAAC;QAC5C,MAAM,gBAAgB,GAAG,aAAG,CAAC,cAAc,CAAC;QAE5C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,cAAc,KAAK,SAAS;gBACjC,CAAC,CAAC;oBACE,MAAM,EAAE,cAAc;oBACtB,QAAQ,EAAE,gBAAgB;oBAC1B,QAAQ,EAAE,gBAAgB;iBAC3B;gBACH,CAAC,CAAC,SAAS,CAAC;QAChB,CAAC;QAED,OAAO;YACL,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,gBAAgB;YAC5C,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,gBAAgB;SAC7C,CAAC;IACJ,CAAC;IAED;;;;;;;;;OASG;IACK,MAAM,CAAC,KAAK,CAAC,UAAU,CAC7B,eAAkC,EAClC,aAA4B,EAC5B,qBAA4C;QAE5C,IAAI,OAAgB,CAAC;QAErB,QAAQ,eAAe,EAAE,CAAC;YACxB,KAAK,SAAS;gBACZ,OAAO,GAAG,MAAM,oBAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;gBAC9C,MAAM;YACR,KAAK,UAAU;gBACb,OAAO,GAAG,MAAM,qBAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;gBAC/C,MAAM;YACR,KAAK,QAAQ;gBACX,OAAO,GAAG,MAAM,qBAAQ,CAAC,MAAM,CAAC;oBAC9B,GAAG,aAAa;oBAChB,OAAO,EAAE,QAAQ;iBAClB,CAAC,CAAC;gBACH,MAAM;YACR,KAAK,QAAQ,CAAC;YACd,KAAK,KAAK;gBACR,OAAO,GAAG,MAAM,mBAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;gBAC7C,MAAM;YACR;gBACE,MAAM,IAAI,uDAA0B,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;QACzE,CAAC;QAED,IAAI,CAAC;YACH,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC;YACvE,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;QACrC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;YACtB,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;OAaG;IACK,MAAM,CAAC,KAAK,CAAC,cAAc,CACjC,WAAmC,EACnC,QAAiB,EACjB,YAAkC;QAMlC,MAAM,eAAe,GACnB,MAAM,YAAY,CAAC,2BAA2B,CAAC,WAAW,CAAC,CAAC;QAC9D,MAAM,OAAO,GAAG,MAAM,qBAAQ,CAAC,cAAc,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QAC1E,MAAM,cAAc,GAA0B;YAC5C,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACxD,CAAC;QAEF,IAAI,YAAY,EAAE,CAAC;YACjB,cAAc,CAAC,YAAY,GAAG,YAAY,CAAC;QAC7C,CAAC;QAED,OAAO;YACL,OAAO,EAAE,OAAO;YAChB,cAAc,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC;YACxD,eAAe,EAAE,eAAe;SACjC,CAAC;IACJ,CAAC;IAED;;;;;;;;OAQG;IACK,MAAM,CAAC,KAAK,CAAC,2BAA2B,CAC9C,WAAmC;QAEnC,MAAM,QAAQ,GAAG,aAAG,CAAC,mBAAmB,CAAC;QAEzC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,uDAA0B,CAClC,uBAAa,CAAC,mBAAmB,EACjC,IAAI,CACL,CAAC;QACJ,CAAC;QAED,MAAM,OAAO,GAAG;YACd,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,QAAQ,EAAE,cAAc,EAAE,kBAAkB,EAAE;YACzE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;SAClC,CAAC;QAEF,MAAM,eAAe,GAAG,MAAM,KAAK,CACjC,yCAAyC,EACzC,OAAO,CACR,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;QAEtC,IAAI,eAAe,CAAC,KAAK,EAAE,CAAC;YAC1B,MAAM,IAAI,uDAA0B,CAClC,uBAAa,CAAC,mBAAmB,EACjC,kBAAkB,EAClB,GAAG,eAAe,CAAC,KAAK,KAAK,eAAe,CAAC,OAAO,EAAE,CACvD,CAAC;QACJ,CAAC;QAED,OAAO,eAAe,CAAC;IACzB,CAAC;IAED;;;;;;OAMG;IACI,MAAM,CAAC,KAAK,CAAC,oCAAoC,CACtD,cAA8B,EAC9B,YAAkC;QAElC,yEAAyE;QACzE,IAAI,YAAY,IAAI,YAAY,CAAC,OAAO,EAAE,CAAC;YACzC,qEAAqE;YACrE,MAAM,sBAAsB,GAA2C,EAAE,CAAC;YAE1E,KAAK,MAAM,MAAM,IAAI,YAAY,CAAC,OAAO,EAAE,CAAC;gBAC1C,IAAI,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC9D,0DAA0D;oBAC1D,MAAM,iBAAiB,GAA2B,EAAE,CAAC;oBAErD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;wBACzC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;oBAC5C,CAAC;oBAED,sBAAsB,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,iBAAiB,CAAC;gBAC5D,CAAC;YACH,CAAC;YAED,2EAA2E;YAC3E,MAAM,cAAc,CAAC,aAAa,CAAC,CAAC,WAAW,EAAE,EAAE;gBACjD,qBAAqB;gBACrB,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAE7C,uDAAuD;gBACvD,IAAI,WAAW,CAAC,aAAa,CAAC,EAAE,CAAC;oBAC/B,mCAAmC;oBACnC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CACvC,WAAW,CAAC,aAAa,CAAC,CAC3B,EAAE,CAAC;wBACF,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;oBAC5C,CAAC;oBACD,OAAO,CAAC,GAAG,CACT,YAAY,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,6BAA6B,aAAa,EAAE,CACvG,CAAC;gBACJ,CAAC;YACH,CAAC,EAAE,sBAAsB,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACK,MAAM,CAAC,UAAU,CACvB,GAAmB,EACnB,KAA0B;QAE1B,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrC,GAAG,CAAC,KAAK,GAAG,KAAK,EACf,GAAG,IAAyC,EAC7B,EAAE;YACjB,IAAI,CAAC;gBACH,MAAM,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC;YAC1B,CAAC;YAAC,MAAM,CAAC,CAAA,CAAC;YACV,IAAI,CAAC;gBACH,MAAM,KAAK,EAAE,CAAC;YAChB,CAAC;YAAC,MAAM,CAAC,CAAA,CAAC;QACZ,CAAC,CAAC;IACJ,CAAC;;AAjlBH,oCAklBC;AAjlByB,gCAAmB,GAAG,kBAAkB,CAAC"}
1
+ {"version":3,"file":"BrowserUtils.js","sourceRoot":"","sources":["../../../src/utils/BrowserUtils.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,7 @@ import { ScrollPageNonGptSchema } from '../tools/ScrollPageTool';
14
14
  import { SelectorBasedSchema } from '../tools/ReplayableInteraction';
15
15
  import { z } from 'zod/v4';
16
16
  import { BrowserStorageState } from '../models/BrowserStorageState';
17
+ import { SmartSelector } from './SmartSelector';
17
18
  /**
18
19
  * Extends the Page object with additional test-related methods.
19
20
  */
@@ -72,6 +73,14 @@ export interface DonobuExtendedPage extends Page {
72
73
  instruction?: string;
73
74
  schema: z.ZodSchema<T>;
74
75
  }, gptClientOverride?: GptClient | LanguageModel): Promise<T>;
76
+ /**
77
+ * Builds a smart selector object that will automatically failover when performing
78
+ * actions.
79
+ */
80
+ find(selector: string, options?: {
81
+ failover?: string[];
82
+ frame?: string;
83
+ }): SmartSelector;
75
84
  /**
76
85
  * Hover the mouse over a specified element on a webpage.
77
86
  */
@@ -1 +1 @@
1
- {"version":3,"file":"DonobuExtendedPage.d.ts","sourceRoot":"","sources":["../../src/lib/DonobuExtendedPage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DonobuExtendedPage.d.ts","sourceRoot":"","sources":["../../src/lib/DonobuExtendedPage.ts"],"names":[],"mappings":"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"}