Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 11 additions & 3 deletions .github/workflows/p1p2-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,12 @@
name: Priority Escape Defects Tests

on:
push:
branches-ignore:
- master # run on all branches except master
pull_request:
branches-ignore:
- master # ignore PRs targeting master
workflow_dispatch:
inputs:
environment:
Expand Down Expand Up @@ -67,6 +73,8 @@ jobs:
DIMAGIQA_MAIL_USERNAME: ${{ secrets.DIMAGIQA_MAIL_USERNAME }}
DIMAGIQA_MAIL_PASSWORD: ${{ secrets.DIMAGIQA_MAIL_PASSWORD }}
DIMAGIQA_IMAP_PASSWORD: ${{secrets.DIMAGIQA_IMAP_PASSWORD}}
DIMAGIQA_BS_USER: ${{ secrets.DIMAGIQA_BS_USER }}
DIMAGIQA_BS_KEY: ${{ secrets.DIMAGIQA_BS_KEY }}
run: |
echo "client_payload: ${{ toJson(github.event.client_payload) }}"
echo "matrix environment: ${{ matrix.environment }}"
Expand Down Expand Up @@ -181,14 +189,14 @@ jobs:
SLACK_WEBHOOK_URL = '${{ secrets.SLACK_WEBHOOK_URL_SMOKE }}';
SLACK_CHANNEL_ID = '${{ secrets.SLACK_CHANNEL_ID_SMOKE }}';
console.log("Staging Failure");
} else if (CC_EVENT != 'repository_dispatch' && CC_ENV == 'india') {
} else if (CC_EVENT != 'repository_dispatch' && CC_ENV == 'india' && JOB_STATUS == 'failure') {
SLACK_WEBHOOK_URL = '${{ secrets.SLACK_WEBHOOK_URL_SMOKE }}';
SLACK_CHANNEL_ID = '${{ secrets.SLACK_CHANNEL_ID_SMOKE }}';
console.log("India Failure");
} else if (CC_EVENT != 'repository_dispatch' && CC_ENV == 'india' && CC_ENV == 'eu' && JOB_STATUS == 'failure') {
} else if (CC_EVENT != 'repository_dispatch' && CC_ENV == 'eu' && JOB_STATUS == 'failure') {
SLACK_WEBHOOK_URL = '${{ secrets.SLACK_WEBHOOK_URL_SMOKE }}';
SLACK_CHANNEL_ID = '${{ secrets.SLACK_CHANNEL_ID_SMOKE }}';
console.log("India Success");
console.log("EU Trigger");
} else {
SLACK_WEBHOOK_URL = '';
SLACK_CHANNEL_ID = '';
Expand Down
46 changes: 46 additions & 0 deletions HQSmokeTests/testPages/android/android_screen.py
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,7 @@ def __init__(self, settings):
self.form = "//android.widget.TextView[@text='" + UserData.new_form_name + "']"
self.text_field = "//android.widget.EditText"
self.submit_button = "//android.widget.TextView[@text='FINISH']"
self.log_out = "//android.widget.TextView[@text='Log out of CommCare']"

def click_xpath(self, locator):
element = self.driver.find_element(AppiumBy.XPATH, locator)
Expand Down Expand Up @@ -156,5 +157,50 @@ def install_app_and_submit_form(self, code, random_text):
self.driver.find_element(AppiumBy.XPATH, self.sync_button).click()
time.sleep(3)

def verify_app_install(self, code):
time.sleep(10)
self.driver.find_element(AppiumBy.XPATH, self.enter_code).click()
self.driver.find_element(AppiumBy.ID, self.profile_code).send_keys(code)
self.driver.find_element(AppiumBy.ID, self.start_install).click()
time.sleep(3)
self.driver.find_element(AppiumBy.XPATH, self.install).click()
time.sleep(30)
assert self.driver.find_element(AppiumBy.XPATH, "//android.widget.TextView[@text='Welcome back! Please log in.']").is_displayed(), "App not installed"
print("App installed successfully")

def verify_login_with_old_password(self, code, username, password):
time.sleep(10)
self.driver.find_element(AppiumBy.XPATH, self.enter_code).click()
self.driver.find_element(AppiumBy.ID, self.profile_code).send_keys(code)
self.driver.find_element(AppiumBy.ID, self.start_install).click()
time.sleep(3)
self.driver.find_element(AppiumBy.XPATH, self.install).click()
time.sleep(30)
assert self.driver.find_element(AppiumBy.XPATH, "//android.widget.TextView[@text='Welcome back! Please log in.']").is_displayed(), "App not installed"
print("App installed successfully")
self.driver.find_element(AppiumBy.ID, self.username).send_keys(username)
self.driver.find_element(AppiumBy.ID, self.password).send_keys(password)
self.driver.find_element(AppiumBy.ID, self.login).click()
time.sleep(40)
self.driver.find_element(AppiumBy.XPATH, self.log_out).click()
print("Successfully logged in and logged out with old password:", username, password)
time.sleep(3)
assert self.driver.find_element(AppiumBy.XPATH,
"//android.widget.TextView[@text='Welcome back! Please log in.']"
).is_displayed(), "App not installed"

def verify_login_with_new_password(self, username, password):
time.sleep(30)
assert self.driver.find_element(AppiumBy.XPATH, "//android.widget.TextView[@text='Welcome back! Please log in.']").is_displayed(), "App not installed"
print("Welcome screen present")
self.driver.find_element(AppiumBy.ID, self.username).send_keys(username)
self.driver.find_element(AppiumBy.ID, self.password).send_keys(password)
self.driver.find_element(AppiumBy.ID, self.login).click()
time.sleep(40)
self.driver.find_element(AppiumBy.XPATH, self.log_out).click()
print("Successfully logged in and logged out with new password :", username, password)
time.sleep(3)


def close_android_driver(self):
self.driver.quit()
13 changes: 7 additions & 6 deletions HQSmokeTests/testPages/applications/app_preview.py
Original file line number Diff line number Diff line change
Expand Up @@ -85,8 +85,8 @@ def submit_form_with_loc(self):
self.driver.switch_to.frame(self.find_element(self.iframe_app_preview))
self.login_as_app_preview()
self.wait_to_click(self.start_option)

self.wait_for_element((By.XPATH, self.case_list_menu.format(UserData.case_list_name)))
time.sleep(10)
self.wait_for_element((By.XPATH, self.case_list_menu.format(UserData.case_list_name)), 100)
self.wait_to_click((By.XPATH, self.case_list_menu.format(UserData.case_list_name)))

self.wait_for_element((By.XPATH, self.case_list_menu.format("Reg Form")))
Expand All @@ -105,18 +105,19 @@ def submit_form_with_loc(self):
lat = self.get_text(self.latitude)
lon = self.get_text(self.longitude)
self.wait_to_click(self.next_question)


self.wait_for_element(self.complete_form, 60)
self.wait_to_click(self.complete_form)

self.wait_for_element(self.success_message)
self.wait_for_element(self.success_message, 60)
print("Form submitted")
time.sleep(2)
self.wait_for_element(self.home_button)
self.js_click(self.home_button)
time.sleep(2)
time.sleep(5)
self.wait_for_element(self.sync_button)
self.js_click(self.sync_button)
time.sleep(5)
time.sleep(10)
self.switch_to_default_content()
print("Sleeping for sometime so the form data is updated")
time.sleep(70)
Expand Down
82 changes: 60 additions & 22 deletions HQSmokeTests/testPages/applications/application_page.py
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,11 @@ def __init__(self, driver):
self.advanced_settings_tab = (By.XPATH, "//a[@href='#commcare-settings']")
self.advanced_settings_tab_content = (By.ID, "app-settings-options")
self.form_settings_tab = (By.XPATH, "//a[@href='#form-settings']")
self.case_management_tab = (By.XPATH, "//a[@href='#case-configuration']")
self.user_properties = (By.XPATH, "//a[@href='#usercase-configuration']")
self.form_actions_tab = (By.XPATH, "//a[@href='#advanced']")



# Form Field Edit
self.add_new_form = (By.XPATH,"//a[@class='appnav-secondary js-add-new-item']")
Expand Down Expand Up @@ -230,7 +235,7 @@ def app_settings_exploration(self):
assert self.is_present_and_displayed(self.actions_tab_content)
self.wait_to_click(self.add_ons_tab)
assert self.is_present_and_displayed(self.add_ons_tab_content)

self.wait_to_click(self.advanced_settings_tab)
assert self.is_present_and_displayed(self.advanced_settings_tab_content)
print("App Settings loading successfully!")
Expand All @@ -251,7 +256,7 @@ def update_form_field(self):
# self.wait_to_clear_and_send_keys(self.edit_form_name_text, UserData.new_form_name)
# self.wait_to_click(self.form_name_save_button)
# self.wait_to_click(self.add_questions)
#
#
# self.wait_to_click(self.text_question)
# self.send_keys(self.question_display_text, self.field_name)
# assert self.is_present_and_displayed(self.app_created)
Expand All @@ -267,7 +272,7 @@ def update_form_field(self):
assert self.is_displayed(self.updates_text), "Fields not updated"
print("Fields successfully updated")
self.wait_to_click((By.XPATH, self.field_edit_app_name.format(UserData.reassign_cases_application)))

self.wait_to_click(self.make_new_version_button)
time.sleep(2)
self.reload_page()
Expand All @@ -290,15 +295,15 @@ def update_form_field(self):



def create_application_with_verifications(self):
def create_application_with_verifications(self, app_p1p2_name):
time.sleep(2)
self.switch_to_default_content()
self.wait_for_element(self.applications_menu_id)
self.click(self.applications_menu_id)
self.wait_to_click(self.new_application)
self.wait_to_click(self.edit_app_name)
self.clear(self.app_name_textbox)
self.send_keys(self.app_name_textbox, self.app_p1p2_name)
self.send_keys(self.app_name_textbox, app_p1p2_name)
self.wait_to_click(self.confirm_change)
self.wait_to_click(self.add_module)
self.wait_to_click(self.add_case_list)
Expand All @@ -314,7 +319,7 @@ def create_application_with_verifications(self):
self.wait_to_click(self.edit_form_name_icon)
self.wait_to_clear_and_send_keys(self.edit_form_name_text, self.reg_form_name)
self.wait_to_click(self.form_name_save_button)

assert self.check_for_html_char(self.get_text(self.reg_form_head_text)), "html characters are present"
assert self.check_for_html_char(self.get_text(self.reg_form_variable_name)), "html characters are present"
assert self.get_text(self.reg_form_head_text) == self.get_text(self.reg_form_variable_name)
Expand All @@ -325,7 +330,7 @@ def create_application_with_verifications(self):
self.send_keys(self.question_display_text, "Location")
self.wait_to_clear_and_send_keys(self.question_ID_field, "location_id")
self.wait_to_click(self.save_button)

if self.is_present(self.override_btn):
self.wait_to_click(self.override_btn)
time.sleep(3)
Expand All @@ -337,12 +342,12 @@ def create_application_with_verifications(self):
self.wait_to_click(self.edit_form_name_icon)
self.wait_to_clear_and_send_keys(self.edit_form_name_text, self.followup_form_name)
self.wait_to_click(self.form_name_save_button)

assert self.check_for_html_char(self.get_text(self.reg_form_head_text)), "html characters are present"
assert self.check_for_html_char(self.get_text(self.reg_form_variable_name)), "html characters are present"
assert self.get_text(self.reg_form_head_text) == self.get_text(self.reg_form_variable_name)
self.wait_to_click(self.add_questions)

self.wait_to_click(self.text_question)
self.wait_for_element(self.question_display_text)
self.send_keys(self.question_display_text, "Text")
Expand All @@ -351,22 +356,23 @@ def create_application_with_verifications(self):
self.wait_to_click(self.override_btn)
time.sleep(3)
self.hover_on_element((By.XPATH, self.form_link.format("Followup Form")))
self.wait_to_click((By.XPATH, self.form_settings_btn.format("Followup Form")))
self.wait_for_element((By.XPATH, self.form_settings_btn.format("Followup Form")))
self.js_click((By.XPATH, self.form_settings_btn.format("Followup Form")))

time.sleep(2)
assert self.is_present_and_displayed(self.form_settings_tab)
assert self.is_present_and_displayed((By.XPATH, self.app_created.format(self.app_p1p2_name)))
assert self.is_present_and_displayed((By.XPATH, self.app_created.format(app_p1p2_name)))
print("New App created successfully!")
self.wait_to_click((By.XPATH, self.field_edit_app_name.format(self.app_p1p2_name)))
self.wait_to_click((By.XPATH, self.field_edit_app_name.format(app_p1p2_name)))

self.wait_to_click(self.make_new_version_button)
time.sleep(2)
self.reload_page()
self.wait_for_element(self.release_button)
self.wait_to_click(self.release_button)
print("Sleeping for the installation code to generate")
time.sleep(2)
return self.app_p1p2_name
return app_p1p2_name

def check_for_html_char(self, text):
matched = re.search(r'\b&\w+;\b', text)
Expand All @@ -378,7 +384,7 @@ def check_for_html_char(self, text):
def delete_p1p2_application(self, app_name):
self.wait_to_click(self.applications_menu_id)
self.wait_to_click((By.LINK_TEXT, app_name))

self.wait_for_element(self.settings, 50)
self.click(self.settings)
self.wait_for_element(self.actions_tab, 50)
Expand Down Expand Up @@ -408,36 +414,36 @@ def create_application(self, app_name):

def delete_and_add_app(self, app):
self.wait_to_click(self.applications_menu_id)

if self.is_present((By.LINK_TEXT, app)):
print("App is already pesent so deleting it")
self.wait_to_click((By.LINK_TEXT, app))
self.delete_application()

print("Creating the app")
self.wait_to_click(self.dashboard_tab)

self.create_application(app)
else:
print("App is not present so creating it")
self.wait_to_click(self.dashboard_tab)

self.create_application(app)

def add_language(self, lang):
self.wait_for_element(self.settings)
self.wait_to_click(self.settings)

self.wait_for_element(self.languages_tab)
if self.is_present((By.XPATH, self.language_option.format(lang))):
print("Language is already present")
else:
self.wait_to_click(self.add_language_button)
self.wait_to_click(self.language_selector)

self.scroll_to_element((By.XPATH, self.language_option_select.format(lang)))
self.wait_to_click((By.XPATH, self.language_option_select.format(lang)))

self.wait_to_click(self.save_language)


Expand Down Expand Up @@ -473,3 +479,35 @@ def delete_all_application(self, apps):
self.click(self.delete_confirm)
assert self.is_present_and_displayed(self.delete_success, 200), "Application "+app+" not deleted."
print("Deleted the application", app)

def verify_form_settings_page(self, form_name):
self.hover_on_element((By.XPATH, self.form_link.format(form_name)))
self.wait_to_click((By.XPATH, self.form_settings_btn.format(form_name)))
time.sleep(5)
assert self.is_present_and_displayed(self.form_settings_tab)
assert self.is_present_and_displayed(self.case_management_tab)
assert self.is_present_and_displayed(self.form_actions_tab)
assert self.is_present_and_displayed(self.user_properties)
print("Form Settings page correctly displayed")

def verify_app_version_page(self):
self.wait_to_click((By.XPATH, self.field_edit_app_name.format(UserData.reassign_cases_application)))
time.sleep(2)
assert self.is_present_and_displayed(self.make_new_version_button)
print("Make New Version Page is correctly displayed")

def get_app_code(self, app_name):
self.wait_to_click((By.XPATH, self.field_edit_app_name.format(app_name)))
time.sleep(2)
self.wait_for_element(self.make_new_version_button)
self.wait_to_click(self.publish_button)
if self.is_present_and_displayed(self.enter_app_code_link):
self.wait_to_click(self.enter_app_code_link)
else:
print("Enter App Code link is not present")
code_text = self.wait_to_get_text(self.code)
self.wait_to_click(self.close)
# self.wait_to_click(self.delete_form)
# self.wait_to_click(self.delete_form_confirm)
print("App code: ", code_text)
return code_text
Loading
Loading