@wdio/image-comparison-core
Version:
Image comparison core module for @wdio/visual-service - WebdriverIO visual testing framework
57 lines (56 loc) • 2.36 kB
JavaScript
import { getMobileFullPageNativeWebScreenshotsData, getAndroidChromeDriverFullPageScreenshotsData, getDesktopFullPageScreenshotsData, takeBase64BiDiScreenshot } from './screenshots.js';
export async function takeFullPageScreenshots(browserInstance, options, shouldUseBidi = false) {
if (shouldUseBidi) {
const screenshot = await takeBase64BiDiScreenshot({ browserInstance, origin: 'document' });
return {
fullPageHeight: -1,
fullPageWidth: -1,
data: [{
canvasWidth: 0,
canvasYPosition: 0,
imageHeight: 0,
imageWidth: 0,
imageXPosition: 0,
imageYPosition: 0,
screenshot,
}]
};
}
if (isAndroidNativeWeb(options) || options.isIOS) {
return getMobileFullPageNativeWebScreenshotsData(browserInstance, createMobileOptions(options));
}
if (isAndroidChromeDriver(options)) {
return getAndroidChromeDriverFullPageScreenshotsData(browserInstance, createDesktopOptions(options));
}
// Default to desktop
return getDesktopFullPageScreenshotsData(browserInstance, createDesktopOptions(options));
}
function isAndroidNativeWeb(options) {
return options.isAndroid && options.isAndroidNativeWebScreenshot;
}
function isAndroidChromeDriver(options) {
return options.isAndroid && options.isAndroidChromeDriverScreenshot;
}
function createMobileOptions(options) {
return {
addressBarShadowPadding: options.addressBarShadowPadding,
devicePixelRatio: options.devicePixelRatio,
deviceRectangles: options.deviceRectangles,
fullPageScrollTimeout: options.fullPageScrollTimeout,
hideAfterFirstScroll: options.hideAfterFirstScroll,
innerHeight: options.innerHeight,
isAndroid: options.isAndroid,
isIOS: options.isIOS,
isLandscape: options.isLandscape,
screenWidth: options.screenWidth,
toolBarShadowPadding: options.toolBarShadowPadding,
};
}
function createDesktopOptions(options) {
return {
devicePixelRatio: options.devicePixelRatio,
fullPageScrollTimeout: options.fullPageScrollTimeout,
hideAfterFirstScroll: options.hideAfterFirstScroll,
innerHeight: options.innerHeight,
};
}