diff --git a/packages/wdio-cli/src/utils.ts b/packages/wdio-cli/src/utils.ts index a5de4a0fafe..fa616fee882 100644 --- a/packages/wdio-cli/src/utils.ts +++ b/packages/wdio-cli/src/utils.ts @@ -189,7 +189,7 @@ export async function getCapabilities(arg: ReplCommandArguments) { // multi capabilities (requiredCaps as (Capabilities.RequestedStandaloneCapabilities)[])[parseInt(arg.capabilities, 10)] || // multiremote - (requiredCaps as Capabilities.RequestedMultiremoteCapabilities)[arg.capabilities] + (requiredCaps as Capabilities.RequestedMultiremoteCapabilities)[arg.capabilities]?.capabilities ) const requiredW3CCaps = pickBy(requiredCaps, (_: never, key: string) => CAPABILITY_KEYS.includes(key) || key.includes(':')) if (!Object.keys(requiredW3CCaps).length) { diff --git a/packages/wdio-cli/tests/__snapshots__/utils.test.ts.snap b/packages/wdio-cli/tests/__snapshots__/utils.test.ts.snap index 58a43364f33..a6c7f52ae1d 100644 --- a/packages/wdio-cli/tests/__snapshots__/utils.test.ts.snap +++ b/packages/wdio-cli/tests/__snapshots__/utils.test.ts.snap @@ -73,6 +73,14 @@ exports[`getCapabilities > should return driver with capabilities for ios 2`] = } `; +exports[`getCapabilities > should return driver with capabilities for multiremote config 1`] = ` +{ + "capabilities": { + "browserName": "chrome", + }, +} +`; + exports[`getCapabilities > should through capability not found 1`] = `[Error: No capability found in given config file with the provided capability indexed/named property: 5. Please check the capability in your wdio config file.]`; exports[`getCapabilities > should throw capability not provided 1`] = `[Error: Please provide index/named property of capability to use from the capabilities array/object in wdio config file]`; diff --git a/packages/wdio-cli/tests/utils.test.ts b/packages/wdio-cli/tests/utils.test.ts index 65cc2e28199..7c2704d76cc 100644 --- a/packages/wdio-cli/tests/utils.test.ts +++ b/packages/wdio-cli/tests/utils.test.ts @@ -312,6 +312,25 @@ describe('getCapabilities', () => { .toMatchSnapshot() expect(autoCompileMock).toBeCalledTimes(1) }) + + it('should return driver with capabilities for multiremote config', async () => { + const getCapabilitiesMock = vi.spyOn(ConfigParser.prototype, 'getCapabilities') + getCapabilitiesMock.mockReturnValue({ + myChromeBrowser: { + capabilities: { + browserName: 'chrome' + } + }, + myFirefoxBrowser: { + capabilities: { + browserName: 'firefox' + } + } + } as WebdriverIO.Capabilities) + + expect(await getCapabilities({ option: '/path/to/config.js', capabilities: 'myChromeBrowser' } as any)) + .toMatchSnapshot() + }) }) afterEach(() => {