status e2e

Signed-off-by: Churikova Tetiana <churikova.tm@gmail.com>
This commit is contained in:
Churikova Tetiana 2020-11-12 18:28:34 +01:00
parent 8310749696
commit d14f232abf
No known key found for this signature in database
GPG Key ID: 0D4EA7B33B47E6D8
7 changed files with 94 additions and 23 deletions

View File

@ -241,10 +241,11 @@ class TestChatManagement(SingleDeviceTestCase):
home.join_public_chat(public[1:]) home.join_public_chat(public[1:])
chat.get_back_to_home_view() chat.get_back_to_home_view()
message = 'test message'
for chat_name in one_to_one, public, group: for chat_name in one_to_one, public, group:
chat = home.get_chat(chat_name).click() chat = home.get_chat(chat_name).click()
chat.just_fyi('Sending message to %s chat' % chat_name) chat.just_fyi('Sending message to %s chat' % chat_name)
chat.chat_message_input.send_keys('test message') chat.chat_message_input.send_keys(message)
chat.send_message_button.click() chat.send_message_button.click()
chat.just_fyi('Deleting %s chat' % chat_name) chat.just_fyi('Deleting %s chat' % chat_name)
chat.leave_chat() if chat_name == group else chat.delete_chat() chat.leave_chat() if chat_name == group else chat.delete_chat()
@ -258,6 +259,11 @@ class TestChatManagement(SingleDeviceTestCase):
for chat_name in one_to_one, public, group: for chat_name in one_to_one, public, group:
if home.get_chat(chat_name).is_element_displayed(): if home.get_chat(chat_name).is_element_displayed():
self.errors.append('Deleted %s is shown after re-login, but the chat has been deleted' % chat_name) self.errors.append('Deleted %s is shown after re-login, but the chat has been deleted' % chat_name)
sign_in.just_fyi('Rejoin public chat and check that messages are fetched again')
public_chat = home.join_public_chat(public[1:])
if not public_chat.chat_element_by_text(message).is_element_displayed(20):
self.errors.append('Messages are not fetched when rejoining public chat after deleting')
self.errors.verify_no_errors() self.errors.verify_no_errors()
@marks.testrail_id(5464) @marks.testrail_id(5464)

View File

