def test_double_eyes_with_new_configuration(): config = Configuration(test_name="Test1") eyes1 = Eyes() eyes2 = Eyes() eyes1.set_configuration(config) config.test_name = "Test2" eyes2.set_configuration(config) assert eyes1.configure.test_name == "Test1" assert eyes2.configure.test_name == "Test2"
def test_css_relative_url_on_another_domain(driver, eyes, batch_info, vg_runner): driver.get( "https://applitools.github.io/demo/TestPages/VisualGridTestPageWithRelativeBGImage/index.html" ) eyes = Eyes(vg_runner) eyes.set_configuration( Configuration( test_name="TestCssRelativeUrlOnAnotherDomain", app_name="Visual Grid Render Test", batch=batch_info, ).add_browser(1200, 800, BrowserType.CHROME).add_browser( 700, 600, BrowserType.FIREFOX).add_browser(1200, 600, BrowserType.FIREFOX). add_browser(1200, 600, BrowserType.EDGE).add_browser( 1200, 600, BrowserType.IE_11).add_browser( 1200, 600, BrowserType.IE_10).add_device_emulation( DeviceName.iPhone_X, ScreenOrientation.PORTRAIT).add_device_emulation( DeviceName.Nexus_10, ScreenOrientation.LANDSCAPE).add_device_emulation( DeviceName.iPad)) eyes.open(driver) eyes.check_window() eyes.close_async() all_results = vg_runner.get_all_test_results(False) assert len(all_results) == 9
def test_rendering_ios_simulator(driver, batch_info, vg_runner): driver.get("http://applitools.github.io/demo") eyes = Eyes(vg_runner) eyes.set_configuration( Configuration( app_name="Eyes SDK", test_name="UFG Mobile Web Happy Flow", batch=batch_info, ) .add_browser( IosDeviceInfo(IosDeviceName.iPhone_XR, ScreenOrientation.LANDSCAPE) ) .add_browser( IosDeviceInfo(IosDeviceName.iPhone_XR, ios_version=IosVersion.LATEST) ) .add_browser( IosDeviceInfo( IosDeviceName.iPhone_XR, ios_version=IosVersion.ONE_VERSION_BACK ) ) .set_save_diffs(False) .set_save_new_tests(False) ) eyes.open(driver, viewport_size=RectangleSize(800, 600)) eyes.check_window() eyes.close_async() assert len(vg_runner.get_all_test_results()) == 3
def eyes_config_base(): return ( Configuration() .set_hide_scrollbars(True) .set_save_new_tests(False) .set_hide_caret(True) )
def test_send_DOM_1_2(eyes, driver, batch_info, url, num): driver.get(url) config = Configuration().set_batch(batch_info) eyes.set_configuration(config) eyes.open(driver, "Test Send DOM", "TestSendDOM_" + num) eyes.check_window() results = eyes.close(False) assert get_has_DOM(eyes.api_key, results)
def eyes_config_base(): return ( Configuration() .set_hide_scrollbars(True) .set_save_new_tests(False) .set_hide_caret(True) .set_parent_branch_name("master") )
def test_vgdouble_close_no_check(driver, vg_runner, batch_info): eyes = Eyes(vg_runner) eyes.set_configuration( Configuration(app_name="app", test_name="test", batch=batch_info)) eyes.open(driver) with pytest.raises(TestFailedError) as e: eyes.close() assert "Eyes not open" in str(e)
def test_VG_tests_count_4(eyes, batch_info, driver): config = (Configuration().set_batch(batch_info).set_app_name( "Test Count").set_test_name("Test_VGTestsCount_4")) eyes.set_configuration(config) eyes.open(driver) eyes.check("Test", Target.window()) eyes.close() results_summary = eyes._runner.get_all_test_results() assert results_summary.size() == 1
def test_same_config_with_no_batch_with_multiple_eyes(): conf = Configuration().set_app_name("boodleAI").set_test_name("Test 5") eyes1 = Eyes() eyes2 = Eyes() eyes1.set_configuration(conf) eyes2.set_configuration(conf) assert eyes1.configure.batch assert eyes2.configure.batch assert eyes1.configure.batch == eyes2.configure.batch
def test_VG_tests_count_2(eyes, batch_info, driver): config = (Configuration().set_batch(batch_info).add_browser( 900, 600, BrowserType.CHROME).add_browser(1024, 768, BrowserType.CHROME)) eyes.set_configuration(config) eyes.open(driver, "Test Count", "Test_VGTestsCount_2") eyes.check("Test", Target.window()) eyes.close() results_summary = eyes._runner.get_all_test_results() assert results_summary.size() == 2
def test_eyes_runner(driver, runner): eyes = Eyes(runner) eyes2 = Eyes(runner) batch_info = BatchInfo("Runner Testing") config = ( Configuration() .set_send_dom(True) .set_hide_scrollbars(True) .set_stitch_mode(StitchMode.CSS) .set_batch(batch_info) ) eyes.set_configuration(config) eyes2.set_configuration(config) driver.get( "http://applitools.github.io/demo/TestPages/VisualGridTestPage/index.html" ) eyes.add_property( "Runner", "VisualGrid" if isinstance(runner, VisualGridRunner) else "Selenium" ) eyes.open( driver, "Applitools Eyes Java SDK", "Classic Runner Test", dict(width=1200, height=800), ) eyes2.open( driver, "Applitools Eyes Java SDK", "Classic Runner 2 Test", dict(width=1200, height=800), ) eyes.check("Step 1", Target.window().fully().ignore_displacements(False)) eyes2.check("Step 1", Target.window().fully().ignore_displacements(False)) eyes.close_async() eyes.open( driver, "Applitools Eyes Java SDK", "Classic Runner Test", dict(width=1200, height=800), ) eyes.check("Step 2", Target.window().fully().ignore_displacements(False)) eyes.close_async() eyes2.close(True) driver.quit() all_tests_results = runner.get_all_test_results() if len(all_tests_results.all_results) != 3: raise Exception
def test_svg_parsing(driver, eyes, batch_info, vg_runner): driver.get("https://danielschwartz85.github.io/static-test-page2/index.html") eyes = Eyes(vg_runner) eyes.set_configuration( Configuration( test_name="TestSvgParsing", app_name="Visual Grid Render Test", batch=batch_info, ).add_browser(1200, 800, BrowserType.CHROME) ) eyes.open(driver) eyes.check_window() eyes.close_async() all_results = vg_runner.get_all_test_results(False)
def test_mobile_web_happy_flow(driver, batch_info, vg_runner): driver.get("https://applitools.github.io/demo") eyes = Eyes(vg_runner) eyes.set_configuration( Configuration( app_name="Eyes SDK", test_name="UFG Mobile Web Happy Flow", batch=batch_info, ).add_browser( IosDeviceInfo(IosDeviceName.iPhone_12, ScreenOrientation.LANDSCAPE))) eyes.open(driver, viewport_size=RectangleSize(800, 600)) eyes.check_window() eyes.close()
def test_rendering_ios_simulator(driver, batch_info, vg_runner): driver.get("https://applitools.github.io/demo/TestPages/FramesTestPage/") eyes = Eyes(vg_runner) eyes.set_configuration( Configuration( app_name="Visual Grid Render Test", test_name="TestRenderingIosSimulator", batch=batch_info, ).add_browser(IosDeviceInfo("iPhone 7")).add_browser( IosDeviceInfo("iPhone 11", "landscape"))) eyes.open(driver) eyes.check_window() eyes.close_async() assert len(vg_runner.get_all_test_results()) == 2
def test_special_rendering(url, test_name, batch_info, driver): runner = VisualGridRunner(30) eyes = Eyes(runner) sconf = Configuration( test_name=test_name, app_name="Visual Grid Render Test", batch=batch_info ) sconf.add_device_emulation(DeviceName.Galaxy_S5) sconf.add_browser(1200, 800, BrowserType.CHROME) sconf.add_browser(1200, 800, BrowserType.FIREFOX) eyes.set_configuration(sconf) eyes.open(driver) driver.get(url) datetime_utils.sleep(500) eyes.check(test_name, Target.window().fully()) eyes.close(False) all_results = runner.get_all_test_results(False)
def test_visual_viewport(driver, batch_info, vg_runner): driver.get("https://applitools.github.io/demo/TestPages/FramesTestPage/") eyes = Eyes(vg_runner) eyes.set_configuration( Configuration( app_name="Visual Grid Render Test", test_name="TestVisualViewport", batch=batch_info, ).add_browser(IosDeviceInfo("iPhone 7"))) eyes.open(driver) with patch("applitools.core.server_connector.ServerConnector.match_window", ) as patched: eyes.check_window() eyes.close(False) app_output = patched.call_args.args[1].app_output assert isinstance(app_output.viewport, RectangleSize)
def test_not_send_DOM(eyes, driver, batch_info): driver.get("https://applitools.com/helloworld") config = Configuration().set_batch(batch_info).set_send_dom(False) eyes.set_configuration(config) eyes.open( driver, "Test NOT SendDom", "Test NOT SendDom", viewport_size={ "width": 1000, "height": 700 }, ) eyes.check("window", Target.window().send_dom(False)) results = eyes.close(False) assert not get_has_DOM(eyes.api_key, results)
def test_css_relative_url_on_another_domain(driver, eyes, batch_info, vg_runner): driver.get( "https://applitools.github.io/demo/TestPages/VisualGridTestPageWithRelativeBGImage/index.html" ) eyes = Eyes(vg_runner) eyes.set_configuration( Configuration( test_name="TestCssRelativeUrlOnAnotherDomain", app_name="Visual Grid Render Test", batch=batch_info, ).add_browser(1200, 800, BrowserType.CHROME) ) eyes.open(driver) eyes.check_window() eyes.close_async() all_results = vg_runner.get_all_test_results()
def test_visual_viewport(driver, batch_info, vg_runner, fake_connector_class): driver.get("https://applitools.github.io/demo/TestPages/FramesTestPage/") eyes = Eyes(vg_runner) eyes.server_connector = fake_connector_class() eyes.set_configuration( Configuration( app_name="Visual Grid Render Test", test_name="TestVisualViewport", batch=batch_info, ).add_browser(IosDeviceInfo("iPhone 7")) ) eyes.open(driver) eyes.check_window() eyes.close(False) running_test = vg_runner._get_all_running_tests()[0] _, match_data = running_test.eyes.server_connector.input_calls["match_window"][0] assert isinstance(match_data.app_output.viewport, RectangleSize)
def test_send_DOM_Selector(eyes, driver, batch_info): driver.get( "https://applitools.github.io/demo/TestPages/DomTest/dom_capture.html") config = Configuration().set_batch(batch_info) eyes.set_configuration(config) eyes.open( driver, "Test SendDom", "Test SendDom", viewport_size={ "width": 1000, "height": 700 }, ) eyes.check("region", Target.region("#scroll1")) results = eyes.close(False) assert get_has_DOM(eyes.api_key, results)
def test_inferred_layout_breakpoints(driver, batch_info, vg_runner): driver.get("https://applitools.github.io/demo/TestPages/JsLayout") eyes = Eyes(vg_runner) eyes.set_configuration( Configuration( app_name="Eyes SDK", test_name="UFG Layout Breakpoints inferred chrome", batch=batch_info, ) .add_browser(500, 400, BrowserType.CHROME) .add_browser(800, 400, BrowserType.CHROME) .add_browser(800, 600, BrowserType.CHROME) .add_browser(1024, 768, BrowserType.CHROME) .add_browser(1200, 800, BrowserType.CHROME) .set_layout_breakpoints(True) ) eyes.open(driver, viewport_size=RectangleSize(800, 600)) eyes.check_window() eyes.close()
def test_inferred_layout_breakpoints_with_small_devices(driver, batch_info, vg_runner): driver.get("https://applitools.github.io/demo/TestPages/JsLayout") eyes = Eyes(vg_runner) eyes.set_configuration( Configuration( app_name="Eyes SDK", test_name="UFG Layout Breakpoints inferred small screen device", batch=batch_info, ) .add_browser( IosDeviceInfo(IosDeviceName.iPhone_12, ScreenOrientation.LANDSCAPE) ) .add_browser(IosDeviceInfo(IosDeviceName.iPhone_12, ScreenOrientation.PORTRAIT)) .add_browser(1024, 768, BrowserType.CHROME) .set_layout_breakpoints(True) ) eyes.open(driver, viewport_size=RectangleSize(800, 600)) eyes.check_window() eyes.close()
def test_vgwith_bad_webhook(vg_runner, driver): eyes = Eyes(vg_runner) eyes.configuration = Configuration( app_name="Visual Grid Python Tests", test_name="Bad Webhook", viewport_size=RectangleSize(800, 600), ) eyes.open(driver) eyes.check( "", Target.window().fully().before_render_screenshot_hook( "gibberish uncompilable java script"), ) with pytest.raises(EyesError) as e: eyes.close() vg_runner.get_all_test_results() assert e assert "failed to run before_capture_screenshot hook script" in str(e)
def test_mobile_only(driver, batch_info): runner = VisualGridRunner(30) eyes = Eyes(runner) sconf = Configuration() sconf.test_name = "Mobile Render Test" sconf.app_name = "Visual Grid Render Test" sconf.batch = batch_info sconf.add_device_emulation(DeviceName.Galaxy_S5) eyes.set_configuration(sconf) eyes.open(driver) driver.get( "https://applitools.github.io/demo/TestPages/DynamicResolution/mobile.html" ) eyes.check("Test Mobile Only", Target.window().fully()) eyes.close() all_results = runner.get_all_test_results()
def test_send_dom_cors_iframe(dom_intercepting_eyes, driver, batch_info, expected_json, caplog): del expected_json["scriptVersion"] config = ( Configuration().set_batch(batch_info).set_app_name("Test Send DOM"). set_test_name("test_send_dom_cors_iframe").set_viewport_size( RectangleSize(1024, 768)) # TODO: Remove this when default options get in sync for java and python SDK .set_hide_scrollbars(True)) dom_intercepting_eyes.set_configuration(config) driver.get("https://applitools.github.io/demo/TestPages/CorsTestPage") dom_intercepting_eyes.open(driver, "Test Send DOM", "test_send_dom_cors_iframe") dom_intercepting_eyes.check("Window", Target.window().fully()) dom_intercepting_eyes.close(False) actual = json.loads(dom_intercepting_eyes.captured_dom_json) del actual["scriptVersion"] assert check_objects(actual, expected_json) assert "ERROR" not in caplog.text
def test_check_element_and_window_in_sequence(driver, eyes, batch_info, vg_runner): driver.get("https://demo.applitools.com") eyes = Eyes(vg_runner) eyes.set_configuration( Configuration( test_name="TestCheckElementAndWindow", app_name="Visual Grid Additional Test", batch=batch_info, ).add_browser(1024, 768, BrowserType.CHROME)) eyes.open(driver) eyes.check_window("Step 1") eyes.check( "Step 2", Target.region("body > div > div").layout( "body > div > div > form > div:nth-child(1)"), ) eyes.check( "Step 3", Target.window().ignore("body > div > div > form > div:nth-child(1)"), ) eyes.close_async() trc = vg_runner.get_all_test_results().all_results[0] session_results = get_session_results(eyes.api_key, trc.test_results) actual_output = session_results["actualAppOutput"] assert len(actual_output[1]["imageMatchSettings"]["layout"]) == 1 assert actual_output[1]["imageMatchSettings"]["layout"][0] == { "left": 80, "top": 322, "width": 290, "height": 62, } assert len(actual_output[2]["imageMatchSettings"]["ignore"]) == 1 assert actual_output[2]["imageMatchSettings"]["ignore"][0] == { "left": 367, "top": 322, "width": 290, "height": 62, }
def test_send_DOM_full_window(eyes, driver, batch_info): driver.get("https://applitools.github.io/demo/TestPages/FramesTestPage/") config = Configuration().set_batch(batch_info) eyes.set_configuration(config) eyes_driver = eyes.open( driver, "Test Send DOM", "Full Window", viewport_size={ "width": 1024, "height": 768 }, ) eyes.check_window() actual_dom_json = dom_capture.get_full_window_dom(eyes_driver, return_as_dict=True) def get_expected_json(test_name): cur_dir = os.path.abspath(__file__).rpartition("/")[0] samples_dir = os.path.join(cur_dir, "resources") with open(os.path.join(samples_dir, test_name + ".json"), "r") as f: return json.loads(f.read(), object_pairs_hook=OrderedDict) expected_dom_json = get_expected_json("expected_dom1") results = eyes.close(False) assert get_has_DOM(eyes.api_key, results) assert actual_dom_json["attributes"] == expected_dom_json["attributes"] assert actual_dom_json["css"] == expected_dom_json["css"] assert actual_dom_json["images"] == expected_dom_json["images"] assert actual_dom_json["rect"] == expected_dom_json["rect"] assert actual_dom_json["scriptVersion"] == expected_dom_json["attributes"] assert actual_dom_json["style"] == expected_dom_json["style"] assert actual_dom_json["tagName"] == expected_dom_json["tagName"] assert actual_dom_json["version"] == expected_dom_json["version"] assert actual_dom_json == expected_dom_json
def test_send_DOM_full_window(dom_intercepting_eyes, driver, batch_info, expected_json): config = ( Configuration().set_batch(batch_info).set_app_name( "Test Send DOM").set_test_name("Full Window").set_viewport_size( RectangleSize(1024, 768)) # TODO: Remove this when default options get in sync for java and python SDK .set_hide_scrollbars(True)) dom_intercepting_eyes.set_configuration(config) driver.get("https://applitools.github.io/demo/TestPages/FramesTestPage/") dom_intercepting_eyes.open(driver, "Test Send DOM", "Full Window") dom_intercepting_eyes.check("Window", Target.window().fully()) results = dom_intercepting_eyes.close(False) actual = json.loads(dom_intercepting_eyes.captured_dom_json) received_back = get_step_DOM(dom_intercepting_eyes, results) # Make next asserts script-version independent del expected_json["scriptVersion"] del actual["scriptVersion"] del received_back["scriptVersion"] assert get_has_DOM(dom_intercepting_eyes.api_key, results) assert check_objects(actual, expected_json) assert check_objects(received_back, expected_json)
def test_disable_browser_fetching_combinations(): from applitools.selenium import Configuration, Target from applitools.selenium.visual_grid import VisualGridEyes effective_option = VisualGridEyes._effective_disable_browser_fetching cfg = Configuration() assert effective_option(cfg, Target.window()) is False assert effective_option(cfg, Target.window().disable_browser_fetching()) is True assert effective_option( cfg, Target.window().disable_browser_fetching(True)) is True assert (effective_option(cfg, Target.window().disable_browser_fetching(False)) is False) cfg.set_disable_browser_fetching(False) assert effective_option(cfg, Target.window()) is False assert effective_option(cfg, Target.window().disable_browser_fetching()) is True assert effective_option( cfg, Target.window().disable_browser_fetching(True)) is True assert (effective_option(cfg, Target.window().disable_browser_fetching(False)) is False) cfg.set_disable_browser_fetching(True) assert effective_option(cfg, Target.window()) is True assert effective_option(cfg, Target.window().disable_browser_fetching()) is True assert effective_option( cfg, Target.window().disable_browser_fetching(True)) is True assert (effective_option(cfg, Target.window().disable_browser_fetching(False)) is False)
def test_viewports_test(driver, batch_info): runner = VisualGridRunner(30) eyes = Eyes(runner) sconf = Configuration() sconf.batch = batch_info sconf.test_name = "Viewport Size Test" sconf.app_name = "Visual Grid Viewports Test" sconf.hide_scrollbars = True sconf.stitch_mode = StitchMode.CSS sconf.force_full_page_screenshot = True sconf.match_level = MatchLevel.STRICT sconf.add_browser(800, 600, BrowserType.CHROME) sconf.add_browser(700, 500, BrowserType.CHROME) sconf.add_browser(1200, 800, BrowserType.CHROME) sconf.add_browser(1600, 1200, BrowserType.CHROME) sconf.add_browser(800, 600, BrowserType.FIREFOX) sconf.add_browser(700, 500, BrowserType.FIREFOX) sconf.add_browser(1200, 800, BrowserType.FIREFOX) sconf.add_browser(1600, 1200, BrowserType.FIREFOX) sconf.add_browser(800, 600, BrowserType.EDGE) sconf.add_browser(700, 500, BrowserType.EDGE) sconf.add_browser(1200, 800, BrowserType.EDGE) # sconf.add_browser(1600, 1200, BrowserType.EDGE) sconf.add_browser(800, 600, BrowserType.IE_11) sconf.add_browser(700, 500, BrowserType.IE_11) sconf.add_browser(1200, 800, BrowserType.IE_11) # sconf.add_browser(1600, 1200, BrowserType.IE_11) sconf.add_browser(800, 600, BrowserType.IE_10) sconf.add_browser(700, 500, BrowserType.IE_10) sconf.add_browser(1200, 800, BrowserType.IE_10) # sconf.add_browser(1600, 1200, BrowserType.IE_10) eyes.set_configuration(sconf) eyes.open(driver) driver.get("https://www.applitools.com") eyes.check("Test Viewport", Target.window().fully()) eyes.close_async() all_results = runner.get_all_test_results(False) assert len(sconf.browsers_info) > len(BrowserType) assert len(all_results) == len(sconf.browsers_info) results = defaultdict(set) for trc in all_results: assert trc session_results = None try: session_results = get_session_results(eyes.api_key, trc.test_results) except Exception as e: logger.exception(e) if session_results is None: logger.debug("Error: session_results is null for item {}".format(trc)) continue env = session_results["env"] browser = env["hostingAppInfo"] if browser is None: logger.debug("Error: HostingAppInfo (browser) is null. {}".format(trc)) continue sizes_list = results[browser] display_size = RectangleSize.from_(env["displaySize"]) if display_size in sizes_list: assert ( False ), "Browser {} viewport size {} already exists in results.".format( browser, display_size ) sizes_list.add(display_size) assert len(results) == 5