Skip to content
This repository was archived by the owner on Aug 13, 2024. It is now read-only.

Commit 501d3d0

Browse files
committed
test: adding test for ability to add saved address from wallet settings
1 parent d6a2f31 commit 501d3d0

File tree

8 files changed

+108
-7
lines changed

8 files changed

+108
-7
lines changed

gui/components/wallet/wallet_account_popups.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
from gui.elements.object import QObject
1717
from gui.elements.scroll import Scroll
1818
from gui.elements.text_edit import TextEdit
19+
from gui.elements.text_label import TextLabel
1920

2021

2122
GENERATED_PAGES_LIMIT = 20
@@ -28,6 +29,7 @@ def __init__(self):
2829
self._name_text_edit = TextEdit('mainWallet_AddEditAccountPopup_AccountName')
2930
self._emoji_button = Button('mainWallet_AddEditAccountPopup_AccountEmojiPopupButton')
3031
self._color_radiobutton = QObject('color_StatusColorRadioButton')
32+
self._popup_header_title = TextLabel('mainWallet_AddEditAccountPopup_HeaderTitle')
3133
# origin
3234
self._origin_combobox = QObject('mainWallet_AddEditAccountPopup_SelectedOrigin')
3335
self._watched_address_origin_item = QObject("mainWallet_AddEditAccountPopup_OriginOptionWatchOnlyAcc")
@@ -45,6 +47,10 @@ def __init__(self):
4547
self._address_combobox_button = Button('mainWallet_AddEditAccountPopup_GeneratedAddressComponent')
4648
self._non_eth_checkbox = CheckBox('mainWallet_AddEditAccountPopup_NonEthDerivationPathCheckBox')
4749

50+
def verify_account_popup_present(self, timeout_msec: int = configs.timeouts.UI_LOAD_TIMEOUT_MSEC):
51+
driver.waitFor(lambda: self._popup_header_title.exists, timeout_msec)
52+
return self
53+
4854
@allure.step('Set name for account')
4955
def set_name(self, value: str):
5056
self._name_text_edit.text = value

gui/objects_map/component_names.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -235,6 +235,7 @@
235235
mainWallet_AddEditAccountPopup_BackButton = {"container": statusDesktop_mainWindow, "objectName": "AddAccountPopup-BackButton", "type": "StatusBackButton", "visible": True}
236236
mainWallet_AddEditAccountPopup_AccountNameComponent = {"container": mainWallet_AddEditAccountPopup_Content, "objectName": "AddAccountPopup-AccountName", "type": "StatusInput", "visible": True}
237237
mainWallet_AddEditAccountPopup_AccountName = {"container": mainWallet_AddEditAccountPopup_AccountNameComponent, "type": "TextEdit", "unnamed": 1, "visible": True}
238+
mainWallet_AddEditAccountPopup_HeaderTitle = {"container": statusDesktop_mainWindow_overlay, "objectName": "headerTitle", "type": "StatusBaseText", "visible": True}
238239
mainWallet_AddEditAccountPopup_AccountColorComponent = {"container": mainWallet_AddEditAccountPopup_Content, "objectName": "AddAccountPopup-AccountColor", "type": "StatusColorSelectorGrid", "visible": True}
239240
mainWallet_AddEditAccountPopup_AccountColorSelector = {"container": mainWallet_AddEditAccountPopup_AccountColorComponent, "type": "Repeater", "objectName": "statusColorRepeater", "visible": True, "enabled": True}
240241
mainWallet_AddEditAccountPopup_AccountEmojiPopupButton = {"container": mainWallet_AddEditAccountPopup_Content, "objectName": "AddAccountPopup-AccountEmoji", "type": "StatusFlatRoundButton", "visible": True}

