webdriverio 9.2.5 → 9.2.8

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.
@@ -1 +1 @@
1
- {"version":3,"file":"switchFrame.d.ts","sourceRoot":"","sources":["../../../src/commands/browser/switchFrame.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,KAAK,KAAK,EAAe,MAAM,WAAW,CAAA;AAOhE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAA;AAE7D,KAAK,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,EAAE,UAAU,CAAC,GAAG;IAAE,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAAA;AAG3F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsDG;AACH,wBAAsB,WAAW,CAC7B,IAAI,EAAE,WAAW,CAAC,OAAO,EACzB,OAAO,EAAE,WAAW,CAAC,OAAO,GAAG,uBAAuB,GAAG,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,eAAe,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,0BA8NnI"}
1
+ {"version":3,"file":"switchFrame.d.ts","sourceRoot":"","sources":["../../../src/commands/browser/switchFrame.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,KAAK,KAAK,EAAe,MAAM,WAAW,CAAA;AAOhE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAA;AAE7D,KAAK,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,EAAE,UAAU,CAAC,GAAG;IAAE,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAAA;AAG3F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsDG;AACH,wBAAsB,WAAW,CAC7B,IAAI,EAAE,WAAW,CAAC,OAAO,EACzB,OAAO,EAAE,WAAW,CAAC,OAAO,GAAG,uBAAuB,GAAG,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,eAAe,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,0BAiOnI"}
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAEA,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,WAAW,CAAC,OAAO,kBAS7D;AAED;;;;GAIG;AACH,qBAAa,cAAc;;gBAIX,OAAO,EAAE,WAAW,CAAC,OAAO;IAoCxC;;OAEG;IACG,UAAU;IAUhB,iBAAiB,CAAE,OAAO,EAAE,MAAM;IAI5B,iBAAiB;CAM1B"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAEA,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,WAAW,CAAC,OAAO,kBAS7D;AAED;;;;GAIG;AACH,qBAAa,cAAc;;gBAIX,OAAO,EAAE,WAAW,CAAC,OAAO;IAwCxC;;OAEG;IACG,UAAU;IAUhB,iBAAiB,CAAE,OAAO,EAAE,MAAM;IAI5B,iBAAiB;CAM1B"}
package/build/index.js CHANGED
@@ -150,13 +150,13 @@ var WebDriverError = class extends Error {
150
150
  }
151
151
  };
