e2e: fixes

Signed-off-by: Churikova Tetiana <churikova.tm@gmail.com>
This commit is contained in:
Churikova Tetiana 2022-01-14 17:51:54 +01:00
parent 2c38c74c16
commit 04b7357646
No known key found for this signature in database
GPG Key ID: 0D4EA7B33B47E6D8
16 changed files with 56 additions and 41 deletions

View File

@ -8,11 +8,12 @@ pipeline {
description: 'Name of the branch to checkout and build.', description: 'Name of the branch to checkout and build.',
defaultValue: 'develop', defaultValue: 'develop',
) )
/* Commented to use TEST_MARKERS values from job params
string( string(
name: 'TEST_MARKERS', name: 'TEST_MARKERS',
description: 'Marker expression for matching tests to run.', description: 'Marker expression for matching tests to run.',
defaultValue: 'critical or high', defaultValue: 'critical or high',
) ) */
string( string(
name: 'APK_NAME', name: 'APK_NAME',
description: 'Filename of APK uploaded to SauceLabs, path, or URL.', description: 'Filename of APK uploaded to SauceLabs, path, or URL.',

View File

@ -102,6 +102,7 @@ class TestCreateAccount(SingleDeviceTestCase):
from views.sign_in_view import MultiAccountButton from views.sign_in_view import MultiAccountButton
account_button = sign_in.get_multiaccount_by_position(position=random.randint(1, 4), account_button = sign_in.get_multiaccount_by_position(position=random.randint(1, 4),
element_class=MultiAccountButton) element_class=MultiAccountButton)
pub_chat = 'status'
username = account_button.username.text username = account_button.username.text
account_button.click() account_button.click()
sign_in.next_button.click() sign_in.next_button.click()
@ -111,21 +112,18 @@ class TestCreateAccount(SingleDeviceTestCase):
sign_in.next_button.click() sign_in.next_button.click()
[element.wait_and_click(10) for element in (sign_in.maybe_later_button, sign_in.lets_go_button)] [element.wait_and_click(10) for element in (sign_in.maybe_later_button, sign_in.lets_go_button)]
home = sign_in.get_home_view() home = sign_in.get_home_view()
texts = ["chat-and-transact", "follow-your-interests"] texts = ["chat-and-transact", "invite-friends"]
for text in texts: for text in texts:
if not home.element_by_translation_id(text).is_element_displayed(): if not home.element_by_translation_id(text).is_element_displayed():
self.errors.append("'%s' text is not shown" % self.get_translation_by_key(text)) self.errors.append("'%s' text is not shown" % self.get_translation_by_key(text))
for chat in ('#status', '#crypto'): home.join_public_chat(pub_chat)
sign_in.element_by_text(chat).click()
sign_in.back_button.click_until_presence_of_element(home.search_input)
profile = home.profile_button.click() profile = home.profile_button.click()
shown_username = profile.default_username_text.text shown_username = profile.default_username_text.text
if shown_username != username: if shown_username != username:
self.errors.append("Default username '%s' doesn't match '%s'" % (shown_username, username)) self.errors.append("Default username '%s' doesn't match '%s'" % (shown_username, username))
profile.home_button.click_until_presence_of_element(home.element_by_text('#status')) profile.home_button.double_click()
home.cross_icon_inside_welcome_screen_button.click() home.cross_icon_inside_welcome_screen_button.click()
for chat in ('#status', '#crypto'): home.delete_chat_long_press('#%s' % pub_chat)
home.delete_chat_long_press(chat)
if home.element_by_text(texts[0]).is_element_displayed(): if home.element_by_text(texts[0]).is_element_displayed():
self.errors.append("'%s' text is shown, but welcome view was closed" % texts[0]) self.errors.append("'%s' text is shown, but welcome view was closed" % texts[0])
home.relogin() home.relogin()

View File

@ -489,8 +489,10 @@ class TestCreateAccount(SingleDeviceTestCase):
profile.create_keycard_backup_button.scroll_and_click() profile.create_keycard_backup_button.scroll_and_click()
sign_in.seedphrase_input.set_value(seed) sign_in.seedphrase_input.set_value(seed)
sign_in.next_button.click() sign_in.next_button.click()
keycard.return_card_to_factory_settings_checkbox.enable()
keycard.begin_setup_button.click() keycard.begin_setup_button.click()
keycard.enter_another_pin() keycard.yes_button.wait_and_click()
[keycard.enter_another_pin() for _ in range(2)]
keycard.element_by_translation_id("keycard-backup-success-title").wait_for_element(30) keycard.element_by_translation_id("keycard-backup-success-title").wait_for_element(30)
keycard.ok_button.click() keycard.ok_button.click()

View File

@ -1219,7 +1219,6 @@ class TestProfileMultipleDevice(MultipleDeviceTestCase):
@marks.testrail_id(695856) @marks.testrail_id(695856)
@marks.medium @marks.medium
#@marks.flaky
def test_pair_devices_sync_photo_community_group_chats(self): def test_pair_devices_sync_photo_community_group_chats(self):
self.create_drivers(2) self.create_drivers(2)
device_1, device_2 = SignInView(self.drivers[0]), SignInView(self.drivers[1]) device_1, device_2 = SignInView(self.drivers[0]), SignInView(self.drivers[1])
@ -1238,11 +1237,12 @@ class TestProfileMultipleDevice(MultipleDeviceTestCase):
device_1.just_fyi('join Status community, create community, create group chat, edit user picture') device_1.just_fyi('join Status community, create community, create group chat, edit user picture')
# Follow Status community # Follow Status community
home_1.element_by_text(comm_joined_name).scroll_and_click() # TODO: no predefined community to follow now
from views.chat_view import CommunityView # home_1.element_by_text(comm_joined_name).scroll_and_click()
comm_to_join_1 = CommunityView(self.drivers[0]) # from views.chat_view import CommunityView
comm_to_join_1.follow_button.wait_and_click() # comm_to_join_1 = CommunityView(self.drivers[0])
comm_to_join_1.home_button.double_click() # comm_to_join_1.follow_button.wait_and_click()
# comm_to_join_1.home_button.double_click()
# Create community as admin, add channel, send message # Create community as admin, add channel, send message
comm_before_1 = home_1.create_community(comm_before_sync_name) comm_before_1 = home_1.create_community(comm_before_sync_name)
channel_before_1 = comm_before_1.add_channel(channel) channel_before_1 = comm_before_1.add_channel(channel)
@ -1271,9 +1271,10 @@ class TestProfileMultipleDevice(MultipleDeviceTestCase):
device_2.just_fyi('check that created/joined community and profile details are updated') device_2.just_fyi('check that created/joined community and profile details are updated')
home_2 = profile_2.home_button.click() home_2 = profile_2.home_button.click()
for community in (comm_before_sync_name, comm_joined_name): # TODO: no predefined community to follow
if not home_2.get_chat(community, community=True).is_element_displayed(): # for community in (comm_before_sync_name, comm_joined_name):
self.errors.append('Community %s was not appeared after initial sync' % community) if not home_2.get_chat(comm_before_sync_name, community=True).is_element_displayed():
self.errors.append('Community %s was not appeared after initial sync' % comm_before_sync_name)
comm_before_2 = home_2.get_chat(comm_before_sync_name, community=True).click() comm_before_2 = home_2.get_chat(comm_before_sync_name, community=True).click()
channel_2 = comm_before_2.get_chat(channel).click() channel_2 = comm_before_2.get_chat(channel).click()
if not channel_2.chat_element_by_text(message).is_element_displayed(30): if not channel_2.chat_element_by_text(message).is_element_displayed(30):

View File

@ -986,10 +986,10 @@ class TestChatManagementMultipleDevice(MultipleDeviceTestCase):
chat_1.get_back_to_home_view() chat_1.get_back_to_home_view()
home_1.add_contact(public_key=basic_user['public_key']) home_1.add_contact(public_key=basic_user['public_key'])
chat_1.chat_message_input.send_keys('@') chat_1.chat_message_input.send_keys('@')
if not (chat_1.search_user_in_mention_suggestion_list(ens_nickname_value).is_element_displayed() or if (chat_1.search_user_in_mention_suggestion_list(ens_nickname_value).is_element_displayed() or
chat_1.search_user_in_mention_suggestion_list( chat_1.search_user_in_mention_suggestion_list(
sender['username']).is_element_displayed()): sender['username']).is_element_displayed()):
self.errors.append('ENS-owner user is not available in mention suggestion list') self.errors.append('ENS-owner user who is not in 1-1 chat is available in mention suggestion list')
device_1.just_fyi('Check there is no random user in different public chat') device_1.just_fyi('Check there is no random user in different public chat')
chat_1.get_back_to_home_view() chat_1.get_back_to_home_view()

View File

@ -81,7 +81,7 @@ class TestCommunitiesMultipleDevices(MultipleDeviceTestCase):
def test_notification_in_activity_center_for_mention_in_community_and_group_chat(self): def test_notification_in_activity_center_for_mention_in_community_and_group_chat(self):
self.create_drivers(2) self.create_drivers(2)
home_1, home_2 = SignInView(self.drivers[0]).create_user(), SignInView(self.drivers[1]).create_user() home_1, home_2 = SignInView(self.drivers[0]).create_user(), SignInView(self.drivers[1]).create_user()
community_name, pub_chat_name, channel_name = "some name", home_1.get_random_chat_name(), "first_channel" community_name, gr_chat_name, channel_name = "some name", home_1.get_random_chat_name(), "first_channel"
community_description = "something in community" community_description = "something in community"
message, message_member = "message", "from member" message, message_member = "message", "from member"
userkey_2, username_2 = home_2.get_public_key_and_username(return_username=True) userkey_2, username_2 = home_2.get_public_key_and_username(return_username=True)
@ -102,9 +102,9 @@ class TestCommunitiesMultipleDevices(MultipleDeviceTestCase):
one_to_one_2.home_button.click() one_to_one_2.home_button.click()
community_1 = home_1.get_chat(community_name, community=True).click() community_1 = home_1.get_chat(community_name, community=True).click()
community_link_text = community_1.copy_community_link() community_link_text = community_1.copy_community_link()
pub_1 = home_1.create_group_chat(user_names_to_add=[username_2], group_chat_name=pub_chat_name) pub_1 = home_1.create_group_chat(user_names_to_add=[username_2], group_chat_name=gr_chat_name)
pub_2 = home_2.get_chat(pub_chat_name).click() pub_2 = home_2.get_chat(gr_chat_name).click()
pub_2.join_chat_button.click() pub_2.join_chat_button.click()
pub_1.chat_message_input.paste_text_from_clipboard() pub_1.chat_message_input.paste_text_from_clipboard()
pub_1.send_message_button.click() pub_1.send_message_button.click()
@ -133,7 +133,7 @@ class TestCommunitiesMultipleDevices(MultipleDeviceTestCase):
channel_2.send_message_button.click() channel_2.send_message_button.click()
community_1.home_button.double_click() community_1.home_button.double_click()
channel_2.home_button.click() channel_2.home_button.click()
home_2.get_chat_from_home_view(pub_chat_name).click() home_2.get_chat_from_home_view(gr_chat_name).click()
pub_2.select_mention_from_suggestion_list(username_1, username_1[:2]) pub_2.select_mention_from_suggestion_list(username_1, username_1[:2])
pub_2.send_as_keyevent("group") pub_2.send_as_keyevent("group")
group_chat_message = username_1 + " group" group_chat_message = username_1 + " group"
@ -161,7 +161,7 @@ class TestCommunitiesMultipleDevices(MultipleDeviceTestCase):
home_1.just_fyi("Check there are no unread messages counters on chats after message read") home_1.just_fyi("Check there are no unread messages counters on chats after message read")
if (home_1.notifications_unread_badge.is_element_present() or if (home_1.notifications_unread_badge.is_element_present() or
home_1.get_chat_from_home_view(pub_chat_name).new_messages_counter.text == "1" or home_1.get_chat_from_home_view(gr_chat_name).new_messages_counter.text == "1" or
home_1.get_chat_from_home_view(community_name).new_messages_counter.text == "1"): home_1.get_chat_from_home_view(community_name).new_messages_counter.text == "1"):
self.errors.append("Unread message indicator is kept after all messages read in chats") self.errors.append("Unread message indicator is kept after all messages read in chats")

View File

@ -381,9 +381,8 @@ class TestMessagesOneToOneChatMultiple(MultipleDeviceTestCase):
private_chat_2.chat_options.click() private_chat_2.chat_options.click()
timeline_device_1 = private_chat_2.view_profile_button.click() timeline_device_1 = private_chat_2.view_profile_button.click()
for element in timeline_device_1.element_by_text(status_1), timeline_device_1.image_message_in_chat: for element in timeline_device_1.element_by_text(status_1), timeline_device_1.image_message_in_chat:
element.scroll_to_element() if not element.is_element_displayed(40):
if not element.is_element_displayed(): self.errors.append('Status of another user not shown when open another user profile')
self.drivers[0].fail('Status of another user not shown when open another user profile')
private_chat_2.close_button.click() private_chat_2.close_button.click()
home_2.just_fyi('check options on long-press image for receiver') home_2.just_fyi('check options on long-press image for receiver')
@ -411,6 +410,7 @@ class TestMessagesOneToOneChatMultiple(MultipleDeviceTestCase):
self.errors.append("Image is not displayed in reply") self.errors.append("Image is not displayed in reply")
home_2.just_fyi('check share and save options on opened image') home_2.just_fyi('check share and save options on opened image')
private_chat_2.image_message_in_chat.scroll_to_element(direction='up')
private_chat_2.image_message_in_chat.click() private_chat_2.image_message_in_chat.click()
private_chat_2.share_image_icon_button.click() private_chat_2.share_image_icon_button.click()
private_chat_2.share_via_messenger() private_chat_2.share_via_messenger()

View File

@ -107,8 +107,6 @@ class TestDApps(SingleDeviceTestCase):
home.just_fyi('check that can change account') home.just_fyi('check that can change account')
profile.dapp_tab_button.click() profile.dapp_tab_button.click()
if profile.element_by_text("Can't find web3 library").is_element_displayed():
status_test_dapp.browser_refresh_page_button.wait_and_click()
if not status_test_dapp.element_by_text_part(account_name).is_element_displayed(): if not status_test_dapp.element_by_text_part(account_name).is_element_displayed():
self.errors.append("No expected account %s is shown in authorize web3 popup for wallet" % account_name) self.errors.append("No expected account %s is shown in authorize web3 popup for wallet" % account_name)
status_test_dapp.allow_button.click() status_test_dapp.allow_button.click()

View File

@ -251,7 +251,7 @@ class TestTransactionWalletSingleDevice(SingleDeviceTestCase):
amount=transaction_amount_1) amount=transaction_amount_1)
wallet.close_button.click() wallet.close_button.click()
sub_account_address = wallet.get_wallet_address(account_name)[2:] sub_account_address = wallet.get_wallet_address(account_name)[2:]
self.network_api.wait_for_confirmation_of_transaction(status_account_address, transaction_amount) self.network_api.wait_for_confirmation_of_transaction(status_account_address, transaction_amount_1)
self.network_api.verify_balance_is_updated(updated_balance, status_account_address) self.network_api.verify_balance_is_updated(updated_balance, status_account_address)
wallet.find_transaction_in_history(amount=transaction_amount) wallet.find_transaction_in_history(amount=transaction_amount)
wallet.find_transaction_in_history(amount=format(float(transaction_amount_1), '.11f').rstrip('0')) wallet.find_transaction_in_history(amount=format(float(transaction_amount_1), '.11f').rstrip('0'))
@ -626,7 +626,7 @@ class TestTransactionWalletSingleDevice(SingleDeviceTestCase):
@marks.transaction @marks.transaction
@marks.medium @marks.medium
def test_custom_gas_settings(self): def test_custom_gas_settings(self):
sender = wallet_users['A'] sender = wallet_users['B']
sign_in = SignInView(self.driver) sign_in = SignInView(self.driver)
sign_in.recover_access(sender['passphrase']) sign_in.recover_access(sender['passphrase'])
wallet = sign_in.wallet_button.click() wallet = sign_in.wallet_button.click()
@ -663,7 +663,7 @@ class TestTransactionWalletSingleDevice(SingleDeviceTestCase):
send_transaction.per_gas_price_limit_input: send_transaction.per_gas_price_limit_input:
{ {
'default': default_price, 'default': default_price,
'value': '4,000000001', 'value': '24,000000001',
'-2': 'invalid-number', '-2': 'invalid-number',
} }
} }
@ -679,14 +679,16 @@ class TestTransactionWalletSingleDevice(SingleDeviceTestCase):
wallet.just_fyi("Set custom fee and check that it will be applied") wallet.just_fyi("Set custom fee and check that it will be applied")
send_transaction.save_fee_button.scroll_and_click() send_transaction.save_fee_button.scroll_and_click()
if send_transaction.get_network_fee_from_bottom_sheet() != '0.000088': if wallet.element_by_translation_id("change-tip").is_element_displayed():
wallet.element_by_translation_id("continue-anyway").click()
if send_transaction.get_network_fee_from_bottom_sheet() != '0.000528':
self.driver.fail( self.driver.fail(
"Custom fee is not applied, in fact it is %s " % send_transaction.get_network_fee_from_bottom_sheet()) "Custom fee is not applied, in fact it is %s " % send_transaction.get_network_fee_from_bottom_sheet())
send_transaction.sign_transaction() send_transaction.sign_transaction()
self.network_api.wait_for_confirmation_of_transaction(sender['address'], amount, confirmations=3) self.network_api.wait_for_confirmation_of_transaction(sender['address'], amount, confirmations=3)
transaction = wallet.find_transaction_in_history(amount=amount, return_hash=True) transaction = wallet.find_transaction_in_history(amount=amount, return_hash=True)
expected_params = { expected_params = {
'fee_cap': '4.000000001', 'fee_cap': '24.000000001',
'tip_cap': '2.5', 'tip_cap': '2.5',
'gas_limit': '22000' 'gas_limit': '22000'
} }

