def test_get_all_vg_test_results(local_chrome_driver):
    local_chrome_driver.get(
        "https://applitools.github.io/demo/TestPages/SimpleTestPage")
    runner = VisualGridRunner()
    eyes1 = Eyes(runner)
    eyes1.open(
        local_chrome_driver,
        "USDK Test",
        "Test get all vg test results 1",
        {
            "width": 800,
            "height": 600
        },
    )
    eyes1.check_window()
    results = [eyes1.close()]
    eyes2 = Eyes(runner)
    eyes2.open(
        local_chrome_driver,
        "USDK Test",
        "Test get all vg test results 2",
        {
            "width": 800,
            "height": 600
        },
    )
    eyes2.check_window()
    results.append(eyes2.close())

    all_results = runner.get_all_test_results()

    assert len(all_results) == 2
    assert results[0] == all_results[0].test_results
    assert results[1] == all_results[1].test_results
def eyes(request):
    if request.param == "selenium":
        return Eyes()
    elif request.param == "visual_grid":
        return Eyes(VisualGridRunner())
    else:
        raise ValueError("invalid internal test config")
Beispiel #3
0
def test_double_open_check_close_async_with_different_instances(
        driver, eyes_runner, name_suffix):
    eyes1 = Eyes(eyes_runner)
    driver.get(
        "https://applitools.github.io/demo/TestPages/VisualGridTestPage/")
    eyes1.open(
        driver,
        "Applitools Eyes SDK",
        "TestDoubleOpenCheckCloseAsyncWithDifferentInstances" + name_suffix,
        dict(width=1200, height=800),
    )
    eyes1.check("Step 1", Target.window().fully().ignore_displacements(False))
    eyes1.close_async()

    eyes2 = Eyes(eyes_runner)
    eyes2.open(
        driver,
        "Applitools Eyes SDK",
        "TestDoubleOpenCheckCloseAsyncWithDifferentInstances" + name_suffix,
        dict(width=1200, height=800),
    )
    eyes2.check("Step 2", Target.window().fully().ignore_displacements(False))
    eyes2.close_async()

    all_test_results = eyes_runner.get_all_test_results(False)
    assert len(all_test_results.all_results) == 2
Beispiel #4
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
Beispiel #5
0
def test_double_eyes_with_configuration_from_eyes():
    eyes1 = Eyes()
    eyes2 = Eyes()
    eyes1.configure.test_name = "Test1"
    conf = eyes1.configure
    eyes2.set_configuration(conf)
    eyes2.configure.test_name = "Test2"
    assert eyes1.configure.test_name == "Test1"
    assert eyes2.configure.test_name == "Test2"
Beispiel #6
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_robot_eyes_agent_id_setup(appium_library, selenium_library):
    eyes = Eyes(RobotMobileNativeRunner())
    assert eyes.full_agent_id.startswith("eyes.python.robotframework.appium/")

    eyes = Eyes(RobotWebRunner())
    assert eyes.full_agent_id.startswith(
        "eyes.python.robotframework.selenium/")

    eyes = Eyes(RobotWebUFGRunner())
    assert eyes.full_agent_id.startswith(
        "eyes.python.robotframework.visual_grid/")
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
Beispiel #9
0
def test_eyes_runner(driver, runner):
    eyes = Eyes(runner)
    eyes2 = Eyes(runner)
    eyes.server_url = "https://eyes.applitools.com/"

    eyes.send_dom = True
    eyes2.send_dom = False
    eyes.stitch_mode = StitchMode.CSS
    eyes2.stitch_mode = StitchMode.CSS

    batch_info = BatchInfo("Runner Testing")
    batch_info.id = "RCA_Batch_ID"
    eyes.batch_info = batch_info
    eyes2.batch_info = batch_info

    driver.get(
        "http://applitools.github.io/demo/TestPages/VisualGridTestPage/index.html"
    )

    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_render_resource_not_found(driver, fake_connector_class, spy):
    driver.get("http://applitools.github.io/demo/DomSnapshot/test-visual-grid.html")
    missing_blob_url = "http://applitools.github.io/blabla"
    missing_resource_url = "http://localhost:7374/get-cors.css"

    vg_runner = VisualGridRunner(1)
    eyes = Eyes(vg_runner)
    eyes.server_connector = fake_connector_class()
    eyes.open(
        driver,
        app_name="Visual Grid Render Test",
        test_name="TestRenderResourceNotFound",
    )

    running_test = vg_runner._get_all_running_tests()[0]
    rc_task_factory_spy = spy(VisualGridEyes, "_resource_collection_task")

    eyes.check_window("check")
    eyes.close(False)
    vg_runner.get_all_test_results(False)

    blobs = rc_task_factory_spy.call_args.args[4]["blobs"]
    error_blob = [b for b in blobs if b["url"] == missing_blob_url][-1]
    assert error_blob["errorStatusCode"] == 404
    assert error_blob["url"] == missing_blob_url

    render_request = eyes.server_connector.calls["render"][0]
    assert render_request.resources[missing_blob_url].error_status_code == "404"
    assert render_request.resources[missing_resource_url].error_status_code in [
        "404",
        "444",
        "503",
    ]