152
152
  function getElement(selector, res, props = { isReactElement: false, isShadowElement: false }) {
153
- const browser2 = getBrowserObject(this);
153
+ const browser = getBrowserObject(this);
154
154
  const browserCommandKeys = Object.keys(browser_exports);
155
155
  const propertiesObject = {
156
156
  /**
157
157
  * filter out browser commands from object
158
158
  */
159
- ...Object.entries(clone(browser2.__propertiesObject__)).reduce((commands, [name, descriptor]) => {
159
+ ...Object.entries(clone(browser.__propertiesObject__)).reduce((commands, [name, descriptor]) => {
160
160
  if (!browserCommandKeys.includes(name)) {
161
161
  commands[name] = descriptor;
162
162
  }
@@ -188,19 +188,19 @@ function getElement(selector, res, props = { isReactElement: false, isShadowElem
188
188
  const elementInstance = element(this.sessionId, elementErrorHandler(wrapCommand));
189
189
  const origAddCommand = elementInstance.addCommand.bind(elementInstance);
190
190
  elementInstance.addCommand = (name, fn) => {
191
- browser2.__propertiesObject__[name] = { value: fn };
191
+ browser.__propertiesObject__[name] = { value: fn };
192
192
  origAddCommand(name, fn);
193
193
  };
194
194
  return elementInstance;
195
195
  }
196
196
  var getElements = function getElements2(selector, elemResponse, props = { isReactElement: false, isShadowElement: false }) {
197
- const browser2 = getBrowserObject(this);
197
+ const browser = getBrowserObject(this);
198
198
  const browserCommandKeys = Object.keys(browser_exports);
199
199
  const propertiesObject = {
200
200
  /**
201
201
  * filter out browser commands from object
202
202
  */
203
- ...Object.entries(clone(browser2.__propertiesObject__)).reduce((commands, [name, descriptor]) => {
203
+ ...Object.entries(clone(browser.__propertiesObject__)).reduce((commands, [name, descriptor]) => {
204
204
  if (!browserCommandKeys.includes(name)) {
205
205
  commands[name] = descriptor;
206
206
  }
@@ -239,7 +239,7 @@ var getElements = function getElements2(selector, elemResponse, props = { isReac
239
239
  const elementInstance = element(this.sessionId, elementErrorHandler(wrapCommand));
240
240
  const origAddCommand = elementInstance.addCommand.bind(elementInstance);
241
241
  elementInstance.addCommand = (name, fn) => {
242
- browser2.__propertiesObject__[name] = { value: fn };
242
+ browser.__propertiesObject__[name] = { value: fn };
243
243
  origAddCommand(name, fn);
244
244
  };
245
245
  return elementInstance;
@@ -1129,8 +1129,8 @@ var ClockManager = class {
1129
1129
  #browser;
1130
1130
  #resetFn = () => Promise.resolve();
1131
1131
  #isInstalled = false;
1132
- constructor(browser2) {
1133
- this.#browser = browser2;
1132
+ constructor(browser) {
1133
+ this.#browser = browser;
1134
1134
  }
1135
1135
  /**
1136
1136
  * Install fake timers on the browser. If you call the `emulate` command, WebdriverIO will automatically install
@@ -2578,13 +2578,13 @@ var deviceDescriptorsSource = {
2578
2578
  };
2579
2579
 
2580
2580
  // src/commands/browser/emulate.ts
2581
- function storeRestoreFunction(browser2, scope, fn) {
2582
- if (!restoreFunctions.has(browser2)) {
2583
- restoreFunctions.set(browser2, /* @__PURE__ */ new Map());
2581
+ function storeRestoreFunction(browser, scope, fn) {
2582
+ if (!restoreFunctions.has(browser)) {
2583
+ restoreFunctions.set(browser, /* @__PURE__ */ new Map());
2584
2584
  }
2585
- const restoreFunctionsList = restoreFunctions.get(browser2)?.get(scope);
2585
+ const restoreFunctionsList = restoreFunctions.get(browser)?.get(scope);
2586
2586
  const updatedList = restoreFunctionsList ? [...restoreFunctionsList, fn] : [fn];
2587
- restoreFunctions.get(browser2)?.set(scope, updatedList);
2587
+ restoreFunctions.get(browser)?.set(scope, updatedList);
2588
2588
  }
2589
2589
  async function emulate(scope, options) {
2590
2590
  if (!this.isBidi) {
@@ -2975,20 +2975,20 @@ var ReferenceValue = class {
2975
2975
 
2976
2976
  // src/context.ts
2977
2977
  var contextManager = /* @__PURE__ */ new Map();
2978
- function getContextManager(browser2) {
2979
- const existingContextManager = contextManager.get(browser2);
2978
+ function getContextManager(browser) {
2979
+ const existingContextManager = contextManager.get(browser);
2980
2980
  if (existingContextManager) {
2981
2981
  return existingContextManager;
2982
2982
  }
2983
- const newContext = new ContextManager(browser2);
2984
- contextManager.set(browser2, newContext);
2983
+ const newContext = new ContextManager(browser);
2984
+ contextManager.set(browser, newContext);
2985
2985
  return newContext;
2986
2986
  }
2987
2987
  var ContextManager = class {
2988
2988
  #browser;
2989
2989
  #currentContext;
2990
- constructor(browser2) {
2991
- this.#browser = browser2;
2990
+ constructor(browser) {
2991
+ this.#browser = browser;
2992
2992
  if (!this.#isEnabled()) {
2993
2993
  return;
2994
2994
  }
@@ -2996,7 +2996,7 @@ var ContextManager = class {
2996
2996
  if (event.command === "switchToWindow") {
2997
2997
  this.setCurrentContext(event.body.handle);
2998
2998
  }
2999
- if (event.command === "switchToParentFrame") {
2999
+ if (event.command === "switchToParentFrame" || event.command === "refresh") {
3000
3000
  this.#currentContext = void 0;
3001
3001
  }
3002
3002
  });
@@ -3005,7 +3005,7 @@ var ContextManager = class {
3005
3005
  * Only run this session helper if BiDi is enabled and we're not in unit tests.
3006
3006
  */
3007
3007
  #isEnabled() {
3008
- return !process.env.WDIO_UNIT_TESTS && browser.isBidi;
3008
+ return !process.env.WDIO_UNIT_TESTS && this.#browser.isBidi;
3009
3009
  }
3010
3010
  /**
3011
3011
  * set context at the start of the session
@@ -3034,19 +3034,19 @@ import logger4 from "@wdio/logger";
3034
3034
  var polyfillManager = /* @__PURE__ */ new Map();
3035
3035
  var log4 = logger4("webdriverio:PolyfillManager");
3036
3036
  var NAME_POLYFILL = "var __defProp = Object.defineProperty;var __name = function (target, value) { return __defProp(target, 'name', { value: value, configurable: true }); };var __globalThis = (typeof globalThis === 'object' && globalThis) || (typeof window === 'object' && window);__globalThis.__name = __name;";
3037
- function getPolyfillManager(browser2) {
3038
- const existingPolyfillManager = polyfillManager.get(browser2);
3037
+ function getPolyfillManager(browser) {
3038
+ const existingPolyfillManager = polyfillManager.get(browser);
3039
3039
  if (existingPolyfillManager) {
3040
3040
  return existingPolyfillManager;
3041
3041
  }
3042
- const newContext = new PolyfillManager(browser2);
3043
- polyfillManager.set(browser2, newContext);
3042
+ const newContext = new PolyfillManager(browser);
3043
+ polyfillManager.set(browser, newContext);
3044
3044
  return newContext;
3045
3045
  }
3046
3046
  var PolyfillManager = class {
3047
3047
  #initialize;
3048
- constructor(browser2) {
3049
- if (!browser2.isBidi || process.env.WDIO_UNIT_TESTS || browser2.options?.automationProtocol !== "webdriver") {
3048
+ constructor(browser) {
3049
+ if (!browser.isBidi || process.env.WDIO_UNIT_TESTS || browser.options?.automationProtocol !== "webdriver") {
3050
3050
  this.#initialize = Promise.resolve(true);
3051
3051
  return;
3052
3052
  }
@@ -3055,8 +3055,8 @@ var PolyfillManager = class {
3055
3055
  return closure();
3056
3056
  };
3057
3057
  this.#initialize = Promise.all([
3058
- browser2.addInitScript(polyfill, NAME_POLYFILL),
3059
- browser2.execute(polyfill, NAME_POLYFILL)
3058
+ browser.addInitScript(polyfill, NAME_POLYFILL),
3059
+ browser.execute(polyfill, NAME_POLYFILL)
3060
3060
  ]).then(() => {
3061
3061
  log4.info("polyfill script added");
3062
3062
  return true;
@@ -3073,8 +3073,8 @@ async function execute(script, ...args) {
3073
3073
  throw new Error("number or type of arguments don't agree with execute protocol command");
3074
3074
  }
3075
3075
  if (this.isBidi && !this.isMultiremote) {
3076
- const browser2 = getBrowserObject2(this);
3077
- const contextManager2 = getContextManager(browser2);
3076
+ const browser = getBrowserObject2(this);
3077
+ const contextManager2 = getContextManager(browser);
3078
3078
  const context = await contextManager2.getCurrentContext();
3079
3079
  const userScript = typeof script === "string" ? new Function(script) : script;
3080
3080
  const functionDeclaration = new Function(`
@@ -3088,7 +3088,7 @@ async function execute(script, ...args) {
3088
3088
  context
3089
3089
  }
3090
3090
  };
3091
- const result = await browser2.scriptCallFunction(params);
3091
+ const result = await browser.scriptCallFunction(params);
3092
3092
  return parseScriptResult(params, result);
3093
3093
  }
3094
3094
  if (typeof script === "function") {
@@ -3107,8 +3107,8 @@ async function executeAsync(script, ...args) {
3107
3107
  throw new Error("number or type of arguments don't agree with execute protocol command");
3108
3108
  }
3109
3109
  if (this.isBidi && !this.isMultiremote) {
3110
- const browser2 = getBrowserObject3(this);
3111
- const contextManager2 = getContextManager(browser2);
3110
+ const browser = getBrowserObject3(this);
3111
+ const contextManager2 = getContextManager(browser);
3112
3112
  const context = await contextManager2.getCurrentContext();
3113
3113
  const userScript = typeof script === "string" ? new Function(script) : script;
3114
3114
  const functionDeclaration = new Function(`
@@ -3130,7 +3130,7 @@ async function executeAsync(script, ...args) {
3130
3130
  context
3131
3131
  }
3132
3132
  };
3133
- const result = await browser2.scriptCallFunction(params);
3133
+ const result = await browser.scriptCallFunction(params);
3134
3134
  return parseScriptResult(params, result);
3135
3135
  }
3136
3136
  if (typeof script === "function") {
@@ -3281,8 +3281,8 @@ async function getPuppeteer() {
3281
3281
  // src/commands/browser/getWindowSize.ts
3282
3282
  import { getBrowserObject as getBrowserObject4 } from "@wdio/utils";
3283
3283
  async function getWindowSize() {
3284
- const browser2 = getBrowserObject4(this);
3285
- const { width, height } = await browser2.getWindowRect();
3284
+ const browser = getBrowserObject4(this);
3285
+ const { width, height } = await browser.getWindowRect();
3286
3286
  return { width, height };
3287
3287
  }
3288
3288
 
@@ -3491,18 +3491,18 @@ var WebDriverInterception = class _WebDriverInterception {
3491
3491
  #requestOverwrites = [];
3492
3492
  #respondOverwrites = [];
3493
3493
  #calls = [];
3494
- constructor(pattern, mockId, filterOptions, browser2) {
3494
+ constructor(pattern, mockId, filterOptions, browser) {
3495
3495
  this.#pattern = pattern;
3496
3496
  this.#mockId = mockId;
3497
3497
  this.#filterOptions = filterOptions;
3498
- this.#browser = browser2;
3499
- browser2.on("network.beforeRequestSent", this.#handleBeforeRequestSent.bind(this));
3500
- browser2.on("network.responseStarted", this.#handleResponseStarted.bind(this));
3498
+ this.#browser = browser;
3499
+ browser.on("network.beforeRequestSent", this.#handleBeforeRequestSent.bind(this));
3500
+ browser.on("network.responseStarted", this.#handleResponseStarted.bind(this));
3501
3501
  }
3502
- static async initiate(url6, filterOptions, browser2) {
3502
+ static async initiate(url6, filterOptions, browser) {
3503
3503
  const pattern = parseUrlPattern(url6);
3504
3504
  if (!hasSubscribedToEvents) {
3505
- await browser2.sessionSubscribe({
3505
+ await browser.sessionSubscribe({
3506
3506
  events: [
3507
3507
  "network.beforeRequestSent",
3508
3508
  "network.responseStarted"
@@ -3511,7 +3511,7 @@ var WebDriverInterception = class _WebDriverInterception {
3511
3511
  log7.info("subscribed to network events");
3512
3512
  hasSubscribedToEvents = true;
3513
3513
  }
3514
- const interception = await browser2.networkAddIntercept({
3514
+ const interception = await browser.networkAddIntercept({
3515
3515
  phases: ["beforeRequestSent", "responseStarted"],
3516
3516
  urlPatterns: [{
3517
3517
  type: "pattern",
@@ -3522,7 +3522,7 @@ var WebDriverInterception = class _WebDriverInterception {
3522
3522
  search: getPatternParam(pattern, "search")
3523
3523
  }]
3524
3524
  });
3525
- return new _WebDriverInterception(pattern, interception.intercept, filterOptions, browser2);
3525
+ return new _WebDriverInterception(pattern, interception.intercept, filterOptions, browser);
3526
3526
  }
3527
3527
  #handleBeforeRequestSent(request) {
3528
3528
  if (!this.#isRequestMatching(request)) {
@@ -3798,8 +3798,8 @@ async function mock(url6, filterOptions) {
3798
3798
  if (!this.isBidi) {
3799
3799
  throw new Error("Mocking is only supported when running tests using WebDriver Bidi");
3800
3800
  }
3801
- const browser2 = getBrowserObject5(this);
3802
- const contextManager2 = getContextManager(browser2);
3801
+ const browser = getBrowserObject5(this);
3802
+ const contextManager2 = getContextManager(browser);
3803
3803
  const context = await contextManager2.getCurrentContext();
3804
3804
  if (!SESSION_MOCKS[context]) {
3805
3805
  SESSION_MOCKS[context] = /* @__PURE__ */ new Set();
@@ -4021,8 +4021,8 @@ async function saveScreenshot(filepath) {
4021
4021
  await assertDirectoryExists(absoluteFilepath);
4022
4022
  let screenBuffer;
4023
4023
  if (this.isBidi) {
4024
- const browser2 = getBrowserObject6(this);
4025
- const contextManager2 = getContextManager(browser2);
4024
+ const browser = getBrowserObject6(this);
4025
+ const contextManager2 = getContextManager(browser);
4026
4026
  const context = await contextManager2.getCurrentContext();
4027
4027
  const { data } = await this.browsingContextCaptureScreenshot({ context });
4028
4028
  screenBuffer = data;
@@ -4132,8 +4132,8 @@ async function setWindowSize(width, height) {
4132
4132
  if (width < minWindowSize2 || width > maxWindowSize2 || height < minWindowSize2 || height > maxWindowSize2) {
4133
4133
  throw new Error("setWindowSize expects width and height to be a number in the 0 to 2^31 \u2212 1 range");
4134
4134
  }
4135
- const browser2 = getBrowserObject7(this);
4136
- await browser2.setWindowRect(null, null, width, height);
4135
+ const browser = getBrowserObject7(this);
4136
+ await browser.setWindowRect(null, null, width, height);
4137
4137
  }
4138
4138
 
4139
4139
  // src/commands/browser/switchWindow.ts
@@ -4291,6 +4291,9 @@ async function switchFrame(context) {
4291
4291
  }
4292
4292
  if (typeof context === "object" && typeof context.getElement === "function") {
4293
4293
  const element = await context.getElement();
4294
+ await element.waitForExist({
4295
+ timeoutMsg: `Can't switch to frame with selector ${element.selector} because it doesn't exist`
4296
+ });
4294
4297
  return switchToFrameUsingElement(this, element);
4295
4298
  }
4296
4299
  if (typeof context === "function") {
@@ -4319,18 +4322,18 @@ async function switchFrame(context) {
4319
4322
  `Invalid type for context parameter: ${typeof context}, expected one of number, string or null. Check out our docs: https://webdriver.io/docs/api/browser/switchToFrame.html`
4320
4323
  );
4321
4324
  }
4322
- function switchToFrameHelper(browser2, context) {
4323
- const sessionContext = getContextManager(browser2);
4325
+ function switchToFrameHelper(browser, context) {
4326
+ const sessionContext = getContextManager(browser);
4324
4327
  sessionContext.setCurrentContext(context);
4325
4328
  }
4326
- async function switchToFrameUsingElement(browser2, element) {
4327
- const frame = await browser2.execute(
4329
+ async function switchToFrameUsingElement(browser, element) {
4330
+ const frame = await browser.execute(
4328
4331
  (iframe) => iframe.contentWindow,
4329
4332
  element
4330
4333
  );
4331
- switchToFrameHelper(browser2, frame.context);
4334
+ switchToFrameHelper(browser, frame.context);
4332
4335
  const elementId = element[ELEMENT_KEY8];
4333
- await switchToFrame(browser2, { [ELEMENT_KEY8]: elementId });
4336
+ await switchToFrame(browser, { [ELEMENT_KEY8]: elementId });
4334
4337
  return frame.context;
4335
4338
  }
4336
4339
  function byUrl(context, url6) {
@@ -4356,8 +4359,8 @@ function findContext(urlOrId, contexts, matcher) {
4356
4359
  }
4357
4360
  return void 0;
4358
4361
  }
4359
- async function getFlatContextTree(browser2) {
4360
- const tree = await browser2.browsingContextGetTree({});
4362
+ async function getFlatContextTree(browser) {
4363
+ const tree = await browser.browsingContextGetTree({});
4361
4364
  const mapContext = (context) => [
4362
4365
  context.context,
4363
4366
  ...(context.children || []).map(mapContext)
@@ -4369,9 +4372,9 @@ async function getFlatContextTree(browser2) {
4369
4372
  }, {});
4370
4373
  return allContexts;
4371
4374
  }
4372
- function switchToFrame(browser2, frame) {
4375
+ function switchToFrame(browser, frame) {
4373
4376
  process.env.DISABLE_WEBDRIVERIO_DEPRECATION_WARNINGS = "true";
4374
- return browser2.switchToFrame(frame).finally(() => {
4377
+ return browser.switchToFrame(frame).finally(() => {
4375
4378
  delete process.env.DISABLE_WEBDRIVERIO_DEPRECATION_WARNINGS;
4376
4379
  });
4377
4380
  }
@@ -4382,8 +4385,8 @@ import { getBrowserObject as getBrowserObject8 } from "@wdio/utils";
4382
4385
  var log14 = logger14("webdriverio:throttle");
4383
4386
  async function throttle(params) {
4384
4387
  log14.warn('Command "throttle" is deprecated and will be removed with the next major version release! Use `throttleNetwork` instead.');
4385
- const browser2 = getBrowserObject8(this);
4386
- await browser2.throttleNetwork(params);
4388
+ const browser = getBrowserObject8(this);
4389
+ await browser.throttleNetwork(params);
4387
4390
  }
4388
4391
 
4389
4392
  // src/commands/browser/throttleCPU.ts
@@ -4482,8 +4485,8 @@ async function throttleNetwork(params) {
4482
4485
  throw new Error(`Invalid parameter for "throttleNetwork". Expected it to be typeof object or one of the following values: ${NETWORK_PRESET_TYPES.join(", ")} but found "${params}"`);
4483
4486
  }
4484
4487
  if (this.isSauce) {
4485
- const browser2 = getBrowserObject9(this);
4486
- await browser2.sauceThrottleNetwork(params);
4488
+ const browser = getBrowserObject9(this);
4489
+ await browser.sauceThrottleNetwork(params);
4487
4490
  return null;
4488
4491
  }
4489
4492
  const failedConnectionMessage = "No Puppeteer connection could be established which is required to use this command";
@@ -4528,13 +4531,13 @@ async function uploadFile(localPath) {
4528
4531
 
4529
4532
  // src/networkManager.ts
4530
4533
  var networkManager = /* @__PURE__ */ new Map();
4531
- function getNetworkManager(browser2) {
4532
- const existingNetworkManager = networkManager.get(browser2);
4534
+ function getNetworkManager(browser) {
4535
+ const existingNetworkManager = networkManager.get(browser);
4533
4536
  if (existingNetworkManager) {
4534
4537
  return existingNetworkManager;
4535
4538
  }
4536
- const newContext = new NetworkManager(browser2);
4537
- networkManager.set(browser2, newContext);
4539
+ const newContext = new NetworkManager(browser);
4540
+ networkManager.set(browser, newContext);
4538
4541
  return newContext;
4539
4542
  }
4540
4543
  var UNKNOWN_NAVIGATION_ID = "UNKNOWN_NAVIGATION_ID";
@@ -4543,9 +4546,9 @@ var NetworkManager = class {
4543
4546
  #initialize;
4544
4547
  #requests = /* @__PURE__ */ new Map();
4545
4548
  #lastNetworkId;
4546
- constructor(browser2) {
4547
- this.#browser = browser2;
4548
- if (!browser2.isBidi || process.env.WDIO_UNIT_TESTS || browser2.options?.automationProtocol !== "webdriver") {
4549
+ constructor(browser) {
4550
+ this.#browser = browser;
4551
+ if (!browser.isBidi || process.env.WDIO_UNIT_TESTS || browser.options?.automationProtocol !== "webdriver") {
4549
4552
  this.#initialize = Promise.resolve(true);
4550
4553
  return;
4551
4554
  }
@@ -4934,9 +4937,9 @@ async function actionClick(element, options) {
4934
4937
  if (!buttonValue.includes(button)) {
4935
4938
  throw new Error("Button type not supported.");
4936
4939
  }
4937
- const browser2 = getBrowserObject10(element);
4940
+ const browser = getBrowserObject10(element);
4938
4941
  if (x || y) {
4939
- const { width, height } = await browser2.getElementRect(element.elementId);
4942
+ const { width, height } = await browser.getElementRect(element.elementId);
4940
4943
  if (x && x < -Math.floor(width / 2) || x && x > Math.floor(width / 2)) {
4941
4944
  log15.warn("x would cause a out of bounds error as it goes outside of element");
4942
4945
  }
@@ -4945,7 +4948,7 @@ async function actionClick(element, options) {
4945
4948
  }
4946
4949
  }
4947
4950
  const clickNested = async () => {
4948
- await browser2.action("pointer", {
4951
+ await browser.action("pointer", {
4949
4952
  parameters: { pointerType: "mouse" }
4950
4953
  }).move({ origin: element, x, y }).down({ button }).up({ button }).perform(skipRelease);
4951
4954
  };
@@ -5005,8 +5008,8 @@ async function custom$2(strategyName, ...strategyArguments) {
5005
5008
  // src/commands/element/doubleClick.ts
5006
5009
  import { getBrowserObject as getBrowserObject13 } from "@wdio/utils";
5007
5010
  async function doubleClick() {
5008
- const browser2 = getBrowserObject13(this);
5009
- return browser2.action("pointer", { parameters: { pointerType: "mouse" } }).move({ origin: this }).down().up().pause(10).down().up().perform();
5011
+ const browser = getBrowserObject13(this);
5012
+ return browser.action("pointer", { parameters: { pointerType: "mouse" } }).move({ origin: this }).down().up().pause(10).down().up().perform();
5010
5013
  }
5011
5014
 
5012
5015
  // src/commands/element/dragAndDrop.ts
@@ -5037,22 +5040,22 @@ async function dragAndDrop(target, { duration = 10 } = {}) {
5037
5040
  const targetOrigin = isMovingToElement ? targetRef : "pointer";
5038
5041
  const targetX = isMovingToElement ? 0 : moveToCoordinates.x;
5039
5042
  const targetY = isMovingToElement ? 0 : moveToCoordinates.y;
5040
- const browser2 = getBrowserObject14(this);
5041
- return browser2.action("pointer").move({ duration: 0, origin, x: 0, y: 0 }).down({ button: ACTION_BUTTON }).pause(10).move({ duration, origin: targetOrigin, x: targetX, y: targetY }).up({ button: ACTION_BUTTON }).perform();
5043
+ const browser = getBrowserObject14(this);
5044
+ return browser.action("pointer").move({ duration: 0, origin, x: 0, y: 0 }).down({ button: ACTION_BUTTON }).pause(10).move({ duration, origin: targetOrigin, x: targetX, y: targetY }).up({ button: ACTION_BUTTON }).perform();
5042
5045
  }
5043
5046
 
5044
5047
  // src/commands/element/execute.ts
5045
5048
  import { getBrowserObject as getBrowserObject15 } from "@wdio/utils";
5046
5049
  async function execute2(script, ...args) {
5047
- const browser2 = getBrowserObject15(this);
5048
- return browser2.execute(script, this, ...args);
5050
+ const browser = getBrowserObject15(this);
5051
+ return browser.execute(script, this, ...args);
5049
5052
  }
5050
5053
 
5051
5054
  // src/commands/element/executeAsync.ts
5052
5055
  import { getBrowserObject as getBrowserObject16 } from "@wdio/utils";
5053
5056
  async function executeAsync2(script, ...args) {
5054
- const browser2 = getBrowserObject16(this);
5055
- return browser2.executeAsync(script, this, ...args);
5057
+ const browser = getBrowserObject16(this);
5058
+ return browser.executeAsync(script, this, ...args);
5056
5059
  }
5057
5060
 
5058
5061
  // src/commands/element/getAttribute.ts
@@ -5126,9 +5129,9 @@ function mergeEqualSymmetricalValue(cssValues) {
5126
5129
  return newCssValues.join(" ");
5127
5130
  }
5128
5131
  async function getPseudoElementCSSValue(elem, options) {
5129
- const browser2 = getBrowserObject17(elem);
5132
+ const browser = getBrowserObject17(elem);
5130
5133
  const { cssProperty, pseudoElement } = options;
5131
- const cssValue2 = await browser2.execute(
5134
+ const cssValue2 = await browser.execute(
5132
5135
  (elem2, pseudoElement2, cssProperty2) => window.getComputedStyle(elem2, pseudoElement2)[cssProperty2],
5133
5136
  elem,
5134
5137
  pseudoElement,
@@ -5162,13 +5165,13 @@ import logger16 from "@wdio/logger";
5162
5165
  import customElementWrapper from "./scripts/customElement.js";
5163
5166
  var shadowRootManager = /* @__PURE__ */ new Map();
5164
5167
  var log16 = logger16("webdriverio:ShadowRootManager");
5165
- function getShadowRootManager(browser2) {
5166
- const existingShadowRootManager = shadowRootManager.get(browser2);
5168
+ function getShadowRootManager(browser) {
5169
+ const existingShadowRootManager = shadowRootManager.get(browser);
5167
5170
  if (existingShadowRootManager) {
5168
5171
  return existingShadowRootManager;
5169
5172
  }
5170
- const newContext = new ShadowRootManager(browser2);
5171
- shadowRootManager.set(browser2, newContext);
5173
+ const newContext = new ShadowRootManager(browser);
5174
+ shadowRootManager.set(browser, newContext);
5172
5175
  return newContext;
5173
5176
  }
5174
5177
  var ShadowRootManager = class {
@@ -5176,9 +5179,9 @@ var ShadowRootManager = class {
5176
5179
  #initialize;
5177
5180
  #shadowRoots = /* @__PURE__ */ new Map();
5178
5181
  #frameDepth = 0;
5179
- constructor(browser2) {
5180
- this.#browser = browser2;
5181
- if (!browser2.isBidi || process.env.WDIO_UNIT_TESTS || browser2.options?.automationProtocol !== "webdriver") {
5182
+ constructor(browser) {
5183
+ this.#browser = browser;
5184
+ if (!browser.isBidi || process.env.WDIO_UNIT_TESTS || browser.options?.automationProtocol !== "webdriver") {
5182
5185
  this.#initialize = Promise.resolve(true);
5183
5186
  return;
5184
5187
  }
@@ -5188,7 +5191,7 @@ var ShadowRootManager = class {
5188
5191
  this.#browser.on("log.entryAdded", this.handleLogEntry.bind(this));
5189
5192
  this.#browser.on("result", this.#commandResultHandler.bind(this));
5190
5193
  this.#browser.on("bidiCommand", this.#handleBidiCommand.bind(this));
5191
- browser2.scriptAddPreloadScript({
5194
+ browser.scriptAddPreloadScript({
5192
5195
  functionDeclaration: customElementWrapper.toString()
5193
5196
  });
5194
5197
  }
@@ -5418,7 +5421,7 @@ import getHTMLShadowScript from "./scripts/getHTMLShadow.js";
5418
5421
  var SHADOW_ID_ATTR_NAME = "data-wdio-shadow-id";
5419
5422
  var SHADOW_ID_ATTR = `[${SHADOW_ID_ATTR_NAME}]`;
5420
5423
  async function getHTML(options = {}) {
5421
- const browser2 = getBrowserObject18(this);
5424
+ const browser = getBrowserObject18(this);
5422
5425
  if (typeof options !== "object" && typeof options === "boolean") {
5423
5426
  options = { includeSelectorTag: options };
5424
5427
  } else if (typeof options !== "object") {
@@ -5432,7 +5435,7 @@ async function getHTML(options = {}) {
5432
5435
  excludeElements: []
5433
5436
  }, options);
5434
5437
  const basicGetHTML = (elementId, includeSelectorTag2) => {
5435
- return browser2.execute(getHTMLScript, {
5438
+ return browser.execute(getHTMLScript, {
5436
5439
  [ELEMENT_KEY12]: elementId,
5437
5440
  // w3c compatible
5438
5441
  ELEMENT: elementId
@@ -5448,12 +5451,12 @@ async function getHTML(options = {}) {
5448
5451
  );
5449
5452
  }
5450
5453
  const { load } = await import("cheerio");
5451
- const shadowRootManager2 = getShadowRootManager(browser2);
5452
- const contextManager2 = getContextManager(browser2);
5454
+ const shadowRootManager2 = getShadowRootManager(browser);
5455
+ const contextManager2 = getContextManager(browser);
5453
5456
  const context = await contextManager2.getCurrentContext();
5454
5457
  const shadowRootElementPairs = shadowRootManager2.getShadowElementPairsByContextId(context, this.elementId);
5455
5458
  const elementsWithShadowRootAndIdVerified = (await Promise.all(
5456
- shadowRootElementPairs.map(([elemId, elem]) => browser2.execute((elem2) => elem2.tagName, { [ELEMENT_KEY12]: elemId }).then(
5459
+ shadowRootElementPairs.map(([elemId, elem]) => browser.execute((elem2) => elem2.tagName, { [ELEMENT_KEY12]: elemId }).then(
5457
5460
  () => [elemId, elem],
5458
5461
  () => void 0
5459
5462
  ))
@@ -5462,7 +5465,7 @@ async function getHTML(options = {}) {
5462
5465
  { [ELEMENT_KEY12]: elemId },
5463
5466
  shadowId ? { [ELEMENT_KEY12]: shadowId } : void 0
5464
5467
  ]);
5465
- const { html, shadowElementHTML } = await browser2.execute(
5468
+ const { html, shadowElementHTML } = await browser.execute(
5466
5469
  getHTMLShadowScript,
5467
5470
  { [ELEMENT_KEY12]: this.elementId },
5468
5471
  includeSelectorTag,
@@ -5572,8 +5575,8 @@ async function isClickable() {
5572
5575
  if (this.isMobile && await this.getContext().catch(() => void 0) === "NATIVE_APP") {
5573
5576
  throw new Error("Method not supported in mobile native environment. It is unlikely that you need to use this command.");
5574
5577
  }
5575
- const browser2 = getBrowserObject19(this);
5576
- return browser2.execute(isElementClickableScript, {
5578
+ const browser = getBrowserObject19(this);
5579
+ return browser.execute(isElementClickableScript, {
5577
5580
  [ELEMENT_KEY13]: this.elementId,
5578
5581
  // w3c compatible
5579
5582
  ELEMENT: this.elementId
@@ -5586,12 +5589,12 @@ import { getBrowserObject as getBrowserObject20 } from "@wdio/utils";
5586
5589
  import isElementDisplayedScript from "./scripts/isElementDisplayed.js";
5587
5590
  import isElementInViewportScript from "./scripts/isElementInViewport.js";
5588
5591
  async function isDisplayed(commandParams = { withinViewport: false }) {
5589
- const browser2 = getBrowserObject20(this);
5592
+ const browser = getBrowserObject20(this);
5590
5593
  if (!await hasElementId(this)) {
5591
5594
  return false;
5592
5595
  }
5593
- const isNativeApplication = !browser2.capabilities.browserName;
5594
- if (browser2.isMobile && isNativeApplication) {
5596
+ const isNativeApplication = !browser.capabilities.browserName;
5597
+ if (browser.isMobile && isNativeApplication) {
5595
5598
  if (commandParams?.withinViewport) {
5596
5599
  throw new Error(
5597
5600
  "Cannot determine element visibility within viewport for native mobile apps as it is not feasible to determine full vertical and horizontal application bounds. In most cases a basic visibility check should suffice."
@@ -5599,9 +5602,9 @@ async function isDisplayed(commandParams = { withinViewport: false }) {
5599
5602
  }
5600
5603
  return await this.isElementDisplayed(this.elementId);
5601
5604
  }
5602
- const isDisplayed2 = await browser2.execute(isElementDisplayedScript, this);
5605
+ const isDisplayed2 = await browser.execute(isElementDisplayedScript, this);
5603
5606
  if (isDisplayed2 && commandParams?.withinViewport) {
5604
- return browser2.execute(isElementInViewportScript, this);
5607
+ return browser.execute(isElementInViewportScript, this);
5605
5608
  }
5606
5609
  return isDisplayed2;
5607
5610
  }
@@ -5621,9 +5624,9 @@ var getWebElement = (el) => ({
5621
5624
  // jsonwp compatible
5622
5625
  });
5623
5626
  async function isEqual(el) {
5624
- const browser2 = getBrowserObject21(this);
5625
- if (browser2.isMobile) {
5626
- const context = await browser2.getContext().catch(() => void 0);
5627
+ const browser = getBrowserObject21(this);
5628
+ if (browser.isMobile) {
5629
+ const context = await browser.getContext().catch(() => void 0);
5627
5630
  const contextId = typeof context === "string" ? context : context?.id;
5628
5631
  if (contextId && contextId.toLowerCase().includes("native")) {
5629
5632
  return this.elementId === el.elementId;
@@ -5631,7 +5634,7 @@ async function isEqual(el) {
5631
5634
  }
5632
5635
  let result;
5633
5636
  try {
5634
- result = await browser2.execute(
5637
+ result = await browser.execute(
5635
5638
  /* istanbul ignore next */
5636
5639
  function(el1, el2) {
5637
5640
  return el1 === el2;
@@ -5662,8 +5665,8 @@ import { ELEMENT_KEY as ELEMENT_KEY15 } from "webdriver";
5662
5665
  import { getBrowserObject as getBrowserObject22 } from "@wdio/utils";
5663
5666
  import isFocusedScript from "./scripts/isFocused.js";
5664
5667
  async function isFocused() {
5665
- const browser2 = await getBrowserObject22(this);
5666
- return browser2.execute(isFocusedScript, {
5668
+ const browser = await getBrowserObject22(this);
5669
+ return browser.execute(isFocusedScript, {
5667
5670
  [ELEMENT_KEY15]: this.elementId,
5668
5671
  // w3c compatible
5669
5672
  ELEMENT: this.elementId
@@ -5681,8 +5684,8 @@ import { ELEMENT_KEY as ELEMENT_KEY16 } from "webdriver";
5681
5684
  import { getBrowserObject as getBrowserObject23 } from "@wdio/utils";
5682
5685
  import isElementStable from "./scripts/isElementStable.js";
5683
5686
  async function isStable() {
5684
- const browser2 = getBrowserObject23(this);
5685
- return await browser2.executeAsync(isElementStable, {
5687
+ const browser = getBrowserObject23(this);
5688
+ return await browser.executeAsync(isElementStable, {
5686
5689
  [ELEMENT_KEY16]: this.elementId,
5687
5690
  // w3c compatible
5688
5691
  ELEMENT: this.elementId
@@ -5695,9 +5698,9 @@ import logger17 from "@wdio/logger";
5695
5698
  import { getBrowserObject as getBrowserObject24 } from "@wdio/utils";
5696
5699
  var log17 = logger17("webdriver");
5697
5700
  async function moveTo({ xOffset, yOffset } = {}) {
5698
- const browser2 = getBrowserObject24(this);
5701
+ const browser = getBrowserObject24(this);
5699
5702
  if (xOffset || yOffset) {
5700
- const { width, height } = await browser2.getElementRect(this.elementId);
5703
+ const { width, height } = await browser.getElementRect(this.elementId);
5701
5704
  if (xOffset && xOffset < -Math.floor(width / 2) || xOffset && xOffset > Math.floor(width / 2)) {
5702
5705
  log17.warn("xOffset would cause a out of bounds error as it goes outside of element");
5703
5706
  }
@@ -5706,7 +5709,7 @@ async function moveTo({ xOffset, yOffset } = {}) {
5706
5709
  }
5707
5710
  }
5708
5711
  const moveToNested = async () => {
5709
- await browser2.action("pointer", { parameters: { pointerType: "mouse" } }).move({ origin: this, x: xOffset || 0, y: yOffset || 0 }).perform();
5712
+ await browser.action("pointer", { parameters: { pointerType: "mouse" } }).move({ origin: this, x: xOffset || 0, y: yOffset || 0 }).perform();
5710
5713
  };
5711
5714
  try {
5712
5715
  await moveToNested();
@@ -5758,10 +5761,10 @@ async function react$$2(selector, { props = {}, state = {} } = {}) {
5758
5761
  const resqScriptPath = url4.fileURLToPath(await resolve3("resq", import.meta.url));
5759
5762
  resqScript3 = (await fs8.readFile(resqScriptPath)).toString();
5760
5763
  }
5761
- const browser2 = await getBrowserObject25(this);
5764
+ const browser = await getBrowserObject25(this);
5762
5765
  await this.executeScript(resqScript3.toString(), []);
5763
- await browser2.execute(waitToLoadReact3);
5764
- const res = await browser2.execute(
5766
+ await browser.execute(waitToLoadReact3);
5767
+ const res = await browser.execute(
5765
5768
  react$$Script2,
5766
5769
  selector,
5767
5770
  props,
@@ -5784,10 +5787,10 @@ async function react$2(selector, { props = {}, state = {} } = {}) {
5784
5787
  const resqScriptPath = url5.fileURLToPath(await resolve4("resq", import.meta.url));
5785
5788
  resqScript4 = (await fs9.readFile(resqScriptPath)).toString();
5786
5789
  }
5787
- const browser2 = await getBrowserObject26(this);
5790
+ const browser = await getBrowserObject26(this);
5788
5791
  await this.executeScript(resqScript4.toString(), []);
5789
- await browser2.execute(waitToLoadReact4);
5790
- const res = await browser2.execute(
5792
+ await browser.execute(waitToLoadReact4);
5793
+ const res = await browser.execute(
5791
5794
  react$Script2,
5792
5795
  selector,
5793
5796
  props,
@@ -5817,8 +5820,8 @@ import { ELEMENT_KEY as ELEMENT_KEY17 } from "webdriver";
5817
5820
  import { getBrowserObject as getBrowserObject27 } from "@wdio/utils";
5818
5821
  var log18 = logger18("webdriverio");
5819
5822
  function scrollIntoViewWeb(options = { block: "start", inline: "nearest" }) {
5820
- const browser2 = getBrowserObject27(this);
5821
- return browser2.execute(
5823
+ const browser = getBrowserObject27(this);
5824
+ return browser.execute(
5822
5825
  (elem, options2) => elem.scrollIntoView(options2),
5823
5826
  {
5824
5827
  [ELEMENT_KEY17]: this.elementId,
@@ -5830,14 +5833,14 @@ function scrollIntoViewWeb(options = { block: "start", inline: "nearest" }) {
5830
5833
  );
5831
5834
  }
5832
5835
  async function scrollIntoView(options = { block: "start", inline: "nearest" }) {
5833
- const browser2 = getBrowserObject27(this);
5834
- if (browser2.isMobile) {
5836
+ const browser = getBrowserObject27(this);
5837
+ if (browser.isMobile) {
5835
5838
  return scrollIntoViewWeb.call(this, options);
5836
5839
  }
5837
5840
  try {
5838
- const elemRect = await browser2.getElementRect(this.elementId);
5839
- const viewport = await browser2.getWindowSize();
5840
- let [scrollX, scrollY] = await browser2.execute(() => [
5841
+ const elemRect = await browser.getElementRect(this.elementId);
5842
+ const viewport = await browser.getWindowSize();
5843
+ let [scrollX, scrollY] = await browser.execute(() => [
5841
5844
  window.scrollX,
5842
5845
  window.scrollY
5843
5846
  ]);
@@ -5872,7 +5875,7 @@ async function scrollIntoView(options = { block: "start", inline: "nearest" }) {
5872
5875
  }
5873
5876
  deltaX = Math.round(deltaX - scrollX);
5874
5877
  deltaY = Math.round(deltaY - scrollY);
5875
- await browser2.action("wheel").scroll({ duration: 0, x: deltaX, y: deltaY, origin: this }).perform();
5878
+ await browser.action("wheel").scroll({ duration: 0, x: deltaX, y: deltaY, origin: this }).perform();
5876
5879
  } catch (err) {
5877
5880
  log18.warn(
5878
5881
  `Failed to execute "scrollIntoView" using WebDriver Actions API: ${err.message}!
@@ -6269,11 +6272,11 @@ var createRoleBaseXpathSelector = (role) => {
6269
6272
  // src/commands/element/shadow$$.ts
6270
6273
  var log19 = logger19("webdriverio");
6271
6274
  async function shadow$$(selector) {
6272
- const browser2 = getBrowserObject28(this);
6275
+ const browser = getBrowserObject28(this);
6273
6276
  try {
6274
- const shadowRoot = await browser2.getElementShadowRoot(this.elementId);
6277
+ const shadowRoot = await browser.getElementShadowRoot(this.elementId);
6275
6278
  const { using, value } = findStrategy(selector, this.isW3C, this.isMobile);
6276
- const res = await browser2.findElementsFromShadowRoot(shadowRoot[SHADOW_ELEMENT_KEY], using, value);
6279
+ const res = await browser.findElementsFromShadowRoot(shadowRoot[SHADOW_ELEMENT_KEY], using, value);
6277
6280
  const elements = await getElements.call(this, selector, res, { isShadowElement: true });
6278
6281
  return enhanceElementsArray(elements, this, selector);
6279
6282
  } catch (err) {
@@ -6292,11 +6295,11 @@ import { shadowFnFactory as shadowFnFactory2 } from "./scripts/shadowFnFactory.j
6292
6295
  import { getBrowserObject as getBrowserObject29 } from "@wdio/utils";
6293
6296
  var log20 = logger20("webdriverio");
6294
6297
  async function shadow$(selector) {
6295
- const browser2 = getBrowserObject29(this);
6298
+ const browser = getBrowserObject29(this);
6296
6299
  try {
6297
- const shadowRoot = await browser2.getElementShadowRoot(this.elementId);
6300
+ const shadowRoot = await browser.getElementShadowRoot(this.elementId);
6298
6301
  const { using, value } = findStrategy(selector, this.isW3C, this.isMobile);
6299
- const res = await browser2.findElementFromShadowRoot(shadowRoot[SHADOW_ELEMENT_KEY2], using, value);
6302
+ const res = await browser.findElementFromShadowRoot(shadowRoot[SHADOW_ELEMENT_KEY2], using, value);
6300
6303
  return getElement.call(this, selector, res, { isShadowElement: true });
6301
6304
  } catch (err) {
6302
6305
  log20.warn(
@@ -6723,9 +6726,9 @@ function transformClassicToBidiSelector(using, value) {
6723
6726
  throw new Error(`Can't transform classic selector ${using} to Bidi selector`);
6724
6727
  }
6725
6728
  async function findDeepElement(selector) {
6726
- const browser2 = getBrowserObject30(this);
6727
- const shadowRootManager2 = getShadowRootManager(browser2);
6728
- const contextManager2 = getContextManager(browser2);
6729
+ const browser = getBrowserObject30(this);
6730
+ const shadowRootManager2 = getShadowRootManager(browser);
6731
+ const contextManager2 = getContextManager(browser);
6729
6732
  const context = await contextManager2.getCurrentContext();
6730
6733
  const shadowRoots = shadowRootManager2.getShadowElementsByContextId(
6731
6734
  context,
@@ -6734,7 +6737,7 @@ async function findDeepElement(selector) {
6734
6737
  const { using, value } = findStrategy(selector, this.isW3C, this.isMobile);
6735
6738
  const locator = transformClassicToBidiSelector(using, value);
6736
6739
  const startNodes = shadowRoots.length > 0 ? shadowRoots.map((shadowRootNodeId) => ({ sharedId: shadowRootNodeId })) : this.elementId ? [{ sharedId: this.elementId }] : void 0;
6737
- const deepElementResult = await browser2.browsingContextLocateNodes({ locator, context, startNodes }).then(async (result) => {
6740
+ const deepElementResult = await browser.browsingContextLocateNodes({ locator, context, startNodes }).then(async (result) => {
6738
6741
  const nodes = result.nodes.filter((node) => Boolean(node.sharedId)).map((node) => ({
6739
6742
  [ELEMENT_KEY18]: node.sharedId,
6740
6743
  locator
@@ -6743,7 +6746,7 @@ async function findDeepElement(selector) {
6743
6746
  return nodes[0];
6744
6747
  }
6745
6748
  const scopedNodes = await Promise.all(nodes.map(async (node) => {
6746
- const isIn = await browser2.execute(
6749
+ const isIn = await browser.execute(
6747
6750
  elementContains,
6748
6751
  { [ELEMENT_KEY18]: this.elementId },
6749
6752
  node
@@ -6753,7 +6756,7 @@ async function findDeepElement(selector) {
6753
6756
  return scopedNodes[0];
6754
6757
  }, (err) => {
6755
6758
  log21.warn(`Failed to execute browser.browsingContextLocateNodes({ ... }) due to ${err}, falling back to regular WebDriver Classic command`);
6756
- return this && "elementId" in this && this.elementId ? this.findElementFromElement(this.elementId, using, value) : browser2.findElement(using, value);
6759
+ return this && "elementId" in this && this.elementId ? this.findElementFromElement(this.elementId, using, value) : browser.findElement(using, value);
6757
6760
  });
6758
6761
  if (!deepElementResult) {
6759
6762
  return new Error(`Couldn't find element with selector "${selector}"`);
@@ -6761,9 +6764,9 @@ async function findDeepElement(selector) {
6761
6764
  return deepElementResult;
6762
6765
  }
6763
6766
  async function findDeepElements(selector) {
6764
- const browser2 = getBrowserObject30(this);
6765
- const shadowRootManager2 = getShadowRootManager(browser2);
6766
- const contextManager2 = getContextManager(browser2);
6767
+ const browser = getBrowserObject30(this);
6768
+ const shadowRootManager2 = getShadowRootManager(browser);
6769
+ const contextManager2 = getContextManager(browser);
6767
6770
  const context = await contextManager2.getCurrentContext();
6768
6771
  const shadowRoots = shadowRootManager2.getShadowElementsByContextId(
6769
6772
  context,
@@ -6772,7 +6775,7 @@ async function findDeepElements(selector) {
6772
6775
  const { using, value } = findStrategy(selector, this.isW3C, this.isMobile);
6773
6776
  const locator = transformClassicToBidiSelector(using, value);
6774
6777
  const startNodes = shadowRoots.length > 0 ? shadowRoots.map((shadowRootNodeId) => ({ sharedId: shadowRootNodeId })) : this.elementId ? [{ sharedId: this.elementId }] : void 0;
6775
- const deepElementResult = await browser2.browsingContextLocateNodes({ locator, context, startNodes }).then(async (result) => {
6778
+ const deepElementResult = await browser.browsingContextLocateNodes({ locator, context, startNodes }).then(async (result) => {
6776
6779
  const nodes = result.nodes.filter((node) => Boolean(node.sharedId)).map((node) => ({
6777
6780
  [ELEMENT_KEY18]: node.sharedId,
6778
6781
  locator
@@ -6781,7 +6784,7 @@ async function findDeepElements(selector) {
6781
6784
  return nodes;
6782
6785
  }
6783
6786
  const scopedNodes = await Promise.all(nodes.map(async (node) => {
6784
- const isIn = await browser2.execute(
6787
+ const isIn = await browser.execute(
6785
6788
  elementContains,
6786
6789
  { [ELEMENT_KEY18]: this.elementId },
6787
6790
  node
@@ -6791,7 +6794,7 @@ async function findDeepElements(selector) {
6791
6794
  return scopedNodes;
6792
6795
  }, (err) => {
6793
6796
  log21.warn(`Failed to execute browser.browsingContextLocateNodes({ ... }) due to ${err}, falling back to regular WebDriver Classic command`);
6794
- return this && "elementId" in this && this.elementId ? this.findElementsFromElement(this.elementId, using, value) : browser2.findElements(using, value);
6797
+ return this && "elementId" in this && this.elementId ? this.findElementsFromElement(this.elementId, using, value) : browser.findElements(using, value);
6795
6798
  });
6796
6799
  return deepElementResult;
6797
6800
  }
@@ -7291,7 +7294,7 @@ var NOOP2 = () => {
7291
7294
  var ProtocolStub = class {
7292
7295
  static async newSession(options) {
7293
7296
  const capabilities = emulateSessionCapabilities(options.capabilities);
7294
- const browser2 = {
7297
+ const browser = {
7295
7298
  options,
7296
7299
  capabilities,
7297
7300
  requestedCapabilities: capabilities,
@@ -7305,9 +7308,9 @@ var ProtocolStub = class {
7305
7308
  off: NOOP2,
7306
7309
  ...capabilitiesEnvironmentDetector(capabilities)
7307
7310
  };
7308
- browser2.addCommand = (...args) => browser2.customCommands.push(args);
7309
- browser2.overwriteCommand = (...args) => browser2.overwrittenCommands.push(args);
7310
- return browser2;
7311
+ browser.addCommand = (...args) => browser.customCommands.push(args);
7312
+ browser.overwriteCommand = (...args) => browser.overwrittenCommands.push(args);
7313
+ return browser;
7311
7314
  }
7312
7315
  /**
7313
7316
  * added just in case user wants to somehow reload webdriver before it was started.
@@ -7355,22 +7358,22 @@ async function getProtocolDriver(options) {
7355
7358
 
7356
7359
  // src/dialog.ts
7357
7360
  var dialogManager = /* @__PURE__ */ new Map();
7358
- function getDialogManager(browser2) {
7359
- const existingDialogManager = dialogManager.get(browser2);
7361
+ function getDialogManager(browser) {
7362
+ const existingDialogManager = dialogManager.get(browser);
7360
7363
  if (existingDialogManager) {
7361
7364
  return existingDialogManager;
7362
7365
  }
7363
- const newContext = new DialogManager(browser2);
7364
- dialogManager.set(browser2, newContext);
7366
+ const newContext = new DialogManager(browser);
7367
+ dialogManager.set(browser, newContext);
7365
7368
  return newContext;
7366
7369
  }
7367
7370
  var DialogManager = class {
7368
7371
  #browser;
7369
7372
  #initialize;
7370
7373
  #autoHandleDialog = true;
7371
- constructor(browser2) {
7372
- this.#browser = browser2;
7373
- if (!browser2.isBidi || process.env.WDIO_UNIT_TESTS || browser2.options?.automationProtocol !== "webdriver") {
7374
+ constructor(browser) {
7375
+ this.#browser = browser;
7376
+ if (!browser.isBidi || process.env.WDIO_UNIT_TESTS || browser.options?.automationProtocol !== "webdriver") {
7374
7377
  this.#initialize = Promise.resolve(true);
7375
7378
  return;
7376
7379
  }
@@ -7412,12 +7415,12 @@ var Dialog = class {
7412
7415
  #message;
7413
7416
  #defaultValue;
7414
7417
  #type;
7415
- constructor(event, browser2) {
7418
+ constructor(event, browser) {
7416
7419
  this.#message = event.message;
7417
7420
  this.#defaultValue = event.defaultValue;
7418
7421
  this.#type = event.type;
7419
7422
  this.#context = event.context;
7420
- this.#browser = browser2;
7423
+ this.#browser = browser;
7421
7424
  }
7422
7425
  message() {
7423
7426
  return this.#message;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "webdriverio",
3
3
  "description": "Next-gen browser and mobile automation test framework for Node.js",
4
- "version": "9.2.5",
4
+ "version": "9.2.8",
5
5
  "homepage": "https://webdriver.io",
6
6
  "author": "Christian Bromann <mail@bromann.dev>",
7
7
  "license": "MIT",
@@ -76,12 +76,12 @@
76
76
  "dependencies": {
77
77
  "@types/node": "^20.11.30",
78
78
  "@types/sinonjs__fake-timers": "^8.1.5",
79
- "@wdio/config": "9.2.5",
79
+ "@wdio/config": "9.2.8",
80
80
  "@wdio/logger": "9.1.3",
81
81
  "@wdio/protocols": "9.2.2",
82
82
  "@wdio/repl": "9.0.8",
83
83
  "@wdio/types": "9.2.2",
84
- "@wdio/utils": "9.2.5",
84
+ "@wdio/utils": "9.2.8",
85
85
  "archiver": "^7.0.1",
86
86
  "aria-query": "^5.3.0",
87
87
  "cheerio": "^1.0.0-rc.12",
@@ -100,7 +100,7 @@
100
100
  "rgb2hex": "0.2.5",
101
101
  "serialize-error": "^11.0.3",
102
102
  "urlpattern-polyfill": "^10.0.0",
103
- "webdriver": "9.2.5"
103
+ "webdriver": "9.2.8"
104
104
  },
105
105
  "peerDependencies": {
106
106
  "puppeteer-core": "^22.3.0"
@@ -110,5 +110,5 @@
110
110
  "optional": true
111
111
  }
112
112
  },
113
- "gitHead": "4c2bcd9c674afd799436639d215aac7b6861fcc1"
113
+ "gitHead": "f02604aee33fb785a1737db3c9092bacfc99a1f3"
114
114
  }