Skip to content

Commit f6ca37e

Browse files
fix: guard missing getContext (#15103)
* fix: guard missing getContext * Revert "fix: guard missing getContext" This reverts commit 3f6de43. * fix: skip session manager for protocol stub --------- Co-authored-by: Wim Selles <wim@wswebcreation.nl>
1 parent 5a1977c commit f6ca37e

2 files changed

Lines changed: 27 additions & 2 deletions

File tree

packages/webdriverio/src/index.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,14 @@ export const remote = async function (
7575
}
7676

7777
instance.addLocatorStrategy = addLocatorStrategyHandler(instance)
78-
await registerSessionManager(instance)
78+
79+
/**
80+
* protocol stub sessions are used before the real session starts (e.g. spec filtering).
81+
* They don't have full command coverage, so skip session manager initialization.
82+
*/
83+
if (!isStub(options.automationProtocol)) {
84+
await registerSessionManager(instance)
85+
}
7986
return instance
8087
}
8188

@@ -209,4 +216,3 @@ export const multiremote = async function (
209216
driver.addLocatorStrategy = addLocatorStrategyHandler(driver)
210217
return driver
211218
}
212-

packages/webdriverio/tests/module.test.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,10 @@ import { validateConfig } from '@wdio/config'
66

77
import detectBackend from '../src/utils/detectBackend.js'
88
import { remote, multiremote, attach, Key, SevereServiceError } from '../src/index.js'
9+
import { registerSessionManager } from '../src/session/index.js'
910

1011
vi.mock('../src/utils/detectBackend', () => ({ default: vi.fn() }))
12+
vi.mock('../src/session/index.js', () => ({ registerSessionManager: vi.fn() }))
1113
vi.mock('@wdio/logger', () => import(path.join(process.cwd(), '__mocks__', '@wdio/logger')))
1214
vi.mock('webdriver', () => {
1315
const client = {
@@ -68,6 +70,7 @@ describe('WebdriverIO module interface', () => {
6870
vi.mocked(WebDriver.newSession).mockClear()
6971
vi.mocked(WebDriver.attachToSession).mockClear()
7072
vi.mocked(detectBackend).mockClear()
73+
vi.mocked(registerSessionManager).mockClear()
7174
})
7275

7376
it('should provide all exports', () => {
@@ -87,6 +90,7 @@ describe('WebdriverIO module interface', () => {
8790
const browser = await remote(options)
8891
expect(browser.sessionId).toBe('foobar-123')
8992
expect(logger.setLogLevelsConfig).toBeCalledWith(undefined, 'trace')
93+
expect(registerSessionManager).toBeCalledTimes(1)
9094
})
9195

9296
it('allows to propagate a modifier', async () => {
@@ -170,6 +174,21 @@ describe('WebdriverIO module interface', () => {
170174
isWindowsApp: false,
171175
isMacApp: false,
172176
})
177+
expect(registerSessionManager).not.toBeCalled()
178+
})
179+
180+
it('should not initialize session managers for protocol stub sessions', async () => {
181+
const browser = await remote({
182+
automationProtocol: './protocol-stub.js',
183+
capabilities: {
184+
browserName: 'Safari',
185+
platformName: 'iOS',
186+
'appium:options': { automationName: 'XCUITest' }
187+
}
188+
})
189+
190+
expect(browser.isMobile).toBe(true)
191+
expect(registerSessionManager).not.toBeCalled()
173192
})
174193

175194
it('should use the element disable implicitWait exclusion list', async () => {

0 commit comments

Comments
 (0)