def test_default_rendering_of_multiple_targets(driver, vg_runner):
    driver.get("https://applitools.com/helloworld")
    eyes = Eyes(vg_runner)
    eyes.configuration.add_browser(800, 600, BrowserType.CHROME)
    eyes.configuration.add_browser(800, 600, BrowserType.FIREFOX)
    eyes.configuration.add_browser(1200, 800, BrowserType.CHROME)
    eyes.configuration.add_browser(1200, 800, BrowserType.FIREFOX)
    eyes.configuration.app_name = "TestDefaultRendering"
    eyes.configuration.test_name = "TestDefaultRenderingOfMultipleTargets"

    try:
        eyes.open(driver)
        eyes.check("", Target.window())
        eyes.close()
    finally:
        eyes.abort()

    all_test_results = vg_runner.get_all_test_results()
    batch_id = None
    batch_name = None
    for trc in all_test_results:
        if batch_id is None:
            batch_id = trc.test_results.batch_id
        if batch_name is None:
            batch_name = trc.test_results.batch_name

        assert batch_id == trc.test_results.batch_id
        assert batch_name == trc.test_results.batch_name
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
Beispiel #13
0
class Table_Sort_Test:
    eyes = Eyes()
    eyes.api_key = TestData.API_KEY

    try:
        driver = webdriver.Chrome()
        eyes.open(driver, TestData.APP_NAME, "Table Sort", TestData.VIEW_PORT)
        batch = BatchInfo('Data Driven Test')
        driver.get(TestData.BASE_URL)

        btnlogin = driver.find_element(By.XPATH, '//*[@id="log-in"]')
        txtusername = driver.find_element(By.ID, 'username')
        txtpassword = driver.find_element(By.ID, 'password')

        txtusername.clear()
        txtusername.send_keys(TestData.USERNAME)
        txtpassword.clear()
        txtpassword.send_keys(TestData.PASSWORD)
        btnlogin.click()
        driver.execute_script(
            "window.scrollTo(0, document.body.scrollHeight);")
        eyes.check_window('Validate values before sorting Amount column', 10)
        amount = driver.find_element(By.ID, 'amount')
        amount.click()
        eyes.check_window('Validate amount column after sorting', 10)
        eyes.close()

    finally:
        driver.quit()
        eyes.abort()
Beispiel #14
0
class ValidateLoginUIElements():
    eyes = Eyes()

    # Initialize the eyes SDK and set your private API key.
    eyes.api_key = TestData.API_KEY

    try:

        # Open a Chrome browser.
        driver = webdriver.Chrome()

        eyes.open(driver, TestData.APP_NAME, "Validate Login UI Elements",
                  TestData.VIEW_PORT)
        batch = BatchInfo('Login UI Test')
        driver.get(TestData.BASE_URL)
        eyes.check_window('Login UI Elements', 10)

        # End the test.
        eyes.close()

    finally:

        # Close the browser.
        driver.quit()

        # If the test was aborted before eyes.close was called, ends the test as aborted.
        eyes.abort()
Beispiel #15
0
class CanvasChart:
    eyes = Eyes()
    eyes.api_key = TestData.API_KEY

    try:
        driver = webdriver.Chrome()
        eyes.open(driver, TestData.APP_NAME, "Canvas Chart",
                  TestData.VIEW_PORT)
        batch = BatchInfo('Canvas Chart Test')

        driver.get(TestData.BASE_URL)

        btnlogin = driver.find_element(By.XPATH, '//*[@id="log-in"]')
        txtusername = driver.find_element(By.ID, 'username')
        txtpassword = driver.find_element(By.ID, 'password')

        txtusername.clear()
        txtusername.send_keys(TestData.USERNAME)
        txtpassword.clear()
        txtpassword.send_keys(TestData.PASSWORD)
        btnlogin.click()
        compare_exp = driver.find_element(By.ID, 'showExpensesChart')
        compare_exp.click()
        eyes.check_window('Validate expenses between 2017 and 2018', 10)
        show_data = driver.find_element(By.ID, 'addDataset')
        show_data.click()
        eyes.check_window('Validate expenses between 2017, 2018 and 2019', 10)

        eyes.close()

    finally:
        driver.quit()
        eyes.abort()