View File

@ -406,10 +406,15 @@ class CheckBox(Button):
def __init__(self, driver, **kwargs): def __init__(self, driver, **kwargs):
super(Button, self).__init__(driver, **kwargs) super(Button, self).__init__(driver, **kwargs)
def __define_desired_element(self, elem_accessibility):
return ':%s' % elem_accessibility if ':' in self.accessibility_id else elem_accessibility
def enable(self): def enable(self):
super(CheckBox, self).click_until_presence_of_element(Button(self.driver, accessibility_id="checkbox-on")) self.click_until_presence_of_element(Button(self.driver,
accessibility_id=self.__define_desired_element("checkbox-on")))
return self.navigate() return self.navigate()
def disable(self): def disable(self):
super(CheckBox, self).click_until_presence_of_element(Button(self.driver, accessibility_id="checkbox-off")) self.click_until_presence_of_element(Button(self.driver,
accessibility_id=self.__define_desired_element("checkbox-off")))
return self.navigate() return self.navigate()

View File

@ -55,7 +55,12 @@ class DappsView(BaseView):
def open_url(self, url): def open_url(self, url):
self.driver.info("Open url '%s'" % url) self.driver.info("Open url '%s'" % url)
self.enter_url_editbox.wait_for_visibility_of_element(10) from views.web_views.base_web_view import BaseWebView
web_view = BaseWebView(self.driver)
if not self.enter_url_editbox.is_element_displayed():
web_view.open_tabs_button.wait_and_click()
web_view.open_new_tab_plus_button.click()
self.enter_url_editbox.wait_for_visibility_of_element(20)
self.enter_url_editbox.click() self.enter_url_editbox.click()
self.enter_url_editbox.send_keys(url) self.enter_url_editbox.send_keys(url)
self.confirm() self.confirm()

