Skip to content

Commit 6192434

Browse files
committed
test: update tests and create failing tests
1 parent 0296efc commit 6192434

2 files changed

Lines changed: 189 additions & 1 deletion

File tree

packages/visual-service/tests/utils.test.ts

Lines changed: 184 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -484,6 +484,190 @@ describe('utils', () => {
484484
})
485485
expect(await getInstanceData({ browserInstance: driver, initialDeviceRectangles: DEVICE_RECTANGLES, isNativeContext:true })).toMatchSnapshot()
486486
})
487+
488+
it('should return the deviceName from appium:options when using the nested capability format', async() => {
489+
// @ts-ignore
490+
const driver = createDriverMock({
491+
capabilities: {
492+
...DEFAULT_DESKTOP_BROWSER.capabilities,
493+
browserName: '',
494+
browserVersion: '',
495+
platformName: 'android',
496+
// @ts-ignore
497+
deviceName: 'emulator-5554',
498+
platformVersion: '14.0',
499+
app: '/Users/WebdriverIO/visual-testing/apps/android.apk',
500+
pixelRatio: 3.5,
501+
statBarHeight: 144,
502+
} as WebdriverIO.Capabilities,
503+
requestedCapabilities: {
504+
...DEFAULT_DESKTOP_BROWSER.requestedCapabilities,
505+
browserName: '',
506+
browserVersion: '',
507+
platformName: 'android',
508+
'appium:options': {
509+
automationName: 'UiAutomator2',
510+
deviceName: 'Pixel_6_API_34',
511+
platformVersion: '14.0',
512+
app: '/Users/WebdriverIO/visual-testing/apps/android.apk',
513+
},
514+
} as WebdriverIO.Capabilities,
515+
isAndroid: true,
516+
isMobile: true,
517+
getWindowSize: vi.fn().mockResolvedValueOnce({ width: 100, height: 200 }),
518+
execute: vi.fn().mockResolvedValueOnce({ realDisplaySize: '100x200' }),
519+
getOrientation: vi.fn().mockResolvedValue('PORTRAIT')
520+
})
521+
const result = await getInstanceData({ browserInstance: driver, initialDeviceRectangles: DEVICE_RECTANGLES, isNativeContext: true })
522+
expect(result.deviceName).toBe('pixel_6_api_34')
523+
})
524+
525+
it('should fall back to appium:avd when appium:deviceName is not provided for Android', async() => {
526+
// @ts-ignore
527+
const driver = createDriverMock({
528+
capabilities: {
529+
...DEFAULT_DESKTOP_BROWSER.capabilities,
530+
browserName: '',
531+
browserVersion: '',
532+
platformName: 'android',
533+
// @ts-ignore
534+
deviceName: 'emulator-5554',
535+
platformVersion: '14.0',
536+
app: '/Users/WebdriverIO/visual-testing/apps/android.apk',
537+
pixelRatio: 3.5,
538+
statBarHeight: 144,
539+
} as WebdriverIO.Capabilities,
540+
requestedCapabilities: {
541+
...DEFAULT_DESKTOP_BROWSER.requestedCapabilities,
542+
browserName: '',
543+
browserVersion: '',
544+
platformName: 'android',
545+
'appium:avd': 'Pixel_6_API_34',
546+
'appium:platformVersion': '14.0',
547+
'appium:app': '/Users/WebdriverIO/visual-testing/apps/android.apk',
548+
} as WebdriverIO.Capabilities,
549+
isAndroid: true,
550+
isMobile: true,
551+
getWindowSize: vi.fn().mockResolvedValueOnce({ width: 100, height: 200 }),
552+
execute: vi.fn().mockResolvedValueOnce({ realDisplaySize: '100x200' }),
553+
getOrientation: vi.fn().mockResolvedValue('PORTRAIT')
554+
})
555+
const result = await getInstanceData({ browserInstance: driver, initialDeviceRectangles: DEVICE_RECTANGLES, isNativeContext: true })
556+
expect(result.deviceName).toBe('pixel_6_api_34')
557+
})
558+
559+
it('should fall back to avd in appium:options when deviceName is not provided for Android', async() => {
560+
// @ts-ignore
561+
const driver = createDriverMock({
562+
capabilities: {
563+
...DEFAULT_DESKTOP_BROWSER.capabilities,
564+
browserName: '',
565+
browserVersion: '',
566+
platformName: 'android',
567+
// @ts-ignore
568+
deviceName: 'emulator-5554',
569+
platformVersion: '14.0',
570+
app: '/Users/WebdriverIO/visual-testing/apps/android.apk',
571+
pixelRatio: 3.5,
572+
statBarHeight: 144,
573+
} as WebdriverIO.Capabilities,
574+
requestedCapabilities: {
575+
...DEFAULT_DESKTOP_BROWSER.requestedCapabilities,
576+
browserName: '',
577+
browserVersion: '',
578+
platformName: 'android',
579+
'appium:options': {
580+
automationName: 'UiAutomator2',
581+
avd: 'Pixel_6_API_34',
582+
platformVersion: '14.0',
583+
app: '/Users/WebdriverIO/visual-testing/apps/android.apk',
584+
},
585+
} as WebdriverIO.Capabilities,
586+
isAndroid: true,
587+
isMobile: true,
588+
getWindowSize: vi.fn().mockResolvedValueOnce({ width: 100, height: 200 }),
589+
execute: vi.fn().mockResolvedValueOnce({ realDisplaySize: '100x200' }),
590+
getOrientation: vi.fn().mockResolvedValue('PORTRAIT')
591+
})
592+
const result = await getInstanceData({ browserInstance: driver, initialDeviceRectangles: DEVICE_RECTANGLES, isNativeContext: true })
593+
expect(result.deviceName).toBe('pixel_6_api_34')
594+
})
595+
596+
it('should prefer deviceName over avd when both are in appium:options', async() => {
597+
// @ts-ignore
598+
const driver = createDriverMock({
599+
capabilities: {
600+
...DEFAULT_DESKTOP_BROWSER.capabilities,
601+
browserName: '',
602+
browserVersion: '',
603+
platformName: 'android',
604+
// @ts-ignore
605+
deviceName: 'emulator-5554',
606+
platformVersion: '14.0',
607+
app: '/Users/WebdriverIO/visual-testing/apps/android.apk',
608+
pixelRatio: 3.5,
609+
statBarHeight: 144,
610+
} as WebdriverIO.Capabilities,
611+
requestedCapabilities: {
612+
...DEFAULT_DESKTOP_BROWSER.requestedCapabilities,
613+
browserName: '',
614+
browserVersion: '',
615+
platformName: 'android',
616+
'appium:options': {
617+
automationName: 'UiAutomator2',
618+
deviceName: 'Pixel_6_API_34',
619+
avd: 'Some_Other_AVD_Name',
620+
platformVersion: '14.0',
621+
app: '/Users/WebdriverIO/visual-testing/apps/android.apk',
622+
},
623+
} as WebdriverIO.Capabilities,
624+
isAndroid: true,
625+
isMobile: true,
626+
getWindowSize: vi.fn().mockResolvedValueOnce({ width: 100, height: 200 }),
627+
execute: vi.fn().mockResolvedValueOnce({ realDisplaySize: '100x200' }),
628+
getOrientation: vi.fn().mockResolvedValue('PORTRAIT')
629+
})
630+
const result = await getInstanceData({ browserInstance: driver, initialDeviceRectangles: DEVICE_RECTANGLES, isNativeContext: true })
631+
expect(result.deviceName).toBe('pixel_6_api_34')
632+
})
633+
634+
it('should read nativeWebScreenshot from appium:options', async() => {
635+
// @ts-ignore
636+
const driver = createDriverMock({
637+
capabilities: {
638+
...DEFAULT_DESKTOP_BROWSER.capabilities,
639+
browserName: '',
640+
browserVersion: '',
641+
platformName: 'android',
642+
// @ts-ignore
643+
deviceName: 'emulator-5554',
644+
platformVersion: '14.0',
645+
app: '/Users/WebdriverIO/visual-testing/apps/android.apk',
646+
pixelRatio: 3.5,
647+
statBarHeight: 144,
648+
} as WebdriverIO.Capabilities,
649+
requestedCapabilities: {
650+
...DEFAULT_DESKTOP_BROWSER.requestedCapabilities,
651+
browserName: '',
652+
browserVersion: '',
653+
platformName: 'android',
654+
'appium:options': {
655+
automationName: 'UiAutomator2',
656+
deviceName: 'Pixel_6_API_34',
657+
platformVersion: '14.0',
658+
app: '/Users/WebdriverIO/visual-testing/apps/android.apk',
659+
nativeWebScreenshot: true,
660+
},
661+
} as WebdriverIO.Capabilities,
662+
isAndroid: true,
663+
isMobile: true,
664+
getWindowSize: vi.fn().mockResolvedValueOnce({ width: 100, height: 200 }),
665+
execute: vi.fn().mockResolvedValueOnce({ realDisplaySize: '100x200' }),
666+
getOrientation: vi.fn().mockResolvedValue('PORTRAIT')
667+
})
668+
const result = await getInstanceData({ browserInstance: driver, initialDeviceRectangles: DEVICE_RECTANGLES, isNativeContext: true })
669+
expect(result.nativeWebScreenshot).toBe(true)
670+
})
487671
})
488672

