Skip to content

Commit 7092e3e

Browse files
committed
fix: fix 1118
1 parent 6192434 commit 7092e3e

1 file changed

Lines changed: 14 additions & 3 deletions

File tree

packages/visual-service/src/utils.ts

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import type { Capabilities } from '@wdio/types'
2-
import type { AppiumCapabilities } from 'node_modules/@wdio/types/build/Capabilities.js'
32
import { getMobileScreenSize, getMobileViewPortPosition, IOS_OFFSETS, NOT_KNOWN } from '@wdio/image-comparison-core'
43
import type { Folders, InstanceData, TestContext } from '@wdio/image-comparison-core'
54
import type {
@@ -151,6 +150,15 @@ export function getLtOptions(capabilities: WebdriverIO.Capabilities): any | unde
151150
return key ? (capabilities as Record<string, any>)[key] : undefined
152151
}
153152

153+
/**
154+
* Get a requested Appium capability value by checking both the `appium:`-prefixed
155+
* top-level format and the nested `appium:options` format.
156+
*/
157+
function getRequestedAppiumCapability(requestedCapabilities: WebdriverIO.Capabilities, capName: string): unknown {
158+
return (requestedCapabilities as Record<string, unknown>)[`appium:${capName}`]
159+
?? (requestedCapabilities as WebdriverIO.Capabilities)['appium:options']?.[capName as keyof typeof requestedCapabilities['appium:options']]
160+
}
161+
154162
/**
155163
* Get the device name
156164
*/
@@ -179,7 +187,10 @@ function getDeviceName(browserInstance: WebdriverIO.Browser): string {
179187
deviceName = ltOptions[capName as keyof typeof ltOptions] as string
180188
}
181189

182-
const { 'appium:deviceName': requestedDeviceName } = requestedCapabilities as AppiumCapabilities
190+
const requestedDeviceName = (
191+
getRequestedAppiumCapability(requestedCapabilities, 'deviceName')
192+
|| getRequestedAppiumCapability(requestedCapabilities, 'avd')
193+
) as string | undefined
183194

184195
return (deviceName !== NOT_KNOWN ? deviceName : requestedDeviceName || returnedDeviceName || NOT_KNOWN).toLowerCase()
185196
}
@@ -233,7 +244,7 @@ export async function getInstanceData({
233244
const ltOptions = getLtOptions(requestedCapabilities)
234245
// @TODO: Figure this one out in the future when we know more about the Appium capabilities from LT
235246
// 20241216: LT doesn't have the option to take a ChromeDriver screenshot, so if it's Android it's always native
236-
const nativeWebScreenshot = isAndroid && ltOptions || !!((requestedCapabilities as Capabilities.AppiumAndroidCapabilities)['appium:nativeWebScreenshot'])
247+
const nativeWebScreenshot = isAndroid && ltOptions || !!getRequestedAppiumCapability(requestedCapabilities, 'nativeWebScreenshot')
237248
const platformVersion = (rawPlatformVersion === undefined || rawPlatformVersion === '') ? NOT_KNOWN : rawPlatformVersion.toLowerCase()
238249
const {
239250
devicePixelRatio: mobileDevicePixelRatio,

0 commit comments

Comments
 (0)