e2e: changed build name and added wait for session id

This commit is contained in:
Yevheniia Berdnyk 2024-03-12 22:27:38 +02:00
parent 813d96df10
commit ab53450ba8
No known key found for this signature in database
GPG Key ID: 0642C73C66214825
7 changed files with 64 additions and 29 deletions

View File

@ -5,8 +5,8 @@ pipeline {
agent { label 'linux' }
triggers {
// Nightly at 2am
cron 'H 2 * * *'
// Nightly at 0am
cron 'H 0 * * *'
}
parameters {

View File

@ -28,6 +28,14 @@ async def start_threads(test_name: str, quantity: int, func: type, returns: dict
except MaxRetryError:
print("MaxRetryError when creating a driver for %s" % test_name)
time.sleep(10)
# for k in returns:
# for _ in range(30):
# try:
# k.session_id
# break
# except AttributeError:
# print("AttributeError when creating a driver for %s" % test_name)
# time.sleep(3)
return returns

View File

@ -85,8 +85,9 @@ class TestActivityCenterContactRequestMultipleDevicePR(MultipleSharedDeviceTestC
self.home_2.navigate_back_to_home_view()
self.home_2.open_activity_center_button.click()
self.home_2.activity_unread_filter_button.click()
if not self.home_2.element_by_text_part(
self.home_2.get_translation_by_key("contact-request-outgoing")).is_element_displayed(30):
element = self.home_2.get_activity_center_element_by_text('connect')
if element.title.text != 'Contact request' or element.context_tag_text != self.username_1 \
or not element.pending_status_tag.is_element_displayed():
self.errors.append(
"Pending contact request is not shown on unread notification element on Activity center!")
self.home_2.close_activity_centre.click()

View File

@ -19,7 +19,7 @@ from urllib3.exceptions import MaxRetryError, ProtocolError
from support.api.network_api import NetworkApi
from tests import test_suite_data, start_threads, appium_container, pytest_config_global, transl
from tests.conftest import sauce_username, sauce_access_key, apibase, github_report
from tests.conftest import sauce_username, sauce_access_key, apibase, github_report, run_name
executor_sauce_lab = 'https://%s:%s@ondemand.%s:443/wd/hub' % (sauce_username, sauce_access_key, apibase)
@ -84,7 +84,7 @@ def get_capabilities_sauce_lab():
caps['sauce:options']['appiumVersion'] = '2.0.0'
caps['sauce:options']['username'] = sauce_username
caps['sauce:options']['accessKey'] = sauce_access_key
caps['sauce:options']['build'] = pytest_config_global['build']
caps['sauce:options']['build'] = run_name
caps['sauce:options']['name'] = test_suite_data.current_test.name
caps['sauce:options']['maxDuration'] = 3600
caps['sauce:options']['idleTimeout'] = 1000
@ -124,8 +124,7 @@ class AbstractTestCase:
def print_sauce_lab_info(self, driver):
sys.stdout = sys.stderr
print("SauceOnDemandSessionID=%s job-name=%s" % (driver.session_id,
pytest_config_global['build']))
print("SauceOnDemandSessionID=%s job-name=%s" % (driver.session_id, run_name))
def get_translation_by_key(self, key):
return transl[key]
@ -312,14 +311,20 @@ def create_shared_drivers(quantity):
drivers,
command_executor=executor_sauce_lab,
options=get_capabilities_sauce_lab()))
if len(drivers) < quantity:
test_suite_data.current_test.testruns[-1].error = "Not all %s drivers are created" % quantity
for i in range(quantity):
test_suite_data.current_test.testruns[-1].jobs[drivers[i].session_id] = i + 1
drivers[i].implicitly_wait(implicit_wait)
if len(drivers) < quantity:
test_suite_data.current_test.testruns[-1].error = "Not all %s drivers are created" % quantity
return drivers, loop
except (MaxRetryError, AttributeError) as e:
test_suite_data.current_test.testruns[-1].error = str(e)
for _, driver in drivers.items():
try:
driver.quit()
except (WebDriverException, AttributeError):
pass
raise e

View File

@ -148,6 +148,7 @@ testrail_report = None
github_report = None
apibase = None
sauce = None
run_name = None
def is_master(config):
@ -218,6 +219,21 @@ def _download_apk(url):
return apk_path
def get_run_name(config, new_one=False):
pr_number = config.getoption('pr_number')
if config.getoption('testrail_report'):
if pr_number:
if new_one:
run_number = len(testrail_report.get_runs(pr_number)) + 1
else:
run_number = len(testrail_report.get_runs(pr_number))
return 'PR-%s run #%s (%s)' % (pr_number, run_number, test_suite_data.apk_name.split('-')[4])
else:
return test_suite_data.apk_name
else:
return config.getoption('build')
def pytest_configure(config):
global option
option = config.option
@ -248,18 +264,17 @@ def pytest_configure(config):
test_suite_data.apk_name = ([i for i in [i for i in config.getoption('apk').split('/')
if '.apk' in i]])[0]
global run_name
if is_master(config):
run_name = get_run_name(config, new_one=True)
testrail_report.add_run(run_name)
else:
run_name = get_run_name(config, new_one=False)
if not is_master(config):
return
pr_number = config.getoption('pr_number')
if config.getoption('testrail_report'):
if pr_number:
run_number = len(testrail_report.get_runs(pr_number)) + 1
run_name = 'PR-%s run #%s' % (pr_number, run_number)
else:
run_name = test_suite_data.apk_name
testrail_report.add_run(run_name)
if pr_number:
from github import Github
repo = Github(github_token).get_user('status-im').get_repo('status-mobile')

View File

@ -1229,13 +1229,8 @@ class ChatView(BaseView):
self.show_images_button.click()
self.allow_button.click_if_shown()
self.allow_all_button.click_if_shown()
confirm_button = self.images_confirm_selection_button
for i in indexes:
# ToDo: should be changed to just 1 click when https://github.com/status-im/status-mobile/issues/18872 when is fixed
self.get_image_by_index(i).click()
if not confirm_button.is_element_displayed(sec=3):
self.get_image_by_index(i).click()
confirm_button.click()
[self.get_image_by_index(i).click() for i in indexes]
self.images_confirm_selection_button.click()
self.chat_message_input.send_keys(description)
self.send_message_button.click()

View File

@ -130,7 +130,7 @@ class ActivityCenterElement(SilentButton):
@property
def title(self):
return Button(self.driver, xpath=self.locator + '//*[@content-desc="activity-title"]')
return Text(self.driver, xpath=self.locator + '//*[@content-desc="activity-title"]')
@property
def unread_indicator(self):
@ -140,6 +140,14 @@ class ActivityCenterElement(SilentButton):
def message_body(self):
return Button(self.driver, xpath=self.locator + '//*[@content-desc="activity-message-body"]')
@property
def context_tag_text(self):
return Text(self.driver, xpath=self.locator + '//*[@content-desc="context-tag"]/android.widget.TextView').text
@property
def pending_status_tag(self):
return Text(self.driver, xpath=self.locator + '//*[@content-desc="status-tag-pending"]')
def handle_cr(self, element_accessibility: str):
Button(
self.driver,
@ -338,6 +346,9 @@ class HomeView(BaseView):
except TimeoutException:
break
def get_activity_center_element_by_text(self, text_part):
return ActivityCenterElement(self.driver, text_part)
def get_chat(self, username, community=False, community_channel=False, wait_time=10):
if community:
self.driver.info("Looking for community: '%s'" % username)
@ -346,7 +357,7 @@ class HomeView(BaseView):
chat_element = ChatElement(self.driver, username[:25], community=community, community_channel=community_channel)
if not chat_element.is_element_displayed(wait_time) and community is False and community_channel is False:
if self.notifications_unread_badge.is_element_displayed(30):
chat_in_ac = ActivityCenterElement(self.driver, username[:25])
chat_in_ac = self.get_activity_center_element_by_text(username[:25])
self.open_activity_center_button.click_until_presence_of_element(chat_in_ac)
chat_in_ac.wait_for_element(20)
chat_in_ac.click()
@ -364,7 +375,7 @@ class HomeView(BaseView):
def get_element_from_activity_center_view(self, message_body):
self.driver.info("Looking for activity center element: '%s'" % message_body)
chat_element = ActivityCenterElement(self.driver, message_body)
chat_element = self.get_activity_center_element_by_text(message_body)
return chat_element
def handle_contact_request(self, username: str, action='accept'):
@ -375,7 +386,7 @@ class HomeView(BaseView):
except TimeoutException:
pass
self.open_activity_center_button.click_until_presence_of_element(self.close_activity_centre)
chat_element = ActivityCenterElement(self.driver, username[:25])
chat_element = self.get_activity_center_element_by_text(username[:25])
try:
if action == 'accept':
self.driver.info("Accepting incoming CR for %s" % username)