View File

@ -234,7 +234,7 @@ class HomeView(BaseView):
def get_chat(self, username, community=False,wait_time=30): def get_chat(self, username, community=False,wait_time=30):
self.driver.info("Looking for chat: '%s'" % username) self.driver.info("Looking for chat: '%s'" % username)
chat_element = ChatElement(self.driver, username[:25], community=community) chat_element = ChatElement(self.driver, username[:25], community=community)
if not chat_element.is_element_displayed(): if not chat_element.is_element_displayed(10):
self.notifications_unread_badge.wait_and_click(wait_time) self.notifications_unread_badge.wait_and_click(wait_time)
chat_in_ac = ActivityCenterChatElement(self.driver, username[:25]) chat_in_ac = ActivityCenterChatElement(self.driver, username[:25])
chat_in_ac.wait_for_element(20) chat_in_ac.wait_for_element(20)

View File

@ -1,4 +1,4 @@
from views.base_element import Button, Text, EditBox, SilentButton from views.base_element import Button, Text, EditBox, SilentButton, CheckBox
from views.base_view import BaseView from views.base_view import BaseView
@ -14,6 +14,7 @@ class KeycardView(BaseView):
self.pair_code_input = EditBox(self.driver, xpath="//android.widget.EditText") self.pair_code_input = EditBox(self.driver, xpath="//android.widget.EditText")
self.pair_to_this_device_button = Button(self.driver, translation_id="pair-card") self.pair_to_this_device_button = Button(self.driver, translation_id="pair-card")
self.connect_pairing_card_button = Button(self.driver, accessibility_id="connect-pairing-card") self.connect_pairing_card_button = Button(self.driver, accessibility_id="connect-pairing-card")
self.return_card_to_factory_settings_checkbox = CheckBox(self.driver, accessibility_id=":checkbox-off")
# Keyboard # Keyboard
self.zero_button = SilentButton(self.driver, accessibility_id="numpad-button-0") self.zero_button = SilentButton(self.driver, accessibility_id="numpad-button-0")