gui/objects_map/settings_names.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,9 +58,12 @@
5858
settings_Wallet_MainView_Networks = {"container": statusDesktop_mainWindow, "objectName": "networksItem", "type": "StatusListItem"}
5959
settings_Wallet_MainView_AddNewAccountButton = {"container": statusDesktop_mainWindow, "objectName": "settings_Wallet_MainView_AddNewAccountButton", "type": "StatusButton", "visible": True}
6060
settingsContentBaseScrollView_accountOrderItem_StatusListItem = {"container": settingsContentBase_ScrollView, "objectName": "accountOrderItem", "type": "StatusListItem", "visible": True}
61+
settingsContentBaseScrollView_savedAddressesItem_StatusListItem = {"container": settingsContentBase_ScrollView, "objectName": "savedAddressesItem", "type": "StatusListItem", "visible": True}
6162
settingsContentBaseScrollView_StatusListItem = {"container": settingsContentBase_ScrollView, "type": "StatusListItem", "unnamed": 1, "visible": True}
6263
settings_Wallet_NetworksView_TestNet_Toggle = {"container": statusDesktop_mainWindow, "objectName": "testnetModeSwitch", "type": "StatusSwitch"}
6364
settings_Wallet_NetworksView_TestNet_Toggle_Title = {"container": settingsContentBase_ScrollView, "objectName": "statusListItemSubTitle", "type": "StatusTextWithLoadingState", "visible": True}
65+
settings_Wallet_SavedAddresses_AddAddressButton = {"container": statusDesktop_mainWindow, "objectName": "addNewSavedAddressButton", "type": "StatusButton", "visible": True}
66+
settings_Wallet_SavedAddress_ItemDelegate ={"container": settingsContentBase_ScrollView, "objectName": RegularExpression("savedAddressView_Delegate*"), "type": "SavedAddressesDelegate", "visible": True}
6467
settingsContentBaseScrollView_Goerli_testnet_active_StatusBaseText = {"container": settingsContentBase_ScrollView, "type": "StatusBaseText", "unnamed": 1, "visible": True}
6568
settingsContentBaseScrollView_accountsList_StatusListView = {"container": settingsContentBase_ScrollView, "id": "accountsList", "type": "StatusListView", "unnamed": 1, "visible": True}
6669
settingsContentBaseScrollView_draggableDelegate_StatusDraggableListItem = {"checkable": False, "container": settingsContentBase_ScrollView, "id": "draggableDelegate", "type": "StatusDraggableListItem", "unnamed": 1, "visible": True}

gui/screens/settings_wallet.py

Lines changed: 46 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
from constants import wallet_account_list_item
1010
from constants.wallet import WalletNetworkSettings, WalletNetworkDefaultValues
1111
from driver import objects_access
12+
from gui.components.wallet.add_saved_address_popup import AddressPopup
1213
from gui.components.wallet.popup_delete_account_from_settings import RemoveAccountConfirmationSettings
1314
from gui.components.wallet.testnet_mode_popup import TestnetModePopup
1415

@@ -29,23 +30,41 @@ def __init__(self):
2930
self._wallet_settings_add_new_account_button = Button('settings_Wallet_MainView_AddNewAccountButton')
3031
self._wallet_network_button = Button('settings_Wallet_MainView_Networks')
3132
self._account_order_button = Button('settingsContentBaseScrollView_accountOrderItem_StatusListItem')
33+
self._saved_addresses_button = Button('settingsContentBaseScrollView_savedAddressesItem_StatusListItem')
3234
self._status_account_in_keypair = QObject('settingsWalletAccountDelegate_Status_account')
3335
self._wallet_account_from_keypair = QObject('settingsWalletAccountDelegate')
3436
self._wallet_settings_keypair_item = QObject('settingsWalletKeyPairDelegate')
3537
self._wallet_settings_total_balance_item = QObject('settingsWalletAccountTotalBalance')
3638
self._wallet_settings_total_balance_toggle = CheckBox('settingsWalletAccountTotalBalanceToggle')
3739

3840
@allure.step('Open add account pop up in wallet settings')
39-
def open_add_account_pop_up(self):
41+
def open_add_account_pop_up(self, attempts: int = 2) -> 'AccountPopup':
4042
self._wallet_settings_add_new_account_button.click()
41-
return AccountPopup().wait_until_appears()
43+
try:
44+
return AccountPopup()
45+
except Exception as ex:
46+
if attempts:
47+
return self.open_add_account_pop_up(attempts - 1)
48+
else:
49+
raise ex
50+
51+
@allure.step('Open saved addresses in wallet settings')
52+
def open_saved_addresses(self, attempts: int = 2) -> 'SavedAddressesWalletSettings':
53+
self._saved_addresses_button.click()
54+
try:
55+
return SavedAddressesWalletSettings()
56+
except Exception as ex:
57+
if attempts:
58+
return self.open_saved_addresses(attempts - 1)
59+
else:
60+
raise ex
4261

4362
@allure.step('Open networks in wallet settings')
4463
def open_networks(self, attempts: int = 2) -> 'NetworkWalletSettings':
4564
self._wallet_network_button.click()
4665
try:
4766
return NetworkWalletSettings().wait_until_appears()
48-
except AssertionError as err:
67+
except Exception as err:
4968
if attempts:
5069
return self.open_networks(attempts - 1)
5170
else:
@@ -170,11 +189,34 @@ def click_back_button(self):
170189
self._back_button.click()
171190

172191

192+
class SavedAddressesWalletSettings(WalletSettingsView):
193+
def __init__(self):
194+
super(SavedAddressesWalletSettings, self).__init__()
195+
self.add_new_address_button = Button('settings_Wallet_SavedAddresses_AddAddressButton')
196+
self.saved_address_item = QObject('settings_Wallet_SavedAddress_ItemDelegate')
197+
198+
@allure.step('Click add new address button')
199+
def open_add_saved_address_popup(self, attempt: int = 2) -> 'AddressPopup':
200+
self.add_new_address_button.click()
201+
try:
202+
return AddressPopup()
203+
except AssertionError as err:
204+
if attempt:
205+
self.open_add_saved_address_popup(attempt - 1)
206+
else:
207+
raise err
208+
209+
@allure.step('Get saved addresses names list')
210+
def get_saved_address_names_list(self):
211+
names = [str(address.name) for address in driver.findAllObjects(self.saved_address_item.real_name)]
212+
return names
213+
214+
173215
class NetworkWalletSettings(WalletSettingsView):
174216