@ -47,7 +47,7 @@ class TestCommandsMultipleDevices(MultipleDeviceTestCase):
send_message.next_button.click() send_message.next_button.click()
send_message.sign_transaction() send_message.sign_transaction()
self.network_api.wait_for_confirmation_of_transaction(sender['address'], amount, confirmations=15) self.network_api.wait_for_confirmation_of_transaction(sender['address'], amount, confirmations=15)
[message.transaction_status.wait_for_element_text('Confirmed') for message in (chat_1_sender_message, chat_2_request_message)] chat_1_sender_message.transaction_status.wait_for_element_text('Confirmed')
self.errors.verify_no_errors() self.errors.verify_no_errors()
@marks.testrail_id(6253) @marks.testrail_id(6253)
@ -95,7 +95,7 @@ class TestCommandsMultipleDevices(MultipleDeviceTestCase):
if not chat_2_receiver_message.contains_text(text): if not chat_2_receiver_message.contains_text(text):
self.driver.fail("Transaction message doesn't contain required option %s" % text) self.driver.fail("Transaction message doesn't contain required option %s" % text)
select_account_bottom_sheet = chat_2_receiver_message.accept_and_share_address.click() select_account_bottom_sheet = chat_2_receiver_message.accept_and_share_address.click()
if not select_account_bottom_sheet.get_account_in_select_account_bottom_sheet_button('Status').is_element_displayed(): if not select_account_bottom_sheet.get_account_in_select_account_bottom_sheet_button(wallet_1.status_account_name).is_element_displayed():
self.errors.append('Not expected value in "From" in "Select account": "Status" is expected') self.errors.append('Not expected value in "From" in "Select account": "Status" is expected')
select_account_bottom_sheet.select_button.click() select_account_bottom_sheet.select_button.click()
chat_2_receiver_message.transaction_status.wait_for_element_text("Shared '%s'" % chat_2_receiver_message.transaction_status.wait_for_element_text("Shared '%s'" %

View File

@ -53,7 +53,7 @@ class TestCommandsMultipleDevices(MultipleDeviceTestCase):
if not chat_2_receiver_message.contains_text(text): if not chat_2_receiver_message.contains_text(text):
self.driver.fail("Transaction message doesn't contain required option %s" % text) self.driver.fail("Transaction message doesn't contain required option %s" % text)
select_account_bottom_sheet = chat_2_receiver_message.accept_and_share_address.click() select_account_bottom_sheet = chat_2_receiver_message.accept_and_share_address.click()
if not select_account_bottom_sheet.get_account_in_select_account_bottom_sheet_button('Status').is_element_displayed(): if not select_account_bottom_sheet.get_account_in_select_account_bottom_sheet_button(wallet_1.status_account_name).is_element_displayed():
self.errors.append('Not expected value in "From" in "Select account": "Status" is expected') self.errors.append('Not expected value in "From" in "Select account": "Status" is expected')
select_account_bottom_sheet.select_button.click() select_account_bottom_sheet.select_button.click()
chat_2_receiver_message.transaction_status.wait_for_element_text("Shared '%s'" % home_1.status_account_name) chat_2_receiver_message.transaction_status.wait_for_element_text("Shared '%s'" % home_1.status_account_name)

View File

@ -279,17 +279,24 @@ class TestMessagesOneToOneChatMultiple(MultipleDeviceTestCase):
@marks.testrail_id(6305) @marks.testrail_id(6305)
@marks.critical @marks.critical
def test_image_in_one_to_one_send_save_reply(self): def test_image_in_one_to_one_send_save_reply_timeline(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])
device_1_home, device_2_home = device_1.create_user(), device_2.create_user() device_1_home, device_2_home = device_1.create_user(), device_2.create_user()
device_1_home.just_fyi('start 1-1 chat')
device_1_profile, device_2_profile = device_1_home.profile_button.click(), device_2_home.profile_button.click() device_1_profile, device_2_profile = device_1_home.profile_button.click(), device_2_home.profile_button.click()
device_2_public_key = device_2_profile.get_public_key_and_username() device_2_public_key = device_2_profile.get_public_key_and_username()
device_1_home.just_fyi('set status in profile')
device_1_status = 'Hey hey hey'
timeline = device_1.status_button.click()
timeline.set_new_status(device_1_status)
if not timeline.element_by_text(device_1_status).is_element_displayed():
self.drivers[0].fail('Status is not set')
device_1_public_key, device_1_username = device_1_profile.get_public_key_and_username(return_username=True) device_1_public_key, device_1_username = device_1_profile.get_public_key_and_username(return_username=True)
image_description = 'description' image_description = 'description'
[home.click() for home in [device_1_profile.home_button, device_2_profile.home_button]] [home.click() for home in [device_1_profile.home_button, device_2_profile.home_button]]
device_1_home.just_fyi('start 1-1 chat')
device_1_chat = device_1_home.add_contact(device_2_public_key) device_1_chat = device_1_home.add_contact(device_2_public_key)
device_1_home.just_fyi('send image in 1-1 chat from Gallery, check options for sender') device_1_home.just_fyi('send image in 1-1 chat from Gallery, check options for sender')
@ -312,15 +319,24 @@ class TestMessagesOneToOneChatMultiple(MultipleDeviceTestCase):
if not element.is_element_displayed(): if not element.is_element_displayed():
self.errors.append('Save and reply are not available on long-press on own image messages') self.errors.append('Save and reply are not available on long-press on own image messages')
if device_1_chat.view_profile_button.is_element_displayed(): if device_1_chat.view_profile_button.is_element_displayed():
self.errors.append('Options are not shown on long-press on image messages') self.errors.append('"View profile" is shown on long-press on own message')
device_2_home.just_fyi('check image, description and options for receiver') device_2_home.just_fyi('check image, description and options for receiver')
device_2_chat = device_2_home.get_chat(device_1_username).click() device_2_chat = device_2_home.get_chat(device_1_username).click()
for message in device_2_chat.image_chat_item, device_2_chat.chat_element_by_text(image_description): for message in device_2_chat.image_chat_item, device_2_chat.chat_element_by_text(image_description):
if not message.is_element_displayed(): if not message.is_element_displayed():
self.errors.append('Image or description is not shown in chat after sending for receiver') self.errors.append('Image or description is not shown in chat after sending for receiver')
device_2_home.just_fyi('Open image, view user profile and check status')
device_2_chat.image_chat_item.click()
device_2_chat.view_image_options.click()
device_2_chat.view_profile_button.click()
device_2_chat.element_by_text(device_1_status).scroll_to_element()
device_2_chat.back_button.click()
device_2_home.just_fyi('check options on long-press image for receiver')
device_2_chat.image_chat_item.long_press_element() device_2_chat.image_chat_item.long_press_element()
for element in device_2_chat.reply_message_button, device_2_chat.save_image_button: for element in (device_2_chat.reply_message_button, device_2_chat.save_image_button):
if not element.is_element_displayed(): if not element.is_element_displayed():
self.errors.append('Save and reply are not available on long-press on received image messages') self.errors.append('Save and reply are not available on long-press on received image messages')

View File

@ -165,16 +165,6 @@ class TestBrowsing(SingleDeviceTestCase):
if not dapp_view.element_by_text('Browser history will appear here').is_element_displayed(): if not dapp_view.element_by_text('Browser history will appear here').is_element_displayed():
self.errors.append('Browser history is not empty') self.errors.append('Browser history is not empty')
@marks.testrail_id(5320)
@marks.critical
def test_open_google_com_via_open_dapp(self):
sign_in_view = SignInView(self.driver)
home = sign_in_view.create_user()
open_dapp_view = home.dapp_tab_button.click()
open_dapp_view.open_url('google.com')
browsing_view = open_dapp_view.get_base_web_view()
browsing_view.element_by_text('Google').wait_for_element(30)
@marks.testrail_id(5321) @marks.testrail_id(5321)
@marks.critical @marks.critical
def test_back_forward_buttons_browsing_website(self): def test_back_forward_buttons_browsing_website(self):

View File

@ -188,6 +188,20 @@ class ProfileButton(TabButton):
self.click_until_presence_of_element(base_view.element_by_text_part(desired_element_text)) self.click_until_presence_of_element(base_view.element_by_text_part(desired_element_text))
return self.navigate() return self.navigate()
class StatusButton(TabButton):
def __init__(self, driver):
super(StatusButton, self).__init__(driver)
self.locator = self.Locator.accessibility_id('status-tab-button')
def navigate(self):
from views.chat_view import ChatView
return ChatView(self.driver)
def click(self):
self.driver.info('Tap on %s' % self.name)
from views.chat_view import AddNewStatusButton
self.click_until_presence_of_element(AddNewStatusButton(self.driver))
return self.navigate()
class SaveButton(BaseButton): class SaveButton(BaseButton):
def __init__(self, driver): def __init__(self, driver):
@ -384,6 +398,7 @@ class BaseView(object):
self.wallet_button = WalletButton(self.driver) self.wallet_button = WalletButton(self.driver)
self.profile_button = ProfileButton(self.driver) self.profile_button = ProfileButton(self.driver)
self.dapp_tab_button = DappTabButton(self.driver) self.dapp_tab_button = DappTabButton(self.driver)
self.status_button = StatusButton(self.driver)
self.yes_button = YesButton(self.driver) self.yes_button = YesButton(self.driver)
self.no_button = NoButton(self.driver) self.no_button = NoButton(self.driver)

View File

@ -40,6 +40,11 @@ class CancelSendImage(BaseEditBox):
self.locator = self.Locator.accessibility_id('cancel-send-image') self.locator = self.Locator.accessibility_id('cancel-send-image')
class ViewImageOptions(BaseEditBox):
def __init__(self, driver):
super(ViewImageOptions, self).__init__(driver)
self.locator = self.Locator.xpath_selector('//*[@content-desc="icon"]/android.widget.ImageView')
class AddToContacts(BaseButton): class AddToContacts(BaseButton):
def __init__(self, driver): def __init__(self, driver):
super(AddToContacts, self).__init__(driver) super(AddToContacts, self).__init__(driver)
@ -341,7 +346,7 @@ class FirstElementFromGalleryButton(BaseButton):
class ViewProfileButton(BaseButton): class ViewProfileButton(BaseButton):
def __init__(self, driver): def __init__(self, driver):
super(ViewProfileButton, self).__init__(driver) super(ViewProfileButton, self).__init__(driver)
self.locator = self.Locator.xpath_selector('//*[@text="View profile"]') self.locator = self.Locator.translation_id_selector('view-profile')
class ViewProfileByAvatarButton(BaseButton): class ViewProfileByAvatarButton(BaseButton):
def __init__(self, driver): def __init__(self, driver):
@ -717,6 +722,29 @@ class AudioMessageRecordedTime(BaseText):
self.locator = self.Locator.accessibility_id("audio-message-recorded-time") self.locator = self.Locator.accessibility_id("audio-message-recorded-time")
class MyStatusEditBox(BaseEditBox):
def __init__(self, driver):
super(MyStatusEditBox, self).__init__(driver)
self.locator = self.Locator.accessibility_id("my-status-input")
class AddNewStatusButton(BaseButton):
def __init__(self, driver):
super(AddNewStatusButton, self).__init__(driver)
self.locator = self.Locator.accessibility_id("plus-button")
class OpenImagesPanelButton(BaseButton):
def __init__(self, driver):
super(OpenImagesPanelButton, self).__init__(driver)
self.locator = self.Locator.accessibility_id("open-images-panel-button")
class SendMyStatusButton(BaseButton):
def __init__(self, driver):
super(SendMyStatusButton, self).__init__(driver)
self.locator = self.Locator.accessibility_id("send-my-status-button")
class ChatView(BaseView): class ChatView(BaseView):
def __init__(self, driver): def __init__(self, driver):
super(ChatView, self).__init__(driver) super(ChatView, self).__init__(driver)
@ -750,6 +778,7 @@ class ChatView(BaseView):
self.save_image_button = SaveImageButton(self.driver) self.save_image_button = SaveImageButton(self.driver)
self.recent_image_in_gallery = ImageInRecentInGalleryElement(self.driver) self.recent_image_in_gallery = ImageInRecentInGalleryElement(self.driver)
self.cancel_send_image_button = CancelSendImage(self.driver) self.cancel_send_image_button = CancelSendImage(self.driver)
self.view_image_options = ViewImageOptions(self.driver)
self.audio_message_button = AudioMessageButton(self.driver) self.audio_message_button = AudioMessageButton(self.driver)
self.record_audio_button = RecordAudioButton(self.driver) self.record_audio_button = RecordAudioButton(self.driver)
@ -759,8 +788,6 @@ class ChatView(BaseView):
self.audio_message_in_chat_timer = AudioMessageInChatTimer(self.driver) self.audio_message_in_chat_timer = AudioMessageInChatTimer(self.driver)
self.audio_message_recorded_time = AudioMessageRecordedTime(self.driver) self.audio_message_recorded_time = AudioMessageRecordedTime(self.driver)
self.chat_options = ChatMenuButton(self.driver) self.chat_options = ChatMenuButton(self.driver)
self.members_button = MembersButton(self.driver) self.members_button = MembersButton(self.driver)
self.delete_chat_button = DeleteChatButton(self.driver) self.delete_chat_button = DeleteChatButton(self.driver)
@ -811,9 +838,14 @@ class ChatView(BaseView):
self.profile_details = ProfileDetailsOtherUser(self.driver) self.profile_details = ProfileDetailsOtherUser(self.driver)
self.profile_nickname = ProfileNicknameOtherUser(self.driver) self.profile_nickname = ProfileNicknameOtherUser(self.driver)
self.profile_nickname_button = ProfileNicknameOtherUserButton(self.driver) self.profile_nickname_button = ProfileNicknameOtherUserButton(self.driver)
self.nickname_input_field = NicknameInputOtherUser(self.driver) self.nickname_input_field = NicknameInputOtherUser(self.driver)
#Timeline
self.timeline_add_new_status_button = AddNewStatusButton(self.driver)
self.timeline_my_status_editbox = MyStatusEditBox(self.driver)
self.timeline_open_images_panel_button = OpenImagesPanelButton(self.driver)
self.timeline_send_my_status_button = SendMyStatusButton(self.driver)
def delete_chat(self): def delete_chat(self):
self.chat_options.click() self.chat_options.click()
self.delete_chat_button.click() self.delete_chat_button.click()
@ -983,6 +1015,18 @@ class ChatView(BaseView):
timestamp = timestamp[1:] if timestamp[0] == '0' else timestamp timestamp = timestamp[1:] if timestamp[0] == '0' else timestamp
return timestamp return timestamp
def set_new_status(self, status='something is happening', image=False):
self.timeline_add_new_status_button.click_until_presence_of_element(self.timeline_my_status_editbox)
self.timeline_my_status_editbox.set_value(status)
if image:
self.timeline_open_images_panel_button.click()
if self.allow_button.is_element_present():
self.allow_button.click()
self.first_image_from_gallery.click()
self.timeline_send_my_status_button.click()
# Group chat system messages # Group chat system messages
@staticmethod @staticmethod
def leave_system_message(username): def leave_system_message(username):