Added new atomic tests for Smoke phase 2
Signed-off-by: yevh-berdnyk <ie.berdnyk@gmail.com>
This commit is contained in:
parent
61374add53
commit
3229f95ca9
|
@ -161,3 +161,8 @@ group_chat_users['C_USER']['public_key'] = "0x04dcdb5cac266328c41bdb0e33a266544a
|
|||
"3dba7e295445505ee55ea03ee99cb7d26bee05e6b486a9bdaaf6be73a0b"
|
||||
|
||||
common_password = 'qwerty'
|
||||
|
||||
bootnode_address = "enode://a8a97f126f5e3a340cb4db28a1187c325290ec08b2c9a6b1f19845ac86c46f9fac2ba13328822590" \
|
||||
"fd3de3acb09cc38b5a05272e583a2365ad1fa67f66c55b34@167.99.210.203:30404"
|
||||
mailserver_address = "enode://531e252ec966b7e83f5538c19bf1cde7381cc7949026a6e499b6e998e695751aadf26d4c98d5a4eab" \
|
||||
"fb7cefd31c3c88d600a775f14ed5781520a88ecd25da3c6:status-offline-inbox@35.225.227.79:30504"
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
import pytest
|
||||
|
||||
from tests import marks, group_chat_users
|
||||
from tests import marks, group_chat_users, basic_user
|
||||
from tests.base_test_case import SingleDeviceTestCase
|
||||
from tests import marks, group_chat_users, basic_user, bootnode_address, mailserver_address
|
||||
from tests.base_test_case import SingleDeviceTestCase, MultipleDeviceTestCase
|
||||
from views.sign_in_view import SignInView
|
||||
|
||||
|
||||
|
@ -192,3 +191,81 @@ class TestProfileSingleDevice(SingleDeviceTestCase):
|
|||
chat_view.view_profile_button.click()
|
||||
for text in basic_user['username'], 'In contacts', 'Send transaction', 'Send message', 'Contact code':
|
||||
chat_view.find_full_text(text)
|
||||
|
||||
|
||||
@marks.all
|
||||
@marks.account
|
||||
class TestProfileMultipleDevice(MultipleDeviceTestCase):
|
||||
|
||||
@marks.testrail_id(3708)
|
||||
def test_custom_bootnodes(self):
|
||||
self.create_drivers(2)
|
||||
sign_in_1, sign_in_2 = SignInView(self.drivers[0]), SignInView(self.drivers[1])
|
||||
username_1, username_2 = 'user_1', 'user_2'
|
||||
home_1, home_2 = sign_in_1.create_user(username=username_1), sign_in_2.create_user(username=username_2)
|
||||
public_key = home_2.get_public_key()
|
||||
home_2.home_button.click()
|
||||
|
||||
profile_1 = home_1.profile_button.click()
|
||||
profile_1.advanced_button.click()
|
||||
profile_1.bootnodes_button.click()
|
||||
profile_1.plus_button.click()
|
||||
profile_1.specify_name_input.set_value('test')
|
||||
profile_1.bootnode_address_input.set_value(bootnode_address)
|
||||
profile_1.save_button.click()
|
||||
profile_1.enable_bootnodes.click()
|
||||
sign_in_1.sign_in()
|
||||
|
||||
chat_1 = home_1.add_contact(public_key)
|
||||
message = 'test message'
|
||||
chat_1.chat_message_input.send_keys(message)
|
||||
chat_1.send_message_button.click()
|
||||
chat_2 = home_2.get_chat_with_user(username_1).click()
|
||||
chat_2.chat_element_by_text(message).wait_for_visibility_of_element()
|
||||
chat_2.add_to_contacts.click()
|
||||
|
||||
chat_1.get_back_to_home_view()
|
||||
home_1.profile_button.click()
|
||||
profile_1.advanced_button.click()
|
||||
profile_1.bootnodes_button.click()
|
||||
profile_1.enable_bootnodes.click()
|
||||
sign_in_1.sign_in()
|
||||
|
||||
home_1.get_chat_with_user(username_2).click()
|
||||
message_1 = 'new message'
|
||||
chat_1.chat_message_input.send_keys(message_1)
|
||||
chat_1.send_message_button.click()
|
||||
chat_2.chat_element_by_text(message_1).wait_for_visibility_of_element()
|
||||
|
||||
@marks.testrail_id(3737)
|
||||
def test_switch_mailserver(self):
|
||||
self.create_drivers(2)
|
||||
sign_in_1, sign_in_2 = SignInView(self.drivers[0]), SignInView(self.drivers[1])
|
||||
username_1, username_2 = 'user_1', 'user_2'
|
||||
home_1, home_2 = sign_in_1.create_user(username=username_1), sign_in_2.create_user(username=username_2)
|
||||
public_key = home_2.get_public_key()
|
||||
home_2.home_button.click()
|
||||
|
||||
profile_1 = home_1.profile_button.click()
|
||||
profile_1.advanced_button.click()
|
||||
profile_1.mail_server_button.click()
|
||||
profile_1.plus_button.click()
|
||||
server_name = 'test'
|
||||
profile_1.specify_name_input.set_value(server_name)
|
||||
profile_1.mail_server_address_input.set_value(mailserver_address)
|
||||
profile_1.save_button.click()
|
||||
profile_1.mail_server_by_name(server_name).click()
|
||||
profile_1.mail_server_connect_button.click()
|
||||
profile_1.confirm_button.click()
|
||||
sign_in_1.sign_in()
|
||||
|
||||
chat_1 = home_1.add_contact(public_key)
|
||||
message = 'test message'
|
||||
chat_1.chat_message_input.send_keys(message)
|
||||
chat_1.send_message_button.click()
|
||||
chat_2 = home_2.get_chat_with_user(username_1).click()
|
||||
chat_2.chat_element_by_text(message).wait_for_visibility_of_element()
|
||||
message_1 = 'new message'
|
||||
chat_2.chat_message_input.send_keys(message_1)
|
||||
chat_2.send_message_button.click()
|
||||
chat_1.chat_element_by_text(message_1).wait_for_visibility_of_element()
|
||||
|
|
|
@ -111,3 +111,22 @@ class TestWallet(SingleDeviceTestCase):
|
|||
pytest.fail("'Backup your Recovery phrase' option is not shown on Wallet for an account with funds")
|
||||
profile = wallet.get_profile_view()
|
||||
profile.backup_recovery_phrase()
|
||||
|
||||
@marks.testrail_id(3777)
|
||||
def test_no_collectibles_to_send_from_wallet(self):
|
||||
sign_in = SignInView(self.driver)
|
||||
sign_in.create_user()
|
||||
profile = sign_in.profile_button.click()
|
||||
profile.switch_network('Mainnet with upstream RPC')
|
||||
sign_in.sign_in()
|
||||
wallet = sign_in.wallet_button.click()
|
||||
wallet.set_up_wallet()
|
||||
wallet.options_button.click()
|
||||
wallet.manage_assets_button.click()
|
||||
asset_name = 'CryptoKitties'
|
||||
wallet.asset_checkbox_by_name(asset_name).click()
|
||||
wallet.done_button.click()
|
||||
send_transaction = wallet.send_transaction_button.click()
|
||||
send_transaction.select_asset_button.click()
|
||||
if send_transaction.asset_by_name(asset_name).is_element_displayed():
|
||||
pytest.fail('Collectibles can be sent from wallet')
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
import time
|
||||
|
||||
import pytest
|
||||
|
||||
from tests import marks
|
||||
|
@ -46,3 +44,25 @@ class TestMessagesPublicChat(SingleDeviceTestCase):
|
|||
break
|
||||
else:
|
||||
pytest.fail('Actual block number is not shown')
|
||||
|
||||
@marks.testrail_id(3732)
|
||||
def test_show_hide_console_chat(self):
|
||||
sign_in_view = SignInView(self.driver)
|
||||
sign_in_view.create_user()
|
||||
profile_view = sign_in_view.profile_button.click()
|
||||
profile_view.advanced_button.click()
|
||||
profile_view.debug_mode_toggle.click()
|
||||
home_view = profile_view.home_button.click()
|
||||
console_chat = home_view.get_chat_with_user('Status Console')
|
||||
console_chat.swipe_element()
|
||||
chat_view = home_view.get_chat_view()
|
||||
if console_chat.swipe_delete_button.is_element_displayed() or chat_view.chat_options.is_element_displayed():
|
||||
self.errors.append('Console chat can be deleted')
|
||||
home_view.get_back_to_home_view()
|
||||
sign_in_view.profile_button.click()
|
||||
profile_view.advanced_button.click()
|
||||
profile_view.debug_mode_toggle.click()
|
||||
profile_view.home_button.click()
|
||||
if console_chat.is_element_displayed():
|
||||
self.errors.append('Console chat is not hidden after turning off debug mode')
|
||||
self.verify_no_errors()
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import random
|
||||
import string
|
||||
import emoji
|
||||
import pytest
|
||||
from datetime import datetime
|
||||
from selenium.common.exceptions import TimeoutException
|
||||
from tests import marks, get_current_time, group_chat_users
|
||||
from tests.base_test_case import MultipleDeviceTestCase, SingleDeviceTestCase
|
||||
|
@ -169,7 +169,7 @@ class TestMessagesOneToOneChatMultiple(MultipleDeviceTestCase):
|
|||
chat_element.wait_for_visibility_of_element()
|
||||
device_2_chat = chat_element.click()
|
||||
if not device_2_chat.chat_element_by_text(message).is_element_displayed():
|
||||
self.erros.append("Message with test '%s' was not received" % message)
|
||||
self.errors.append("Message with test '%s' was not received" % message)
|
||||
if not device_2_chat.add_to_contacts.is_element_displayed():
|
||||
self.errors.append('Add to contacts button is not shown')
|
||||
if device_2_chat.user_name_text.text != username_1:
|
||||
|
@ -205,7 +205,7 @@ class TestMessagesOneToOneChatMultiple(MultipleDeviceTestCase):
|
|||
chat_element.wait_for_visibility_of_element()
|
||||
device_2_chat = chat_element.click()
|
||||
if not device_2_chat.chat_element_by_text(message).is_element_displayed():
|
||||
self.erros.append("Message with text '%s' was not received" % message)
|
||||
self.errors.append("Message with text '%s' was not received" % message)
|
||||
device_2_chat.reconnect()
|
||||
device_2_chat.add_to_contacts.click()
|
||||
|
||||
|
@ -315,6 +315,140 @@ class TestMessagesOneToOneChatMultiple(MultipleDeviceTestCase):
|
|||
self.errors.append("'Seen' status is not shown under the text message which was read by a receiver")
|
||||
self.verify_no_errors()
|
||||
|
||||
@marks.testrail_id(3784)
|
||||
def test_unread_messages_counter_1_1_chat(self):
|
||||
self.create_drivers(2)
|
||||
device_1, device_2 = SignInView(self.drivers[0]), SignInView(self.drivers[1])
|
||||
username_2 = 'user_%s' % get_current_time()
|
||||
device_1_home, device_2_home = device_1.create_user(), device_2.create_user(username=username_2)
|
||||
device_1_public_key = device_1_home.get_public_key()
|
||||
device_1_home.home_button.click()
|
||||
|
||||
device_2_chat = device_2_home.add_contact(device_1_public_key)
|
||||
|
||||
message = 'test message'
|
||||
device_2_chat.chat_message_input.send_keys(message)
|
||||
device_2_chat.send_message_button.click()
|
||||
|
||||
if device_1_home.home_button.counter.text != '1':
|
||||
self.errors.append('New messages counter is not shown on Home button')
|
||||
|
||||
chat_element = device_1_home.get_chat_with_user(username_2)
|
||||
if chat_element.new_messages_counter.text != '1':
|
||||
self.errors.append('New messages counter is not shown on chat element')
|
||||
|
||||
chat_element.click()
|
||||
device_1_home.get_back_to_home_view()
|
||||
|
||||
if device_1_home.home_button.counter.is_element_displayed():
|
||||
self.errors.append('New messages counter is shown on Home button for already seen message')
|
||||
|
||||
if chat_element.new_messages_counter.is_element_displayed():
|
||||
self.errors.append('New messages counter is shown on chat element for already seen message')
|
||||
self.verify_no_errors()
|
||||
|
||||
@marks.testrail_id(1414)
|
||||
def test_bold_and_italic_text_in_messages(self):
|
||||
self.create_drivers(2)
|
||||
sign_in_1, sign_in_2 = SignInView(self.drivers[0]), SignInView(self.drivers[1])
|
||||
username_2 = 'user_%s' % get_current_time()
|
||||
device_1_home, device_2_home = sign_in_1.create_user(), sign_in_2.create_user(username=username_2)
|
||||
device_1_public_key = device_1_home.get_public_key()
|
||||
device_1_home.home_button.click()
|
||||
|
||||
device_2_chat = device_2_home.add_contact(device_1_public_key)
|
||||
|
||||
bold_text = 'bold text'
|
||||
device_2_chat.chat_message_input.send_keys('*%s*' % bold_text)
|
||||
device_2_chat.send_message_button.click()
|
||||
if not device_2_chat.chat_element_by_text(bold_text).is_element_displayed():
|
||||
self.errors.append('Bold text is not displayed in 1-1 chat for the sender')
|
||||
|
||||
device_1_chat = device_1_home.get_chat_with_user(username_2).click()
|
||||
if not device_1_chat.chat_element_by_text(bold_text).is_element_displayed():
|
||||
self.errors.append('Bold text is not displayed in 1-1 chat for the recipient')
|
||||
|
||||
italic_text = 'italic text'
|
||||
device_2_chat.chat_message_input.send_keys('~%s~' % italic_text)
|
||||
device_2_chat.send_message_button.click()
|
||||
if not device_2_chat.chat_element_by_text(italic_text).is_element_displayed():
|
||||
self.errors.append('Italic text is not displayed in 1-1 chat for the sender')
|
||||
|
||||
if not device_1_chat.chat_element_by_text(italic_text).is_element_displayed():
|
||||
self.errors.append('Italic text is not displayed in 1-1 chat for the recipient')
|
||||
|
||||
device_1_chat.get_back_to_home_view()
|
||||
device_2_chat.get_back_to_home_view()
|
||||
chat_name = device_1_home.get_public_chat_name()
|
||||
device_1_home.join_public_chat(chat_name)
|
||||
device_2_home.join_public_chat(chat_name)
|
||||
|
||||
device_2_chat.chat_message_input.send_keys('*%s*' % bold_text)
|
||||
device_2_chat.send_message_button.click()
|
||||
if not device_2_chat.chat_element_by_text(bold_text).is_element_displayed():
|
||||
self.errors.append('Bold text is not displayed in public chat for the sender')
|
||||
|
||||
if not device_1_chat.chat_element_by_text(bold_text).is_element_displayed():
|
||||
self.errors.append('Bold text is not displayed in public chat for the recipient')
|
||||
|
||||
device_2_chat.chat_message_input.send_keys('~%s~' % italic_text)
|
||||
device_2_chat.send_message_button.click()
|
||||
if not device_2_chat.chat_element_by_text(italic_text).is_element_displayed():
|
||||
self.errors.append('Italic text is not displayed in public chat for the sender')
|
||||
|
||||
if not device_1_chat.chat_element_by_text(italic_text).is_element_displayed():
|
||||
self.errors.append('Italic text is not displayed in 1-1 chat for the recipient')
|
||||
|
||||
self.verify_no_errors()
|
||||
|
||||
@marks.testrail_id(2781)
|
||||
def test_timestamp_in_chats(self):
|
||||
self.create_drivers(2)
|
||||
device_1, device_2 = self.drivers[0], self.drivers[1]
|
||||
sign_in_1, sign_in_2 = SignInView(device_1), SignInView(device_2)
|
||||
username_1 = 'user_%s' % get_current_time()
|
||||
device_1_home, device_2_home = sign_in_1.create_user(username=username_1), sign_in_2.create_user()
|
||||
device_2_public_key = device_2_home.get_public_key()
|
||||
device_2_home.home_button.click()
|
||||
|
||||
device_1_chat = device_1_home.add_contact(device_2_public_key)
|
||||
|
||||
message = 'test text'
|
||||
device_1_chat.chat_message_input.send_keys(message)
|
||||
device_1_chat.send_message_button.click()
|
||||
sent_time = datetime.strptime(device_1.device_time, '%a %b %d %H:%M:%S GMT %Y').strftime("%I:%M %p")
|
||||
if not device_1_chat.chat_element_by_text(message).contains_text(sent_time):
|
||||
self.errors.append('Timestamp is not displayed in 1-1 chat for the sender')
|
||||
if device_1_chat.chat_element_by_text(message).member_photo.is_element_displayed():
|
||||
self.errors.append('Member photo is displayed in 1-1 chat for the sender')
|
||||
|
||||
device_2_chat = device_2_home.get_chat_with_user(username_1).click()
|
||||
if not device_2_chat.chat_element_by_text(message).contains_text(sent_time):
|
||||
self.errors.append('Timestamp is not displayed in 1-1 chat for the recipient')
|
||||
if not device_2_chat.chat_element_by_text(message).member_photo.is_element_displayed():
|
||||
self.errors.append('Member photo is not displayed in 1-1 chat for the recipient')
|
||||
|
||||
device_1_chat.get_back_to_home_view()
|
||||
device_2_chat.get_back_to_home_view()
|
||||
chat_name = device_1_home.get_public_chat_name()
|
||||
device_1_home.join_public_chat(chat_name)
|
||||
device_2_home.join_public_chat(chat_name)
|
||||
|
||||
device_2_chat.chat_message_input.send_keys(message)
|
||||
device_2_chat.send_message_button.click()
|
||||
sent_time = datetime.strptime(device_2.device_time, '%a %b %d %H:%M:%S GMT %Y').strftime("%I:%M %p")
|
||||
if not device_2_chat.chat_element_by_text(message).contains_text(sent_time):
|
||||
self.errors.append('Timestamp is not displayed in public chat for the sender')
|
||||
if device_2_chat.chat_element_by_text(message).member_photo.is_element_displayed():
|
||||
self.errors.append('Member photo is displayed in public chat for the sender')
|
||||
|
||||
if not device_1_chat.chat_element_by_text(message).contains_text(sent_time):
|
||||
self.errors.append('Timestamp is not displayed in public chat for the recipient')
|
||||
if not device_1_chat.chat_element_by_text(message).member_photo.is_element_displayed():
|
||||
self.errors.append('Member photo is not displayed in 1-1 chat for the recipient')
|
||||
|
||||
self.verify_no_errors()
|
||||
|
||||
|
||||
@marks.all
|
||||
@marks.chat
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
import pytest
|
||||
from tests import marks
|
||||
from tests.base_test_case import MultipleDeviceTestCase
|
||||
from tests.base_test_case import MultipleDeviceTestCase, SingleDeviceTestCase
|
||||
from views.sign_in_view import SignInView
|
||||
|
||||
|
||||
@marks.chat
|
||||
class TestPublicChat(MultipleDeviceTestCase):
|
||||
class TestPublicChatMultipleDevice(MultipleDeviceTestCase):
|
||||
|
||||
@marks.testrail_id(1383)
|
||||
@marks.smoke_1
|
||||
|
@ -68,3 +68,54 @@ class TestPublicChat(MultipleDeviceTestCase):
|
|||
for message in message_1, message_2:
|
||||
if chat_1.element_starts_with_text(message).is_element_present():
|
||||
pytest.fail("Message '%s' is shown after re-login, but public chat history has been cleared" % message)
|
||||
|
||||
@marks.testrail_id(3729)
|
||||
def test_unread_messages_counter_public_chat(self):
|
||||
self.create_drivers(2)
|
||||
device_1, device_2 = SignInView(self.drivers[0]), SignInView(self.drivers[1])
|
||||
home_1, home_2 = device_1.create_user(), device_2.create_user()
|
||||
|
||||
chat_name = home_1.get_public_chat_name()
|
||||
chat_1, chat_2 = home_1.join_public_chat(chat_name), home_2.join_public_chat(chat_name)
|
||||
home_1.get_back_to_home_view()
|
||||
|
||||
message = 'test message'
|
||||
chat_2.chat_message_input.send_keys(message)
|
||||
chat_2.send_message_button.click()
|
||||
|
||||
if home_1.home_button.counter.text != '1':
|
||||
self.errors.append('New messages counter is not shown on Home button')
|
||||
|
||||
chat_element = home_1.get_chat_with_user('#' + chat_name)
|
||||
if chat_element.new_messages_counter.text != '1':
|
||||
self.errors.append('New messages counter is not shown on chat element')
|
||||
|
||||
chat_element.click()
|
||||
home_1.get_back_to_home_view()
|
||||
|
||||
if home_1.home_button.counter.is_element_displayed():
|
||||
self.errors.append('New messages counter is shown on Home button for already seen message')
|
||||
|
||||
if chat_element.new_messages_counter.is_element_displayed():
|
||||
self.errors.append('New messages counter is shown on chat element for already seen message')
|
||||
self.verify_no_errors()
|
||||
|
||||
|
||||
@marks.chat
|
||||
class TestPublicChatSingleDevice(SingleDeviceTestCase):
|
||||
|
||||
@marks.skip
|
||||
@marks.testrail_id(3752)
|
||||
def test_send_korean_characters(self):
|
||||
sign_in = SignInView(self.driver)
|
||||
home = sign_in.create_user()
|
||||
chat_name = home.get_public_chat_name()
|
||||
public_chat = home.join_public_chat(chat_name)
|
||||
message = '파란하늘'
|
||||
public_chat.chat_message_input.send_keys(message)
|
||||
if public_chat.chat_message_input.text != message:
|
||||
self.errors.append('Korean characters are not displayed properly in the chat message input')
|
||||
public_chat.send_message_button.click()
|
||||
if not public_chat.chat_element_by_text(message).is_element_displayed():
|
||||
self.errors.append('Message with korean characters is not shown')
|
||||
self.verify_no_errors()
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
import random
|
||||
|
||||
from tests import transaction_users, transaction_users_wallet, marks, common_password
|
||||
from tests.base_test_case import SingleDeviceTestCase, MultipleDeviceTestCase
|
||||
from views.sign_in_view import SignInView
|
||||
|
@ -260,6 +259,86 @@ class TestTransactionWalletSingleDevice(SingleDeviceTestCase):
|
|||
self.errors.append('Warning about too precise amount is not shown when requesting a transaction')
|
||||
self.verify_no_errors()
|
||||
|
||||
@marks.testrail_id(1405)
|
||||
def test_insufficient_funds_error_wallet(self):
|
||||
sender = transaction_users['H_USER']
|
||||
sign_in_view = SignInView(self.driver)
|
||||
sign_in_view.recover_access(sender['passphrase'], sender['password'])
|
||||
wallet_view = sign_in_view.wallet_button.click()
|
||||
wallet_view.set_up_wallet()
|
||||
bigger_amount = wallet_view.get_eth_value() + 1
|
||||
send_transaction = wallet_view.send_transaction_button.click()
|
||||
amount_edit_box = send_transaction.amount_edit_box
|
||||
amount_edit_box.click()
|
||||
amount_edit_box.set_value(bigger_amount)
|
||||
send_transaction.element_by_text('Insufficient funds').wait_for_visibility_of_element(5)
|
||||
|
||||
valid_amount = send_transaction.get_unique_amount()
|
||||
amount_edit_box.clear()
|
||||
amount_edit_box.set_value(valid_amount)
|
||||
send_transaction.confirm()
|
||||
send_transaction.chose_recipient_button.click()
|
||||
send_transaction.enter_recipient_address_button.click()
|
||||
send_transaction.enter_recipient_address_input.set_value(transaction_users['G_USER']['address'])
|
||||
send_transaction.done_button.click()
|
||||
send_transaction.sign_transaction_button.click()
|
||||
send_transaction.enter_password_input.send_keys(sender['password'])
|
||||
send_transaction.sign_transaction_button.click()
|
||||
send_transaction.got_it_button.click()
|
||||
self.network_api.find_transaction_by_unique_amount(sender['address'], valid_amount)
|
||||
|
||||
@marks.testrail_id(3728)
|
||||
def test_modify_transaction_fee_values(self):
|
||||
sender = transaction_users['H_USER']
|
||||
sign_in_view = SignInView(self.driver)
|
||||
sign_in_view.recover_access(sender['passphrase'], sender['password'])
|
||||
wallet_view = sign_in_view.wallet_button.click()
|
||||
wallet_view.set_up_wallet()
|
||||
send_transaction = wallet_view.send_transaction_button.click()
|
||||
|
||||
amount = send_transaction.get_unique_amount()
|
||||
send_transaction.amount_edit_box.set_value(amount)
|
||||
send_transaction.confirm()
|
||||
send_transaction.chose_recipient_button.click()
|
||||
send_transaction.enter_recipient_address_button.click()
|
||||
recipient_address = transaction_users['G_USER']['address']
|
||||
send_transaction.enter_recipient_address_input.set_value(recipient_address)
|
||||
send_transaction.done_button.click()
|
||||
send_transaction.advanced_button.click()
|
||||
send_transaction.transaction_fee_button.click()
|
||||
send_transaction.gas_limit_input.clear()
|
||||
send_transaction.gas_limit_input.set_value('1')
|
||||
send_transaction.gas_price_input.clear()
|
||||
send_transaction.gas_price_input.set_value('1')
|
||||
send_transaction.total_fee_input.click()
|
||||
send_transaction.done_button.click()
|
||||
send_transaction.sign_transaction_button.click_until_presence_of_element(send_transaction.enter_password_input)
|
||||
send_transaction.enter_password_input.send_keys(sender['password'])
|
||||
send_transaction.sign_transaction_button.click()
|
||||
send_transaction.element_by_text('intrinsic gas too low').wait_for_visibility_of_element()
|
||||
send_transaction.ok_button.click()
|
||||
|
||||
wallet_view.send_transaction_button.click()
|
||||
send_transaction.amount_edit_box.set_value(amount)
|
||||
send_transaction.confirm()
|
||||
send_transaction.chose_recipient_button.click()
|
||||
send_transaction.enter_recipient_address_button.click()
|
||||
send_transaction.enter_recipient_address_input.set_value(recipient_address)
|
||||
send_transaction.done_button.click()
|
||||
|
||||
send_transaction.advanced_button.click()
|
||||
send_transaction.transaction_fee_button.click()
|
||||
send_transaction.gas_limit_input.clear()
|
||||
gas_limit = '1005000'
|
||||
send_transaction.gas_limit_input.set_value(gas_limit)
|
||||
send_transaction.gas_price_input.clear()
|
||||
gas_price = '24'
|
||||
send_transaction.gas_price_input.set_value(gas_price)
|
||||
send_transaction.total_fee_input.click()
|
||||
send_transaction.done_button.click()
|
||||
send_transaction.sign_transaction(sender['password'])
|
||||
self.network_api.find_transaction_by_unique_amount(sender['address'], amount)
|
||||
|
||||
|
||||
@marks.transaction
|
||||
class TestTransactionWalletMultipleDevice(MultipleDeviceTestCase):
|
||||
|
|
|
@ -81,9 +81,9 @@ class BaseElement(object):
|
|||
seconds)
|
||||
raise exception
|
||||
|
||||
def wait_for_visibility_of_element(self, seconds=10):
|
||||
def wait_for_visibility_of_element(self, seconds=10, ignored_exceptions=None):
|
||||
try:
|
||||
return WebDriverWait(self.driver, seconds) \
|
||||
return WebDriverWait(self.driver, seconds, ignored_exceptions=ignored_exceptions) \
|
||||
.until(expected_conditions.visibility_of_element_located((self.locator.by, self.locator.value)))
|
||||
except TimeoutException as exception:
|
||||
exception.msg = "'%s' is not found on screen, using: '%s', during '%s' seconds" % (self.name, self.locator,
|
||||
|
@ -115,10 +115,10 @@ class BaseElement(object):
|
|||
except TimeoutException:
|
||||
return False
|
||||
|
||||
def is_element_displayed(self, sec=5):
|
||||
def is_element_displayed(self, sec=5, ignored_exceptions=None):
|
||||
try:
|
||||
info('Wait for %s' % self.name)
|
||||
return self.wait_for_visibility_of_element(sec)
|
||||
return self.wait_for_visibility_of_element(sec, ignored_exceptions=ignored_exceptions)
|
||||
except TimeoutException:
|
||||
return False
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@ import re
|
|||
import zbarlight
|
||||
from tests import info, common_password
|
||||
from eth_keys import datatypes
|
||||
from selenium.common.exceptions import NoSuchElementException, TimeoutException
|
||||
from selenium.common.exceptions import NoSuchElementException, TimeoutException, StaleElementReferenceException
|
||||
from PIL import Image
|
||||
from datetime import datetime
|
||||
from io import BytesIO
|
||||
|
@ -84,7 +84,7 @@ class TabButton(BaseButton):
|
|||
def __init__(self, driver, parent_locator):
|
||||
super(Counter, self).__init__(driver)
|
||||
self.locator = self.Locator.xpath_selector(
|
||||
"//*[@content-desc='%s']/android.view.ViewGroup[2]/android.widget.TextView" % parent_locator)
|
||||
"//*[@content-desc='%s']//android.view.ViewGroup[2]/android.widget.TextView" % parent_locator)
|
||||
|
||||
return Counter(self.driver, self.locator.value)
|
||||
|
||||
|
@ -191,6 +191,12 @@ class DiscardButton(BaseButton):
|
|||
self.locator = self.Locator.xpath_selector("//*[@text='DISCARD']")
|
||||
|
||||
|
||||
class ConfirmButton(BaseButton):
|
||||
def __init__(self, driver):
|
||||
super(ConfirmButton, self).__init__(driver)
|
||||
self.locator = self.Locator.xpath_selector("//*[@text='CONFIRM']")
|
||||
|
||||
|
||||
class BaseView(object):
|
||||
def __init__(self, driver):
|
||||
self.driver = driver
|
||||
|
@ -213,6 +219,7 @@ class BaseView(object):
|
|||
self.delete_button = DeleteButton(self.driver)
|
||||
self.ok_continue_button = OkContinueButton(self.driver)
|
||||
self.discard_button = DiscardButton(self.driver)
|
||||
self.confirm_button = ConfirmButton(self.driver)
|
||||
self.connection_status = ConnectionStatusText(self.driver)
|
||||
|
||||
self.apps_button = AppsButton(self.driver)
|
||||
|
@ -416,20 +423,21 @@ class BaseView(object):
|
|||
def reconnect(self):
|
||||
connect_status = self.connection_status
|
||||
for i in range(3):
|
||||
if connect_status.is_element_displayed(5) and 'Tap to reconnect' in connect_status.text:
|
||||
try:
|
||||
connect_status.click()
|
||||
except AttributeError:
|
||||
pass
|
||||
try:
|
||||
connect_status.wait_for_invisibility_of_element()
|
||||
except TimeoutException as e:
|
||||
if i == 2:
|
||||
e.msg = "Can't reconnect to mail server after 3 attempts"
|
||||
raise e
|
||||
if connect_status.is_element_displayed(5, ignored_exceptions=StaleElementReferenceException):
|
||||
if 'Tap to reconnect' in connect_status.text:
|
||||
try:
|
||||
connect_status.click()
|
||||
except AttributeError:
|
||||
pass
|
||||
try:
|
||||
connect_status.wait_for_invisibility_of_element()
|
||||
except TimeoutException as e:
|
||||
if i == 2:
|
||||
e.msg = "Can't reconnect to mail server after 3 attempts"
|
||||
raise e
|
||||
|
||||
def check_no_values_in_logcat(self, **kwargs):
|
||||
logcat = self.logcat
|
||||
for key, value in kwargs.items():
|
||||
if re.findall('\W%s|\W%s\W' % (value, value), logcat):
|
||||
if re.findall('\W%s$|\W%s\W' % (value, value), logcat):
|
||||
pytest.fail('%s in logcat!!!' % key.capitalize(), pytrace=False)
|
||||
|
|
|
@ -87,6 +87,16 @@ class ChatElement(BaseButton):
|
|||
counter += 1
|
||||
self.swipe_delete_button.click()
|
||||
|
||||
@property
|
||||
def new_messages_counter(self):
|
||||
class UnreadMessagesCountText(BaseText):
|
||||
def __init__(self, driver, parent_locator: str):
|
||||
super(UnreadMessagesCountText, self).__init__(driver)
|
||||
locator_str = "//*[@content-desc='unread-messages-count-text']"
|
||||
self.locator = self.Locator.xpath_selector(parent_locator + locator_str)
|
||||
|
||||
return UnreadMessagesCountText(self.driver, self.locator.value)
|
||||
|
||||
|
||||
class ChatNameText(BaseText):
|
||||
def __init__(self, driver):
|
||||
|
@ -146,7 +156,7 @@ class HomeView(BaseView):
|
|||
user_contact.click()
|
||||
start_new_chat.next_button.click()
|
||||
start_new_chat.chat_name_editbox.send_keys(group_chat_name)
|
||||
start_new_chat.confirm_button.click()
|
||||
start_new_chat.create_button.click()
|
||||
|
||||
def join_public_chat(self, chat_name: str):
|
||||
start_new_chat = self.plus_button.click()
|
||||
|
|
|
@ -132,10 +132,10 @@ class EditPictureButton(BaseButton):
|
|||
self.locator = self.Locator.accessibility_id('edit-profile-photo-button')
|
||||
|
||||
|
||||
class ConfirmButton(BaseButton):
|
||||
class ConfirmEditButton(BaseButton):
|
||||
|
||||
def __init__(self, driver):
|
||||
super(ConfirmButton, self).__init__(driver)
|
||||
super(ConfirmEditButton, self).__init__(driver)
|
||||
self.locator = self.Locator.accessibility_id('done-button')
|
||||
|
||||
|
||||
|
@ -238,10 +238,10 @@ class MainCurrencyButton(BaseButton):
|
|||
self.locator = self.Locator.accessibility_id("currency-button")
|
||||
|
||||
|
||||
class NetworkPlusButton(BaseButton):
|
||||
class PlusButton(BaseButton):
|
||||
|
||||
def __init__(self, driver):
|
||||
super(NetworkPlusButton, self).__init__(driver)
|
||||
super(PlusButton, self).__init__(driver)
|
||||
self.locator = self.Locator.xpath_selector("(//android.view.ViewGroup[@content-desc='icon'])[2]")
|
||||
|
||||
|
||||
|
@ -253,10 +253,10 @@ class RopstenChainButton(BaseButton):
|
|||
"//*[contains(@text,'Ropsten test network')]/following-sibling::android.widget.CheckBox[1]")
|
||||
|
||||
|
||||
class CustomNetworkName(BaseEditBox):
|
||||
class SpecifyNameInput(BaseEditBox):
|
||||
|
||||
def __init__(self, driver):
|
||||
super(CustomNetworkName, self).__init__(driver)
|
||||
super(SpecifyNameInput, self).__init__(driver)
|
||||
self.locator = self.Locator.xpath_selector("//*[@text='Name']/following-sibling::*[1]/android.widget.EditText")
|
||||
|
||||
|
||||
|
@ -300,6 +300,69 @@ class FaqButton(BaseButton):
|
|||
return BaseWebView(self.driver)
|
||||
|
||||
|
||||
class BootnodesButton(BaseButton):
|
||||
|
||||
def __init__(self, driver):
|
||||
super(BootnodesButton, self).__init__(driver)
|
||||
self.locator = self.Locator.accessibility_id('bootnodes-settings-button')
|
||||
|
||||
|
||||
class AddBootnodeButton(BaseButton):
|
||||
|
||||
def __init__(self, driver):
|
||||
super(AddBootnodeButton, self).__init__(driver)
|
||||
self.locator = self.Locator.xpath_selector("(//*[@content-desc='icon'])[2]")
|
||||
|
||||
|
||||
class BootnodeNameInput(BaseEditBox):
|
||||
|
||||
def __init__(self, driver):
|
||||
super(BootnodeNameInput, self).__init__(driver)
|
||||
self.locator = self.Locator.xpath_selector("//android.widget.EditText[@text='Specify a name']")
|
||||
|
||||
|
||||
class BootnodeAddressInput(BaseEditBox):
|
||||
|
||||
def __init__(self, driver):
|
||||
super(BootnodeAddressInput, self).__init__(driver)
|
||||
self.locator = self.Locator.xpath_selector("//android.widget.EditText[@text='Specify bootnode address']")
|
||||
|
||||
|
||||
class EnableBootnodesToggle(BaseEditBox):
|
||||
|
||||
def __init__(self, driver):
|
||||
super(EnableBootnodesToggle, self).__init__(driver)
|
||||
self.locator = self.Locator.xpath_selector('//android.widget.Switch')
|
||||
|
||||
|
||||
class MailServerButton(BaseButton):
|
||||
|
||||
def __init__(self, driver):
|
||||
super(MailServerButton, self).__init__(driver)
|
||||
self.locator = self.Locator.accessibility_id('offline-messages-settings-button')
|
||||
|
||||
|
||||
class MailServerAddressInput(BaseEditBox):
|
||||
|
||||
def __init__(self, driver):
|
||||
super(MailServerAddressInput, self).__init__(driver)
|
||||
self.locator = self.Locator.xpath_selector("//android.widget.EditText[@text='Specify a mailserver address']")
|
||||
|
||||
|
||||
class MailServerElement(BaseButton):
|
||||
|
||||
def __init__(self, driver, server_name):
|
||||
super(MailServerElement, self).__init__(driver)
|
||||
self.locator = self.Locator.xpath_selector("//*[@content-desc='mailserver-item']//*[@text='%s']" % server_name)
|
||||
|
||||
|
||||
class MailServerConnectButton(BaseButton):
|
||||
|
||||
def __init__(self, driver):
|
||||
super(MailServerConnectButton, self).__init__(driver)
|
||||
self.locator = self.Locator.accessibility_id('mailserver-connect-button')
|
||||
|
||||
|
||||
class ProfileView(BaseView):
|
||||
|
||||
def __init__(self, driver):
|
||||
|
@ -314,10 +377,10 @@ class ProfileView(BaseView):
|
|||
self.profile_address_text = ProfileAddressText(self.driver)
|
||||
|
||||
self.network_settings_button = NetworkSettingsButton(self.driver)
|
||||
self.network_plus_button = NetworkPlusButton(self.driver)
|
||||
self.plus_button = PlusButton(self.driver)
|
||||
self.ropsten_chain_button = RopstenChainButton(self.driver)
|
||||
self.custom_network_url = CustomNetworkURL(self.driver)
|
||||
self.custom_network_name = CustomNetworkName(self.driver)
|
||||
self.specify_name_input = SpecifyNameInput(self.driver)
|
||||
self.connect_button = NetworkSettingsButton.ConnectButton(self.driver)
|
||||
self.logout_button = LogoutButton(self.driver)
|
||||
self.logout_dialog = LogoutDialog(self.driver)
|
||||
|
@ -330,7 +393,7 @@ class ProfileView(BaseView):
|
|||
self.edit_button = EditButton(self.driver)
|
||||
self.profile_picture = ProfilePictureElement(self.driver)
|
||||
self.edit_picture_button = EditPictureButton(self.driver)
|
||||
self.confirm_button = ConfirmButton(self.driver)
|
||||
self.confirm_edit_button = ConfirmEditButton(self.driver)
|
||||
self.cross_icon = CrossIcon(self.driver)
|
||||
self.share_button = ShareButton(self.driver)
|
||||
self.advanced_button = AdvancedButton(self.driver)
|
||||
|
@ -350,6 +413,16 @@ class ProfileView(BaseView):
|
|||
self.submit_bug_button = SubmitBugButton(self.driver)
|
||||
self.faq_button = FaqButton(self.driver)
|
||||
|
||||
# Bootnodes
|
||||
self.bootnodes_button = BootnodesButton(self.driver)
|
||||
self.bootnode_address_input = BootnodeAddressInput(self.driver)
|
||||
self.enable_bootnodes = EnableBootnodesToggle(self.driver)
|
||||
|
||||
# Mailservers
|
||||
self.mail_server_button = MailServerButton(self.driver)
|
||||
self.mail_server_address_input = MailServerAddressInput(self.driver)
|
||||
self.mail_server_connect_button = MailServerConnectButton(self.driver)
|
||||
|
||||
def switch_network(self, network):
|
||||
self.advanced_button.click()
|
||||
self.debug_mode_toggle.click()
|
||||
|
@ -366,10 +439,10 @@ class ProfileView(BaseView):
|
|||
self.debug_mode_toggle.click()
|
||||
self.network_settings_button.scroll_to_element()
|
||||
self.network_settings_button.click()
|
||||
self.network_plus_button.click_until_presence_of_element(self.ropsten_chain_button)
|
||||
self.plus_button.click_until_presence_of_element(self.ropsten_chain_button)
|
||||
self.ropsten_chain_button.click()
|
||||
self.custom_network_url.send_keys('https://ropsten.infura.io/iMko0kJNQUdhbCSaJcox')
|
||||
self.custom_network_name.send_keys('custom_ropsten')
|
||||
self.specify_name_input.send_keys('custom_ropsten')
|
||||
self.save_button.click()
|
||||
self.element_by_text_part('custom_ropsten').click_until_presence_of_element(self.connect_button)
|
||||
self.connect_button.click()
|
||||
|
@ -413,7 +486,7 @@ class ProfileView(BaseView):
|
|||
for element_text in 'Images', 'DCIM':
|
||||
self.element_by_text(element_text).click()
|
||||
picture.click()
|
||||
self.confirm_button.click()
|
||||
self.confirm_edit_button.click()
|
||||
|
||||
def logout(self):
|
||||
self.logout_button.click()
|
||||
|
@ -425,3 +498,5 @@ class ProfileView(BaseView):
|
|||
desired_currency.scroll_to_element()
|
||||
desired_currency.click()
|
||||
|
||||
def mail_server_by_name(self, server_name):
|
||||
return MailServerElement(self.driver, server_name)
|
||||
|
|
|
@ -46,12 +46,6 @@ class EnterPasswordInput(BaseEditBox):
|
|||
self.locator = self.Locator.accessibility_id('enter-password-input')
|
||||
|
||||
|
||||
class ConfirmButton(BaseButton):
|
||||
def __init__(self, driver):
|
||||
super(ConfirmButton, self).__init__(driver)
|
||||
self.locator = self.Locator.xpath_selector("//*[@text='CONFIRM']")
|
||||
|
||||
|
||||
class GotItButton(BaseButton):
|
||||
def __init__(self, driver):
|
||||
super(GotItButton, self).__init__(driver)
|
||||
|
@ -161,7 +155,6 @@ class SendTransactionView(BaseView):
|
|||
|
||||
self.cancel_button = CancelButton(self.driver)
|
||||
self.sign_transaction_button = SignTransactionButton(self.driver)
|
||||
self.confirm_button = ConfirmButton(self.driver)
|
||||
self.sign_in_phrase_text = SignInPhraseText(self.driver)
|
||||
self.password_input = PasswordInput(self.driver)
|
||||
self.enter_password_input = EnterPasswordInput(self.driver)
|
||||
|
|
|
@ -40,9 +40,9 @@ class OpenButton(BaseButton):
|
|||
self.locator = self.Locator.accessibility_id('open-dapp-button')
|
||||
|
||||
|
||||
class ConfirmButton(BaseButton):
|
||||
class CreateButton(BaseButton):
|
||||
def __init__(self, driver):
|
||||
super(ConfirmButton, self).__init__(driver)
|
||||
super(CreateButton, self).__init__(driver)
|
||||
self.locator = self.Locator.accessibility_id('create-button')
|
||||
|
||||
|
||||
|
@ -78,7 +78,7 @@ class StartNewChatView(ContactsView):
|
|||
|
||||
self.chat_name_editbox = ChatNameEditBox(self.driver)
|
||||
self.enter_url_editbox = EnterUrlEditbox(self.driver)
|
||||
self.confirm_button = ConfirmButton(self.driver)
|
||||
self.create_button = CreateButton(self.driver)
|
||||
|
||||
def get_username_checkbox(self, username: str):
|
||||
return UsernameCheckbox(self.driver, username)
|
||||
|
|
|
@ -141,7 +141,12 @@ class AssetTextElement(BaseText):
|
|||
class AssetCheckBox(BaseButton):
|
||||
def __init__(self, driver, asset_name):
|
||||
super(AssetCheckBox, self).__init__(driver)
|
||||
self.locator = self.Locator.xpath_selector("//*[@text='%s']/../android.widget.CheckBox" % asset_name)
|
||||
self.asset_name = asset_name
|
||||
self.locator = self.Locator.xpath_selector("//*[@text='%s']/../android.widget.CheckBox" % self.asset_name)
|
||||
|
||||
def click(self):
|
||||
self.scroll_to_element().click()
|
||||
info('Click %s asset checkbox' % self.asset_name)
|
||||
|
||||
|
||||
class TotalAmountText(BaseText):
|
||||
|
|
Loading…
Reference in New Issue