def eyes_config_base(): return ( Configuration() .set_hide_scrollbars(True) .set_save_new_tests(False) .set_hide_caret(True) )
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 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_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 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 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_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_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_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_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_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_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_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): 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_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 sel_config(test_page_url): conf = Configuration() conf.test_name = "Top 10 websites - {}".format(test_page_url) conf.app_name = "Top Ten Sites" conf.branch_name = "TTS - config branch" conf.add_browser(800, 600, BrowserType.CHROME) conf.add_browser(700, 500, BrowserType.FIREFOX) # conf.add_browser(700, 500, BrowserType.IE_10) # conf.add_browser(700, 500, BrowserType.IE_11) conf.add_browser(1600, 1200, BrowserType.CHROME) conf.add_browser(1200, 800, BrowserType.EDGE) conf.add_browser(800, 600, BrowserType.CHROME) conf.add_browser(700, 500, BrowserType.CHROME) conf.add_device_emulation(DeviceName.iPhone_4) conf.add_device_emulation(DeviceName.iPhone_X) conf.add_device_emulation(DeviceName.Nexus_10, ScreenOrientation.LANDSCAPE) return conf
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_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_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_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_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_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_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_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_timeout2(driver, vg_runner, batch_info): visual_grid_eyes.DOM_EXTRACTION_TIMEOUT = 1 eyes = Eyes(vg_runner) driver.get("https://applitools.com/helloworld") conf = Configuration(batch=batch_info, app_name="Test Timeouts", test_name="Test Timeouts") conf.add_browser(800, 600, BrowserType.CHROME) conf.add_browser(700, 500, BrowserType.FIREFOX) conf.add_browser(600, 400, BrowserType.EDGE) conf.add_browser(900, 700, BrowserType.IE_10) conf.add_browser(1000, 800, BrowserType.IE_11) conf.add_device_emulation(DeviceName.Galaxy_S5) conf.add_device_emulation(DeviceName.iPhone6_7_8_Plus) conf.add_device_emulation(DeviceName.Laptop_with_HiDPI_screen) eyes.configuration = conf eyes.open(driver) with pytest.raises(EyesError) as e: eyes.check("", Target.window().with_name("Test")) eyes.close() vg_runner.get_all_test_results() assert "Domsnapshot Timed out" in str(e)
def initialize_eyes(runner): eyes = Eyes(runner) # Set API key eyes.api_key = "YOU API KEY" # If dedicated or on-prem cloud, uncomment and enter the cloud url # Default: https://eyes.applitools.com # eyes.server_url = "https://testeyes.applitools.com" # Create SeleniumConfiguration. sconf = Configuration() # Set the AUT name sconf.app_name = "Blank App" # Set a test name sconf.test_name = "Smoke Test via Visual Grid" # Set a batch name so all the different browser and mobile combinations are # part of the same batch sconf.batch = BatchInfo("VIP Browser combo batch") # Add Chrome browsers with different Viewports sconf.add_browser(800, 600, BrowserType.CHROME) sconf.add_browser(700, 500, BrowserType.CHROME) # Add Firefox browser with different Viewports sconf.add_browser(1200, 800, BrowserType.FIREFOX) sconf.add_browser(1600, 1200, BrowserType.FIREFOX) # Add iPhone 4 device emulation sconf.add_device_emulation(DeviceName.iPhone_4) # Set the configuration object to eyes eyes.configuration = sconf return eyes