Skip to content

Commit

Permalink
QA-7400 updated more case search and multiselect functions
Browse files Browse the repository at this point in the history
  • Loading branch information
kbo001 committed Jan 28, 2025
1 parent d876108 commit e22de6d
Show file tree
Hide file tree
Showing 7 changed files with 40 additions and 19 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -479,6 +479,7 @@ def test_case_18_conditionally_required_condition_property(driver, settings):
message=CaseSearchUserInput.required_msg_if_rating_two,
required_or_validated=YES,
property_type=COMBOBOX)
webapps.clear_selections_on_case_search_page()
"""Check disabled"""
casesearch.search_against_property(search_property=CaseSearchUserInput.rating,
input_value=CaseSearchUserInput.three_star,
Expand Down
1 change: 1 addition & 0 deletions Features/CaseSearch/test_pages/casesearch_page.py
Original file line number Diff line number Diff line change
Expand Up @@ -238,6 +238,7 @@ def check_validations_on_property(self, search_property, property_type, message=
time.sleep(4)
assert not self.is_displayed(validation_message_per_prop), f"validation present {validation_message_per_prop}"
print(f"validation not present {validation_message_per_prop}")
time.sleep(5)

def check_dropdown_value(self, search_property, value, present):
dropdown_values_ = self.get_element(self.dropdown_values, search_property)
Expand Down
2 changes: 2 additions & 0 deletions Features/MultiSelect/test_cases/test_01_multi_select.py
Original file line number Diff line number Diff line change
Expand Up @@ -343,6 +343,8 @@ def test_case_16_multiselect_with_case_tiles(driver, settings):


def test_case_17_multiselect_enabled_select_parent_first(driver, settings):
if 'www' in settings['url']:
pytest.mark.skip("Production has a linked app")
multiselect = MultiSelectWorkflows(driver)
menu = HomePage(driver, settings)
menu.applications_menu(MultiSelectUserInput.multiselect_app_name)
Expand Down
3 changes: 3 additions & 0 deletions Features/MultiSelect/test_pages/multiselect_page.py
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,10 @@ def check_if_value_present_in_drop_down(self, menu_name_input, match=None):

def open_menu_settings(self, menu):
menu_xpath = self.get_element(self.open_app_builder_menu, menu)
self.wait_for_element(menu_xpath)
self.js_click(menu_xpath)
time.sleep(2)
self.wait_for_element(self.case_list_settings)
self.js_click(self.case_list_settings)


Expand Down
3 changes: 2 additions & 1 deletion HQSmokeTests/testPages/home/home_page.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ def __init__(self, driver, settings):
self.settings_bar = (By.XPATH, "//ul[@role='menu']//a[@data-action='Click Gear Icon']/i")
self.project_settings_menu = (By.LINK_TEXT, "Project Settings")
self.project_settings_elements = (By.XPATH, "//form[@class='form form-horizontal']")
self.application_names = "//li[@class='nav-header dropdown-header' and contains(.,'My Applications')]//following-sibling::li[contains(.,'{}')]"

self.DASHBOARD_TITLE = "CommCare HQ"
self.REPORTS_TITLE = "My Saved Reports : Project Reports :: - CommCare HQ"
Expand Down Expand Up @@ -74,7 +75,7 @@ def applications_menu(self, app_name):
self.open_menu(self.applications_menu_id)
else:
raise TimeoutException
self.wait_to_click((By.LINK_TEXT, str(app_name)))
self.wait_to_click((By.XPATH, self.application_names.format(app_name)))
self.APP_TITLE = "Releases - " + str(app_name) + " - CommCare HQ"
assert self.APP_TITLE in self.driver.title, "This is not the Applications page."

Expand Down
9 changes: 7 additions & 2 deletions common_utilities/selenium/base_page.py
Original file line number Diff line number Diff line change
Expand Up @@ -384,8 +384,13 @@ def get_element(self, xpath_format, insert_value):
def wait_for_ajax(self, value=300):
try:
wait = WebDriverWait(self.driver, value)
wait.until(lambda driver: self.driver.execute_script('return jQuery.active') == 0)
wait.until(lambda driver: self.driver.execute_script('return document.readyState') == 'complete')
if self.driver.execute_script('return jQuery.active') != 'undefined':
wait.until(lambda driver: self.driver.execute_script('return jQuery.active') == 0)
elif self.driver.execute_script('return document.readyState') != 'complete':
wait.until(lambda driver: self.driver.execute_script('return document.readyState') == 'complete')
else:
print("Undefined JQuery, waiting for sometime")
time.sleep(10)
except JavascriptException:
print("Undefined JQuery")
time.sleep(20)
Expand Down
40 changes: 24 additions & 16 deletions common_utilities/selenium/webapps.py
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,7 @@ def __init__(self, driver, settings):
self.app_preview_model = (By.XPATH, "//div[@class='preview-phone-container']")

self.async_restore_error = (By.XPATH, "//div[contains(@class,'alert-danger') and contains(.,'Asynchronous restore')]/button[contains(@class,'close')]")
self.error_message = (By.XPATH, "//div[contains(@class,'alert-danger')]/button[contains(@class,'close')]")


def open_app(self, app_name):
Expand All @@ -91,22 +92,22 @@ def open_app(self, app_name):
self.scroll_to_element(self.application)
self.js_click(self.application)
time.sleep(10)
self.wait_for_element(self.application_header, timeout=200)
self.wait_for_element(self.application_header, timeout=300)

def navigate_to_breadcrumb(self, breadcrumb_value):
self.link = (By.XPATH, self.breadcrumb_format.format(breadcrumb_value, breadcrumb_value))
self.wait_for_element(self.link)
self.js_click(self.link)
time.sleep(5)
self.wait_for_element((By.XPATH, self.current_page.format(breadcrumb_value)), timeout=300)
self.wait_for_element((By.XPATH, self.current_page.format(breadcrumb_value)), timeout=100)

def open_menu(self, menu_name):
self.caselist_menu = self.get_element(self.menu_name_format, menu_name)
self.caselist_header = self.get_element(self.menu_name_header_format, menu_name)
self.scroll_to_element(self.caselist_menu)
self.js_click(self.caselist_menu)
time.sleep(5)
self.wait_for_element((By.XPATH, self.current_page.format(menu_name)), timeout=300)
self.wait_for_element((By.XPATH, self.current_page.format(menu_name)), timeout=100)
assert self.is_visible_and_displayed(self.caselist_header)

def open_form(self, form_name):
Expand All @@ -115,11 +116,11 @@ def open_form(self, form_name):
logging.info("Auto advance enabled")
else:
self.form_name = self.get_element(self.form_name_format, form_name)
self.wait_for_element(self.form_name, timeout=500)
self.wait_for_element(self.form_name, timeout=100)
self.scroll_to_element(self.form_name)
self.js_click(self.form_name)
time.sleep(5)
self.wait_for_element((By.XPATH, self.current_page.format(form_name)), timeout=300)
self.wait_for_element((By.XPATH, self.current_page.format(form_name)), timeout=100)

def search_all_cases(self):
self.scroll_to_element(self.search_all_cases_button)
Expand All @@ -131,10 +132,17 @@ def search_again_cases(self):
self.js_click(self.search_again_button)

def clear_selections_on_case_search_page(self):
self.wait_for_element(self.clear_case_search_page, timeout=500)
if self.is_present_and_displayed(self.error_message):
self.js_click(self.error_message)
time.sleep(3)
else:
print("No banners present")
self.scroll_to_bottom()
self.wait_for_element(self.clear_case_search_page, timeout=100)
self.scroll_to_element(self.clear_case_search_page)
time.sleep(2)
self.js_click(self.clear_case_search_page)
# self.wait_for_ajax()
self.wait_for_ajax()
time.sleep(10)

def search_button_on_case_search_page(self, enter_key=None, case_list=None):
Expand All @@ -146,10 +154,10 @@ def search_button_on_case_search_page(self, enter_key=None, case_list=None):
time.sleep(2)
self.scroll_to_element(self.submit_on_case_search_page)
self.js_click(self.submit_on_case_search_page)
time.sleep(60)
# self.wait_for_ajax(60)
time.sleep(20)
self.wait_for_ajax()
if case_list == None:
self.is_visible_and_displayed(self.case_list, timeout=500)
self.is_visible_and_displayed(self.case_list, timeout=100)
else:
print("Case List is not displayed")

Expand All @@ -162,7 +170,7 @@ def omni_search(self, case_name, displayed=YES):
self.wait_to_clear_and_send_keys(self.omni_search_input, case_name)
self.wait_for_element(self.omni_search_button)
self.js_click(self.omni_search_button)
time.sleep(100)
time.sleep(50)
else:
print("Split Screen Case Search enabled")
self.case = self.get_element(self.case_name_format, case_name)
Expand Down Expand Up @@ -233,13 +241,13 @@ def submit_the_form(self):
self.async_restore_resubmit()
time.sleep(10)
try:
self.wait_for_element(self.form_submission_successful, timeout=500)
self.wait_for_element(self.form_submission_successful, timeout=100)
assert self.is_visible_and_displayed(self.form_submission_successful, timeout=50)
except AssertionError:
if self.is_displayed(self.form_500_error):
time.sleep(60)
self.js_click(self.form_submit)
self.wait_for_element(self.form_submission_successful, timeout=500)
self.wait_for_element(self.form_submission_successful, timeout=100)
assert self.is_visible_and_displayed(self.form_submission_successful, timeout=50)
else:
raise AssertionError
Expand Down Expand Up @@ -276,7 +284,7 @@ def login_as(self, username):
self.wait_for_element(self.webapp_login)
self.js_click(self.webapp_login)
time.sleep(10)
self.wait_for_element(self.search_user_webapps, timeout=300)
self.wait_for_element(self.search_user_webapps, timeout=200)
self.send_keys(self.search_user_webapps, username)
time.sleep(1)
self.wait_for_element(self.search_button_webapps)
Expand Down Expand Up @@ -312,10 +320,10 @@ def change_page_number(self, page_number):

def switch_bw_pages(self):
self.js_click(self.next_page)
time.sleep(50)
time.sleep(30)
self.wait_for_element(self.prev_page)
self.js_click(self.prev_page)
time.sleep(50)
time.sleep(30)

def go_to_page(self, page_number):
self.send_keys(self.go_to_page_textarea, page_number)
Expand Down

0 comments on commit e22de6d

Please sign in to comment.