Esempio n. 1
0
    def testScreenshot(self):
        if not self._tab.screenshot_supported:
            logging.warning(
                'Browser does not support screenshots, skipping test.')
            return

        self.Navigate('green_rect.html')
        pixel_ratio = self._tab.EvaluateJavaScript(
            'window.devicePixelRatio || 1')

        screenshot = self._tab.Screenshot(5)
        assert screenshot is not None
        image_util.GetPixelColor(screenshot, 0 * pixel_ratio,
                                 0 * pixel_ratio).AssertIsRGB(0,
                                                              255,
                                                              0,
                                                              tolerance=2)
        image_util.GetPixelColor(screenshot, 31 * pixel_ratio,
                                 31 * pixel_ratio).AssertIsRGB(0,
                                                               255,
                                                               0,
                                                               tolerance=2)
        image_util.GetPixelColor(screenshot, 32 * pixel_ratio,
                                 32 * pixel_ratio).AssertIsRGB(255,
                                                               255,
                                                               255,
                                                               tolerance=2)
    def testReadFromPngFile(self):
        file_bmp = image_util.FromPngFile(test_png_path)

        self.assertEquals(2, image_util.Width(file_bmp))
        self.assertEquals(2, image_util.Height(file_bmp))

        image_util.GetPixelColor(file_bmp, 0, 0).AssertIsRGB(255, 0, 0)
        image_util.GetPixelColor(file_bmp, 1, 1).AssertIsRGB(0, 255, 0)
        image_util.GetPixelColor(file_bmp, 0, 1).AssertIsRGB(0, 0, 255)
        image_util.GetPixelColor(file_bmp, 1, 0).AssertIsRGB(255, 255, 0)
    def testReadFromBase64Png(self):
        bmp = image_util.FromBase64Png(test_png)

        self.assertEquals(2, image_util.Width(bmp))
        self.assertEquals(2, image_util.Height(bmp))

        image_util.GetPixelColor(bmp, 0, 0).AssertIsRGB(255, 0, 0)
        image_util.GetPixelColor(bmp, 1, 1).AssertIsRGB(0, 255, 0)
        image_util.GetPixelColor(bmp, 0, 1).AssertIsRGB(0, 0, 255)
        image_util.GetPixelColor(bmp, 1, 0).AssertIsRGB(255, 255, 0)
  def testCrop(self):
    pixels = [0, 0, 0, 1, 0, 0, 2, 0, 0, 3, 0, 0,
              0, 1, 0, 1, 1, 0, 2, 1, 0, 3, 1, 0,
              0, 2, 0, 1, 2, 0, 2, 2, 0, 3, 2, 0]
    bmp = image_util.FromRGBPixels(4, 3, pixels)
    bmp = image_util.Crop(bmp, 1, 2, 2, 1)

    self.assertEquals(2, image_util.Width(bmp))
    self.assertEquals(1, image_util.Height(bmp))
    image_util.GetPixelColor(bmp, 0, 0).AssertIsRGB(1, 2, 0)
    image_util.GetPixelColor(bmp, 1, 0).AssertIsRGB(2, 2, 0)
    self.assertEquals(image_util.Pixels(bmp), bytearray([1, 2, 0, 2, 2, 0]))
def _CompareScreenshotSamples(screenshot, expectations, device_pixel_ratio):
    for expectation in expectations:
        location = expectation["location"]
        x = int(location[0] * device_pixel_ratio)
        y = int(location[1] * device_pixel_ratio)

        if (x < 0 or y < 0 or x > image_util.Width(screenshot)
                or y > image_util.Height(screenshot)):
            raise page_test.Failure(
                'Expected pixel location [%d, %d] is out of range on [%d, %d] image'
                % (x, y, image_util.Width(screenshot),
                   image_util.Height(screenshot)))

        actual_color = image_util.GetPixelColor(screenshot, x, y)
        expected_color = rgba_color.RgbaColor(expectation["color"][0],
                                              expectation["color"][1],
                                              expectation["color"][2])
        if not actual_color.IsEqual(expected_color, expectation["tolerance"]):
            raise page_test.Failure('Expected pixel at ' + str(location) +
                                    ' to be ' + str(expectation["color"]) +
                                    " but got [" + str(actual_color.r) + ", " +
                                    str(actual_color.g) + ", " +
                                    str(actual_color.b) + "]")
    def testDiff(self):
        file_bmp = image_util.FromPngFile(test_png_path)
        file_bmp_2 = image_util.FromPngFile(test_png_2_path)

        diff_bmp = image_util.Diff(file_bmp, file_bmp)

        self.assertEquals(2, image_util.Width(diff_bmp))
        self.assertEquals(2, image_util.Height(diff_bmp))

        image_util.GetPixelColor(diff_bmp, 0, 0).AssertIsRGB(0, 0, 0)
        image_util.GetPixelColor(diff_bmp, 1, 1).AssertIsRGB(0, 0, 0)
        image_util.GetPixelColor(diff_bmp, 0, 1).AssertIsRGB(0, 0, 0)
        image_util.GetPixelColor(diff_bmp, 1, 0).AssertIsRGB(0, 0, 0)

        diff_bmp = image_util.Diff(file_bmp, file_bmp_2)

        self.assertEquals(3, image_util.Width(diff_bmp))
        self.assertEquals(3, image_util.Height(diff_bmp))

        image_util.GetPixelColor(diff_bmp, 0, 0).AssertIsRGB(0, 255, 255)
        image_util.GetPixelColor(diff_bmp, 1, 1).AssertIsRGB(255, 0, 255)
        image_util.GetPixelColor(diff_bmp, 0, 1).AssertIsRGB(255, 255, 0)
        image_util.GetPixelColor(diff_bmp, 1, 0).AssertIsRGB(0, 0, 255)

        image_util.GetPixelColor(diff_bmp, 0, 2).AssertIsRGB(255, 255, 255)
        image_util.GetPixelColor(diff_bmp, 1, 2).AssertIsRGB(255, 255, 255)
        image_util.GetPixelColor(diff_bmp, 2, 0).AssertIsRGB(255, 255, 255)
        image_util.GetPixelColor(diff_bmp, 2, 1).AssertIsRGB(255, 255, 255)
        image_util.GetPixelColor(diff_bmp, 2, 2).AssertIsRGB(255, 255, 255)