chore(@e2e): update test for sharing wallet address
This commit is contained in:
parent
03db15529e
commit
748b9b94fc
|
@ -1,8 +1,7 @@
|
||||||
import random
|
import random
|
||||||
import string
|
import string
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
from dataclasses import dataclass
|
from dataclasses import dataclass, field
|
||||||
from enum import Enum
|
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
|
||||||
import configs
|
import configs
|
||||||
|
@ -13,22 +12,26 @@ from scripts.utils.generators import random_name_string, random_password_string
|
||||||
class UserAccount:
|
class UserAccount:
|
||||||
name: str = None
|
name: str = None
|
||||||
password: str = None
|
password: str = None
|
||||||
seed_phrase: Optional[list] = None
|
seed_phrase: Optional[list] = field(default_factory=list)
|
||||||
status_address: Optional[str] = None
|
status_address: Optional[str] = None
|
||||||
|
|
||||||
|
|
||||||
class RandomUser(UserAccount):
|
class RandomUser(UserAccount):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.name = random_name_string()
|
super().__init__(
|
||||||
self.password = random_password_string()
|
name=random_name_string(),
|
||||||
|
password=random_password_string()
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class ReturningUser(UserAccount):
|
class ReturningUser(UserAccount):
|
||||||
def __init__(self, seed_phrase, status_address):
|
def __init__(self, seed_phrase, status_address):
|
||||||
self.name = random_name_string()
|
super().__init__(
|
||||||
self.password = random_password_string()
|
name=random_name_string(),
|
||||||
self.seed_phrase = seed_phrase
|
password=random_password_string(),
|
||||||
self.status_address = status_address
|
seed_phrase=seed_phrase,
|
||||||
|
status_address=status_address
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
user_account_one = UserAccount('squisher', '0000000000', [
|
user_account_one = UserAccount('squisher', '0000000000', [
|
||||||
|
@ -74,102 +77,102 @@ community_tags = ['Activism', 'Art', 'Blockchain', 'Books & blogs', 'Career', 'C
|
||||||
'Software dev', 'Sports', 'Tech', 'Travel', 'Vehicles', 'Web3']
|
'Software dev', 'Sports', 'Tech', 'Travel', 'Vehicles', 'Web3']
|
||||||
|
|
||||||
permission_data = [
|
permission_data = [
|
||||||
{
|
{
|
||||||
'checkbox_state': True,
|
'checkbox_state': True,
|
||||||
'first_asset': 'Dai Stablecoin',
|
'first_asset': 'Dai Stablecoin',
|
||||||
'second_asset': False,
|
'second_asset': False,
|
||||||
'amount': '10',
|
'amount': '10',
|
||||||
'allowed_to': 'becomeMember',
|
'allowed_to': 'becomeMember',
|
||||||
'in_channel': False,
|
'in_channel': False,
|
||||||
'asset_title': '10 DAI',
|
'asset_title': '10 DAI',
|
||||||
'second_asset_title': False,
|
'second_asset_title': False,
|
||||||
'allowed_to_title': 'Become member'
|
'allowed_to_title': 'Become member'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'checkbox_state': True,
|
'checkbox_state': True,
|
||||||
'first_asset': 'Ether',
|
'first_asset': 'Ether',
|
||||||
'second_asset': False,
|
'second_asset': False,
|
||||||
'amount': '1',
|
'amount': '1',
|
||||||
'allowed_to': 'becomeAdmin',
|
'allowed_to': 'becomeAdmin',
|
||||||
'in_channel': False,
|
'in_channel': False,
|
||||||
'asset_title': '1 ETH',
|
'asset_title': '1 ETH',
|
||||||
'second_asset_title': False,
|
'second_asset_title': False,
|
||||||
'allowed_to_title': 'Become an admin'
|
'allowed_to_title': 'Become an admin'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'checkbox_state': True,
|
'checkbox_state': True,
|
||||||
'first_asset': 'Ether',
|
'first_asset': 'Ether',
|
||||||
'second_asset': 'Dai Stablecoin',
|
'second_asset': 'Dai Stablecoin',
|
||||||
'amount': '10',
|
'amount': '10',
|
||||||
'allowed_to': 'viewAndPost',
|
'allowed_to': 'viewAndPost',
|
||||||
'in_channel': '#general',
|
'in_channel': '#general',
|
||||||
'asset_title': '10 ETH',
|
'asset_title': '10 ETH',
|
||||||
'second_asset_title': '10 DAI',
|
'second_asset_title': '10 DAI',
|
||||||
'allowed_to_title': 'View and post'
|
'allowed_to_title': 'View and post'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'checkbox_state': True,
|
'checkbox_state': True,
|
||||||
'first_asset': 'Ether',
|
'first_asset': 'Ether',
|
||||||
'second_asset': 'Dai Stablecoin',
|
'second_asset': 'Dai Stablecoin',
|
||||||
'amount': '10',
|
'amount': '10',
|
||||||
'allowed_to': 'viewOnly',
|
'allowed_to': 'viewOnly',
|
||||||
'in_channel': '#general',
|
'in_channel': '#general',
|
||||||
'asset_title': '10 ETH',
|
'asset_title': '10 ETH',
|
||||||
'second_asset_title': '10 DAI',
|
'second_asset_title': '10 DAI',
|
||||||
'allowed_to_title': 'View only'
|
'allowed_to_title': 'View only'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'checkbox_state': False,
|
'checkbox_state': False,
|
||||||
'first_asset': False,
|
'first_asset': False,
|
||||||
'second_asset': False,
|
'second_asset': False,
|
||||||
'amount': False,
|
'amount': False,
|
||||||
'allowed_to': 'becomeAdmin',
|
'allowed_to': 'becomeAdmin',
|
||||||
'in_channel': False,
|
'in_channel': False,
|
||||||
'asset_title': False,
|
'asset_title': False,
|
||||||
'second_asset_title': False,
|
'second_asset_title': False,
|
||||||
'allowed_to_title': 'Become an admin'
|
'allowed_to_title': 'Become an admin'
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
||||||
permission_data_member = [
|
permission_data_member = [
|
||||||
{
|
{
|
||||||
'checkbox_state': True,
|
'checkbox_state': True,
|
||||||
'first_asset': 'Dai Stablecoin',
|
'first_asset': 'Dai Stablecoin',
|
||||||
'amount': '1',
|
'amount': '1',
|
||||||
'allowed_to': 'becomeMember',
|
'allowed_to': 'becomeMember',
|
||||||
'asset_title': '1 DAI',
|
'asset_title': '1 DAI',
|
||||||
'allowed_to_title': 'Become member'
|
'allowed_to_title': 'Become member'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'checkbox_state': True,
|
'checkbox_state': True,
|
||||||
'first_asset': 'Aragon',
|
'first_asset': 'Aragon',
|
||||||
'amount': '2',
|
'amount': '2',
|
||||||
'allowed_to': 'becomeMember',
|
'allowed_to': 'becomeMember',
|
||||||
'asset_title': '2 ANT',
|
'asset_title': '2 ANT',
|
||||||
'allowed_to_title': 'Become member'
|
'allowed_to_title': 'Become member'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'checkbox_state': True,
|
'checkbox_state': True,
|
||||||
'first_asset': '1inch',
|
'first_asset': '1inch',
|
||||||
'amount': '3',
|
'amount': '3',
|
||||||
'allowed_to': 'becomeMember',
|
'allowed_to': 'becomeMember',
|
||||||
'asset_title': '3 1INCH',
|
'asset_title': '3 1INCH',
|
||||||
'allowed_to_title': 'Become member'
|
'allowed_to_title': 'Become member'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'checkbox_state': True,
|
'checkbox_state': True,
|
||||||
'first_asset': 'ABYSS',
|
'first_asset': 'ABYSS',
|
||||||
'amount': '4',
|
'amount': '4',
|
||||||
'allowed_to': 'becomeMember',
|
'allowed_to': 'becomeMember',
|
||||||
'asset_title': '4 ABYSS',
|
'asset_title': '4 ABYSS',
|
||||||
'allowed_to_title': 'Become member'
|
'allowed_to_title': 'Become member'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'checkbox_state': True,
|
'checkbox_state': True,
|
||||||
'first_asset': 'Bytom',
|
'first_asset': 'Bytom',
|
||||||
'amount': '5',
|
'amount': '5',
|
||||||
'allowed_to': 'becomeMember',
|
'allowed_to': 'becomeMember',
|
||||||
'asset_title': '5 BTM',
|
'asset_title': '5 BTM',
|
||||||
'allowed_to_title': 'Become member'
|
'allowed_to_title': 'Become member'
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
|
@ -1,10 +1,8 @@
|
||||||
import allure
|
import allure
|
||||||
import pyperclip
|
import pyperclip
|
||||||
|
|
||||||
import configs.timeouts
|
|
||||||
from gui.components.base_popup import BasePopup
|
from gui.components.base_popup import BasePopup
|
||||||
from gui.elements.button import Button
|
from gui.elements.button import Button
|
||||||
from gui.elements.check_box import CheckBox
|
|
||||||
from gui.elements.object import QObject
|
from gui.elements.object import QObject
|
||||||
from gui.objects_map import names
|
from gui.objects_map import names
|
||||||
|
|
||||||
|
@ -13,41 +11,16 @@ class ReceivePopup(BasePopup):
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
self.eth_icon = QObject(names.networkTagRectangle_eth_Rectangle)
|
self.account_selector_text = QObject(names.textContent_StatusBaseText)
|
||||||
self.oeth_icon = QObject(names.networkTagRectangle_oeth_Rectangle)
|
self.copy_button = Button(names.greenCircleAroundIcon_Rectangle)
|
||||||
self.arb_icon = QObject(names.networkTagRectangle_arb1_Rectangle)
|
|
||||||
self.multichain_tab_button = Button(names.tabBar_Multichain_StatusSwitchTabButton)
|
|
||||||
self.legacy_tab_button = Button(names.tabBar_Legacy_StatusSwitchTabButton)
|
|
||||||
self._account_selector = QObject(names.accountSelector_AccountSelectorHeader)
|
|
||||||
self._account_selector_text = QObject(names.textContent_StatusBaseText)
|
|
||||||
self._copy_button = Button(names.greenCircleAroundIcon_Rectangle)
|
|
||||||
self._edit_button = Button(names.edit_pencil_icon_StatusIcon)
|
|
||||||
self.qr_code = QObject(names.qrCodeImage_Image)
|
self.qr_code = QObject(names.qrCodeImage_Image)
|
||||||
self.mainnet_network_checkbox = CheckBox(names.networkSelectorDelegate_Mainnet_NetworkSelectItemDelegate)
|
|
||||||
self.optimism_network_checkbox = CheckBox(names.networkSelectorDelegate_Optimism_NetworkSelectItemDelegate)
|
|
||||||
self.arbitrum_network_checkbox = CheckBox(names.networkSelectorDelegate_Arbitrum_NetworkSelectItemDelegate)
|
|
||||||
|
|
||||||
@allure.step('Wait until appears {0}')
|
|
||||||
def wait_until_appears(self, timeout_msec: int = configs.timeouts.UI_LOAD_TIMEOUT_MSEC):
|
|
||||||
self.multichain_tab_button.wait_until_appears(timeout_msec)
|
|
||||||
return self
|
|
||||||
|
|
||||||
@allure.step('Click account selector combobox')
|
|
||||||
def click_account_selector(self):
|
|
||||||
self._account_selector.click()
|
|
||||||
return self
|
|
||||||
|
|
||||||
@allure.step('Get current text in account selector')
|
@allure.step('Get current text in account selector')
|
||||||
def get_text_from_account_selector(self) -> str:
|
def get_text_from_account_selector(self) -> str:
|
||||||
return str(self._account_selector_text.object.text)
|
return str(self.account_selector_text.object.text)
|
||||||
|
|
||||||
@allure.step('Copy address')
|
@allure.step('Copy address')
|
||||||
def copy_address(self) -> str:
|
def copy_address(self) -> str:
|
||||||
self._copy_button.click()
|
self.copy_button.click()
|
||||||
return str(pyperclip.paste())
|
return str(pyperclip.paste())
|
||||||
|
|
||||||
@allure.step('Click edit button')
|
|
||||||
def edit_networks(self):
|
|
||||||
self._edit_button.click()
|
|
||||||
self.mainnet_network_checkbox.wait_until_appears()
|
|
||||||
return self
|
|
||||||
|
|
|
@ -517,20 +517,11 @@ send_StatusMenuItem = {"checkable": False, "container": statusDesktop_mainWindow
|
||||||
receive_StatusMenuItem = {"checkable": False, "container": statusDesktop_mainWindow_overlay, "enabled": True, "objectName": "receiveMenuItem", "type": "StatusMenuItem", "visible": True}
|
receive_StatusMenuItem = {"checkable": False, "container": statusDesktop_mainWindow_overlay, "enabled": True, "objectName": "receiveMenuItem", "type": "StatusMenuItem", "visible": True}
|
||||||
|
|
||||||
# Receive popup
|
# Receive popup
|
||||||
networkTagRectangle_eth_Rectangle = {"container": statusDesktop_mainWindow_overlay, "objectName": "networkTagRectangle_eth", "type": "Rectangle", "visible": True}
|
|
||||||
networkTagRectangle_oeth_Rectangle = {"container": statusDesktop_mainWindow_overlay, "objectName": "networkTagRectangle_oeth", "type": "Rectangle", "visible": True}
|
|
||||||
networkTagRectangle_arb1_Rectangle = {"container": statusDesktop_mainWindow_overlay, "objectName": "networkTagRectangle_arb1", "type": "Rectangle", "visible": True}
|
|
||||||
tabBar_StatusSwitchTabBar = {"container": statusDesktop_mainWindow_overlay, "id": "tabBar", "type": "StatusSwitchTabBar", "unnamed": 1, "visible": True}
|
tabBar_StatusSwitchTabBar = {"container": statusDesktop_mainWindow_overlay, "id": "tabBar", "type": "StatusSwitchTabBar", "unnamed": 1, "visible": True}
|
||||||
tabBar_Multichain_StatusSwitchTabButton = {"checkable": True, "container": tabBar_StatusSwitchTabBar, "objectName": "multichainButton", "type": "StatusSwitchTabButton", "visible": True}
|
|
||||||
tabBar_Legacy_StatusSwitchTabButton = {"checkable": True, "container": tabBar_StatusSwitchTabBar, "objectName": "legacyButton", "type": "StatusSwitchTabButton", "visible": True}
|
|
||||||
accountSelector_AccountSelectorHeader = {"container": statusDesktop_mainWindow_overlay, "objectName": "accountSelector", "type": "AccountSelectorHeader", "visible": True}
|
accountSelector_AccountSelectorHeader = {"container": statusDesktop_mainWindow_overlay, "objectName": "accountSelector", "type": "AccountSelectorHeader", "visible": True}
|
||||||
textContent_StatusBaseText = {"container": statusDesktop_mainWindow_overlay, "objectName": "textContent", "type": "StatusBaseText", "visible": True}
|
textContent_StatusBaseText = {"container": statusDesktop_mainWindow_overlay, "objectName": "textContent", "type": "StatusBaseText", "visible": True}
|
||||||
edit_pencil_icon_StatusIcon = {"container": statusDesktop_mainWindow_overlay, "objectName": "edit_pencil-icon", "type": "StatusIcon", "visible": True}
|
|
||||||
greenCircleAroundIcon_Rectangle = {"container": statusDesktop_mainWindow_overlay, "id": "greenCircleAroundIcon", "type": "Rectangle", "unnamed": 1, "visible": True}
|
greenCircleAroundIcon_Rectangle = {"container": statusDesktop_mainWindow_overlay, "id": "greenCircleAroundIcon", "type": "Rectangle", "unnamed": 1, "visible": True}
|
||||||
qrCodeImage_Image = {"container": statusDesktop_mainWindow_overlay, "objectName": "qrCodeImage", "type": "Image", "visible": True}
|
qrCodeImage_Image = {"container": statusDesktop_mainWindow_overlay, "objectName": "qrCodeImage", "type": "Image", "visible": True}
|
||||||
networkSelectorDelegate_Mainnet_NetworkSelectItemDelegate = {"container": statusDesktop_mainWindow_overlay, "index": 0, "objectName": "networkSelectorDelegate_Mainnet", "type": "NetworkSelectItemDelegate", "visible": True}
|
|
||||||
networkSelectorDelegate_Optimism_NetworkSelectItemDelegate = {"container": statusDesktop_mainWindow_overlay, "index": 1, "objectName": "networkSelectorDelegate_Optimism", "type": "NetworkSelectItemDelegate", "visible": True}
|
|
||||||
networkSelectorDelegate_Arbitrum_NetworkSelectItemDelegate = {"container": statusDesktop_mainWindow_overlay, "index": 2, "objectName": "networkSelectorDelegate_Arbitrum", "type": "NetworkSelectItemDelegate", "visible": True}
|
|
||||||
|
|
||||||
# Bridge popup
|
# Bridge popup
|
||||||
holdingSelector_TokenSelectorNew = {"container": statusDesktop_mainWindow_overlay, "objectName": "holdingSelector", "type": "TokenSelectorNew", "visible": True}
|
holdingSelector_TokenSelectorNew = {"container": statusDesktop_mainWindow_overlay, "objectName": "holdingSelector", "type": "TokenSelectorNew", "visible": True}
|
||||||
|
|
|
@ -8,7 +8,6 @@ import configs
|
||||||
import constants.user
|
import constants.user
|
||||||
import driver
|
import driver
|
||||||
from driver.objects_access import walk_children
|
from driver.objects_access import walk_children
|
||||||
from gui.components.base_popup import BasePopup
|
|
||||||
from gui.components.context_menu import ContextMenu
|
from gui.components.context_menu import ContextMenu
|
||||||
from gui.components.wallet.add_saved_address_popup import AddressPopup, EditSavedAddressPopup
|
from gui.components.wallet.add_saved_address_popup import AddressPopup, EditSavedAddressPopup
|
||||||
from gui.components.wallet.asset_context_menu_popup import AssetContextMenuPopup
|
from gui.components.wallet.asset_context_menu_popup import AssetContextMenuPopup
|
||||||
|
@ -23,7 +22,6 @@ from gui.elements.list import List
|
||||||
from gui.elements.object import QObject
|
from gui.elements.object import QObject
|
||||||
from gui.elements.text_label import TextLabel
|
from gui.elements.text_label import TextLabel
|
||||||
from gui.objects_map import wallet_names, settings_names, names
|
from gui.objects_map import wallet_names, settings_names, names
|
||||||
from scripts.utils.decorators import close_exists
|
|
||||||
|
|
||||||
|
|
||||||
class WalletScreen(QObject):
|
class WalletScreen(QObject):
|
||||||
|
|
|
@ -1,6 +1,9 @@
|
||||||
import allure
|
import allure
|
||||||
|
import pyperclip
|
||||||
import pytest
|
import pytest
|
||||||
from allure_commons._allure import step
|
from allure_commons._allure import step
|
||||||
|
|
||||||
|
from constants.wallet import WalletNetworkSettings
|
||||||
from tests.settings.settings_keycard import marks
|
from tests.settings.settings_keycard import marks
|
||||||
|
|
||||||
from gui.components.signing_phrase_popup import SigningPhrasePopup
|
from gui.components.signing_phrase_popup import SigningPhrasePopup
|
||||||
|
@ -13,32 +16,14 @@ pytestmark = marks
|
||||||
@pytest.mark.case(738783)
|
@pytest.mark.case(738783)
|
||||||
def test_share_wallet_address(main_screen: MainWindow):
|
def test_share_wallet_address(main_screen: MainWindow):
|
||||||
with step('Open wallet and choose default account'):
|
with step('Open wallet and choose default account'):
|
||||||
default_name = 'Account 1'
|
default_name = WalletNetworkSettings.STATUS_ACCOUNT_DEFAULT_NAME.value
|
||||||
wallet = main_screen.left_panel.open_wallet()
|
wallet = main_screen.left_panel.open_wallet()
|
||||||
SigningPhrasePopup().wait_until_appears().confirm_phrase()
|
SigningPhrasePopup().wait_until_appears().confirm_phrase()
|
||||||
wallet_account = wallet.left_panel.select_account(default_name)
|
wallet_account = wallet.left_panel.select_account(default_name)
|
||||||
|
wallet.left_panel.copy_account_address_in_context_menu(default_name)
|
||||||
|
wallet_address = pyperclip.paste()
|
||||||
|
|
||||||
with step('Open receive popup from footer and verify all network icons and qr code are visible'):
|
with step('Check QR code and address in Receive modal from footer'):
|
||||||
receive_popup = wallet_account.open_receive_popup().wait_until_appears()
|
receive_popup = wallet_account.open_receive_popup()
|
||||||
assert receive_popup.eth_icon.exists
|
assert receive_popup.qr_code.is_visible, f'QR code is not present in Receive modal'
|
||||||
assert receive_popup.oeth_icon.exists
|
assert wallet_address == receive_popup.copy_address(), f'Addresses do not match'
|
||||||
assert receive_popup.arb_icon.exists
|
|
||||||
assert receive_popup.qr_code.is_visible
|
|
||||||
|
|
||||||
with step('Copy address and verify it has correct format'):
|
|
||||||
assert receive_popup.copy_address().startswith('eth:oeth:arb1:')
|
|
||||||
|
|
||||||
with step('Uncheck Mainnet network and verify it has correct format'):
|
|
||||||
receive_popup.edit_networks().mainnet_network_checkbox.set(False)
|
|
||||||
receive_popup.qr_code.click()
|
|
||||||
assert receive_popup.copy_address().startswith('oeth:arb1:')
|
|
||||||
|
|
||||||
with step('Uncheck Optimism network and verify it has correct format'):
|
|
||||||
receive_popup.edit_networks().optimism_network_checkbox.set(False)
|
|
||||||
receive_popup.qr_code.click()
|
|
||||||
assert receive_popup.copy_address().startswith('arb1:')
|
|
||||||
|
|
||||||
with step('Open Legacy tab, copy address and verify it has correct format and qr code is visible'):
|
|
||||||
receive_popup.legacy_tab_button.click()
|
|
||||||
assert receive_popup.copy_address().startswith('0x')
|
|
||||||
assert receive_popup.qr_code.is_visible
|
|
||||||
|
|
Loading…
Reference in New Issue