Class Images


  • public class Images
    extends Object
    • Constructor Detail

      • Images

        public Images()
    • Method Detail

      • captureToFile

        public static void captureToFile​(InBrowser browser,
                                         Path el,
                                         File outputFile)
        Save image to file, scaling the image to the size in the browser
        Parameters:
        browser - - browser
        el - - Path element to capture
        outputFile - - output file
      • captureToFileNoScaling

        public static void captureToFileNoScaling​(InBrowser browser,
                                                  Path el,
                                                  File outputFile)
        Save image to file
        Parameters:
        browser - - browser
        el - - Path element to capture
        outputFile - - output file
      • captureToFile

        public static void captureToFile​(InBrowser browser,
                                         File outputFile)
        Save screenshot to file, scaling the image to the size in the browser
        Parameters:
        browser - - browser
        outputFile - - output file
      • captureCanvasToFile

        public static void captureCanvasToFile​(InBrowser browser,
                                               Path el,
                                               File outputFile)
        Save an HTML5 canvas to file. Optimized for canvas. Will fail if the element is not a canvas.
        Parameters:
        browser - - browser
        el - - Path element to capture
        outputFile - - output file
      • captureImgSrcToFile

        public static void captureImgSrcToFile​(InBrowser browser,
                                               Path imgEl,
                                               File outputFile)
        Save the source of an HTML img element to file
        Parameters:
        browser - - browser
        imgEl - - HTML img element to capture
        outputFile - - output file
      • show

        public static void show​(InBrowser browser,
                                Path el)
        Display image of an element in a separate window. Does not work as an evaluation within the debugger.
        Parameters:
        browser - - browser
        el - - the element to capture and display
      • showCanvas

        public static void showCanvas​(InBrowser browser,
                                      Path el)
        Display image of an HTML5 canvas element in a separate window. Does not work as an evaluation within the debugger.
        Parameters:
        browser - - browser
        el - - the element to capture and display
      • assertHTMLImgSoureIsEqualToExpected

        public static void assertHTMLImgSoureIsEqualToExpected​(InBrowser browser,
                                                               Path el,
                                                               InputStream expectedImageInput)
                                                        throws IOException
        Verify that an image downloaded from an HTML img src attribute, is pixel-perfect
        Parameters:
        browser - - browser
        el - - HTML img element to capture and verify
        expectedImageInput - reference image file
        Throws:
        IOException - - file could not be read
      • assertImageIsEqualToExpected

        public static void assertImageIsEqualToExpected​(InBrowser browser,
                                                        Path el,
                                                        InputStream expectedImageInput)
                                                 throws IOException
        Verify that the element's image is pixel-perfect
        Parameters:
        browser - - browser
        el - - element to capture and verify
        expectedImageInput - reference image file
        Throws:
        IOException - - file could not be read
      • assertImageIsEqualToExpectedNoScaling

        public static void assertImageIsEqualToExpectedNoScaling​(InBrowser browser,
                                                                 Path el,
                                                                 InputStream expectedImageInput)
                                                          throws IOException
        Verify that the element's image is pixel-perfect
        Parameters:
        browser - - browser
        el - - element to capture and verify
        expectedImageInput - reference image file
        Throws:
        IOException - - file could not be read
      • assertImageIsEqualToExpected

        public static void assertImageIsEqualToExpected​(BufferedImage img,
                                                        InputStream expectedImageInput)
                                                 throws IOException
        Verify that the element's image is pixel-perfect
        Parameters:
        img - - an image to be validated
        expectedImageInput - reference image file
        Throws:
        IOException - - file could not be read
      • assertCanvasImageIsEqualToExpected

        public static void assertCanvasImageIsEqualToExpected​(InBrowser browser,
                                                              Path el,
                                                              InputStream expectedImageInput)
                                                       throws IOException
        Verify that the element's image is pixel-perfect
        Parameters:
        browser - - browser
        el - - canvas to capture and verify
        expectedImageInput - reference image file
        Throws:
        IOException - - file could not be read
      • getErrorsImage

        public static Optional<BufferedImage> getErrorsImage​(InBrowser browser,
                                                             Path el,
                                                             InputStream expectedImageInput)
                                                      throws IOException
        create and return an image that highlights the different pixels between the captured image and the reference image
        Parameters:
        browser - - browser
        el - - element to capture and verify
        expectedImageInput - reference image file
        Returns:
        an image that highlights the different pixels. If the images are equal, returns an empty optional.
        Throws:
        IOException - - file could not be read
        AssertionError - - images are not the same size
      • getFuzzyErrorsImage

        public static Optional<BufferedImage> getFuzzyErrorsImage​(InBrowser browser,
                                                                  Path el,
                                                                  InputStream expectedImageInput)
                                                           throws IOException
        create and return an image that highlights the different pixels between the captured image and the reference image
        Parameters:
        browser - - browser
        el - - element to capture and verify
        expectedImageInput - reference image file
        Returns:
        an image that highlights the different pixels. If the images are equal, returns an empty optional.
        Throws:
        IOException - - file could not be read
        AssertionError - - images are not the same size
      • getFuzzyErrorsImage

        public static Optional<BufferedImage> getFuzzyErrorsImage​(InputStream actualImageInput,
                                                                  InputStream expectedImageInput)
                                                           throws IOException
        create and return an image that highlights the different pixels between the captured image and the reference image
        Parameters:
        expectedImageInput - reference image file
        Returns:
        an image that highlights the different pixels. If the images are equal, returns an empty optional.
        Throws:
        IOException - - file could not be read
        AssertionError - - images are not the same size
      • getFuzzyErrorImage

        public static Optional<BufferedImage> getFuzzyErrorImage​(InBrowser browser,
                                                                 Path el,
                                                                 InputStream expectedImageInput)
                                                          throws IOException
        create and return an image that highlights the different pixels between the captured image and the reference image
        Parameters:
        browser - - browser
        el - - element to capture and verify
        expectedImageInput - reference image file
        Returns:
        an image that highlights the different pixels. If the images are equal, returns an empty optional.
        Throws:
        IOException - - file could not be read
        AssertionError - - images are not the same size
      • assertImageIsEqualToExpectedWithShiftAndCrop

        public static void assertImageIsEqualToExpectedWithShiftAndCrop​(InBrowser browser,
                                                                        Path el,
                                                                        InputStream expectedImageInput,
                                                                        int maxShift)
                                                                 throws IOException
        Verify that the element's image is pixel-perfect, but allowing some crop/shift
        Parameters:
        browser - - browser
        el - - element to capture and verify
        expectedImageInput - reference image file
        maxShift - maximum pixels the images are shifted/cropped compared to each other (both on x and y axis)
        Throws:
        IOException - - file could not be read
      • assertImageIsSimilarToExpected

        public static void assertImageIsSimilarToExpected​(InBrowser browser,
                                                          Path el,
                                                          InputStream expectedImageInput,
                                                          int maxBadPixelsRatio)
                                                   throws IOException
        Verify the picture is "similar" to the reference image. Ignores minor differences between the pixels.
        Parameters:
        browser - - browser
        el - - element to capture and validate
        expectedImageInput - - reference image
        maxBadPixelsRatio - - a positive number. For example: If it's 100, then 1% of the pixels can have major differences compared to the reference.
        Throws:
        IOException - - image file could not be read
      • assertWindowIsSimilarToExpected

        public static void assertWindowIsSimilarToExpected​(InBrowser browser,
                                                           InputStream expectedImageInput,
                                                           int maxBadPixelsRatio)
                                                    throws IOException
        Verify the picture is "similar" to the reference image. Ignores minor differences between the pixels.
        Parameters:
        expectedImageInput - - reference image
        maxBadPixelsRatio - - a positive number. For example: If it's 100, then 1% of the pixels can have major differences compared to the reference.
        Throws:
        IOException - - image file could not be read
      • assertImageIsSimilarToExpectedWithShift

        public static void assertImageIsSimilarToExpectedWithShift​(InBrowser browser,
                                                                   Path el,
                                                                   InputStream expectedImageInput,
                                                                   int maxBadPixelsRatio,
                                                                   int maxShift)
                                                            throws IOException
        Verify the picture is "similar" to the reference image. Ignores minor differences between the pixels.
        Parameters:
        browser - - browser
        el - - element to capture and validate
        expectedImageInput - - reference image
        maxBadPixelsRatio - - a positive number. For example: If it's 100, then 1% of the pixels can have major differences compared to the reference.
        maxShift - - max shift allowed
        Throws:
        IOException - - image file could not be read
      • assertImageIsSimilarToExpectedWithFilter

        public static void assertImageIsSimilarToExpectedWithFilter​(InBrowser browser,
                                                                    Path el,
                                                                    InputStream filterImageInput,
                                                                    InputStream expectedImageInput,
                                                                    int maxBadPixelsRatio)
                                                             throws IOException
        Verify the picture is "similar" to the reference image. Ignores minor differences between the pixels.
        Parameters:
        browser - - browser
        el - - element to capture and validate
        expectedImageInput - - reference image
        filterImageInput - - image that filters interesting areas
        maxBadPixelsRatio - - a positive number. For example: If it's 100, then 1% of the pixels can have major differences compared to the reference.
        Throws:
        IOException - - image file could not be read
      • assertWindowIsSimilarToExpectedWithFilter

        public static void assertWindowIsSimilarToExpectedWithFilter​(InBrowser browser,
                                                                     InputStream filterImageInput,
                                                                     InputStream expectedImageInput,
                                                                     int maxBadPixelsRatio)
                                                              throws IOException
        Verify the picture is "similar" to the reference image. Ignores minor differences between the pixels.
        Parameters:
        browser - - browser
        expectedImageInput - - reference image
        filterImageInput - - image that filters interesting areas
        maxBadPixelsRatio - - a positive number. For example: If it's 100, then 1% of the pixels can have major differences compared to the reference.
        Throws:
        IOException - - image file could not be read
      • assertImageIsSimilarToExpectedWithFilter

        public static void assertImageIsSimilarToExpectedWithFilter​(BufferedImage elementImage,
                                                                    InputStream filterImageInput,
                                                                    InputStream expectedImageInput,
                                                                    int maxBadPixelsRatio)
                                                             throws IOException
        Verify the picture is "similar" to the reference image. Ignores minor differences between the pixels.
        Parameters:
        elementImage - - actual image
        expectedImageInput - - reference image
        filterImageInput - - image that filters interesting areas
        maxBadPixelsRatio - - a positive number. For example: If it's 100, then 1% of the pixels can have major differences compared to the reference.
        Throws:
        IOException - - image file could not be read
      • captureCanvas

        public static BufferedImage captureCanvas​(InBrowser browser,
                                                  Path canvas)
        Capture a canvas DOM element to an image as a png. The reason for the special treatment for canvas is that capturing it as a raster image is much more efficient than a generic element.
        Parameters:
        browser - - the browser
        canvas - - a Path to the canvas element
        Returns:
        a raster image
      • showImage

        public static void showImage​(BufferedImage image,
                                     String header)
        Display an image on a JFrame
        Parameters:
        image - - the image
        header - - display title
      • resize

        public static BufferedImage resize​(BufferedImage img,
                                           long newW,
                                           long newH)
        Resize an image to the wanted size.
        Parameters:
        img - the image
        newW - new width
        newH - new height
        Returns:
        resized image
      • getBrowserInnerDimensions

        public static Map<String,​Long> getBrowserInnerDimensions​(InBrowser browser)
      • captureImage

        public static BufferedImage captureImage​(InBrowser browser,
                                                 Path el)
        capture the image of the element in the browser and return the image object. It requires the entire element to be visible, so if it is not, first you need to scroll to it, or resize (see WindowResizer or ElementResizer).
        Parameters:
        browser - - browser
        el - - element to capture and validate
        Returns:
        the image
      • captureImage

        public static BufferedImage captureImage​(InBrowser browser)
        capture the image of the entire window in the browser and return the image object
        Parameters:
        browser - - browser
        Returns:
        the image
      • captureImageNoScaling

        public static BufferedImage captureImageNoScaling​(InBrowser browser,
                                                          Path el)
        Same as captureImage(), but will not autoscale back to the size as the browser "sees" it. This may result in a much larger image.
        Parameters:
        browser - - browser
        el - - element to capture and validate
        Returns:
        the image