From 01a51cb4d0ce78cb4ca6ed74b2c4a02c321b9aec Mon Sep 17 00:00:00 2001 From: shadowusr Date: Sun, 19 Jul 2026 23:11:35 +0300 Subject: [PATCH 1/4] fix: do not enable BiDi automatically for IE --- packages/webdriver/src/utils.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/webdriver/src/utils.ts b/packages/webdriver/src/utils.ts index e0a2ed11569..2494ed2b32a 100644 --- a/packages/webdriver/src/utils.ts +++ b/packages/webdriver/src/utils.ts @@ -69,7 +69,8 @@ export async function startWebDriverSession (params: RemoteConfig): Promise<{ se * or user requests a Safari session which does not support Bidi */ typeof w3cCaps.alwaysMatch.browserName === 'string' && - w3cCaps.alwaysMatch.browserName.toLowerCase() !== 'safari' + w3cCaps.alwaysMatch.browserName.toLowerCase() !== 'safari' && + w3cCaps.alwaysMatch.browserName.toLowerCase() !== 'internet explorer' ) { /** * opt-into WebDriver Bidi From c181e2bc0e13deae716ca12941b54b585d907c3a Mon Sep 17 00:00:00 2001 From: shadowusr Date: Sun, 19 Jul 2026 23:12:18 +0300 Subject: [PATCH 2/4] fix: make wdio polyfill code IE-compatible --- packages/webdriverio/src/session/polyfill.ts | 15 +++++++++------ .../webdriverio/tests/session/polyfill.test.ts | 6 +++++- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/packages/webdriverio/src/session/polyfill.ts b/packages/webdriverio/src/session/polyfill.ts index 0aaf310f0b0..f161bcc77b0 100644 --- a/packages/webdriverio/src/session/polyfill.ts +++ b/packages/webdriverio/src/session/polyfill.ts @@ -10,6 +10,10 @@ export function getPolyfillManager(browser: WebdriverIO.Browser) { const log = logger('webdriverio:PolyfillManager') +type WebdriverioPolyfillGlobal = { + __name: (target: unknown, fnName: unknown) => unknown +} + /** * A polyfill to set `__name` to the global scope which is needed for WebdriverIO to properly * execute custom (preload) scripts. When using `tsx` Esbuild runs some optimizations which @@ -19,13 +23,12 @@ const log = logger('webdriverio:PolyfillManager') * @see https://github.com/evanw/esbuild/issues/2605 */ export const polyfillFn = function webdriverioPolyfill () { - const __defProp = Object.defineProperty - const __name = function (target: unknown, value: unknown) { - return __defProp(target, 'name', { value: value, configurable: true }) + ;( + ((typeof globalThis === 'object' && globalThis) || + (typeof window === 'object' && window)) as unknown as WebdriverioPolyfillGlobal + ).__name = function (target: unknown, fnName: unknown) { + return Object.defineProperty(target, 'name', { value: fnName, configurable: true }) } - // eslint-disable-next-line @typescript-eslint/no-explicit-any - const __globalThis = (typeof globalThis === 'object' && globalThis) || (typeof window === 'object' && window) as any - __globalThis.__name = __name } /** diff --git a/packages/webdriverio/tests/session/polyfill.test.ts b/packages/webdriverio/tests/session/polyfill.test.ts index 02a03883182..6a4a3176b3d 100644 --- a/packages/webdriverio/tests/session/polyfill.test.ts +++ b/packages/webdriverio/tests/session/polyfill.test.ts @@ -2,7 +2,7 @@ import path from 'node:path' import { describe, it, expect, vi, beforeEach, type Mock } from 'vitest' -import { PolyfillManager } from '../../src/session/polyfill.js' +import { PolyfillManager, polyfillFn } from '../../src/session/polyfill.js' import { // @ts-expect-error mock instances, @@ -57,6 +57,10 @@ describe('PolyfillManager', () => { expect(await manager.initialize()).toBe(true) }) + it('should serialize the polyfill with legacy-compatible syntax', () => { + expect(polyfillFn.toString()).not.toMatch(/\b(?:const|let)\b|=>|\{\s*value\s*,/) + }) + it('should register all eventhandlers and scripts', async () => { const manager = new PolyfillManager(browser) expect(browser.on).toBeCalledTimes(1) From c233b65397392a56b9b95bfd371f46eadc1382e1 Mon Sep 17 00:00:00 2001 From: shadowusr Date: Tue, 21 Jul 2026 01:29:26 +0300 Subject: [PATCH 3/4] chore(webdriver): bump to 9.5.18 --- packages/webdriver/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/webdriver/package.json b/packages/webdriver/package.json index bc9f8682c6c..8b46455e06b 100644 --- a/packages/webdriver/package.json +++ b/packages/webdriver/package.json @@ -1,6 +1,6 @@ { "name": "@testplane/webdriver", - "version": "9.5.17", + "version": "9.5.18", "description": "A Node.js bindings implementation for the W3C WebDriver and Mobile JSONWire Protocol", "author": "Christian Bromann ", "homepage": "https://github.com/webdriverio/webdriverio/tree/main/packages/webdriver", From 112239251042b11ab9348f39a325dbfd52af485b Mon Sep 17 00:00:00 2001 From: shadowusr Date: Tue, 21 Jul 2026 01:31:48 +0300 Subject: [PATCH 4/4] chore(webdriver): bump to 9.5.29 --- packages/webdriverio/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/webdriverio/package.json b/packages/webdriverio/package.json index 6d7a20073f3..be5b5a57101 100644 --- a/packages/webdriverio/package.json +++ b/packages/webdriverio/package.json @@ -1,7 +1,7 @@ { "name": "@testplane/webdriverio", "description": "Next-gen browser and mobile automation test framework for Node.js", - "version": "9.5.28", + "version": "9.5.29", "homepage": "https://webdriver.io", "author": "Christian Bromann ", "license": "MIT",