def test_ufg_options(driver, fake_connector_class):
    runner = VisualGridRunner(1)
    eyes = Eyes(runner)
    eyes.server_connector = fake_connector_class()

    (
        eyes.configure.add_browser(
            800, 600, BrowserType.CHROME
        ).set_visual_grid_options(
            VisualGridOption("option1", "value1"), VisualGridOption("option2", False)
        )
    )

    driver.get("https://google.com")
    eyes.open(driver, "Mock app", "Mock Test")
    eyes.check(
        "",
        Target.window().visual_grid_options(
            VisualGridOption("option3", "value3"),
            VisualGridOption("option4", 5),
            VisualGridOption("option1", 5),
        ),
    )
    eyes.close_async()
    runner.get_all_test_results()

    request_options = eyes.server_connector.input_calls["render"][0][0].options
    assert request_options == {
        "option1": 5,
        "option2": False,
        "option3": "value3",
        "option4": 5,
    }
Beispiel #17
0
class ChromeSetupAI(object):
    """
    run the tests in UserStoryTests in Chrome
    """
    eyes = Eyes()
    os.environ[
        'APPLITOOLS_API_KEY'] = '9HUjLRImIJJ108H0eSoRYU5lYUxa7UoKjWqmdx9k89jpk110'
    eyes.api_key = os.environ['APPLITOOLS_API_KEY']

    def setUp(self):
        self.driver = webdriver.Chrome(
            executable_path='./TraditionalTestFramework/Drivers/chromedriver')
        self.driver.get(self.url)
        self.driver.set_window_size(1680, 800)
        self.driver.set_script_timeout(1)

    def setBatching(self, value):
        b = BatchInfo(value)
        b.id_ = value
        self.eyes.batch = b
        self.eyes.open(self.driver, "Test app", value, {
            'width': 1680,
            'height': 800
        })
        self.eyes.force_full_page_screenshot = True
        self.eyes.use_css_transition = True

    def tearDown(self):
        self.driver.close()
        self.driver.quit()
        self.eyes.close()
def test_coded_layout_regions_passed_to_match_window_request(
        driver, fake_connector_class, vg_runner, spy):
    eyes = Eyes(vg_runner)
    eyes.server_connector = fake_connector_class()
    driver.get(
        "https://applitools.github.io/demo/TestPages/SimpleTestPage/index.html"
    )
    eyes.open(driver, "Test Visual Grid",
              "Test regions are passed to render request")

    eyes.check(Target.window().fully().layout(Region(1, 2, 3, 4)).floating(
        5, Region(6, 7, 8,
                  9)).accessibility(Region(10, 11, 12, 13),
                                    AccessibilityRegionType.LargeText))

    eyes.close_async()
    server_connector = vg_runner._get_all_running_tests(
    )[0].eyes.server_connector
    vg_runner.get_all_test_results(False)
    _, match_data = server_connector.input_calls["match_window"][0]
    ims = match_data.options.image_match_settings

    assert len(server_connector.input_calls["match_window"]) == 1
    assert ims.layout_regions == [Region(1, 2, 3, 4)]
    assert ims.floating_match_settings == [
        FloatingMatchSettings(Region(6, 7, 8, 9), FloatingBounds(5, 5, 5, 5))
    ]
    assert ims.accessibility == [
        AccessibilityRegion(10, 11, 12, 13, AccessibilityRegionType.LargeText)
    ]
Beispiel #19
0
def test_abort_eyes(vg_runner, driver):
    eyes = Eyes(vg_runner)
    eyes.configuration.add_browser(800, 600, BrowserType.CHROME)
    driver.get("https://demo.applitools.com")
    eyes.open(driver, "Python VisualGrid", "TestAbortVGEyes")
    eyes.check_window()
    eyes.abort()
Beispiel #20
0
def eyes_vg(vg_runner, sel_config, batch_info, driver, request, test_page_url):
    app_name = request.node.get_closest_marker("app_name")
    if app_name:
        app_name = app_name.args[0]
    test_name = request.node.get_closest_marker("test_name")
    if test_name:
        test_name = test_name.args[0]
    viewport_size = request.node.get_closest_marker("viewport_size")
    if viewport_size:
        viewport_size = viewport_size.args[0]
    else:
        viewport_size = None

    eyes = Eyes(vg_runner)
    eyes.server_url = "https://eyes.applitools.com/"
    eyes.configuration = sel_config
    eyes.configuration.batch = batch_info
    app_name = app_name or eyes.configuration.app_name
    test_name = test_name or eyes.configuration.test_name
    viewport_size = viewport_size or eyes.configuration.viewport_size

    driver.get(test_page_url)
    eyes.open(driver, app_name, test_name, viewport_size)
    yield eyes
    logger.debug("closing WebDriver for url {}".format(test_page_url))
    eyes.close()
