def page_visual_is_valid(selenium, selenium_generics: SeleniumGenerics, data_table):
    custom_wait = CustomWait(selenium)

    custom_wait.static_wait(2)
    selenium.execute_script(
        'window.scrollTo({ left: 0, top: 0});')
    custom_wait.static_wait(4)

    base_screenshot_dir = f"{pytest.globalDict['base_screenshot_dir']}/full_page/{data_table['page_name'][0]}_{selenium_generics._file_extension()}"
    actual_screenshot_dir = f"{pytest.globalDict['actual_screenshot_dir']}/full_page/{data_table['page_name'][0]}_{selenium_generics._file_extension()}"
    diff_screenshot_dir = f"{pytest.globalDict['diff_screenshot_dir']}/full_page/{data_table['page_name'][0]}_{selenium_generics._file_extension()}"

    device_offset = selenium.capabilities['deviceOffset'] \
        if 'deviceOffset' in selenium.capabilities else 0
    elements_to_hide = {
        "start": data_table['start'] if data_table['start'][0] != 'None' else None,
        "all": data_table['all'] if data_table['all'][0] != 'None' else None,
        "end": data_table['end'] if data_table['end'][0] != 'None' else None,
    }
    image_cv2 = selenium.get_full_page_screenshot_as_base64(elements_to_hide, device_offset)

    from utils.utils import compare_images
    base_score = 0.999
    score = compare_images(image_cv2, base_screenshot_dir, actual_screenshot_dir, diff_screenshot_dir, base_score)
    assert score >= base_score, f"Actual component screenshot is different from Base with {score}. Diff saved here: {diff_screenshot_dir}"
 def save_images(self, data):
     images = data['img']
     paths = os.path.join(self.opt.save_dir, self.opt.object)
     paths = os.path.join(paths, "result")
     anomaly_img = utils.compare_images(images,
                                        self.generated_imgs,
                                        threshold=self.opt.threshold)
     utils.save_images(anomaly_img, paths, data)
 def validate_logo_default_visual(self):
     self._logo.get_screenshot_as_file(self._actual_logo_screenshot_url)
     score = compare_images(self._base_logo_screenshot_url,
                            self._actual_logo_screenshot_url,
                            self._diff_logo_screenshot_url)
     assert_that(
         score,
         'Actual _logo screenshot is different from Base with %s. Diff saved here: %s'
         %
         (score,
          self._diff_logo_screenshot_url)).is_greater_than_or_equal_to(0.98)
def take_full_page_screenshot_from_sitemap_with_actions(selenium, selenium_generics, base_url, data_table):
    pytest.scenarioDict['screenshots'] = pytest.scenarioDict['screenshots'] \
        if 'screenshots' in pytest.scenarioDict else []
    pytest.scenarioDict['pdf_file_name'] = \
        f"{pytest.globalDict['actual_screenshot_dir']}/full_page/{data_table['site']}_{selenium.get_window_size()['width']}_{selenium.get_window_size()['height']}.pdf"
    urls = pytest.scenarioDict['urls']
    custom_wait = CustomWait(selenium)

    for url in urls:
        response = requests.get(url, allow_redirects=False)
        if response.status_code >= 300:
            continue
        selenium.get(url)
        custom_wait.static_wait(10)

        page_size = selenium_generics.page_size()
        if page_size['height'] < 100 or page_size['width'] < 100:
            continue

        actual_screenshot_dir = selenium_generics.get_actual_screenshot_dir(url, base_url, '01', data_table)
        elements_to_hide = selenium_generics.get_elements_to_hide(data_table)
        device_offset = selenium.capabilities['deviceOffset'] if 'deviceOffset' in selenium.capabilities else 0

        if data_table['pre_action_screenshot'] == 'true':
            selenium.get_full_page_screenshot_as_png(actual_screenshot_dir, elements_to_hide, device_offset)
            pytest.scenarioDict['screenshots'].append(actual_screenshot_dir)
            base_screenshot_dir = actual_screenshot_dir

        for action in json.loads(data_table['actions']):
            selenium_generics.execute_action(action)

        custom_wait.static_wait(2)
        selenium.execute_script('window.scrollTo({ left: 0, top: 0});')
        custom_wait.static_wait(2)

        actual_screenshot_dir = selenium_generics.get_actual_screenshot_dir(url, base_url, '02', data_table)
        selenium.get_full_page_screenshot_as_png(actual_screenshot_dir, elements_to_hide, device_offset)

        if data_table['pre_action_screenshot'] == 'true':
            from utils.utils import compare_images
            base_score = 0.999
            score = compare_images(None, base_screenshot_dir, actual_screenshot_dir, None, base_score)
            if score >= base_score:
                import os
                os.remove(actual_screenshot_dir)
            else:
                pytest.scenarioDict['screenshots'].append(actual_screenshot_dir)
def step(_, name):
    assert_less(utils.compare_images(name.casefold()), 10)