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)