def test_elements_in_app_section(browser, config_host):
    very_parametrized_script_page = VeryParametrizedScript(
        browser, config_host)
    very_parametrized_script_page.load()

    expect(is_displayed(very_parametrized_script_page.script_description),
           "Script description not found")
    expect(is_displayed(very_parametrized_script_page.script_parameters_panel),
           "Parameters panel not found")
    expect(is_displayed(very_parametrized_script_page.button_execute),
           "Execute button not found")
    expect(is_enabled(very_parametrized_script_page.button_execute),
           "Execute button not enabled")

    assert_expectations()
def test_input_text_in_simple_text(browser, config_host):
    very_parametrized_script_page = VeryParametrizedScript(
        browser, config_host)

    random_srting = ''.join(
        random.choices(string.ascii_letters + string.digits,
                       k=random.randint(0, 254)))
    very_parametrized_script_page.parameter_simple_text.send_keys(
        random_srting)

    expect(
        very_parametrized_script_page.parameter_simple_text.get_attribute(
            'value') == str(random_srting), "Field text is not equal to input")
    expect(
        get_underline_error_text(
            very_parametrized_script_page.parameter_simple_text) == "",
        "Underline text error is not empty: " + str(
            get_underline_error_text(
                very_parametrized_script_page.parameter_simple_text)))

    very_parametrized_script_page.parameter_simple_text.send_keys(Keys.ENTER)
    expect(
        very_parametrized_script_page.parameter_simple_text.get_attribute(
            "class") == "validate valid", "Class is not valid")

    assert_expectations()
def test_check_search_results_in_list_with_search(browser, config_host):
    very_parametrized_script_page = VeryParametrizedScript(
        browser, config_host)
    for element in get_visible_values_of_list(
            very_parametrized_script_page.parameter_list_with_search_list):
        expect(str(element.text).lower().find(search_request) > -1)

    assert_expectations()
def test_input_string_in_simple_int(browser, config_host):
    very_parametrized_script_page = VeryParametrizedScript(
        browser, config_host)

    very_parametrized_script_page.parameter_simple_int.send_keys(
        "String value" + Keys.ENTER)
    assert get_underline_error_text(very_parametrized_script_page.
                                    parameter_simple_int) == "integer expected"
def test_check_simple_boolean(browser, config_host):
    very_parametrized_script_page = VeryParametrizedScript(
        browser, config_host)

    very_parametrized_script_page.parameter_simple_boolean_label.click()

    assert very_parametrized_script_page.parameter_simple_boolean.is_selected(
    ), "Default boolean is selected"
def test_click_command_based_list(browser, config_host):
    very_parametrized_script_page = VeryParametrizedScript(
        browser, config_host)
    very_parametrized_script_page.parameter_command_based_list.click()

    expect(is_displayed(very_parametrized_script_page.command_based_list),
           "Command based List was not opened on click")
    expect(
        is_displayed(
            very_parametrized_script_page.search_field_in_command_based_list),
        "Search field in command based list was not opened on click")

    assert_expectations()
def test_click_simple_list(browser, config_host):
    very_parametrized_script_page = VeryParametrizedScript(
        browser, config_host)
    very_parametrized_script_page.parameter_simple_list.click()

    expect(
        is_displayed(
            very_parametrized_script_page.parameter_simple_list_drop_down),
        "Drop down on list parameter click was not opened")
    expect(
        len(very_parametrized_script_page.
            parameter_simple_list_drop_down_elements) > 0,
        "Drop down list has no elements")

    assert_expectations()
def test_command_based_list(browser, config_host):
    very_parametrized_script_page = VeryParametrizedScript(
        browser, config_host)
    very_parametrized_script_page.parameter_command_based_list.click()

    expect(is_displayed(very_parametrized_script_page.command_based_list),
           "Command based List was not opened on click")
    expect(
        len(very_parametrized_script_page.command_based_list_elements) > 0,
        "Command based List has no elements")

    random_drop_down_element = random.choice(
        very_parametrized_script_page.command_based_list_elements)
    random_drop_down_element.click()

    assert_expectations()
def test_edit_simple_text_to_hide_inc_params(browser, config_host):
    very_parametrized_script_page = VeryParametrizedScript(
        browser, config_host)

    very_parametrized_script_page.parameter_simple_text.send_keys("something")

    expect(
        not is_displayed(very_parametrized_script_page.parameter_inc_param1),
        "inc_param1 is displayed while not key text is in simple text field is presented"
    )
    expect(
        not is_displayed(very_parametrized_script_page.parameter_inc_param2),
        "inc_param2 is displayed while not key text is in simple text field is presented"
    )

    assert_expectations()
def test_click_random_drop_down_element(browser, config_host):
    very_parametrized_script_page = VeryParametrizedScript(
        browser, config_host)
    random_drop_down_element = random.choice(
        very_parametrized_script_page.parameter_simple_list_drop_down_elements)
    random_drop_down_element.click()
    expect(
        str(
            very_parametrized_script_page.parameter_simple_list.get_attribute(
                'value')) == str(
                    random_drop_down_element.get_attribute('title')),
        "Field text is not equal to input")
    expect(
        random_drop_down_element.get_attribute("class").find("selected") > -1,
        "Selected element has not class \"selected\"")

    assert_expectations()
