Esempio n. 1
0
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
Esempio n. 4
0
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)
Esempio n. 6
0
def eyes_config_base():
    return (
        Configuration()
        .set_hide_scrollbars(True)
        .set_save_new_tests(False)
        .set_hide_caret(True)
        .set_parent_branch_name("master")
    )
Esempio n. 7
0
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)
Esempio n. 8
0
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
Esempio n. 9
0
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
Esempio n. 10
0
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
Esempio n. 11
0
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()
Esempio n. 25
0
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
Esempio n. 26
0
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
Esempio n. 28
0
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