import * as utils from '@applitools/utils' import type {CypressEyesConfig, MaybeArray, DeviceName, ScreenOrientationPlain} from '../expose' import type {SpecType, Config} from '@applitools/core' import type {Environment} from '@applitools/core' type CypressBrowser = MaybeArray< | Environment | {deviceName: DeviceName; screenOrientation?: ScreenOrientationPlain; name?: string} | { iosDeviceInfo: { deviceName: DeviceName screenOrientation?: ScreenOrientationPlain iosVersion?: 'latest' | 'latest-1' } } > export function transformBrowsers(browsers: CypressBrowser): Environment[] { if (!browsers) return if (!Array.isArray(browsers)) browsers = [browsers] return browsers.map(browser => { if (utils.types.has(browser, 'width') && utils.types.has(browser, 'height') && !utils.types.has(browser, 'name')) { browser.name = 'chrome' return browser } else if (utils.types.has(browser, 'deviceName')) { return {chromeEmulationInfo: browser} } else if (utils.types.has(browser, 'iosDeviceInfo')) { if (utils.types.has(browser.iosDeviceInfo, 'iosVersion')) { const version = browser.iosDeviceInfo.iosVersion delete browser.iosDeviceInfo.iosVersion return {iosDeviceInfo: {...browser.iosDeviceInfo, version}} } else { return browser } } else { return browser } }) } export function transformAccessibilityValidation( accessibilityValidation: NonNullable['accessibilitySettings'], ): Config['check']['accessibilitySettings'] { if (!accessibilityValidation) return return { level: accessibilityValidation.level, version: accessibilityValidation.guidelinesVersion, } }