View File

@ -93,6 +93,7 @@ class TransactionTable(BaseElement):
except NoSuchElementException: except NoSuchElementException:
from views.base_view import BaseView from views.base_view import BaseView
BaseView(self.driver).pull_to_refresh() BaseView(self.driver).pull_to_refresh()
element.scroll_to_element()
self.driver.fail('Transaction %s %s was not found on Wallet/Transaction screen' % (amount, asset)) self.driver.fail('Transaction %s %s was not found on Wallet/Transaction screen' % (amount, asset))
def get_transactions_number(self): def get_transactions_number(self):

View File

@ -361,7 +361,7 @@ class WalletView(BaseView):
keycard_view.enter_default_pin() keycard_view.enter_default_pin()
else: else:
self.enter_your_password_input.send_keys(password) self.enter_your_password_input.send_keys(password)
self.add_account_generate_account_button.click() self.add_account_generate_account_button.click_until_presence_of_element(self.accounts_status_account)
self.driver.info("## Account is added!", device=False) self.driver.info("## Account is added!", device=False)
def get_collectibles_amount(self, collectibles='CryptoKitties'): def get_collectibles_amount(self, collectibles='CryptoKitties'):

View File

@ -30,6 +30,7 @@ class BaseWebView(BaseView):
self.new_tab_button = Button(self.driver, accessibility_id="new-tab") self.new_tab_button = Button(self.driver, accessibility_id="new-tab")
self.continue_anyway_button = Button(self.driver, translation_id="continue-anyway") self.continue_anyway_button = Button(self.driver, translation_id="continue-anyway")
self.open_tabs_button = Button(self.driver, accessibility_id="browser-open-tabs") self.open_tabs_button = Button(self.driver, accessibility_id="browser-open-tabs")
self.open_new_tab_plus_button = Button(self.driver, accessibility_id="plus-button")
self.close_all_button = Button(self.driver, accessibility_id="close-all") self.close_all_button = Button(self.driver, accessibility_id="close-all")
self.empty_tab_button = Button(self.driver, accessibility_id="tab-itemEmpty tab") self.empty_tab_button = Button(self.driver, accessibility_id="tab-itemEmpty tab")
self.camera_image_in_dapp = BaseElement(self.driver, class_name="android.widget.Image") self.camera_image_in_dapp = BaseElement(self.driver, class_name="android.widget.Image")