175217
def __init__(self):
176218
super(NetworkWalletSettings, self).__init__()
177-
self._testnet_text_item = QObject('settingsContentBaseScrollView_Goerli_testnet_active_StatusBaseText')
219+
self._testnet_text_item = QObject('s')
178220
self._testnet_mode_toggle = Button('settings_Wallet_NetworksView_TestNet_Toggle')
179221
self._testnet_mode_title = TextLabel('settings_Wallet_NetworksView_TestNet_Toggle_Title')
180222
self._back_button = Button('main_toolBar_back_button')

gui/screens/wallet.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -151,13 +151,13 @@ def address_names(self):
151151
return names
152152

153153
@allure.step('Open add new address popup')
154-
def open_add_address_popup(self, attempt=2) -> 'AddressPopup':
154+
def open_add_saved_address_popup(self, attempt=2) -> 'AddressPopup':
155155
self._add_new_address_button.click()
156156
try:
157157
return AddressPopup().wait_until_appears()
158158
except AssertionError as err:
159159
if attempt:
160-
self.open_add_address_popup(attempt - 1)
160+
self.open_add_saved_address_popup(attempt - 1)
161161
else:
162162
raise err
163163

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
import random
2+
import string
3+
4+
import allure
5+
import pytest
6+
from allure_commons._allure import step
7+
8+
from gui.components.toast_message import ToastMessage
9+
from . import marks
10+
11+
import configs
12+
import driver
13+
from gui.main_window import MainWindow
14+
15+
pytestmark = marks
16+
17+
18+
@allure.testcase('https://ethstatus.testrail.net/index.php?/cases/view/704620',
19+
'Saved addresses: Add new saved address (ethereum address)')
20+
@pytest.mark.parametrize('name, address',
21+
[
22+
pytest.param(
23+
''.join(random.choices(string.ascii_letters, k=24)),
24+
'0x8397bc3c5a60a1883174f722403d63a8833312b7')
25+
])
26+
# @pytest.mark.case(704620) TODO: enable that after i test multiple references
27+
def test_wallet_settings_add_saved_address(main_screen: MainWindow, address: str, name: str):
28+
with (step('Open wallet settings - Saved addresses section')):
29+
settings_saved_addresses = \
30+
main_screen.left_panel.open_settings().left_panel.open_wallet_settings().open_saved_addresses()
31+
32+
with step('Click Add new address button and open add saved address popup'):
33+
add_saved_address_popup = settings_saved_addresses.open_add_saved_address_popup()
34+
35+
with step('Fill in the form and preferred networks and add the address'):
36+
add_saved_address_popup.add_saved_address(name, address)
37+
38+
with step('Verify toast message when adding saved address'):
39+
messages = ToastMessage().get_toast_messages
40+
assert f'{name} successfully added to your saved addresses' in messages, \
41+
f"Toast message about adding saved address is not correct or not present. \
42+
Current list of messages: {messages}"
43+
44+
with step('Verify recently added saved address is present in the list'):
45+
assert driver.waitFor(
46+
lambda: name in settings_saved_addresses.get_saved_address_names_list(),
47+
configs.timeouts.UI_LOAD_TIMEOUT_MSEC), f'Address: {name} not found'

tests/settings/test_settings_sign_out_and_quit.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
@allure.testcase('https://ethstatus.testrail.net/index.php?/cases/view/703010', 'Settings - Sign out & Quit')
1313
# TODO: Experimental link for testing multiple references in test rail report by nightly job. Has to be removed!
1414
@allure.testcase('https://ethstatus.testrail.net/index.php?/cases/view/704620', 'Wallet -> Settings -> Saved addresses: Add new saved address')
15+
@pytest.mark.case(703010)
16+
@pytest.mark.case(704620)
1517
@pytest.mark.flaky
1618
# reason='https://github.com/status-im/status-desktop/issues/13013'
1719
def test_sign_out_and_quit(aut, main_screen: MainWindow):

tests/wallet_main_screen/test_saved_addresses.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ def test_manage_saved_address(main_screen: MainWindow, name: str, address: str,
3333
with step('Add new address'):
3434
wallet = main_screen.left_panel.open_wallet()
3535
SigningPhrasePopup().confirm_phrase()
36-
wallet.left_panel.open_saved_addresses().open_add_address_popup().add_saved_address(name, address)
36+
wallet.left_panel.open_saved_addresses().open_add_saved_address_popup().add_saved_address(name, address)
3737

3838
with step('Verify toast message when adding saved address'):
3939
messages = ToastMessage().get_toast_messages

0 commit comments

Comments
 (0)