Beispiel #21
0
def test_ufg_options(driver):
    runner = VisualGridRunner(1)
    eyes = Eyes(runner)

    (eyes.configure.add_browser(800, 600,
                                BrowserType.CHROME).set_visual_grid_options(
                                    VisualGridOption("option1", "value1"),
                                    VisualGridOption("option2", False)))

    driver.get("https://google.com")
    with patch("applitools.core.server_connector.ServerConnector.render"
               ) as patched:
        eyes.open(driver, "Mock app", "Mock Test")
        eyes.check(
            "",
            Target.window().visual_grid_options(
                VisualGridOption("option3", "value3"),
                VisualGridOption("option4", 5),
                VisualGridOption("option1", 5),
            ),
        )
        eyes.close_async()
        res = runner.get_all_test_results()

        request_options = patched.call_args.args[0].options
        assert request_options == {
            "option1": 5,
            "option2": False,
            "option3": "value3",
            "option4": 5,
        }
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_ufg_skip_list(vg_runner, driver):
    # TODO: Refactor this to unit test
    eyes = Eyes(vg_runner)
    driver.get(
        "https://applitools.github.io/demo/TestPages/VisualGridTestPageWithRelativeBGImage/index.html"
    )
    eyes.open(driver, app_name="TestUFGEyes", test_name="TestUFGSkipList")

    running_test = vg_runner._get_all_running_tests()[0]

    eyes.check_window("check 1")
    eyes.check_window("check 2")

    with patch(
            "applitools.selenium.eyes_selenium_utils.get_dom_script_result",
            wraps=eyes_selenium_utils.get_dom_script_result,
    ) as get_script_result:
        with patch(
                "applitools.selenium.visual_grid.running_test.RunningTest.check",
                wraps=running_test.check,
        ) as running_check:
            eyes.check_window("check 3")

            skip_list = _fetch_skip_resources(
                get_script_result.call_args[0][3])
            script_result = _retrieve_urls(
                running_check.call_args[1]["script_result"])
            assert set(skip_list).difference(script_result["resource_urls"])

    eyes.close_async()
    vg_runner.get_all_test_results(False)
Beispiel #24
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)
def test_open_close_abort_eyes(local_chrome_driver):
    eyes = Eyes()
    eyes.open(local_chrome_driver, "USDK Test", "Test create close abort eyes")

    eyes.close(False)
    abort_result = eyes.abort()

    assert abort_result is None
def test_eyes_none_runner(driver):
    eyes = Eyes(None)
    eyes.configure.hide_scrollbars = True
    driver.get("https://applitools.github.io/demo/TestPages/FramesTestPage/")
    eyes.open(driver, "Eyes Selenium SDK - Null Runner",
              "TestSeleniumEyesWithNullRunner")
    eyes.check_window()
    eyes.close(False)
Beispiel #27
0
def eyes_setup(runner, batch_info):
    """Basic Eyes setup."""
    eyes = Eyes(runner)
    eyes.api_key = os.getenv("APPLITOOLS_API_KEY")
    eyes.configure.batch = batch_info
    eyes.configure.match_level = MatchLevel.STRICT
    eyes.configure.set_stitch_mode(StitchMode.CSS)
    yield eyes
Beispiel #28
0
    def setup_class(self):
        self.__config = configparser.ConfigParser()
        self.__config.read("config.ini")

        self.__driver = webdriver.Chrome()
        self.__wait = WebDriverWait(self.__driver, DEFAULT_TIMEOUT_SEC)

        self.__eyes = Eyes()
        self.__eyes.api_key = self.__config["applitools"]["api_key"]
Beispiel #29
0
def test_rotation(driver_mock):
    eyes = Eyes()
    eyes.rotation = 2
    assert eyes.rotation is None

    open_and_get_start_session_info(eyes, driver_mock)
    eyes.rotation = 2
    assert eyes.rotation == 2
    assert eyes._driver.rotation == 2
Beispiel #30
0
def test_get_all_test_results(vg_runner, driver):
    eyes1 = Eyes(vg_runner)
    eyes2 = Eyes(vg_runner)
    eyes1.configuration.add_browser(800, 600, BrowserType.CHROME)
    eyes2.configuration.add_browser(700, 500, BrowserType.FIREFOX)

    driver.get("https://demo.applitools.com")
    eyes1.open(driver, "Python VisualGrid", "TestClose1")
    eyes2.open(driver, "Python VisualGrid", "TestClose2")

    eyes1.check_window()
    eyes2.check_window()

    eyes1.close_async()
    eyes2.close_async()

    results = vg_runner.get_all_test_results(False)
    print(results)