def test_search_in_command_based_list(browser, config_host):
    very_parametrized_script_page = VeryParametrizedScript(
        browser, config_host)
    very_parametrized_script_page.search_field_in_command_based_list.send_keys(
        search_request)

    expect(is_displayed(very_parametrized_script_page.command_based_list),
           "Command based List is not displayed after search")
    for element in get_visible_values_of_list(
            very_parametrized_script_page.command_based_list):
        expect(is_displayed(element), "Visible list element is not displayed")
    for element in get_hidden_values_of_list(
            very_parametrized_script_page.command_based_list):
        expect(not is_displayed(element),
               "Hidden list element is not displayed")

    assert_expectations()
def test_input_key_text_in_simple_text(browser, config_host):
    very_parametrized_script_page = VeryParametrizedScript(
        browser, config_host)

    very_parametrized_script_page.parameter_simple_text.clear()
    very_parametrized_script_page.parameter_simple_text.send_keys("included")

    expect(
        is_displayed(very_parametrized_script_page.parameter_inc_param1),
        "inc_param1 is not displayed. Simple text value is: " + str(
            very_parametrized_script_page.parameter_simple_text.get_attribute(
                'value')))
    expect(
        is_displayed(very_parametrized_script_page.parameter_inc_param2),
        "inc_param2 is not displayed. Simple text value is: " + str(
            very_parametrized_script_page.parameter_simple_text.get_attribute(
                'value')))

    assert_expectations()
def test_input_int_in_simple_int(browser, config_host):
    very_parametrized_script_page = VeryParametrizedScript(
        browser, config_host)

    random_int = random.randint(0, sys.maxsize)

    very_parametrized_script_page.parameter_simple_int.clear()
    very_parametrized_script_page.parameter_simple_int.send_keys(
        str(random_int) + Keys.ENTER)
    expect(
        very_parametrized_script_page.parameter_simple_int.get_attribute(
            "class") == "validate valid", "Class is not valid")
    expect(
        very_parametrized_script_page.parameter_simple_int.get_attribute(
            'value') == str(random_int), "Field text is not equal to input")
    expect(
        get_underline_error_text(
            very_parametrized_script_page.parameter_simple_int) == "",
        "Underline text error is not empty: " + str(
            get_underline_error_text(
                very_parametrized_script_page.parameter_simple_int)))

    assert_expectations()
def test_params(browser, config_host):
    very_parametrized_script_page = VeryParametrizedScript(
        browser, config_host)

    expect(is_displayed(very_parametrized_script_page.parameter_simple_int),
           "Simple int param not found")
    expect(
        is_displayed(
            very_parametrized_script_page.parameter_simple_boolean_label),
        "Simple boolean param not found")
    expect(is_displayed(very_parametrized_script_page.parameter_simple_text),
           "Simple text param not found")
    expect(is_displayed(very_parametrized_script_page.parameter_simple_list),
           "Simple list param not found")
    expect(very_parametrized_script_page.parameter_file_upload is not None,
           "File upload param not found")
    expect(
        is_displayed(
            very_parametrized_script_page.parameter_multiple_selection),
        "Multiple selection param not found")
    expect(is_displayed(very_parametrized_script_page.parameter_required_text),
           "Required text param not found")
    expect(is_displayed(very_parametrized_script_page.parameter_required_list),
           "Required list param not found")
    expect(
        is_displayed(very_parametrized_script_page.parameter_constrained_int),
        "Constrained int param not found")
    expect(is_displayed(very_parametrized_script_page.parameter_default_text),
           "Default text param not found")
    expect(
        is_displayed(
            very_parametrized_script_page.parameter_default_boolean_label),
        "Default boolean param not found")
    expect(
        is_displayed(
            very_parametrized_script_page.parameter_command_based_list),
        "Command based list param not found")
    expect(is_displayed(very_parametrized_script_page.parameter_secure_list),
           "Secure list param not found")
    expect(is_displayed(very_parametrized_script_page.parameter_secure_int),
           "Secure int param not found")
    expect(
        is_displayed(very_parametrized_script_page.parameter_very_long_list),
        "Very long list param not found")
    expect(
        is_displayed(very_parametrized_script_page.
                     parameter_multiselect_as_secure_arguments),
        "Multiselect as secure arguments param not found")
    expect(
        is_displayed(very_parametrized_script_page.parameter_dependant_list),
        "Dependant list param not found")
    expect(is_displayed(very_parametrized_script_page.parameter_auth_username),
           "Auth username param not found")
    expect(is_displayed(very_parametrized_script_page.parameter_any_ip),
           "Any IP param not found")
    expect(is_displayed(very_parametrized_script_page.parameter_ip_v4),
           "IP v4 param not found")
    expect(is_displayed(very_parametrized_script_page.parameter_ip_v6),
           "IP v6 param not found")
    expect(is_displayed(very_parametrized_script_page.parameter_server_file),
           "Server file param not found")
    expect(
        is_displayed(very_parametrized_script_page.parameter_recursive_file),
        "Recursive file param not found")

    expect(
        not is_displayed(very_parametrized_script_page.parameter_inc_param1),
        "inc_param1 is displayed by default ")
    expect(
        not is_displayed(very_parametrized_script_page.parameter_inc_param2),
        "inc_param2 is displayed by defaukt")

    assert_expectations()
def test_check_simple_int_by_default(browser, config_host):
    very_parametrized_script_page = VeryParametrizedScript(
        browser, config_host)

    assert very_parametrized_script_page.parameter_simple_int.text == "", "Simple int is not empty by default"
def test_simple_boolean(browser, config_host):
    very_parametrized_script_page = VeryParametrizedScript(
        browser, config_host)

    assert not very_parametrized_script_page.parameter_simple_boolean.is_selected(
    ), "Default boolean is not selected"