UNPKG

@wdio/image-comparison-core

Version:

Image comparison core module for @wdio/visual-service - WebdriverIO visual testing framework

73 lines (72 loc) 3.6 kB
import { describe, it, expect, vi, beforeEach } from 'vitest'; import { takeFullPageScreenshots } from './takeFullPageScreenshots.js'; vi.mock('./screenshots.js', () => ({ getMobileFullPageNativeWebScreenshotsData: vi.fn().mockResolvedValue({ data: ['mobile'] }), getAndroidChromeDriverFullPageScreenshotsData: vi.fn().mockResolvedValue({ data: ['chromedriver'] }), getDesktopFullPageScreenshotsData: vi.fn().mockResolvedValue({ data: ['desktop'] }), takeBase64BiDiScreenshot: vi.fn().mockResolvedValue('bidi-screenshot') })); vi.mock('../helpers/utils.js', () => ({ canUseBidiScreenshot: vi.fn() })); describe('takeFullPageScreenshots', () => { const mockBrowser = {}; const createOptions = (overrides = {}) => ({ addressBarShadowPadding: 0, devicePixelRatio: 1, deviceRectangles: {}, fullPageScrollTimeout: 1000, hideAfterFirstScroll: [], innerHeight: 800, isAndroid: false, isAndroidNativeWebScreenshot: false, isAndroidChromeDriverScreenshot: false, isIOS: false, isLandscape: false, screenHeight: 1024, screenWidth: 768, toolBarShadowPadding: 0, ...overrides }); beforeEach(() => { vi.clearAllMocks(); }); it('should use BiDi when shouldUseBidi is true and browser supports it', async () => { const { canUseBidiScreenshot } = await import('../helpers/utils.js'); vi.mocked(canUseBidiScreenshot).mockReturnValue(true); const options = createOptions(); const result = await takeFullPageScreenshots(mockBrowser, options, true); expect(result.data[0].screenshot).toBe('bidi-screenshot'); }); it('should route to mobile native web for Android native web screenshots', async () => { const { getMobileFullPageNativeWebScreenshotsData } = await import('./screenshots.js'); const options = createOptions({ isAndroid: true, isAndroidNativeWebScreenshot: true }); const result = await takeFullPageScreenshots(mockBrowser, options, false); expect(getMobileFullPageNativeWebScreenshotsData).toHaveBeenCalledWith(mockBrowser, expect.any(Object)); expect(result.data).toEqual(['mobile']); }); it('should route to mobile native web for iOS devices', async () => { const { getMobileFullPageNativeWebScreenshotsData } = await import('./screenshots.js'); const options = createOptions({ isIOS: true }); await takeFullPageScreenshots(mockBrowser, options, false); expect(getMobileFullPageNativeWebScreenshotsData).toHaveBeenCalledWith(mockBrowser, expect.any(Object)); }); it('should route to Android ChromeDriver for Android ChromeDriver screenshots', async () => { const { getAndroidChromeDriverFullPageScreenshotsData } = await import('./screenshots.js'); const options = createOptions({ isAndroid: true, isAndroidChromeDriverScreenshot: true }); await takeFullPageScreenshots(mockBrowser, options, false); expect(getAndroidChromeDriverFullPageScreenshotsData).toHaveBeenCalledWith(mockBrowser, expect.any(Object)); }); it('should default to desktop for other cases', async () => { const { getDesktopFullPageScreenshotsData } = await import('./screenshots.js'); const options = createOptions(); await takeFullPageScreenshots(mockBrowser, options, false); expect(getDesktopFullPageScreenshotsData).toHaveBeenCalledWith(mockBrowser, expect.any(Object)); }); });