diff options
author | Edan Binshtok <eb578m@intl.att.com> | 2017-10-04 09:33:23 +0300 |
---|---|---|
committer | Edan Binshtok <eb578m@intl.att.com> | 2017-10-04 09:36:04 +0300 |
commit | f8907f0c4fc0ba4bb97a1d636a50c5b40c2642f2 (patch) | |
tree | 3d04d86910c93e42c055e5ed699ab1919482d5be /services/frontend/fe_general.py | |
parent | 733e00df0a6fa19dd92ec7392966340345dd1885 (diff) |
Initial seed
Initial upload of django test framework
Change-Id: I643a7f4efc52cfafe4cc6d92e3178f36a0c1837c
Issue-Id: VVP-1
Signed-off-by: Edan Binshtok <eb578m@intl.att.com>
Diffstat (limited to 'services/frontend/fe_general.py')
-rw-r--r-- | services/frontend/fe_general.py | 261 |
1 files changed, 261 insertions, 0 deletions
diff --git a/services/frontend/fe_general.py b/services/frontend/fe_general.py new file mode 100644 index 0000000..c6832cb --- /dev/null +++ b/services/frontend/fe_general.py @@ -0,0 +1,261 @@ + +# ============LICENSE_START========================================== +# org.onap.vvp/test-engine +# =================================================================== +# Copyright © 2017 AT&T Intellectual Property. All rights reserved. +# =================================================================== +# +# Unless otherwise specified, all software contained herein is licensed +# under the Apache License, Version 2.0 (the “License”); +# you may not use this software except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# +# +# Unless otherwise specified, all documentation contained herein is licensed +# under the Creative Commons License, Attribution 4.0 Intl. (the “License”); +# you may not use this documentation except in compliance with the License. +# You may obtain a copy of the License at +# +# https://creativecommons.org/licenses/by/4.0/ +# +# Unless required by applicable law or agreed to in writing, documentation +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# ============LICENSE_END============================================ +# +# ECOMP is a trademark and service mark of AT&T Intellectual Property. +import json +import time + +from django.conf import settings +from selenium.webdriver.support.select import Select + +from services.constants import Constants +from services.frontend.base_actions.click import Click +from services.frontend.base_actions.enter import Enter +from services.frontend.base_actions.get import Get +from services.frontend.base_actions.wait import Wait +from services.helper import Helper +from services.logging_service import LoggingServiceFactory +from services.session import session + + +logger = LoggingServiceFactory.get_logger() + +class FEGeneral(Helper): + + @staticmethod + def date_formatter(): + d = int(time.strftime("%d")) + if (d == 1 or d == 21 or d == 31): + d = str(d) + "st" + elif (d == 2 or d == 22): + d = str(d) + "nd" + elif (d == 3 or d == 23): + d = str(d) + "rd" + else: + d = str(d) + "th" + return time.strftime("%A %B " + d + " %Y") + + @staticmethod + def date_short_formatter(): + return time.strftime("%-m" + "/" + "%-d" + "/" + "%y") + + @staticmethod + def re_open(reopen_url): + try: + logger.debug("Reopen URL: " + reopen_url) + session.ice_driver.get('javascript:localStorage.clear();') + session.ice_driver.get('javascript:sessionStorage.clear();') + session.ice_driver.delete_all_cookies() + # Open FireFox with requested URL. + session.ice_driver.get("about:blank") + # Open FireFox with requested URL. + session.ice_driver.get(reopen_url) + session.ice_driver.maximize_window() + Wait.page_has_loaded() + except Exception as e: + errorMsg = "Could not reopen requested page" + raise Exception(errorMsg, reopen_url) + + @staticmethod + def re_open_not_clean_cache(url): + try: + # Open FireFox with requested URL. + session.ice_driver.get(url) + session.ice_driver.maximize_window() + except: + errorMsg = "Could not reopen requested page" + raise Exception(errorMsg, url) + logger.debug("Moving to next test case") + + @staticmethod + def refresh(): + try: # Click on element in UI, by CSS locator. + session.ice_driver.refresh() + Wait.page_has_loaded() + # If failed - count the failure and add the error to list of errors. + except Exception as e: + errorMsg = "Could not refresh the page." + logger.error(errorMsg) + raise Exception(errorMsg, e) + + @staticmethod + def select_vendor_from_list(vendor): + Wait.name(Constants.Signup.Company.NAME) + Select(session.ice_driver.find_element_by_name( + Constants.Signup.Company.NAME)).select_by_visible_text(vendor) + + @staticmethod + def go_to_signup_from_login(): + Click.link_text(Constants.Login.Signup.LINK_TEXT, wait_for_page=True) + Wait.text_by_css( + Constants.Signup.Title.CSS, Constants.Signup.Title.TEXT, wait_for_page=True) + + @staticmethod + def form_enter_name(name): + Enter.text_by_name(Constants.Signup.FullName.NAME, name) + + @staticmethod + def form_enter_email(email): + Enter.text_by_name(Constants.Signup.Email.NAME, email) + + @staticmethod + def form_enter_phone(phone): + Enter.text_by_name(Constants.Signup.Phone.NAME, phone) + + @staticmethod + def form_enter_password(password): + Enter.text_by_name(Constants.Signup.Password.NAME, password) + + @staticmethod + def form_check_checkbox(xpath): + Click.xpath(xpath) + + @staticmethod + def click_on_submit(): + Click.css(Constants.SubmitButton.CSS) + + @staticmethod + def go_to_login_from_signup(): + Click.link_text(Constants.Signup.HaveAccount.LINK_TEXT) + Wait.text_by_css(Constants.Login.Title.CSS, Constants.Login.Title.TEXT) + + @staticmethod + def verify_toast_message(expected_message): + Wait.text_by_id( + Constants.Toast.ID, expected_message, wait_for_page=True) + + @staticmethod + def form_validate_name(name): + name_in_ui = Get.value_by_name( + Constants.Dashboard.Avatar.Account.FullName.NAME) + Helper.internal_assert(name, name_in_ui) + + @staticmethod + def form_validate_email(email): + email_in_ui = Get.value_by_name( + Constants.Dashboard.Avatar.Account.Email.NAME) + Helper.internal_assert(email, email_in_ui) + + @staticmethod + def form_validate_phone(phone): + phone_in_ui = Get.value_by_name( + Constants.Dashboard.Avatar.Account.Phone.NAME) + Helper.internal_assert(phone, phone_in_ui) + + @staticmethod + def form_validate_company(company): + company_in_ui = Get.value_by_name( + Constants.Dashboard.Avatar.Account.Company.NAME) + Helper.internal_assert(company, company_in_ui) + + @staticmethod + def form_validate_ssh(key): + key_in_ui = Get.value_by_name( + Constants.Dashboard.Avatar.Account.SSHKey.NAME) + Helper.internal_assert(key, key_in_ui) + + @staticmethod + def go_to_reset_password_from_login(): + Click.link_text(Constants.Login.ResetPassword.LINK_TEXT) + + @staticmethod + def send_reset_password(email): + FEGeneral.go_to_reset_password_from_login() + Wait.text_by_css( + Constants.ResetPassword.Title.CSS, Constants.ResetPassword.Title.TEXT) + Enter.text_by_name(Constants.ResetPassword.Email.NAME, email) + Wait.text_by_css( + Constants.SubmitButton.CSS, Constants.ResetPassword.Button.TEXT) + Click.css(Constants.SubmitButton.CSS) + Wait.text_by_id( + Constants.Toast.ID, Constants.ResetPassword.Toast.Success.TEXT) + logger.debug(Constants.ResetPassword.Toast.Success.TEXT) + + @staticmethod + def verify_home_elements(): + Wait.text_by_id(Constants.Home.Title.ID, Constants.Home.Title.TEXT) + element = session.ice_driver.find_element_by_id( + Constants.Home.Collaborate.ID) + element.location_once_scrolled_into_view + Wait.text_by_xpath( + Constants.Home.Collaborate.XPATH, Constants.Home.Collaborate.TEXT) + Wait.text_by_xpath( + Constants.Home.Validate.XPATH, Constants.Home.Validate.TEXT) + Wait.text_by_xpath( + Constants.Home.Incubate.XPATH, Constants.Home.Incubate.TEXT) + element = session.ice_driver.find_element_by_id(Constants.Home.Logo.ID) + element.location_once_scrolled_into_view + Wait.text_by_id(Constants.Home.Title.ID, Constants.Home.Title.TEXT) + + @staticmethod + def go_to_signup_from_homepage(): + Click.link_text(Constants.Home.GetStarted.LINK_TEXT) + Wait.text_by_css( + Constants.Signup.Title.CSS, Constants.Signup.Title.TEXT) + + @staticmethod + def get_meta_order_of_element(element_id): + return Get.meta_order_by_id(element_id) + + @staticmethod + def verify_num_of_existing_ids(requested_num_of_ids, id_prefix): + existing_id_objects_in_page = 0 + ids = session.ice_driver.find_elements_by_xpath('//*[@id]') + for id in ids: + if id_prefix in id.get_attribute('id'): + # Print id.tag_name (id name as string). + logger.debug(id.get_attribute('id')) + existing_id_objects_in_page += 1 + Helper.internal_assert( + existing_id_objects_in_page, requested_num_of_ids) + logger.debug("verify_num_of_existing_ids succeeded") + + @staticmethod + def verify_existing_files_in_list(items_list, id_to_search_for): + element = session.ice_driver.find_elements_by_id(id_to_search_for) + element_attribute_items = json.loads(element[0].get_attribute('name')) + Helper.internal_assert( + len(items_list), len(element_attribute_items) - 1) + extracted_files_list = list() + for file in element_attribute_items: + extracted_files_list.append(file['File']) + for item in items_list: + if item not in extracted_files_list: + Helper.assertTrue( + False, "%s does not exist over the client's side" % item) + logger.debug( + "verify_existing_files_in_list succeeded, All vf repo files are available for choosing.") |