예제 #1
0
    def _test_image_transform(
        self,
        driver: WebDriver,
        image_holder: WebElement,
        left_transform_matrices: List[Tuple[str, str]],
        right_transform_matrices: List[Tuple[str, str]],
    ) -> None:
        main_image_container = driver.find_element_by_id(
            'id_main_image_container', )
        rotate_left_elem = driver.find_element_by_id('id_rotate_left')
        for rotation_matrix, translation_matrix in left_transform_matrices:
            rotate_left_elem.click()

            transform = image_holder.value_of_css_property('transform')
            self.assertEqual(rotation_matrix, transform)

            drag_image = ActionChains(driver)
            drag_image.move_to_element_with_offset(
                to_element=main_image_container,
                xoffset=57,
                yoffset=91,
            )
            drag_image.click_and_hold()
            drag_image.move_to_element_with_offset(
                to_element=main_image_container,
                xoffset=107,
                yoffset=191,
            )
            drag_image.release()
            drag_image.perform()

            transform = image_holder.value_of_css_property('transform')
            self.assertEqual(translation_matrix, transform)
        rotate_left_elem.click()

        rotate_right_elem = driver.find_element_by_id('id_rotate_right')
        for rotation_matrix, translation_matrix in right_transform_matrices:
            rotate_right_elem.click()

            transform = image_holder.value_of_css_property('transform')
            self.assertEqual(rotation_matrix, transform)

            drag_image = ActionChains(driver)
            drag_image.move_to_element_with_offset(
                to_element=main_image_container,
                xoffset=57,
                yoffset=91,
            )
            drag_image.click_and_hold()
            drag_image.move_to_element_with_offset(
                to_element=main_image_container,
                xoffset=107,
                yoffset=191,
            )
            drag_image.release()
            drag_image.perform()

            transform = image_holder.value_of_css_property('transform')
            self.assertEqual(translation_matrix, transform)
        rotate_right_elem.click()
예제 #2
0
    def _test_zoom(
        self,
        driver: WebDriver,
        image_holder: WebElement,
    ) -> None:
        zoom_in_elem = driver.find_element_by_id('id_zoom_in')
        zoom_in_transforms = (
            'matrix(1.5, 0, 0, 1.5, 0, 0)',
            'matrix(2.25, 0, 0, 2.25, 0, 0)',
            'matrix(3.375, 0, 0, 3.375, 0, 0)',
            'matrix(5.0625, 0, 0, 5.0625, 0, 0)',
            'matrix(7.59375, 0, 0, 7.59375, 0, 0)',
            'matrix(11.3906, 0, 0, 11.3906, 0, 0)',
            'matrix(17.0859, 0, 0, 17.0859, 0, 0)',
            'matrix(25.6289, 0, 0, 25.6289, 0, 0)',
            'matrix(38.4434, 0, 0, 38.4434, 0, 0)',
            'matrix(38.4434, 0, 0, 38.4434, 0, 0)',
        )
        for zoom_in_transform in zoom_in_transforms:
            zoom_in_elem.click()

            transform = image_holder.value_of_css_property('transform')
            self.assertEqual(zoom_in_transform, transform)

        zoom_out_elem = driver.find_element_by_id('id_zoom_out')
        zoom_out_transforms = (
            'matrix(25.6289, 0, 0, 25.6289, 0, 0)',
            'matrix(17.0859, 0, 0, 17.0859, 0, 0)',
            'matrix(11.3906, 0, 0, 11.3906, 0, 0)',
            'matrix(7.59375, 0, 0, 7.59375, 0, 0)',
            'matrix(5.0625, 0, 0, 5.0625, 0, 0)',
            'matrix(3.375, 0, 0, 3.375, 0, 0)',
            'matrix(2.25, 0, 0, 2.25, 0, 0)',
            'matrix(1.5, 0, 0, 1.5, 0, 0)',
            'matrix(1, 0, 0, 1, 0, 0)',
            'matrix(0.666667, 0, 0, 0.666667, 0, 0)',
            'matrix(0.444444, 0, 0, 0.444444, 0, 0)',
            'matrix(0.296296, 0, 0, 0.296296, 0, 0)',
            'matrix(0.197531, 0, 0, 0.197531, 0, 0)',
            'matrix(0.131687, 0, 0, 0.131687, 0, 0)',
            'matrix(0.0877915, 0, 0, 0.0877915, 0, 0)',
            'matrix(0.0877915, 0, 0, 0.0877915, 0, 0)',
        )
        for zoom_out_transform in zoom_out_transforms:
            zoom_out_elem.click()

            transform = image_holder.value_of_css_property('transform')
            self.assertEqual(zoom_out_transform, transform)

        for _ in range(6):
            zoom_in_elem.click()
        transform = image_holder.value_of_css_property('transform')
        self.assertEqual('matrix(1, 0, 0, 1, 0, 0)', transform)
예제 #3
0
    def _test_apply_modal(
        self,
        brightness_slider: WebElement,
        contrast_slider: WebElement,
        driver: WebDriver,
        image_view_port_elem: WebElement,
    ) -> None:
        move_sliders = ActionChains(driver)
        brightness_slider_size = brightness_slider.size
        contrast_slider_size = contrast_slider.size
        move_sliders.move_to_element_with_offset(
            to_element=brightness_slider,
            xoffset=brightness_slider_size['width'] - 1,
            yoffset=brightness_slider_size['height'] / 2,
        )
        move_sliders.click()

        move_sliders.move_to_element_with_offset(
            to_element=contrast_slider,
            xoffset=contrast_slider_size['width'] - 1,
            yoffset=contrast_slider_size['height'] / 2,
        )
        move_sliders.click()

        move_sliders.perform()
        apply_button = driver.find_element_by_id(
            'id_apply_image_editor_button', )
        apply_button.click()

        filter_style = image_view_port_elem.value_of_css_property('filter')

        self.assertEqual('invert(0) contrast(2) brightness(2)', filter_style)
예제 #4
0
    def _test_invert(
        self,
        driver: WebDriver,
        image_view_port_elem: WebElement,
    ) -> None:
        invert_button = driver.find_element_by_id('id_invert_button')
        invert_button.click()

        filter_style = image_view_port_elem.value_of_css_property('filter')

        self.assertEqual('invert(1) contrast(1) brightness(1)', filter_style)

        invert_button.click()

        filter_style = image_view_port_elem.value_of_css_property('filter')

        self.assertEqual('invert(0) contrast(1) brightness(1)', filter_style)