All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.applitools.eyes.selenium.capture.AndroidScreenshotImageProvider Maven / Gradle / Ivy

package com.applitools.eyes.selenium.capture;

import com.applitools.eyes.Logger;
import com.applitools.eyes.RectangleSize;
import com.applitools.eyes.UserAgent;
import com.applitools.eyes.logging.Stage;
import com.applitools.eyes.logging.TraceLevel;
import com.applitools.eyes.logging.Type;
import com.applitools.eyes.selenium.SeleniumEyes;
import com.applitools.utils.ImageUtils;
import org.apache.commons.lang3.tuple.Pair;
import org.openqa.selenium.TakesScreenshot;

import java.awt.*;
import java.awt.image.BufferedImage;
import java.util.Collections;

public class AndroidScreenshotImageProvider extends MobileScreenshotImageProvider {

    public AndroidScreenshotImageProvider(SeleniumEyes eyes, Logger logger, TakesScreenshot tsInstance, UserAgent userAgent) {
        super(eyes, logger, tsInstance, userAgent);
    }

    @Override
    public BufferedImage getImage() {
        BufferedImage image = super.getImage();
        logger.log(TraceLevel.Info, Collections.singleton(eyes.getTestId()), Stage.CHECK, Type.CAPTURE_SCREENSHOT,
                Pair.of("imageSize", new RectangleSize(image.getWidth(), image.getHeight())));

        eyes.getDebugScreenshotsProvider().save(image, "ANDROID");

        if (eyes.getIsCutProviderExplicitlySet()) {
            return image;
        }

        RectangleSize originalViewportSize = getViewportSize();
        logger.log(TraceLevel.Info, Collections.singleton(eyes.getTestId()), Stage.CHECK, Type.CAPTURE_SCREENSHOT,
                Pair.of("originalViewportSize", originalViewportSize));

        float widthRatio = image.getWidth() / (float) originalViewportSize.getWidth();
        float height = widthRatio * originalViewportSize.getHeight();
        Rectangle cropRect = new Rectangle(0, 0, image.getWidth(), Math.round(height));
        image = ImageUtils.cropImage(logger, image, cropRect);
        return image;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy