mirror of
https://github.com/status-im/status-react.git
synced 2025-01-12 03:54:32 +00:00
98beef138f
added 'send transaction initiated from the DApp' and 'send transaction with invalid password' tests, basetestcase reworked for smooth local runs
257 lines
9.2 KiB
Python
257 lines
9.2 KiB
Python
from views.base_view import BaseViewObject
|
|
import pytest
|
|
import time
|
|
from views.base_element import *
|
|
|
|
|
|
class ProfileButton(BaseButton):
|
|
|
|
def __init__(self, driver):
|
|
super(ProfileButton, self).__init__(driver)
|
|
self.locator = self.Locator.accessibility_id('toolbar-hamburger-menu')
|
|
|
|
|
|
class ProfileIcon(BaseButton):
|
|
|
|
def __init__(self, driver):
|
|
super(ProfileIcon, self).__init__(driver)
|
|
self.locator = self.Locator.accessibility_id('drawer-profile-icon')
|
|
|
|
def navigate(self):
|
|
from views.profile import ProfileViewObject
|
|
return ProfileViewObject(self.driver)
|
|
|
|
|
|
class SwitchUsersButton(BaseButton):
|
|
|
|
def __init__(self, driver):
|
|
super(SwitchUsersButton, self).__init__(driver)
|
|
self.locator = self.Locator.xpath_selector("//android.widget.TextView[@text='SWITCH USERS']")
|
|
|
|
def click(self):
|
|
time.sleep(2)
|
|
self.find_element().click()
|
|
logging.info('Tap on %s' % self.name)
|
|
return self.navigate()
|
|
|
|
def navigate(self):
|
|
from views.login import LoginView
|
|
return LoginView(self.driver)
|
|
|
|
|
|
class PlusButton(BaseButton):
|
|
|
|
def __init__(self, driver):
|
|
super(PlusButton, self).__init__(driver)
|
|
self.locator = self.Locator.xpath_selector(
|
|
"//android.widget.TextView[@text='+']")
|
|
|
|
|
|
class ConsoleButton(BaseButton):
|
|
|
|
def __init__(self, driver):
|
|
super(ConsoleButton, self).__init__(driver)
|
|
self.locator = self.Locator.xpath_selector(
|
|
"//*[@text='Console']")
|
|
|
|
|
|
class AddNewContactButton(BaseButton):
|
|
|
|
def __init__(self, driver):
|
|
super(AddNewContactButton, self).__init__(driver)
|
|
self.locator = self.Locator.xpath_selector(
|
|
"//android.widget.TextView[@text='Add new contact']")
|
|
|
|
|
|
class NewContactButton(BaseButton):
|
|
|
|
def __init__(self, driver):
|
|
super(NewContactButton, self).__init__(driver)
|
|
self.locator = self.Locator.xpath_selector("//android.widget.TextView[@text='']")
|
|
|
|
|
|
class NewGroupChatButton(BaseButton):
|
|
|
|
def __init__(self, driver):
|
|
super(NewGroupChatButton, self).__init__(driver)
|
|
self.locator = self.Locator.xpath_selector(
|
|
"//android.widget.TextView[@text='New group chat']")
|
|
|
|
class NextButton(BaseButton):
|
|
def __init__(self, driver):
|
|
super(NewGroupChatButton.NextButton, self).__init__(driver)
|
|
self.locator = self.Locator.xpath_selector(
|
|
"//android.widget.TextView[@text='NEXT']")
|
|
|
|
class NameEditBox(BaseEditBox):
|
|
def __init__(self, driver):
|
|
super(NewGroupChatButton.NameEditBox, self).__init__(driver)
|
|
self.locator = \
|
|
self.Locator.xpath_selector("//android.widget.EditText[@NAF='true']")
|
|
|
|
class SaveButton(BaseButton):
|
|
def __init__(self, driver):
|
|
super(NewGroupChatButton.SaveButton, self).__init__(driver)
|
|
self.locator = self.Locator.xpath_selector(
|
|
"//android.widget.TextView[@text='SAVE']")
|
|
|
|
class GroupChatOptions(BaseButton):
|
|
def __init__(self, driver):
|
|
super(NewGroupChatButton.GroupChatOptions, self).__init__(driver)
|
|
self.locator = self.Locator.xpath_selector(
|
|
"//android.view.ViewGroup[2]//android.widget.TextView[@text='n']")
|
|
|
|
class ChatSettings(BaseButton):
|
|
def __init__(self, driver):
|
|
super(NewGroupChatButton.ChatSettings, self).__init__(driver)
|
|
self.locator = self.Locator.xpath_selector("//android.widget.TextView[@text='Settings']")
|
|
|
|
class UserOptions(BaseButton):
|
|
def __init__(self, driver):
|
|
super(NewGroupChatButton.UserOptions, self).__init__(driver)
|
|
self.locator = self.Locator.xpath_selector('//android.widget.ImageView[@content-desc="chat-icon"]'
|
|
'/../..//android.view.View')
|
|
|
|
class RemoveButton(BaseButton):
|
|
def __init__(self, driver):
|
|
super(NewGroupChatButton.RemoveButton, self).__init__(driver)
|
|
self.locator = self.Locator.xpath_selector("//android.widget.TextView[@text='Remove']")
|
|
|
|
|
|
class PublicKeyEditBox(BaseEditBox):
|
|
|
|
def __init__(self, driver):
|
|
super(PublicKeyEditBox, self).__init__(driver)
|
|
self.locator = \
|
|
self.Locator.xpath_selector("//android.widget.EditText[@NAF='true']")
|
|
|
|
|
|
class ConfirmPublicKeyButton(BaseButton):
|
|
|
|
def __init__(self, driver):
|
|
super(ConfirmPublicKeyButton, self).__init__(driver)
|
|
self.locator = \
|
|
self.Locator.accessibility_id('toolbar-action')
|
|
|
|
|
|
class ChatMessageInput(BaseEditBox):
|
|
|
|
def __init__(self, driver):
|
|
super(ChatMessageInput, self).__init__(driver)
|
|
self.locator = self.Locator.accessibility_id('chat-message-input')
|
|
|
|
|
|
class SendMessageButton(BaseButton):
|
|
|
|
def __init__(self, driver):
|
|
super(SendMessageButton, self).__init__(driver)
|
|
self.locator = self.Locator.accessibility_id("send-message-button")
|
|
|
|
def click(self):
|
|
self.find_element().click()
|
|
logging.info('Tap on %s' % self.name)
|
|
|
|
|
|
class UserNameText(BaseText):
|
|
|
|
def __init__(self, driver):
|
|
super(UserNameText, self).__init__(driver)
|
|
self.locator = \
|
|
self.Locator.xpath_selector("//android.widget.ScrollView//android.widget.TextView")
|
|
|
|
|
|
class SendFundsButton(BaseButton):
|
|
|
|
def __init__(self, driver):
|
|
super(SendFundsButton, self).__init__(driver)
|
|
self.locator = self.Locator.xpath_selector("//*[@text='/send']")
|
|
|
|
class FirstRecipient(BaseButton):
|
|
|
|
def __init__(self, driver):
|
|
super(SendFundsButton.FirstRecipient, self).__init__(driver)
|
|
self.locator = self.Locator.xpath_selector("//*[@text='Choose recipient']/.."
|
|
"//android.widget.ImageView[@content-desc='chat-icon']")
|
|
|
|
class SignTransactionButton(BaseButton):
|
|
|
|
def __init__(self, driver):
|
|
super(SendFundsButton.SignTransactionButton, self).__init__(driver)
|
|
self.locator = self.Locator.xpath_selector("//*[@text='SIGN TRANSACTION']")
|
|
|
|
class PasswordInput(BaseEditBox):
|
|
|
|
def __init__(self, driver):
|
|
super(SendFundsButton.PasswordInput, self).__init__(driver)
|
|
self.locator = self.Locator.xpath_selector("//*[@text='Password']")
|
|
|
|
class EnterPasswordInput(BaseEditBox):
|
|
|
|
def __init__(self, driver):
|
|
super(SendFundsButton.EnterPasswordInput, self).__init__(driver)
|
|
self.locator = self.Locator.xpath_selector("//android.widget.EditText[@NAF='true']")
|
|
|
|
class ConfirmButton(BaseButton):
|
|
|
|
def __init__(self, driver):
|
|
super(SendFundsButton.ConfirmButton, self).__init__(driver)
|
|
self.locator = self.Locator.xpath_selector("//*[@text='CONFIRM']")
|
|
|
|
class GotItButton(BaseButton):
|
|
|
|
def __init__(self, driver):
|
|
super(SendFundsButton.GotItButton, self).__init__(driver)
|
|
self.locator = self.Locator.xpath_selector("//*[@text='GOT IT']")
|
|
|
|
|
|
|
|
|
|
class ChatsViewObject(BaseViewObject):
|
|
|
|
def __init__(self, driver):
|
|
super(ChatsViewObject, self).__init__(driver)
|
|
self.driver = driver
|
|
|
|
self.profile_button = ProfileButton(self.driver)
|
|
self.profile_icon = ProfileIcon(self.driver)
|
|
self.switch_users_button = SwitchUsersButton(self.driver)
|
|
|
|
self.plus_button = PlusButton(self.driver)
|
|
self.add_new_contact = AddNewContactButton(self.driver)
|
|
self.console_button = ConsoleButton(self.driver)
|
|
|
|
self.public_key_edit_box = PublicKeyEditBox(self.driver)
|
|
self.confirm_public_key_button = ConfirmPublicKeyButton(self.driver)
|
|
|
|
self.new_group_chat_button = NewGroupChatButton(self.driver)
|
|
self.next_button = NewGroupChatButton.NextButton(self.driver)
|
|
self.name_edit_box = NewGroupChatButton.NameEditBox(self.driver)
|
|
self.save_button = NewGroupChatButton.SaveButton(self.driver)
|
|
self.group_chat_options = NewGroupChatButton.GroupChatOptions(self.driver)
|
|
self.chat_settings = NewGroupChatButton.ChatSettings(self.driver)
|
|
self.user_options = NewGroupChatButton.UserOptions(self.driver)
|
|
self.remove_button = NewGroupChatButton.RemoveButton(self.driver)
|
|
|
|
self.chat_message_input = ChatMessageInput(self.driver)
|
|
self.send_message_button = SendMessageButton(self.driver)
|
|
self.user_name_text = UserNameText(self.driver)
|
|
|
|
self.send_funds_button = SendFundsButton(self.driver)
|
|
self.first_recipient_button = SendFundsButton.FirstRecipient(self.driver)
|
|
self.sign_transaction_button = SendFundsButton.SignTransactionButton(self.driver)
|
|
self.confirm_button = SendFundsButton.ConfirmButton(self.driver)
|
|
self.password_input = SendFundsButton.PasswordInput(self.driver)
|
|
self.enter_password_input = SendFundsButton.EnterPasswordInput(self.driver)
|
|
self.got_it_button = SendFundsButton.GotItButton(self.driver)
|
|
|
|
self.new_contact_button = NewContactButton(self.driver)
|
|
|
|
def wait_for_syncing_complete(self):
|
|
logging.info('Waiting for syncing complete:')
|
|
while True:
|
|
try:
|
|
sync = self.find_text_part('Syncing', 10)
|
|
logging.info(sync.text)
|
|
except TimeoutException:
|
|
break
|