def test_assert_screenshot_mobile_resize_and_exclude(driver_wrapper): # Create elements mock exclude_elements = [get_mock_element(x=0, y=0, height=24, width=375)] # Configure driver mock with open(file_ios, "rb") as f: image_data = f.read() driver_wrapper.driver.get_screenshot_as_png.return_value = image_data driver_wrapper.driver.get_window_size.return_value = {'width': 375, 'height': 667} # Update conf and create a new VisualTest instance driver_wrapper.config.set('Driver', 'type', 'ios') visual = VisualTest(driver_wrapper) # Assert screenshot visual.assert_screenshot(None, filename='screenshot_ios', file_suffix='screenshot_suffix', exclude_elements=exclude_elements) driver_wrapper.driver.get_screenshot_as_png.assert_called_once_with() # Check cropped image expected_image = os.path.join(root_path, 'resources', 'ios_excluded.png') output_file = os.path.join(visual.output_directory, '01_screenshot_ios__screenshot_suffix.png') PilEngine().assertSameFiles(output_file, expected_image, 0.1) # Output image and new baseline image must be equals baseline_file = os.path.join(root_path, 'output', 'visualtests', 'baseline', 'firefox', 'screenshot_ios.png') PilEngine().assertSameFiles(output_file, baseline_file, 0.1)
def test_get_scrolls_size_firefox(driver_wrapper): # Update conf and create a new VisualTest instance driver_wrapper.config.set('Driver', 'type', 'firefox') visual = VisualTest(driver_wrapper) # Check chrome scrolls assert visual.get_scrolls_size() == {'x': 0, 'y': 0}
def test_assert_screenshot_mobile_web_resize_and_exclude(driver_wrapper): # Create elements mock driver_wrapper.driver.execute_script.return_value = 0 # scrollX=0 and scrollY=0 form_element = get_mock_element(x=0, y=0, height=559, width=375) exclude_elements = [get_mock_element(x=15, y=296.515625, height=32, width=345)] # Configure driver mock file_ios_web = os.path.join(root_path, 'resources', 'ios_web.png') with open(file_ios_web, "rb") as f: image_data = f.read() driver_wrapper.driver.get_screenshot_as_png.return_value = image_data driver_wrapper.driver.get_window_size.return_value = {'width': 375, 'height': 667} # Update conf and create a new VisualTest instance driver_wrapper.config.set('Driver', 'type', 'ios') driver_wrapper.config.set('AppiumCapabilities', 'browserName', 'safari') visual = VisualTest(driver_wrapper) # Assert screenshot visual.assert_screenshot(form_element, filename='screenshot_ios_web', file_suffix='screenshot_suffix', exclude_elements=exclude_elements) driver_wrapper.driver.get_screenshot_as_png.assert_called_once_with() # Check cropped image expected_image = os.path.join(root_path, 'resources', 'ios_web_exclude.png') output_file = os.path.join(visual.output_directory, '01_screenshot_ios_web__screenshot_suffix.png') MagickEngine().assertSameFiles(output_file, expected_image, 0.1) # Output image and new baseline image must be equal baseline_file = os.path.join(root_path, 'output', 'visualtests', 'baseline', 'firefox', 'screenshot_ios_web.png') MagickEngine().assertSameFiles(output_file, baseline_file, 0.1)
def test_no_enabled(driver_wrapper): # Update conf and create a new VisualTest instance driver_wrapper.config.set('VisualTests', 'enabled', 'false') visual = VisualTest(driver_wrapper) visual.assert_screenshot(None, filename='screenshot_full', file_suffix='screenshot_suffix') driver_wrapper.driver.save_screenshot.assert_not_called()
def test_get_html_row(driver_wrapper): expected_row = '<tr class=diff><td>report_name</td><td><img style="width: 100%" onclick=' \ '"launchModal\(this.src\)" src=".*register_v2.png"/></td></td><td><img style="width: 100%" ' \ 'onclick="launchModal\(this.src\)" src=".*register.png"/></td></td><td></td></tr>' visual = VisualTest(driver_wrapper) row = visual._get_html_row('diff', 'report_name', file_v1, file_v2) assert re.compile(expected_row).match(row) is not None
def test_compare_files_size_fail(driver_wrapper): # Update conf and create a new VisualTest instance driver_wrapper.config.set('VisualTests', 'fail', 'true') visual = VisualTest(driver_wrapper) with pytest.raises(AssertionError): visual.compare_files('report_name', file_v1, file_small, 0)
def test_exclude_no_elements(driver_wrapper): # Exclude no elements visual = VisualTest(driver_wrapper) img = Image.open(file_v1) img = visual.exclude_elements(img, []) # Assert output image assert_image(visual, img, 'report_name', 'register')
def test_get_scrolls_size_iexplore(driver_wrapper): # Update conf and create a new VisualTest instance # Mock scrollHeight, scrollWidth, innerHeight, innerWidth driver_wrapper.driver.execute_script.side_effect = [600, 1200, 400, 900] driver_wrapper.config.set('Driver', 'type', 'iexplore') visual = VisualTest(driver_wrapper) # Check chrome scrolls assert visual.get_scrolls_size() == {'x': 21, 'y': 21}
def test_exclude_elements(driver_wrapper): # Create elements mock visual = VisualTest(driver_wrapper) web_elements = [get_mock_element(x=250, y=40, height=40, width=300), get_mock_element(x=250, y=90, height=20, width=100)] img = Image.open(file_v1) # Exclude elements img = visual.exclude_elements(img, web_elements) # Assert output image assert_image(visual, img, 'report_name', 'register_exclude')
def test_exclude_elements(driver_wrapper): # Create elements mock driver_wrapper.driver.execute_script.return_value = 0 # scrollX=0 and scrollY=0 visual = VisualTest(driver_wrapper) web_elements = [get_mock_element(x=250, y=40, height=40, width=300), get_mock_element(x=250, y=90, height=20, width=100)] img = Image.open(file_v1) # Exclude elements img = visual.exclude_elements(img, web_elements) # Assert output image assert_image(visual, img, 'report_name', 'register_exclude')
def test_remove_scrolls_without_scroll(driver_wrapper): # Create a new VisualTest instance visual = VisualTest(driver_wrapper) visual.get_scrolls_size = lambda: {'x': 0, 'y': 0} # Remove scroll img = Image.open(file_scroll) img = visual.remove_scrolls(img) # Assert output image assert_image(visual, img, 'report_name', 'register_chrome_scroll')
def test_crop_element(driver_wrapper): # Create element mock web_element = get_mock_element(x=250, y=40, height=40, width=300) visual = VisualTest(driver_wrapper) # Resize image img = Image.open(file_v1) img = visual.crop_element(img, web_element) # Assert output image assert_image(visual, img, 'report_name', 'register_cropped_element')
def test_mobile_resize(driver_wrapper): # Update conf and create a new VisualTest instance driver_wrapper.driver.get_window_size.return_value = {'width': 375, 'height': 667} driver_wrapper.config.set('Driver', 'type', 'ios') visual = VisualTest(driver_wrapper) # Resize image img = Image.open(file_ios) img = visual.mobile_resize(img) # Assert output image assert_image(visual, img, 'report_name', 'ios_resized')
def test_mobile_no_resize(driver_wrapper): # Update conf and create a new VisualTest instance driver_wrapper.driver.get_window_size.return_value = {'width': 750, 'height': 1334} driver_wrapper.config.set('Driver', 'type', 'ios') visual = VisualTest(driver_wrapper) # Resize image orig_img = Image.open(file_ios) img = visual.mobile_resize(orig_img) # Assert that image object has not been modified assert orig_img == img
def test_crop_element(driver_wrapper): # Create element mock driver_wrapper.driver.execute_script.return_value = 0 # scrollX=0 and scrollY=0 web_element = get_mock_element(x=250, y=40, height=40, width=300) visual = VisualTest(driver_wrapper) # Resize image img = Image.open(file_v1) img = visual.crop_element(img, web_element) # Assert output image assert_image(visual, img, 'report_name', 'register_cropped_element')
def test_assert_screenshot_no_enabled_force(driver_wrapper): # Configure driver mock with open(file_v1, "rb") as f: image_data = f.read() driver_wrapper.driver.get_screenshot_as_png.return_value = image_data # Update conf and create a new VisualTest instance driver_wrapper.config.set('VisualTests', 'enabled', 'false') visual = VisualTest(driver_wrapper, force=True) # Assert screenshot visual.assert_screenshot(None, filename='screenshot_full', file_suffix='screenshot_suffix') driver_wrapper.driver.get_screenshot_as_png.assert_called_once_with()
def test_assert_screenshot_full_and_compare(driver_wrapper): # Configure driver mock with open(file_v1, "rb") as f: image_data = f.read() driver_wrapper.driver.get_screenshot_as_png.return_value = image_data visual = VisualTest(driver_wrapper) # Add baseline image baseline_file = os.path.join(root_path, 'output', 'visualtests', 'baseline', 'firefox', 'screenshot_full.png') shutil.copyfile(file_v1, baseline_file) # Assert screenshot visual.assert_screenshot(None, filename='screenshot_full', file_suffix='screenshot_suffix') driver_wrapper.driver.get_screenshot_as_png.assert_called_once_with()
def test_assert_screenshot_full_and_save_baseline(driver_wrapper): # Configure driver mock with open(file_v1, "rb") as f: image_data = f.read() driver_wrapper.driver.get_screenshot_as_png.return_value = image_data visual = VisualTest(driver_wrapper) # Assert screenshot visual.assert_screenshot(None, filename='screenshot_full', file_suffix='screenshot_suffix') output_file = os.path.join(visual.output_directory, '01_screenshot_full__screenshot_suffix.png') driver_wrapper.driver.get_screenshot_as_png.assert_called_once_with() # Output image and new baseline image must be equal baseline_file = os.path.join(root_path, 'output', 'visualtests', 'baseline', 'firefox', 'screenshot_full.png') MagickEngine().assertSameFiles(output_file, baseline_file, 0.1)
def test_assert_screenshot_no_enabled_force(driver_wrapper): # Configure driver mock def copy_file_side_effect(output_file): shutil.copyfile(file_v1, output_file) driver_wrapper.driver.save_screenshot.side_effect = copy_file_side_effect # Update conf and create a new VisualTest instance driver_wrapper.config.set('VisualTests', 'enabled', 'false') visual = VisualTest(driver_wrapper, force=True) # Assert screenshot visual.assert_screenshot(None, filename='screenshot_full', file_suffix='screenshot_suffix') output_file = os.path.join(visual.output_directory, '01_screenshot_full__screenshot_suffix.png') driver_wrapper.driver.save_screenshot.assert_called_once_with(output_file)
def test_compare_files_size_fail(self): # Update conf and create a new VisualTest instance self.driver_wrapper.config.set('VisualTests', 'fail', 'true') self.visual = VisualTest(self.driver_wrapper) with assert_raises(AssertionError): self.visual.compare_files(self._testMethodName, self.file_v1, self.file_small, 0)
def test_assert_screenshot_full_and_compare(driver_wrapper): # Configure driver mock def copy_file_side_effect(output_file): shutil.copyfile(file_v1, output_file) driver_wrapper.driver.save_screenshot.side_effect = copy_file_side_effect visual = VisualTest(driver_wrapper) # Add baseline image baseline_file = os.path.join(root_path, 'output', 'visualtests', 'baseline', 'firefox', 'screenshot_full.png') shutil.copyfile(file_v1, baseline_file) # Assert screenshot visual.assert_screenshot(None, filename='screenshot_full', file_suffix='screenshot_suffix') output_file = os.path.join(visual.output_directory, '01_screenshot_full__screenshot_suffix.png') driver_wrapper.driver.save_screenshot.assert_called_once_with(output_file)
def test_assert_screenshot_full_without_baseline(driver_wrapper): # Configure driver mock with open(file_v1, "rb") as f: image_data = f.read() driver_wrapper.driver.get_screenshot_as_png.return_value = image_data driver_wrapper.config.set('VisualTests', 'fail', 'true') visual = VisualTest(driver_wrapper) # Assert screenshot with pytest.raises(AssertionError) as exc: visual.assert_screenshot(None, filename='screenshot_full', file_suffix='screenshot_suffix') driver_wrapper.driver.get_screenshot_as_png.assert_called_once_with() baseline_file = os.path.join(root_path, 'output', 'visualtests', 'baseline', 'firefox', 'screenshot_full.png') assert str(exc.value) == 'Baseline file not found: %s' % baseline_file
def assert_full_screenshot(filename, threshold=0, exclude_elements=[], driver_wrapper=None, force=False): VisualTest(driver_wrapper, force).assert_screenshot(None, filename, file_suffix, threshold, exclude_elements)
def test_diff_message_diff_perceptualdiff(): message = "The new screenshot 'C:\\...\\01_login_form__test_login.png' did not match the baseline " message += """'C:\\...\\login_form.png' (See C:\\...\\01_login_form__test_login.diff.png): FAIL: Images are visibly different 15040 pixels are different """ expected_message = 'Distance of 0.01504000' assert expected_message == VisualTest._get_diff_message(message, 1000000)
def assert_full_screenshot(filename, threshold=0, exclude_elements=[], driver_wrapper=None, force=False): file_suffix = scenario.name.replace(' ', '_') VisualTest(driver_wrapper, force).assert_screenshot(None, filename, file_suffix, threshold, exclude_elements)
def assert_screenshot_page_element(self, filename, threshold=0, exclude_elements=[], force=False): VisualTest(self.driver_wrapper, force).assert_screenshot(self.web_element, filename, file_suffix, threshold, exclude_elements)
def test_assert_screenshot_mobile_web_resize_and_exclude(self): # Create elements mock form_element = get_mock_element(x=0, y=0, height=559, width=375) exclude_elements = [ get_mock_element(x=15, y=296.515625, height=32, width=345) ] # Configure driver mock file_ios_web = os.path.join(self.root_path, 'resources', 'ios_web.png') with open(file_ios_web, "rb") as f: image_data = f.read() self.driver_wrapper.driver.get_screenshot_as_png.return_value = image_data self.driver_wrapper.driver.get_window_size.return_value = { 'width': 375, 'height': 667 } # Update conf and create a new VisualTest instance self.driver_wrapper.config.set('Driver', 'type', 'ios') self.driver_wrapper.config.set('AppiumCapabilities', 'browserName', 'safari') self.visual = VisualTest(self.driver_wrapper) # Assert screenshot self.visual.assert_screenshot(form_element, filename='screenshot_ios_web', file_suffix='screenshot_suffix', exclude_elements=exclude_elements) self.driver_wrapper.driver.get_screenshot_as_png.assert_called_once_with( ) # Check cropped image expected_image = os.path.join(self.root_path, 'resources', 'ios_web_exclude.png') output_file = os.path.join( self.visual.output_directory, '01_screenshot_ios_web__screenshot_suffix.png') PilEngine().assertSameFiles(output_file, expected_image, 0.1) # Output image and new baseline image must be equals baseline_file = os.path.join(self.root_path, 'output', 'visualtests', 'baseline', 'firefox', 'screenshot_ios_web.png') PilEngine().assertSameFiles(output_file, baseline_file, 0.1)
def test_assert_screenshot_no_enabled_force_fail(driver_wrapper): # Configure driver mock with open(file_v1, "rb") as f: image_data = f.read() driver_wrapper.driver.get_screenshot_as_png.return_value = image_data # Update conf and create a new VisualTest instance driver_wrapper.config.set('VisualTests', 'fail', 'false') driver_wrapper.config.set('VisualTests', 'enabled', 'false') visual = VisualTest(driver_wrapper, force=True) # Add v2 baseline image baseline_file = os.path.join(root_path, 'output', 'visualtests', 'baseline', 'firefox', 'screenshot_full.png') shutil.copyfile(file_v2, baseline_file) # Assert screenshot with pytest.raises(AssertionError): visual.assert_screenshot(None, filename='screenshot_full', file_suffix='screenshot_suffix') driver_wrapper.driver.get_screenshot_as_png.assert_called_once_with()
def test_assert_screenshot_element_and_compare(driver_wrapper): # Add baseline image driver_wrapper.driver.execute_script.return_value = 0 # scrollX=0 and scrollY=0 visual = VisualTest(driver_wrapper) expected_image = os.path.join(root_path, 'resources', 'register_cropped_element.png') baseline_file = os.path.join(root_path, 'output', 'visualtests', 'baseline', 'firefox', 'screenshot_elem.png') shutil.copyfile(expected_image, baseline_file) # Create element mock web_element = get_mock_element(x=250, y=40, height=40, width=300) # Configure driver mock with open(file_v1, "rb") as f: image_data = f.read() driver_wrapper.driver.get_screenshot_as_png.return_value = image_data # Assert screenshot visual.assert_screenshot(web_element, filename='screenshot_elem', file_suffix='screenshot_suffix') driver_wrapper.driver.get_screenshot_as_png.assert_called_once_with()
def assert_screenshot(self, filename, threshold=0, exclude_elements=[], force=False): """Assert that a screenshot of the element is the same as a screenshot on disk, within a given threshold. :param filename: the filename for the screenshot, which will be appended with ``.png`` :param threshold: percentage threshold for triggering a test failure (value between 0 and 1) :param exclude_elements: list of WebElements, PageElements or element locators as a tuple (locator_type, locator_value) that must be excluded from the assertion :param force: if True, the screenshot is compared even if visual testing is disabled by configuration """ VisualTest(self.driver_wrapper, force).assert_screenshot(self.web_element, filename, self.__class__.__name__, threshold, exclude_elements)
def test_assert_screenshot_full_and_save_baseline(driver_wrapper): # Configure driver mock def copy_file_side_effect(output_file): shutil.copyfile(file_v1, output_file) driver_wrapper.driver.save_screenshot.side_effect = copy_file_side_effect visual = VisualTest(driver_wrapper) # Assert screenshot visual.assert_screenshot(None, filename='screenshot_full', file_suffix='screenshot_suffix') output_file = os.path.join(visual.output_directory, '01_screenshot_full__screenshot_suffix.png') driver_wrapper.driver.save_screenshot.assert_called_once_with(output_file) # Output image and new baseline image must be equals baseline_file = os.path.join(root_path, 'output', 'visualtests', 'baseline', 'firefox', 'screenshot_full.png') MagickEngine().assertSameFiles(output_file, baseline_file, 0.1)
def test_assert_screenshot_full_and_save_baseline(driver_wrapper): # Configure driver mock with open(file_v1, "rb") as f: image_data = f.read() driver_wrapper.driver.get_screenshot_as_png.return_value = image_data driver_wrapper.config.set('VisualTests', 'save', 'true') visual = VisualTest(driver_wrapper) # Assert screenshot visual.assert_screenshot(None, filename='screenshot_full', file_suffix='screenshot_suffix') output_file = os.path.join(visual.output_directory, '01_screenshot_full__screenshot_suffix.png') driver_wrapper.driver.get_screenshot_as_png.assert_called_once_with() # Output image and new baseline image must be equal baseline_file = os.path.join(root_path, 'output', 'visualtests', 'baseline', 'firefox', 'screenshot_full.png') compare_image_files(output_file, baseline_file)
def test_mobile_resize(self): # Update conf and create a new VisualTest instance self.driver_wrapper.driver.get_window_size.return_value = {'width': 375, 'height': 667} self.driver_wrapper.config.set('Driver', 'type', 'ios') self.visual = VisualTest(self.driver_wrapper) # Resize image img = Image.open(self.file_ios) img = self.visual.mobile_resize(img) # Assert output image self.assert_image(img, self._testMethodName, 'ios_resized')
def assert_full_screenshot(self, filename, threshold=0, exclude_elements=[], driver_wrapper=None, force=False): """Assert that a driver screenshot is the same as a screenshot on disk, within a given threshold. :param filename: the filename for the screenshot, which will be appended with ``.png`` :param threshold: percentage threshold for triggering a test failure (value between 0 and 1) :param exclude_elements: list of CSS/XPATH selectors as a string or WebElement objects that must be excluded from the assertion. :param driver_wrapper: driver wrapper instance :param force: if True, the screenshot is compared even if visual testing is disabled by configuration """ file_suffix = self.get_method_name() VisualTest(driver_wrapper, force).assert_screenshot(None, filename, file_suffix, threshold, exclude_elements)
def test_assert_screenshot_no_enabled_force_fail(driver_wrapper): # Configure driver mock def copy_file_side_effect(output_file): shutil.copyfile(file_v1, output_file) driver_wrapper.driver.save_screenshot.side_effect = copy_file_side_effect # Update conf and create a new VisualTest instance driver_wrapper.config.set('VisualTests', 'fail', 'false') driver_wrapper.config.set('VisualTests', 'enabled', 'false') visual = VisualTest(driver_wrapper, force=True) # Add v2 baseline image baseline_file = os.path.join(root_path, 'output', 'visualtests', 'baseline', 'firefox', 'screenshot_full.png') shutil.copyfile(file_v2, baseline_file) # Assert screenshot with pytest.raises(AssertionError): visual.assert_screenshot(None, filename='screenshot_full', file_suffix='screenshot_suffix') output_file = os.path.join(visual.output_directory, '01_screenshot_full__screenshot_suffix.png') driver_wrapper.driver.save_screenshot.assert_called_once_with(output_file)
def test_assert_screenshot_element_without_baseline(driver_wrapper): # Add baseline image driver_wrapper.driver.execute_script.return_value = 0 # scrollX=0 and scrollY=0 driver_wrapper.config.set('VisualTests', 'fail', 'true') visual = VisualTest(driver_wrapper) # Create element mock web_element = get_mock_element(x=250, y=40, height=40, width=300) # Configure driver mock with open(file_v1, "rb") as f: image_data = f.read() driver_wrapper.driver.get_screenshot_as_png.return_value = image_data # Assert screenshot with pytest.raises(AssertionError) as exc: visual.assert_screenshot(web_element, filename='screenshot_elem', file_suffix='screenshot_suffix') driver_wrapper.driver.get_screenshot_as_png.assert_called_once_with() baseline_file = os.path.join(root_path, 'output', 'visualtests', 'baseline', 'firefox', 'screenshot_elem.png') assert str(exc.value) == 'Baseline file not found: %s' % baseline_file
def test_assert_screenshot_element_and_save_baseline(driver_wrapper): # Create element mock driver_wrapper.driver.execute_script.return_value = 0 # scrollX=0 and scrollY=0 web_element = get_mock_element(x=250, y=40, height=40, width=300) # Configure driver mock with open(file_v1, "rb") as f: image_data = f.read() driver_wrapper.driver.get_screenshot_as_png.return_value = image_data visual = VisualTest(driver_wrapper) # Assert screenshot visual.assert_screenshot(web_element, filename='screenshot_elem', file_suffix='screenshot_suffix') driver_wrapper.driver.get_screenshot_as_png.assert_called_once_with() # Check cropped image expected_image = os.path.join(root_path, 'resources', 'register_cropped_element.png') output_file = os.path.join(visual.output_directory, '01_screenshot_elem__screenshot_suffix.png') MagickEngine().assertSameFiles(output_file, expected_image, 0.1) # Output image and new baseline image must be equal baseline_file = os.path.join(root_path, 'output', 'visualtests', 'baseline', 'firefox', 'screenshot_elem.png') MagickEngine().assertSameFiles(output_file, baseline_file, 0.1)
def test_assert_screenshot_mobile_resize_and_exclude(driver_wrapper): # Create elements mock driver_wrapper.driver.execute_script.return_value = 0 # scrollX=0 and scrollY=0 exclude_elements = [get_mock_element(x=0, y=0, height=24, width=375)] # Configure driver mock with open(file_ios, "rb") as f: image_data = f.read() driver_wrapper.driver.get_screenshot_as_png.return_value = image_data driver_wrapper.driver.get_window_size.return_value = { 'width': 375, 'height': 667 } # Update conf and create a new VisualTest instance driver_wrapper.config.set('Driver', 'type', 'ios') driver_wrapper.config.set('VisualTests', 'save', 'true') visual = VisualTest(driver_wrapper) # Assert screenshot visual.assert_screenshot(None, filename='screenshot_ios', file_suffix='screenshot_suffix', exclude_elements=exclude_elements) driver_wrapper.driver.get_screenshot_as_png.assert_called_once_with() # Check cropped image expected_image = os.path.join(root_path, 'resources', 'ios_excluded.png') output_file = os.path.join(visual.output_directory, '01_screenshot_ios__screenshot_suffix.png') compare_image_files(output_file, expected_image) # Output image and new baseline image must be equal baseline_file = os.path.join(root_path, 'output', 'visualtests', 'baseline', 'firefox', 'screenshot_ios.png') compare_image_files(output_file, baseline_file)
def setUp(self): # Remove previous visual path visual_path = os.path.join(self.root_path, 'output', 'visualtests') if os.path.exists(visual_path): shutil.rmtree(visual_path) # Reset wrappers pool values DriverWrappersPool._empty_pool() DriverWrapper.config_properties_filenames = None # Create a new wrapper self.driver_wrapper = DriverWrappersPool.get_default_wrapper() self.driver_wrapper.driver = mock.MagicMock() # Configure properties config_files = ConfigFiles() config_files.set_config_directory(os.path.join(self.root_path, 'conf')) config_files.set_config_properties_filenames('properties.cfg') config_files.set_output_directory(os.path.join(self.root_path, 'output')) self.driver_wrapper.configure(tc_config_files=config_files) self.driver_wrapper.config.set('VisualTests', 'enabled', 'true') # Create a new VisualTest instance self.visual = VisualTest(self.driver_wrapper)
def test_engine_perceptual(driver_wrapper): # Update conf and create a new VisualTest instance driver_wrapper.config.set('VisualTests', 'engine', 'perceptualdiff') visual = VisualTest(driver_wrapper) assert isinstance(visual.engine, PerceptualEngine)
def test_engine_pil(driver_wrapper): visual = VisualTest(driver_wrapper) assert isinstance(visual.engine, PilEngine)
def test_assert_screenshot_greater_threshold(driver_wrapper): visual = VisualTest(driver_wrapper) with pytest.raises(TypeError): visual.assert_screenshot(None, 'screenshot_full', threshold=2)
def test_compare_files_diff(driver_wrapper): visual = VisualTest(driver_wrapper) message = visual.compare_files('report_name', file_v1, file_v2, 0) assert 'Distance of 0.00080181' in message
def test_compare_files_size(driver_wrapper): visual = VisualTest(driver_wrapper) message = visual.compare_files('report_name', file_v1, file_small, 0) # PIL returns an empty error, but PyTest modifies AssertionError assert 'assert (1680, 388) == (1246, 388)' in message
def test_get_img_element(driver_wrapper): expected_img = '<img src=".*register_v2.png" title="Baseline image"/>' visual = VisualTest(driver_wrapper) img = visual._get_img_element('register_v2.png', 'Baseline image') assert re.compile(expected_img).match(img) is not None
def test_get_html_row(driver_wrapper): expected_row = '<tr class=diff><td>report_name</td><td><img src=".*register_v2.png" title="Baseline image"/>' \ '</td><td><img src=".*register.png" title="Screenshot image"/></td><td></td></tr>' visual = VisualTest(driver_wrapper) row = visual._get_html_row('diff', 'report_name', file_v1, file_v2) assert re.compile(expected_row).match(row) is not None
def test_diff_message_equal(): message = None expected_message = '' assert expected_message == VisualTest._get_diff_message(message, 1000000)
def test_diff_message_size_perceptualdiff(): message = """The new screenshot 'C:\\...\\01_login_form__test_login.png' did not match the baseline 'C:\\...\\login_form.png': FAIL: Image dimensions do not match""" expected_message = 'Image dimensions do not match' assert expected_message == VisualTest._get_diff_message(message, 1000000)
def test_diff_message_size_imagemagick(): message = 'Image dimensions do not match' expected_message = 'Image dimensions do not match' assert expected_message == VisualTest._get_diff_message(message, 1000000)
def test_diff_message_diff_pil(): message = ("The new screenshot 'C:\\...\\01_login_form__test_login.png' did not match the baseline " "'C:\\...\\login_form.png' (by a distance of 14794.11)") expected_message = 'Distance of 0.01479411' assert expected_message == VisualTest._get_diff_message(message, 1000000)
def test_diff_message_diff_imagemagick(): message = ("The new screenshot 'C:\\...\\01_login_form__test_login.png' did not match the baseline " "'C:\\...\\login_form.png' (See C:\\...\\01_login_form__test_login.diff.png):\n" "5443.77 (0.0830666) @ 0,0") expected_message = 'Distance of 0.08306660' assert expected_message == VisualTest._get_diff_message(message, 1000000)