489673
describe('getBrowserObject', () => {

tests/specs/mobile.web.spec.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,19 +9,23 @@ describe('@wdio/visual-service mobile web', () => {
99
const wdioIcsCommands = driver.requestedCapabilities['wdio-ics:options'].commands
1010
const deviceName = driver.requestedCapabilities['lt:options']?.deviceName ||
1111
driver.requestedCapabilities['bstack:options']?.deviceName ||
12+
driver.requestedCapabilities['appium:options']?.deviceName ||
1213
driver.requestedCapabilities.deviceName
1314
const platformName = (
1415
driver.requestedCapabilities['lt:options']?.platformName ||
16+
driver.requestedCapabilities['appium:options']?.platformName ||
1517
driver.requestedCapabilities.platformName
1618
).toLowerCase() === 'android' ? 'Android' : 'iOS'
1719
const platformVersion =
1820
driver.requestedCapabilities['lt:options']?.platformVersion ||
1921
driver.requestedCapabilities['bstack:options']?.osVersion ||
22+
driver.requestedCapabilities['appium:options']?.platformVersion ||
2023
driver.requestedCapabilities.platformVersion
2124
const orientation = (
2225
driver.requestedCapabilities['lt:options']?.deviceOrientation ||
2326
driver.requestedCapabilities['bstack:options']?.deviceOrientation ||
24-
driver.requestedCapabilities.orientation
27+
driver.requestedCapabilities['appium:options']?.orientation ||
28+
driver.requestedCapabilities.orientation || 'PORTRAIT'
2529
).toLowerCase()
2630

2731
beforeEach(async () => {

0 commit comments

Comments
 (0)