webdriverio 9.2.2 → 9.2.5

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":"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;IAiCxC;;OAEG;IACG,UAAU;IAahB,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;IAoCxC;;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 browser = getBrowserObject(this);
153
+ const browser2 = 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(browser.__propertiesObject__)).reduce((commands, [name, descriptor]) => {
159
+ ...Object.entries(clone(browser2.__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
- browser.__propertiesObject__[name] = { value: fn };
191
+ browser2.__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 browser = getBrowserObject(this);
197
+ const browser2 = 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(browser.__propertiesObject__)).reduce((commands, [name, descriptor]) => {
203
+ ...Object.entries(clone(browser2.__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
- browser.__propertiesObject__[name] = { value: fn };
242
+ browser2.__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(browser) {
1133
- this.#browser = browser;
1132
+ constructor(browser2) {
1133
+ this.#browser = browser2;
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(browser, scope, fn) {
2582
- if (!restoreFunctions.has(browser)) {
2583
- restoreFunctions.set(browser, /* @__PURE__ */ new Map());
2581
+ function storeRestoreFunction(browser2, scope, fn) {
2582
+ if (!restoreFunctions.has(browser2)) {
2583
+ restoreFunctions.set(browser2, /* @__PURE__ */ new Map());
2584
2584
  }
2585
- const restoreFunctionsList = restoreFunctions.get(browser)?.get(scope);
2585
+ const restoreFunctionsList = restoreFunctions.get(browser2)?.get(scope);
2586
2586
  const updatedList = restoreFunctionsList ? [...restoreFunctionsList, fn] : [fn];
2587
- restoreFunctions.get(browser)?.set(scope, updatedList);
2587
+ restoreFunctions.get(browser2)?.set(scope, updatedList);
2588
2588
  }
2589
2589
  async function emulate(scope, options) {
2590
2590
  if (!this.isBidi) {
@@ -2975,21 +2975,21 @@ var ReferenceValue = class {
2975
2975
 
2976
2976
  // src/context.ts
2977
2977
  var contextManager = /* @__PURE__ */ new Map();
2978
- function getContextManager(browser) {
2979
- const existingContextManager = contextManager.get(browser);
2978
+ function getContextManager(browser2) {
2979
+ const existingContextManager = contextManager.get(browser2);
2980
2980
  if (existingContextManager) {
2981
2981
  return existingContextManager;
2982
2982
  }
2983
- const newContext = new ContextManager(browser);
2984
- contextManager.set(browser, newContext);
2983
+ const newContext = new ContextManager(browser2);
2984
+ contextManager.set(browser2, newContext);
2985
2985
  return newContext;
2986
2986
  }
2987
2987
  var ContextManager = class {
2988
2988
  #browser;
2989
2989
  #currentContext;
2990
- constructor(browser) {
2991
- this.#browser = browser;
2992
- if (process.env.WDIO_UNIT_TESTS) {
2990
+ constructor(browser2) {
2991
+ this.#browser = browser2;
2992
+ if (!this.#isEnabled()) {
2993
2993
  return;
2994
2994
  }
2995
2995
  this.#browser.on("command", (event) => {
@@ -3001,12 +3001,18 @@ var ContextManager = class {
3001
3001
  }
3002
3002
  });
3003
3003
  }
3004
+ /**
3005
+ * Only run this session helper if BiDi is enabled and we're not in unit tests.
3006
+ */
3007
+ #isEnabled() {
3008
+ return !process.env.WDIO_UNIT_TESTS && browser.isBidi;
3009
+ }
3004
3010
  /**
3005
3011
  * set context at the start of the session
3006
3012
  */
3007
3013
  async initialize() {
3008
- if (process.env.WDIO_UNIT_TESTS) {
3009
- return "fake-context";
3014
+ if (!this.#isEnabled()) {
3015
+ return "";
3010
3016
  }
3011
3017
  const windowHandle = await this.#browser.getWindowHandle();
3012
3018
  this.#currentContext = windowHandle;
@@ -3028,19 +3034,19 @@ import logger4 from "@wdio/logger";
3028
3034
  var polyfillManager = /* @__PURE__ */ new Map();
3029
3035
  var log4 = logger4("webdriverio:PolyfillManager");
3030
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;";
3031
- function getPolyfillManager(browser) {
3032
- const existingPolyfillManager = polyfillManager.get(browser);
3037
+ function getPolyfillManager(browser2) {
3038
+ const existingPolyfillManager = polyfillManager.get(browser2);
3033
3039
  if (existingPolyfillManager) {
3034
3040
  return existingPolyfillManager;
3035
3041
  }
3036
- const newContext = new PolyfillManager(browser);
3037
- polyfillManager.set(browser, newContext);
3042
+ const newContext = new PolyfillManager(browser2);
3043
+ polyfillManager.set(browser2, newContext);
3038
3044
  return newContext;
3039
3045
  }
3040
3046
  var PolyfillManager = class {
3041
3047
  #initialize;
3042
- constructor(browser) {
3043
- if (!browser.isBidi || process.env.WDIO_UNIT_TESTS || browser.options?.automationProtocol !== "webdriver") {
3048
+ constructor(browser2) {
3049
+ if (!browser2.isBidi || process.env.WDIO_UNIT_TESTS || browser2.options?.automationProtocol !== "webdriver") {
3044
3050
  this.#initialize = Promise.resolve(true);
3045
3051
  return;
3046
3052
  }
@@ -3049,8 +3055,8 @@ var PolyfillManager = class {
3049
3055
  return closure();
3050
3056
  };
3051
3057
  this.#initialize = Promise.all([
3052
- browser.addInitScript(polyfill, NAME_POLYFILL),
3053
- browser.execute(polyfill, NAME_POLYFILL)
3058
+ browser2.addInitScript(polyfill, NAME_POLYFILL),
3059
+ browser2.execute(polyfill, NAME_POLYFILL)
3054
3060
  ]).then(() => {
3055
3061
  log4.info("polyfill script added");
3056
3062
  return true;
@@ -3067,8 +3073,8 @@ async function execute(script, ...args) {
3067
3073
  throw new Error("number or type of arguments don't agree with execute protocol command");
3068
3074
  }
3069
3075
  if (this.isBidi && !this.isMultiremote) {
3070
- const browser = getBrowserObject2(this);
3071
- const contextManager2 = getContextManager(browser);
3076
+ const browser2 = getBrowserObject2(this);
3077
+ const contextManager2 = getContextManager(browser2);
3072
3078
  const context = await contextManager2.getCurrentContext();
3073
3079
  const userScript = typeof script === "string" ? new Function(script) : script;
3074
3080
  const functionDeclaration = new Function(`
@@ -3082,7 +3088,7 @@ async function execute(script, ...args) {
3082
3088
  context
3083
3089
  }
3084
3090
  };
3085
- const result = await browser.scriptCallFunction(params);
3091
+ const result = await browser2.scriptCallFunction(params);
3086
3092
  return parseScriptResult(params, result);
3087
3093
  }
3088
3094
  if (typeof script === "function") {
@@ -3101,8 +3107,8 @@ async function executeAsync(script, ...args) {
3101
3107
  throw new Error("number or type of arguments don't agree with execute protocol command");
3102
3108
  }
3103
3109
  if (this.isBidi && !this.isMultiremote) {
3104
- const browser = getBrowserObject3(this);
3105
- const contextManager2 = getContextManager(browser);
3110
+ const browser2 = getBrowserObject3(this);
3111
+ const contextManager2 = getContextManager(browser2);
3106
3112
  const context = await contextManager2.getCurrentContext();
3107
3113
  const userScript = typeof script === "string" ? new Function(script) : script;
3108
3114
  const functionDeclaration = new Function(`
@@ -3124,7 +3130,7 @@ async function executeAsync(script, ...args) {
3124
3130
  context
3125
3131
  }
3126
3132
  };
3127
- const result = await browser.scriptCallFunction(params);
3133
+ const result = await browser2.scriptCallFunction(params);
3128
3134
  return parseScriptResult(params, result);
3129
3135
  }
3130
3136
  if (typeof script === "function") {
@@ -3275,8 +3281,8 @@ async function getPuppeteer() {
3275
3281
  // src/commands/browser/getWindowSize.ts
3276
3282
  import { getBrowserObject as getBrowserObject4 } from "@wdio/utils";
3277
3283
  async function getWindowSize() {
3278
- const browser = getBrowserObject4(this);
3279
- const { width, height } = await browser.getWindowRect();
3284
+ const browser2 = getBrowserObject4(this);
3285
+ const { width, height } = await browser2.getWindowRect();
3280
3286
  return { width, height };
3281
3287
  }
3282
3288
 
@@ -3485,18 +3491,18 @@ var WebDriverInterception = class _WebDriverInterception {
3485
3491
  #requestOverwrites = [];
3486
3492
  #respondOverwrites = [];
3487
3493
  #calls = [];
3488
- constructor(pattern, mockId, filterOptions, browser) {
3494
+ constructor(pattern, mockId, filterOptions, browser2) {
3489
3495
  this.#pattern = pattern;
3490
3496
  this.#mockId = mockId;
3491
3497
  this.#filterOptions = filterOptions;
3492
- this.#browser = browser;
3493
- browser.on("network.beforeRequestSent", this.#handleBeforeRequestSent.bind(this));
3494
- browser.on("network.responseStarted", this.#handleResponseStarted.bind(this));
3498
+ this.#browser = browser2;
3499
+ browser2.on("network.beforeRequestSent", this.#handleBeforeRequestSent.bind(this));
3500
+ browser2.on("network.responseStarted", this.#handleResponseStarted.bind(this));
3495
3501
  }
3496
- static async initiate(url6, filterOptions, browser) {
3502
+ static async initiate(url6, filterOptions, browser2) {
3497
3503
  const pattern = parseUrlPattern(url6);
3498
3504
  if (!hasSubscribedToEvents) {
3499
- await browser.sessionSubscribe({
3505
+ await browser2.sessionSubscribe({
3500
3506
  events: [
3501
3507
  "network.beforeRequestSent",
3502
3508
  "network.responseStarted"
@@ -3505,7 +3511,7 @@ var WebDriverInterception = class _WebDriverInterception {
3505
3511
  log7.info("subscribed to network events");
3506
3512
  hasSubscribedToEvents = true;
3507
3513
  }
3508
- const interception = await browser.networkAddIntercept({
3514
+ const interception = await browser2.networkAddIntercept({
3509
3515
  phases: ["beforeRequestSent", "responseStarted"],
3510
3516
  urlPatterns: [{
3511
3517
  type: "pattern",
@@ -3516,7 +3522,7 @@ var WebDriverInterception = class _WebDriverInterception {
3516
3522
  search: getPatternParam(pattern, "search")
3517
3523
  }]
3518
3524
  });
3519
- return new _WebDriverInterception(pattern, interception.intercept, filterOptions, browser);
3525
+ return new _WebDriverInterception(pattern, interception.intercept, filterOptions, browser2);
3520
3526
  }
3521
3527
  #handleBeforeRequestSent(request) {
3522
3528
  if (!this.#isRequestMatching(request)) {
@@ -3792,8 +3798,8 @@ async function mock(url6, filterOptions) {
3792
3798
  if (!this.isBidi) {
3793
3799
  throw new Error("Mocking is only supported when running tests using WebDriver Bidi");
3794
3800
  }
3795
- const browser = getBrowserObject5(this);
3796
- const contextManager2 = getContextManager(browser);
3801
+ const browser2 = getBrowserObject5(this);
3802
+ const contextManager2 = getContextManager(browser2);
3797
3803
  const context = await contextManager2.getCurrentContext();
3798
3804
  if (!SESSION_MOCKS[context]) {
3799
3805
  SESSION_MOCKS[context] = /* @__PURE__ */ new Set();
@@ -4015,8 +4021,8 @@ async function saveScreenshot(filepath) {
4015
4021
  await assertDirectoryExists(absoluteFilepath);
4016
4022
  let screenBuffer;
4017
4023
  if (this.isBidi) {
4018
- const browser = getBrowserObject6(this);
4019
- const contextManager2 = getContextManager(browser);
4024
+ const browser2 = getBrowserObject6(this);
4025
+ const contextManager2 = getContextManager(browser2);
4020
4026
  const context = await contextManager2.getCurrentContext();
4021
4027
  const { data } = await this.browsingContextCaptureScreenshot({ context });
4022
4028
  screenBuffer = data;
@@ -4126,8 +4132,8 @@ async function setWindowSize(width, height) {
4126
4132
  if (width < minWindowSize2 || width > maxWindowSize2 || height < minWindowSize2 || height > maxWindowSize2) {
4127
4133
  throw new Error("setWindowSize expects width and height to be a number in the 0 to 2^31 \u2212 1 range");
4128
4134
  }
4129
- const browser = getBrowserObject7(this);
4130
- await browser.setWindowRect(null, null, width, height);
4135
+ const browser2 = getBrowserObject7(this);
4136
+ await browser2.setWindowRect(null, null, width, height);
4131
4137
  }
4132
4138
 
4133
4139
  // src/commands/browser/switchWindow.ts
@@ -4313,18 +4319,18 @@ async function switchFrame(context) {
4313
4319
  `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`
4314
4320
  );
4315
4321
  }
4316
- function switchToFrameHelper(browser, context) {
4317
- const sessionContext = getContextManager(browser);
4322
+ function switchToFrameHelper(browser2, context) {
4323
+ const sessionContext = getContextManager(browser2);
4318
4324
  sessionContext.setCurrentContext(context);
4319
4325
  }
4320
- async function switchToFrameUsingElement(browser, element) {
4321
- const frame = await browser.execute(
4326
+ async function switchToFrameUsingElement(browser2, element) {
4327
+ const frame = await browser2.execute(
4322
4328
  (iframe) => iframe.contentWindow,
4323
4329
  element
4324
4330
  );
4325
- switchToFrameHelper(browser, frame.context);
4331
+ switchToFrameHelper(browser2, frame.context);
4326
4332
  const elementId = element[ELEMENT_KEY8];
4327
- await switchToFrame(browser, { [ELEMENT_KEY8]: elementId });
4333
+ await switchToFrame(browser2, { [ELEMENT_KEY8]: elementId });
4328
4334
  return frame.context;
4329
4335
  }
4330
4336
  function byUrl(context, url6) {
@@ -4350,8 +4356,8 @@ function findContext(urlOrId, contexts, matcher) {
4350
4356
  }
4351
4357
  return void 0;
4352
4358
  }
4353
- async function getFlatContextTree(browser) {
4354
- const tree = await browser.browsingContextGetTree({});
4359
+ async function getFlatContextTree(browser2) {
4360
+ const tree = await browser2.browsingContextGetTree({});
4355
4361
  const mapContext = (context) => [
4356
4362
  context.context,
4357
4363
  ...(context.children || []).map(mapContext)
@@ -4363,9 +4369,9 @@ async function getFlatContextTree(browser) {
4363
4369
  }, {});
4364
4370
  return allContexts;
4365
4371
  }
4366
- function switchToFrame(browser, frame) {
4372
+ function switchToFrame(browser2, frame) {
4367
4373
  process.env.DISABLE_WEBDRIVERIO_DEPRECATION_WARNINGS = "true";
4368
- return browser.switchToFrame(frame).finally(() => {
4374
+ return browser2.switchToFrame(frame).finally(() => {
4369
4375
  delete process.env.DISABLE_WEBDRIVERIO_DEPRECATION_WARNINGS;
4370
4376
  });
4371
4377
  }
@@ -4376,8 +4382,8 @@ import { getBrowserObject as getBrowserObject8 } from "@wdio/utils";
4376
4382
  var log14 = logger14("webdriverio:throttle");
4377
4383
  async function throttle(params) {
4378
4384
  log14.warn('Command "throttle" is deprecated and will be removed with the next major version release! Use `throttleNetwork` instead.');
4379
- const browser = getBrowserObject8(this);
4380
- await browser.throttleNetwork(params);
4385
+ const browser2 = getBrowserObject8(this);
4386
+ await browser2.throttleNetwork(params);
4381
4387
  }
4382
4388
 
4383
4389
  // src/commands/browser/throttleCPU.ts
@@ -4476,8 +4482,8 @@ async function throttleNetwork(params) {
4476
4482
  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}"`);
4477
4483
  }
4478
4484
  if (this.isSauce) {
4479
- const browser = getBrowserObject9(this);
4480
- await browser.sauceThrottleNetwork(params);
4485
+ const browser2 = getBrowserObject9(this);
4486
+ await browser2.sauceThrottleNetwork(params);
4481
4487
  return null;
4482
4488
  }
4483
4489
  const failedConnectionMessage = "No Puppeteer connection could be established which is required to use this command";
@@ -4522,13 +4528,13 @@ async function uploadFile(localPath) {
4522
4528
 
4523
4529
  // src/networkManager.ts
4524
4530
  var networkManager = /* @__PURE__ */ new Map();
4525
- function getNetworkManager(browser) {
4526
- const existingNetworkManager = networkManager.get(browser);
4531
+ function getNetworkManager(browser2) {
4532
+ const existingNetworkManager = networkManager.get(browser2);
4527
4533
  if (existingNetworkManager) {
4528
4534
  return existingNetworkManager;
4529
4535
  }
4530
- const newContext = new NetworkManager(browser);
4531
- networkManager.set(browser, newContext);
4536
+ const newContext = new NetworkManager(browser2);
4537
+ networkManager.set(browser2, newContext);
4532
4538
  return newContext;
4533
4539
  }
4534
4540
  var UNKNOWN_NAVIGATION_ID = "UNKNOWN_NAVIGATION_ID";
@@ -4537,9 +4543,9 @@ var NetworkManager = class {
4537
4543
  #initialize;
4538
4544
  #requests = /* @__PURE__ */ new Map();
4539
4545
  #lastNetworkId;
4540
- constructor(browser) {
4541
- this.#browser = browser;
4542
- if (!browser.isBidi || process.env.WDIO_UNIT_TESTS || browser.options?.automationProtocol !== "webdriver") {
4546
+ constructor(browser2) {
4547
+ this.#browser = browser2;
4548
+ if (!browser2.isBidi || process.env.WDIO_UNIT_TESTS || browser2.options?.automationProtocol !== "webdriver") {
4543
4549
  this.#initialize = Promise.resolve(true);
4544
4550
  return;
4545
4551
  }
@@ -4928,9 +4934,9 @@ async function actionClick(element, options) {
4928
4934
  if (!buttonValue.includes(button)) {
4929
4935
  throw new Error("Button type not supported.");
4930
4936
  }
4931
- const browser = getBrowserObject10(element);
4937
+ const browser2 = getBrowserObject10(element);
4932
4938
  if (x || y) {
4933
- const { width, height } = await browser.getElementRect(element.elementId);
4939
+ const { width, height } = await browser2.getElementRect(element.elementId);
4934
4940
  if (x && x < -Math.floor(width / 2) || x && x > Math.floor(width / 2)) {
4935
4941
  log15.warn("x would cause a out of bounds error as it goes outside of element");
4936
4942
  }
@@ -4939,7 +4945,7 @@ async function actionClick(element, options) {
4939
4945
  }
4940
4946
  }
4941
4947
  const clickNested = async () => {
4942
- await browser.action("pointer", {
4948
+ await browser2.action("pointer", {
4943
4949
  parameters: { pointerType: "mouse" }
4944
4950
  }).move({ origin: element, x, y }).down({ button }).up({ button }).perform(skipRelease);
4945
4951
  };
@@ -4999,8 +5005,8 @@ async function custom$2(strategyName, ...strategyArguments) {
4999
5005
  // src/commands/element/doubleClick.ts
5000
5006
  import { getBrowserObject as getBrowserObject13 } from "@wdio/utils";
5001
5007
  async function doubleClick() {
5002
- const browser = getBrowserObject13(this);
5003
- return browser.action("pointer", { parameters: { pointerType: "mouse" } }).move({ origin: this }).down().up().pause(10).down().up().perform();
5008
+ const browser2 = getBrowserObject13(this);
5009
+ return browser2.action("pointer", { parameters: { pointerType: "mouse" } }).move({ origin: this }).down().up().pause(10).down().up().perform();
5004
5010
  }
5005
5011
 
5006
5012
  // src/commands/element/dragAndDrop.ts
@@ -5031,22 +5037,22 @@ async function dragAndDrop(target, { duration = 10 } = {}) {
5031
5037
  const targetOrigin = isMovingToElement ? targetRef : "pointer";
5032
5038
  const targetX = isMovingToElement ? 0 : moveToCoordinates.x;
5033
5039
  const targetY = isMovingToElement ? 0 : moveToCoordinates.y;
5034
- const browser = getBrowserObject14(this);
5035
- 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();
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();
5036
5042
  }
5037
5043
 
5038
5044
  // src/commands/element/execute.ts
5039
5045
  import { getBrowserObject as getBrowserObject15 } from "@wdio/utils";
5040
5046
  async function execute2(script, ...args) {
5041
- const browser = getBrowserObject15(this);
5042
- return browser.execute(script, this, ...args);
5047
+ const browser2 = getBrowserObject15(this);
5048
+ return browser2.execute(script, this, ...args);
5043
5049
  }
5044
5050
 
5045
5051
  // src/commands/element/executeAsync.ts
5046
5052
  import { getBrowserObject as getBrowserObject16 } from "@wdio/utils";
5047
5053
  async function executeAsync2(script, ...args) {
5048
- const browser = getBrowserObject16(this);
5049
- return browser.executeAsync(script, this, ...args);
5054
+ const browser2 = getBrowserObject16(this);
5055
+ return browser2.executeAsync(script, this, ...args);
5050
5056
  }
5051
5057
 
5052
5058
  // src/commands/element/getAttribute.ts
@@ -5120,9 +5126,9 @@ function mergeEqualSymmetricalValue(cssValues) {
5120
5126
  return newCssValues.join(" ");
5121
5127
  }
5122
5128
  async function getPseudoElementCSSValue(elem, options) {
5123
- const browser = getBrowserObject17(elem);
5129
+ const browser2 = getBrowserObject17(elem);
5124
5130
  const { cssProperty, pseudoElement } = options;
5125
- const cssValue2 = await browser.execute(
5131
+ const cssValue2 = await browser2.execute(
5126
5132
  (elem2, pseudoElement2, cssProperty2) => window.getComputedStyle(elem2, pseudoElement2)[cssProperty2],
5127
5133
  elem,
5128
5134
  pseudoElement,
@@ -5156,13 +5162,13 @@ import logger16 from "@wdio/logger";
5156
5162
  import customElementWrapper from "./scripts/customElement.js";
5157
5163
  var shadowRootManager = /* @__PURE__ */ new Map();
5158
5164
  var log16 = logger16("webdriverio:ShadowRootManager");
5159
- function getShadowRootManager(browser) {
5160
- const existingShadowRootManager = shadowRootManager.get(browser);
5165
+ function getShadowRootManager(browser2) {
5166
+ const existingShadowRootManager = shadowRootManager.get(browser2);
5161
5167
  if (existingShadowRootManager) {
5162
5168
  return existingShadowRootManager;
5163
5169
  }
5164
- const newContext = new ShadowRootManager(browser);
5165
- shadowRootManager.set(browser, newContext);
5170
+ const newContext = new ShadowRootManager(browser2);
5171
+ shadowRootManager.set(browser2, newContext);
5166
5172
  return newContext;
5167
5173
  }
5168
5174
  var ShadowRootManager = class {
@@ -5170,9 +5176,9 @@ var ShadowRootManager = class {
5170
5176
  #initialize;
5171
5177
  #shadowRoots = /* @__PURE__ */ new Map();
5172
5178
  #frameDepth = 0;
5173
- constructor(browser) {
5174
- this.#browser = browser;
5175
- if (!browser.isBidi || process.env.WDIO_UNIT_TESTS || browser.options?.automationProtocol !== "webdriver") {
5179
+ constructor(browser2) {
5180
+ this.#browser = browser2;
5181
+ if (!browser2.isBidi || process.env.WDIO_UNIT_TESTS || browser2.options?.automationProtocol !== "webdriver") {
5176
5182
  this.#initialize = Promise.resolve(true);
5177
5183
  return;
5178
5184
  }
@@ -5182,7 +5188,7 @@ var ShadowRootManager = class {
5182
5188
  this.#browser.on("log.entryAdded", this.handleLogEntry.bind(this));
5183
5189
  this.#browser.on("result", this.#commandResultHandler.bind(this));
5184
5190
  this.#browser.on("bidiCommand", this.#handleBidiCommand.bind(this));
5185
- browser.scriptAddPreloadScript({
5191
+ browser2.scriptAddPreloadScript({
5186
5192
  functionDeclaration: customElementWrapper.toString()
5187
5193
  });
5188
5194
  }
@@ -5412,7 +5418,7 @@ import getHTMLShadowScript from "./scripts/getHTMLShadow.js";
5412
5418
  var SHADOW_ID_ATTR_NAME = "data-wdio-shadow-id";
5413
5419
  var SHADOW_ID_ATTR = `[${SHADOW_ID_ATTR_NAME}]`;
5414
5420
  async function getHTML(options = {}) {
5415
- const browser = getBrowserObject18(this);
5421
+ const browser2 = getBrowserObject18(this);
5416
5422
  if (typeof options !== "object" && typeof options === "boolean") {
5417
5423
  options = { includeSelectorTag: options };
5418
5424
  } else if (typeof options !== "object") {
@@ -5426,7 +5432,7 @@ async function getHTML(options = {}) {
5426
5432
  excludeElements: []
5427
5433
  }, options);
5428
5434
  const basicGetHTML = (elementId, includeSelectorTag2) => {
5429
- return browser.execute(getHTMLScript, {
5435
+ return browser2.execute(getHTMLScript, {
5430
5436
  [ELEMENT_KEY12]: elementId,
5431
5437
  // w3c compatible
5432
5438
  ELEMENT: elementId
@@ -5442,12 +5448,12 @@ async function getHTML(options = {}) {
5442
5448
  );
5443
5449
  }
5444
5450
  const { load } = await import("cheerio");
5445
- const shadowRootManager2 = getShadowRootManager(browser);
5446
- const contextManager2 = getContextManager(browser);
5451
+ const shadowRootManager2 = getShadowRootManager(browser2);
5452
+ const contextManager2 = getContextManager(browser2);
5447
5453
  const context = await contextManager2.getCurrentContext();
5448
5454
  const shadowRootElementPairs = shadowRootManager2.getShadowElementPairsByContextId(context, this.elementId);
5449
5455
  const elementsWithShadowRootAndIdVerified = (await Promise.all(
5450
- shadowRootElementPairs.map(([elemId, elem]) => browser.execute((elem2) => elem2.tagName, { [ELEMENT_KEY12]: elemId }).then(
5456
+ shadowRootElementPairs.map(([elemId, elem]) => browser2.execute((elem2) => elem2.tagName, { [ELEMENT_KEY12]: elemId }).then(
5451
5457
  () => [elemId, elem],
5452
5458
  () => void 0
5453
5459
  ))
@@ -5456,7 +5462,7 @@ async function getHTML(options = {}) {
5456
5462
  { [ELEMENT_KEY12]: elemId },
5457
5463
  shadowId ? { [ELEMENT_KEY12]: shadowId } : void 0
5458
5464
  ]);
5459
- const { html, shadowElementHTML } = await browser.execute(
5465
+ const { html, shadowElementHTML } = await browser2.execute(
5460
5466
  getHTMLShadowScript,
5461
5467
  { [ELEMENT_KEY12]: this.elementId },
5462
5468
  includeSelectorTag,
@@ -5566,8 +5572,8 @@ async function isClickable() {
5566
5572
  if (this.isMobile && await this.getContext().catch(() => void 0) === "NATIVE_APP") {
5567
5573
  throw new Error("Method not supported in mobile native environment. It is unlikely that you need to use this command.");
5568
5574
  }
5569
- const browser = getBrowserObject19(this);
5570
- return browser.execute(isElementClickableScript, {
5575
+ const browser2 = getBrowserObject19(this);
5576
+ return browser2.execute(isElementClickableScript, {
5571
5577
  [ELEMENT_KEY13]: this.elementId,
5572
5578
  // w3c compatible
5573
5579
  ELEMENT: this.elementId
@@ -5580,12 +5586,12 @@ import { getBrowserObject as getBrowserObject20 } from "@wdio/utils";
5580
5586
  import isElementDisplayedScript from "./scripts/isElementDisplayed.js";
5581
5587
  import isElementInViewportScript from "./scripts/isElementInViewport.js";
5582
5588
  async function isDisplayed(commandParams = { withinViewport: false }) {
5583
- const browser = getBrowserObject20(this);
5589
+ const browser2 = getBrowserObject20(this);
5584
5590
  if (!await hasElementId(this)) {
5585
5591
  return false;
5586
5592
  }
5587
- const isNativeApplication = !browser.capabilities.browserName;
5588
- if (browser.isMobile && isNativeApplication) {
5593
+ const isNativeApplication = !browser2.capabilities.browserName;
5594
+ if (browser2.isMobile && isNativeApplication) {
5589
5595
  if (commandParams?.withinViewport) {
5590
5596
  throw new Error(
5591
5597
  "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."
@@ -5593,9 +5599,9 @@ async function isDisplayed(commandParams = { withinViewport: false }) {
5593
5599
  }
5594
5600
  return await this.isElementDisplayed(this.elementId);
5595
5601
  }
5596
- const isDisplayed2 = await browser.execute(isElementDisplayedScript, this);
5602
+ const isDisplayed2 = await browser2.execute(isElementDisplayedScript, this);
5597
5603
  if (isDisplayed2 && commandParams?.withinViewport) {
5598
- return browser.execute(isElementInViewportScript, this);
5604
+ return browser2.execute(isElementInViewportScript, this);
5599
5605
  }
5600
5606
  return isDisplayed2;
5601
5607
  }
@@ -5615,9 +5621,9 @@ var getWebElement = (el) => ({
5615
5621
  // jsonwp compatible
5616
5622
  });
5617
5623
  async function isEqual(el) {
5618
- const browser = getBrowserObject21(this);
5619
- if (browser.isMobile) {
5620
- const context = await browser.getContext().catch(() => void 0);
5624
+ const browser2 = getBrowserObject21(this);
5625
+ if (browser2.isMobile) {
5626
+ const context = await browser2.getContext().catch(() => void 0);
5621
5627
  const contextId = typeof context === "string" ? context : context?.id;
5622
5628
  if (contextId && contextId.toLowerCase().includes("native")) {
5623
5629
  return this.elementId === el.elementId;
@@ -5625,7 +5631,7 @@ async function isEqual(el) {
5625
5631
  }
5626
5632
  let result;
5627
5633
  try {
5628
- result = await browser.execute(
5634
+ result = await browser2.execute(
5629
5635
  /* istanbul ignore next */
5630
5636
  function(el1, el2) {
5631
5637
  return el1 === el2;
@@ -5656,8 +5662,8 @@ import { ELEMENT_KEY as ELEMENT_KEY15 } from "webdriver";
5656
5662
  import { getBrowserObject as getBrowserObject22 } from "@wdio/utils";
5657
5663
  import isFocusedScript from "./scripts/isFocused.js";
5658
5664
  async function isFocused() {
5659
- const browser = await getBrowserObject22(this);
5660
- return browser.execute(isFocusedScript, {
5665
+ const browser2 = await getBrowserObject22(this);
5666
+ return browser2.execute(isFocusedScript, {
5661
5667
  [ELEMENT_KEY15]: this.elementId,
5662
5668
  // w3c compatible
5663
5669
  ELEMENT: this.elementId
@@ -5675,8 +5681,8 @@ import { ELEMENT_KEY as ELEMENT_KEY16 } from "webdriver";
5675
5681
  import { getBrowserObject as getBrowserObject23 } from "@wdio/utils";
5676
5682
  import isElementStable from "./scripts/isElementStable.js";
5677
5683
  async function isStable() {
5678
- const browser = getBrowserObject23(this);
5679
- return await browser.executeAsync(isElementStable, {
5684
+ const browser2 = getBrowserObject23(this);
5685
+ return await browser2.executeAsync(isElementStable, {
5680
5686
  [ELEMENT_KEY16]: this.elementId,
5681
5687
  // w3c compatible
5682
5688
  ELEMENT: this.elementId
@@ -5689,9 +5695,9 @@ import logger17 from "@wdio/logger";
5689
5695
  import { getBrowserObject as getBrowserObject24 } from "@wdio/utils";
5690
5696
  var log17 = logger17("webdriver");
5691
5697
  async function moveTo({ xOffset, yOffset } = {}) {
5692
- const browser = getBrowserObject24(this);
5698
+ const browser2 = getBrowserObject24(this);
5693
5699
  if (xOffset || yOffset) {
5694
- const { width, height } = await browser.getElementRect(this.elementId);
5700
+ const { width, height } = await browser2.getElementRect(this.elementId);
5695
5701
  if (xOffset && xOffset < -Math.floor(width / 2) || xOffset && xOffset > Math.floor(width / 2)) {
5696
5702
  log17.warn("xOffset would cause a out of bounds error as it goes outside of element");
5697
5703
  }
@@ -5700,7 +5706,7 @@ async function moveTo({ xOffset, yOffset } = {}) {
5700
5706
  }
5701
5707
  }
5702
5708
  const moveToNested = async () => {
5703
- await browser.action("pointer", { parameters: { pointerType: "mouse" } }).move({ origin: this, x: xOffset || 0, y: yOffset || 0 }).perform();
5709
+ await browser2.action("pointer", { parameters: { pointerType: "mouse" } }).move({ origin: this, x: xOffset || 0, y: yOffset || 0 }).perform();
5704
5710
  };
5705
5711
  try {
5706
5712
  await moveToNested();
@@ -5752,10 +5758,10 @@ async function react$$2(selector, { props = {}, state = {} } = {}) {
5752
5758
  const resqScriptPath = url4.fileURLToPath(await resolve3("resq", import.meta.url));
5753
5759
  resqScript3 = (await fs8.readFile(resqScriptPath)).toString();
5754
5760
  }
5755
- const browser = await getBrowserObject25(this);
5761
+ const browser2 = await getBrowserObject25(this);
5756
5762
  await this.executeScript(resqScript3.toString(), []);
5757
- await browser.execute(waitToLoadReact3);
5758
- const res = await browser.execute(
5763
+ await browser2.execute(waitToLoadReact3);
5764
+ const res = await browser2.execute(
5759
5765
  react$$Script2,
5760
5766
  selector,
5761
5767
  props,
@@ -5778,10 +5784,10 @@ async function react$2(selector, { props = {}, state = {} } = {}) {
5778
5784
  const resqScriptPath = url5.fileURLToPath(await resolve4("resq", import.meta.url));
5779
5785
  resqScript4 = (await fs9.readFile(resqScriptPath)).toString();
5780
5786
  }
5781
- const browser = await getBrowserObject26(this);
5787
+ const browser2 = await getBrowserObject26(this);
5782
5788
  await this.executeScript(resqScript4.toString(), []);
5783
- await browser.execute(waitToLoadReact4);
5784
- const res = await browser.execute(
5789
+ await browser2.execute(waitToLoadReact4);
5790
+ const res = await browser2.execute(
5785
5791
  react$Script2,
5786
5792
  selector,
5787
5793
  props,
@@ -5811,8 +5817,8 @@ import { ELEMENT_KEY as ELEMENT_KEY17 } from "webdriver";
5811
5817
  import { getBrowserObject as getBrowserObject27 } from "@wdio/utils";
5812
5818
  var log18 = logger18("webdriverio");
5813
5819
  function scrollIntoViewWeb(options = { block: "start", inline: "nearest" }) {
5814
- const browser = getBrowserObject27(this);
5815
- return browser.execute(
5820
+ const browser2 = getBrowserObject27(this);
5821
+ return browser2.execute(
5816
5822
  (elem, options2) => elem.scrollIntoView(options2),
5817
5823
  {
5818
5824
  [ELEMENT_KEY17]: this.elementId,
@@ -5824,14 +5830,14 @@ function scrollIntoViewWeb(options = { block: "start", inline: "nearest" }) {
5824
5830
  );
5825
5831
  }
5826
5832
  async function scrollIntoView(options = { block: "start", inline: "nearest" }) {
5827
- const browser = getBrowserObject27(this);
5828
- if (browser.isMobile) {
5833
+ const browser2 = getBrowserObject27(this);
5834
+ if (browser2.isMobile) {
5829
5835
  return scrollIntoViewWeb.call(this, options);
5830
5836
  }
5831
5837
  try {
5832
- const elemRect = await browser.getElementRect(this.elementId);
5833
- const viewport = await browser.getWindowSize();
5834
- let [scrollX, scrollY] = await browser.execute(() => [
5838
+ const elemRect = await browser2.getElementRect(this.elementId);
5839
+ const viewport = await browser2.getWindowSize();
5840
+ let [scrollX, scrollY] = await browser2.execute(() => [
5835
5841
  window.scrollX,
5836
5842
  window.scrollY
5837
5843
  ]);
@@ -5866,7 +5872,7 @@ async function scrollIntoView(options = { block: "start", inline: "nearest" }) {
5866
5872
  }
5867
5873
  deltaX = Math.round(deltaX - scrollX);
5868
5874
  deltaY = Math.round(deltaY - scrollY);
5869
- await browser.action("wheel").scroll({ duration: 0, x: deltaX, y: deltaY, origin: this }).perform();
5875
+ await browser2.action("wheel").scroll({ duration: 0, x: deltaX, y: deltaY, origin: this }).perform();
5870
5876
  } catch (err) {
5871
5877
  log18.warn(
5872
5878
  `Failed to execute "scrollIntoView" using WebDriver Actions API: ${err.message}!
@@ -6263,11 +6269,11 @@ var createRoleBaseXpathSelector = (role) => {
6263
6269
  // src/commands/element/shadow$$.ts
6264
6270
  var log19 = logger19("webdriverio");
6265
6271
  async function shadow$$(selector) {
6266
- const browser = getBrowserObject28(this);
6272
+ const browser2 = getBrowserObject28(this);
6267
6273
  try {
6268
- const shadowRoot = await browser.getElementShadowRoot(this.elementId);
6274
+ const shadowRoot = await browser2.getElementShadowRoot(this.elementId);
6269
6275
  const { using, value } = findStrategy(selector, this.isW3C, this.isMobile);
6270
- const res = await browser.findElementsFromShadowRoot(shadowRoot[SHADOW_ELEMENT_KEY], using, value);
6276
+ const res = await browser2.findElementsFromShadowRoot(shadowRoot[SHADOW_ELEMENT_KEY], using, value);
6271
6277
  const elements = await getElements.call(this, selector, res, { isShadowElement: true });
6272
6278
  return enhanceElementsArray(elements, this, selector);
6273
6279
  } catch (err) {
@@ -6286,11 +6292,11 @@ import { shadowFnFactory as shadowFnFactory2 } from "./scripts/shadowFnFactory.j
6286
6292
  import { getBrowserObject as getBrowserObject29 } from "@wdio/utils";
6287
6293
  var log20 = logger20("webdriverio");
6288
6294
  async function shadow$(selector) {
6289
- const browser = getBrowserObject29(this);
6295
+ const browser2 = getBrowserObject29(this);
6290
6296
  try {
6291
- const shadowRoot = await browser.getElementShadowRoot(this.elementId);
6297
+ const shadowRoot = await browser2.getElementShadowRoot(this.elementId);
6292
6298
  const { using, value } = findStrategy(selector, this.isW3C, this.isMobile);
6293
- const res = await browser.findElementFromShadowRoot(shadowRoot[SHADOW_ELEMENT_KEY2], using, value);
6299
+ const res = await browser2.findElementFromShadowRoot(shadowRoot[SHADOW_ELEMENT_KEY2], using, value);
6294
6300
  return getElement.call(this, selector, res, { isShadowElement: true });
6295
6301
  } catch (err) {
6296
6302
  log20.warn(
@@ -6717,9 +6723,9 @@ function transformClassicToBidiSelector(using, value) {
6717
6723
  throw new Error(`Can't transform classic selector ${using} to Bidi selector`);
6718
6724
  }
6719
6725
  async function findDeepElement(selector) {
6720
- const browser = getBrowserObject30(this);
6721
- const shadowRootManager2 = getShadowRootManager(browser);
6722
- const contextManager2 = getContextManager(browser);
6726
+ const browser2 = getBrowserObject30(this);
6727
+ const shadowRootManager2 = getShadowRootManager(browser2);
6728
+ const contextManager2 = getContextManager(browser2);
6723
6729
  const context = await contextManager2.getCurrentContext();
6724
6730
  const shadowRoots = shadowRootManager2.getShadowElementsByContextId(
6725
6731
  context,
@@ -6728,7 +6734,7 @@ async function findDeepElement(selector) {
6728
6734
  const { using, value } = findStrategy(selector, this.isW3C, this.isMobile);
6729
6735
  const locator = transformClassicToBidiSelector(using, value);
6730
6736
  const startNodes = shadowRoots.length > 0 ? shadowRoots.map((shadowRootNodeId) => ({ sharedId: shadowRootNodeId })) : this.elementId ? [{ sharedId: this.elementId }] : void 0;
6731
- const deepElementResult = await browser.browsingContextLocateNodes({ locator, context, startNodes }).then(async (result) => {
6737
+ const deepElementResult = await browser2.browsingContextLocateNodes({ locator, context, startNodes }).then(async (result) => {
6732
6738
  const nodes = result.nodes.filter((node) => Boolean(node.sharedId)).map((node) => ({
6733
6739
  [ELEMENT_KEY18]: node.sharedId,
6734
6740
  locator
@@ -6737,7 +6743,7 @@ async function findDeepElement(selector) {
6737
6743
  return nodes[0];
6738
6744
  }
6739
6745
  const scopedNodes = await Promise.all(nodes.map(async (node) => {
6740
- const isIn = await browser.execute(
6746
+ const isIn = await browser2.execute(
6741
6747
  elementContains,
6742
6748
  { [ELEMENT_KEY18]: this.elementId },
6743
6749
  node
@@ -6747,7 +6753,7 @@ async function findDeepElement(selector) {
6747
6753
  return scopedNodes[0];
6748
6754
  }, (err) => {
6749
6755
  log21.warn(`Failed to execute browser.browsingContextLocateNodes({ ... }) due to ${err}, falling back to regular WebDriver Classic command`);
6750
- return this && "elementId" in this && this.elementId ? this.findElementFromElement(this.elementId, using, value) : browser.findElement(using, value);
6756
+ return this && "elementId" in this && this.elementId ? this.findElementFromElement(this.elementId, using, value) : browser2.findElement(using, value);
6751
6757
  });
6752
6758
  if (!deepElementResult) {
6753
6759
  return new Error(`Couldn't find element with selector "${selector}"`);
@@ -6755,9 +6761,9 @@ async function findDeepElement(selector) {
6755
6761
  return deepElementResult;
6756
6762
  }
6757
6763
  async function findDeepElements(selector) {
6758
- const browser = getBrowserObject30(this);
6759
- const shadowRootManager2 = getShadowRootManager(browser);
6760
- const contextManager2 = getContextManager(browser);
6764
+ const browser2 = getBrowserObject30(this);
6765
+ const shadowRootManager2 = getShadowRootManager(browser2);
6766
+ const contextManager2 = getContextManager(browser2);
6761
6767
  const context = await contextManager2.getCurrentContext();
6762
6768
  const shadowRoots = shadowRootManager2.getShadowElementsByContextId(
6763
6769
  context,
@@ -6766,7 +6772,7 @@ async function findDeepElements(selector) {
6766
6772
  const { using, value } = findStrategy(selector, this.isW3C, this.isMobile);
6767
6773
  const locator = transformClassicToBidiSelector(using, value);
6768
6774
  const startNodes = shadowRoots.length > 0 ? shadowRoots.map((shadowRootNodeId) => ({ sharedId: shadowRootNodeId })) : this.elementId ? [{ sharedId: this.elementId }] : void 0;
6769
- const deepElementResult = await browser.browsingContextLocateNodes({ locator, context, startNodes }).then(async (result) => {
6775
+ const deepElementResult = await browser2.browsingContextLocateNodes({ locator, context, startNodes }).then(async (result) => {
6770
6776
  const nodes = result.nodes.filter((node) => Boolean(node.sharedId)).map((node) => ({
6771
6777
  [ELEMENT_KEY18]: node.sharedId,
6772
6778
  locator
@@ -6775,7 +6781,7 @@ async function findDeepElements(selector) {
6775
6781
  return nodes;
6776
6782
  }
6777
6783
  const scopedNodes = await Promise.all(nodes.map(async (node) => {
6778
- const isIn = await browser.execute(
6784
+ const isIn = await browser2.execute(
6779
6785
  elementContains,
6780
6786
  { [ELEMENT_KEY18]: this.elementId },
6781
6787
  node
@@ -6785,7 +6791,7 @@ async function findDeepElements(selector) {
6785
6791
  return scopedNodes;
6786
6792
  }, (err) => {
6787
6793
  log21.warn(`Failed to execute browser.browsingContextLocateNodes({ ... }) due to ${err}, falling back to regular WebDriver Classic command`);
6788
- return this && "elementId" in this && this.elementId ? this.findElementsFromElement(this.elementId, using, value) : browser.findElements(using, value);
6794
+ return this && "elementId" in this && this.elementId ? this.findElementsFromElement(this.elementId, using, value) : browser2.findElements(using, value);
6789
6795
  });
6790
6796
  return deepElementResult;
6791
6797
  }
@@ -7280,10 +7286,12 @@ function detectBackend(options = {}) {
7280
7286
 
7281
7287
  // src/protocol-stub.ts
7282
7288
  import { capabilitiesEnvironmentDetector } from "@wdio/utils";
7289
+ var NOOP2 = () => {
7290
+ };
7283
7291
  var ProtocolStub = class {
7284
7292
  static async newSession(options) {
7285
7293
  const capabilities = emulateSessionCapabilities(options.capabilities);
7286
- const browser = {
7294
+ const browser2 = {
7287
7295
  options,
7288
7296
  capabilities,
7289
7297
  requestedCapabilities: capabilities,
@@ -7292,11 +7300,14 @@ var ProtocolStub = class {
7292
7300
  overwrittenCommands: [],
7293
7301
  // internally used to transfer overwritten commands to the actual protocol instance
7294
7302
  commandList: [],
7303
+ getWindowHandle: NOOP2,
7304
+ on: NOOP2,
7305
+ off: NOOP2,
7295
7306
  ...capabilitiesEnvironmentDetector(capabilities)
7296
7307
  };
7297
- browser.addCommand = (...args) => browser.customCommands.push(args);
7298
- browser.overwriteCommand = (...args) => browser.overwrittenCommands.push(args);
7299
- return browser;
7308
+ browser2.addCommand = (...args) => browser2.customCommands.push(args);
7309
+ browser2.overwriteCommand = (...args) => browser2.overwrittenCommands.push(args);
7310
+ return browser2;
7300
7311
  }
7301
7312
  /**
7302
7313
  * added just in case user wants to somehow reload webdriver before it was started.
@@ -7344,22 +7355,22 @@ async function getProtocolDriver(options) {
7344
7355
 
7345
7356
  // src/dialog.ts
7346
7357
  var dialogManager = /* @__PURE__ */ new Map();
7347
- function getDialogManager(browser) {
7348
- const existingDialogManager = dialogManager.get(browser);
7358
+ function getDialogManager(browser2) {
7359
+ const existingDialogManager = dialogManager.get(browser2);
7349
7360
  if (existingDialogManager) {
7350
7361
  return existingDialogManager;
7351
7362
  }
7352
- const newContext = new DialogManager(browser);
7353
- dialogManager.set(browser, newContext);
7363
+ const newContext = new DialogManager(browser2);
7364
+ dialogManager.set(browser2, newContext);
7354
7365
  return newContext;
7355
7366
  }
7356
7367
  var DialogManager = class {
7357
7368
  #browser;
7358
7369
  #initialize;
7359
7370
  #autoHandleDialog = true;
7360
- constructor(browser) {
7361
- this.#browser = browser;
7362
- if (!browser.isBidi || process.env.WDIO_UNIT_TESTS || browser.options?.automationProtocol !== "webdriver") {
7371
+ constructor(browser2) {
7372
+ this.#browser = browser2;
7373
+ if (!browser2.isBidi || process.env.WDIO_UNIT_TESTS || browser2.options?.automationProtocol !== "webdriver") {
7363
7374
  this.#initialize = Promise.resolve(true);
7364
7375
  return;
7365
7376
  }
@@ -7401,12 +7412,12 @@ var Dialog = class {
7401
7412
  #message;
7402
7413
  #defaultValue;
7403
7414
  #type;
7404
- constructor(event, browser) {
7415
+ constructor(event, browser2) {
7405
7416
  this.#message = event.message;
7406
7417
  this.#defaultValue = event.defaultValue;
7407
7418
  this.#type = event.type;
7408
7419
  this.#context = event.context;
7409
- this.#browser = browser;
7420
+ this.#browser = browser2;
7410
7421
  }
7411
7422
  message() {
7412
7423
  return this.#message;
@@ -1 +1 @@
1
- {"version":3,"file":"protocol-stub.d.ts","sourceRoot":"","sources":["../src/protocol-stub.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE/C;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,YAAY;WAChB,UAAU,CAAE,OAAO,EAAE,YAAY,CAAC,YAAY;IAkB3D;;OAEG;IACH,MAAM,CAAC,aAAa;IAIpB,MAAM,CAAC,eAAe,CAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,EAAE,QAAQ;CAY9D"}
1
+ {"version":3,"file":"protocol-stub.d.ts","sourceRoot":"","sources":["../src/protocol-stub.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAI/C;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,YAAY;WAChB,UAAU,CAAE,OAAO,EAAE,YAAY,CAAC,YAAY;IAqB3D;;OAEG;IACH,MAAM,CAAC,aAAa;IAIpB,MAAM,CAAC,eAAe,CAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,EAAE,QAAQ;CAY9D"}
@@ -1,5 +1,7 @@
1
1
  // src/protocol-stub.ts
2
2
  import { capabilitiesEnvironmentDetector } from "@wdio/utils";
3
+ var NOOP = () => {
4
+ };
3
5
  var ProtocolStub = class {
4
6
  static async newSession(options) {
5
7
  const capabilities = emulateSessionCapabilities(options.capabilities);
@@ -12,6 +14,9 @@ var ProtocolStub = class {
12
14
  overwrittenCommands: [],
13
15
  // internally used to transfer overwritten commands to the actual protocol instance
14
16
  commandList: [],
17
+ getWindowHandle: NOOP,
18
+ on: NOOP,
19
+ off: NOOP,
15
20
  ...capabilitiesEnvironmentDetector(capabilities)
16
21
  };
17
22
  browser.addCommand = (...args) => browser.customCommands.push(args);
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.2",
4
+ "version": "9.2.5",
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.2",
79
+ "@wdio/config": "9.2.5",
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.2",
84
+ "@wdio/utils": "9.2.5",
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.2"
103
+ "webdriver": "9.2.5"
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": "a82feee9b819e978b0d75dc899dd8284303935e1"
113
+ "gitHead": "4c2bcd9c674afd799436639d215aac7b6861fcc1"
114
114
  }