feat(@test): Add test for watch only account
This commit is contained in:
parent
f9b3f91bf1
commit
499b9bd09e
|
@ -12,11 +12,10 @@
|
||||||
from enum import Enum
|
from enum import Enum
|
||||||
from drivers.SquishDriver import *
|
from drivers.SquishDriver import *
|
||||||
from drivers.SquishDriverVerification import *
|
from drivers.SquishDriverVerification import *
|
||||||
|
from .StatusMainScreen import MainScreenComponents
|
||||||
|
|
||||||
|
class SidebarComponents(Enum):
|
||||||
class MainScreenComponents(Enum):
|
|
||||||
ADVANCED_OPTION: str = "advanced_StatusBaseText"
|
ADVANCED_OPTION: str = "advanced_StatusBaseText"
|
||||||
SCROLL_BAR: str = "o_ScrollBar"
|
|
||||||
WALLET_ITEM: str = "wallet_AppMenu_StatusNavigationListItem"
|
WALLET_ITEM: str = "wallet_AppMenu_StatusNavigationListItem"
|
||||||
|
|
||||||
|
|
||||||
|
@ -34,18 +33,25 @@ class WalletSettingsScreen(Enum):
|
||||||
class SettingsScreen:
|
class SettingsScreen:
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
verify_screen(MainScreenComponents.ADVANCED_OPTION.value)
|
verify_screen(SidebarComponents.ADVANCED_OPTION.value)
|
||||||
|
|
||||||
def activate_open_wallet_section(self):
|
def activate_open_wallet_settings(self):
|
||||||
scroll_obj_by_name(MainScreenComponents.SCROLL_BAR.value)
|
if not (is_Visible(SidebarComponents.WALLET_ITEM.value)) :
|
||||||
|
click_obj_by_name(SidebarComponents.ADVANCED_OPTION.value)
|
||||||
if not (is_Visible(MainScreenComponents.WALLET_ITEM.value)) :
|
|
||||||
click_obj_by_name(MainScreenComponents.ADVANCED_OPTION.value)
|
|
||||||
click_obj_by_name(AdvancedOptionScreen.ACTIVATE_OR_DEACTIVATE_WALLET.value)
|
click_obj_by_name(AdvancedOptionScreen.ACTIVATE_OR_DEACTIVATE_WALLET.value)
|
||||||
click_obj_by_name(AdvancedOptionScreen.I_UNDERSTAND_POP_UP.value)
|
click_obj_by_name(AdvancedOptionScreen.I_UNDERSTAND_POP_UP.value)
|
||||||
verify_object_enabled(MainScreenComponents.WALLET_ITEM.value)
|
verify_object_enabled(SidebarComponents.WALLET_ITEM.value)
|
||||||
|
|
||||||
click_obj_by_name(MainScreenComponents.WALLET_ITEM.value)
|
click_obj_by_name(SidebarComponents.WALLET_ITEM.value)
|
||||||
|
|
||||||
|
def activate_open_wallet_section(self):
|
||||||
|
if not (is_Visible(SidebarComponents.WALLET_ITEM.value)):
|
||||||
|
click_obj_by_name(SidebarComponents.ADVANCED_OPTION.value)
|
||||||
|
click_obj_by_name(AdvancedOptionScreen.ACTIVATE_OR_DEACTIVATE_WALLET.value)
|
||||||
|
click_obj_by_name(AdvancedOptionScreen.I_UNDERSTAND_POP_UP.value)
|
||||||
|
verify_object_enabled(SidebarComponents.WALLET_ITEM.value)
|
||||||
|
|
||||||
|
click_obj_by_name(MainScreenComponents.WALLET_BUTTON.value)
|
||||||
|
|
||||||
def verify_address(self, phrase: str, address: str):
|
def verify_address(self, phrase: str, address: str):
|
||||||
if phrase =='18':
|
if phrase =='18':
|
||||||
|
|
|
@ -19,6 +19,7 @@ class MainScreenComponents(Enum):
|
||||||
PUBLIC_CHAT_ICON = "mainWindow_public_chat_icon_StatusIcon"
|
PUBLIC_CHAT_ICON = "mainWindow_public_chat_icon_StatusIcon"
|
||||||
JOIN_PUBLIC_CHAT = "join_public_chat_StatusMenuItemDelegate"
|
JOIN_PUBLIC_CHAT = "join_public_chat_StatusMenuItemDelegate"
|
||||||
SETTINGS_BUTTON = "settings_navbar_settings_icon_StatusIcon"
|
SETTINGS_BUTTON = "settings_navbar_settings_icon_StatusIcon"
|
||||||
|
WALLET_BUTTON = "wallet_navbar_wallet_icon_StatusIcon"
|
||||||
|
|
||||||
|
|
||||||
class ChatNamePopUp(Enum):
|
class ChatNamePopUp(Enum):
|
||||||
|
@ -39,7 +40,6 @@ class StatusMainScreen:
|
||||||
click_obj_by_name(ChatNamePopUp.START_CHAT.value)
|
click_obj_by_name(ChatNamePopUp.START_CHAT.value)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def open_settings(self):
|
def open_settings(self):
|
||||||
click_obj_by_name(MainScreenComponents.SETTINGS_BUTTON.value)
|
click_obj_by_name(MainScreenComponents.SETTINGS_BUTTON.value)
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,123 @@
|
||||||
|
from enum import Enum
|
||||||
|
import time
|
||||||
|
import sys
|
||||||
|
from drivers.SquishDriver import *
|
||||||
|
from drivers.SquishDriverVerification import *
|
||||||
|
|
||||||
|
|
||||||
|
class SigningPhrasePopUp(Enum):
|
||||||
|
OK_GOT_IT_BUTTON: str = "mainWindow_Ok_got_it_StatusBaseText"
|
||||||
|
|
||||||
|
|
||||||
|
class MainWalletScreen(Enum):
|
||||||
|
ADD_ACCOUNT_BUTTON: str = "mainWallet_Add_Account"
|
||||||
|
ACCOUNT_NAME: str = "mainWallet_Account_Name"
|
||||||
|
|
||||||
|
|
||||||
|
class AddAccountPopup(Enum):
|
||||||
|
SCROLL_BAR: str = "mainWallet_Add_Account_Popup_Main"
|
||||||
|
PASSWORD_INPUT: str = "mainWallet_Add_Account_Popup_Password"
|
||||||
|
ACCOUNT_NAME_INPUT: str = "mainWallet_Add_Account_Popup_Account_Name"
|
||||||
|
ADVANCE_SECTION: str = "mainWallet_Add_Account_Popup_Advanced"
|
||||||
|
TYPE_SELECTOR: str = "mainWallet_Add_Account_Popup_Type_Selector"
|
||||||
|
TYPE_WATCH_ONLY: str = "mainWallet_Add_Account_Popup_Type_Watch_Only"
|
||||||
|
TYPE_SEED_PHRASE: str = "mainWallet_Add_Account_Popup_Type_Seed_Phrase"
|
||||||
|
TYPE_PRIVATE_KEY: str = "mainWallet_Add_Account_Popup_Type_Private_Key"
|
||||||
|
ADDRESS_INPUT: str = "mainWallet_Add_Account_Popup_Watch_Only_Address"
|
||||||
|
PRIVATE_KEY_INPUT: str = "mainWallet_Add_Account_Popup_Private_Key"
|
||||||
|
ADD_ACCOUNT_BUTTON: str = "mainWallet_Add_Account_Popup_Footer_Add_Account"
|
||||||
|
SEED_PHRASE_INPUT_0: str = "mainWindow_Add_Account_Popup_Seed_Phrase_0"
|
||||||
|
SEED_PHRASE_INPUT_1: str = "mainWindow_Add_Account_Popup_Seed_Phrase_1"
|
||||||
|
SEED_PHRASE_INPUT_2: str = "mainWindow_Add_Account_Popup_Seed_Phrase_2"
|
||||||
|
SEED_PHRASE_INPUT_3: str = "mainWindow_Add_Account_Popup_Seed_Phrase_3"
|
||||||
|
SEED_PHRASE_INPUT_4: str = "mainWindow_Add_Account_Popup_Seed_Phrase_4"
|
||||||
|
SEED_PHRASE_INPUT_5: str = "mainWindow_Add_Account_Popup_Seed_Phrase_5"
|
||||||
|
SEED_PHRASE_INPUT_6: str = "mainWindow_Add_Account_Popup_Seed_Phrase_6"
|
||||||
|
SEED_PHRASE_INPUT_7: str = "mainWindow_Add_Account_Popup_Seed_Phrase_7"
|
||||||
|
SEED_PHRASE_INPUT_8: str = "mainWindow_Add_Account_Popup_Seed_Phrase_8"
|
||||||
|
SEED_PHRASE_INPUT_9: str = "mainWindow_Add_Account_Popup_Seed_Phrase_9"
|
||||||
|
SEED_PHRASE_INPUT_10: str = "mainWindow_Add_Account_Popup_Seed_Phrase_10"
|
||||||
|
SEED_PHRASE_INPUT_11: str = "mainWindow_Add_Account_Popup_Seed_Phrase_11"
|
||||||
|
|
||||||
|
|
||||||
|
class StatusWalletScreen:
|
||||||
|
|
||||||
|
def acceptSigningPhrase(self):
|
||||||
|
click_obj_by_name(SigningPhrasePopUp.OK_GOT_IT_BUTTON.value)
|
||||||
|
|
||||||
|
def addWatchOnlyAccount(self, account_name: str, address: str):
|
||||||
|
click_obj_by_name(MainWalletScreen.ADD_ACCOUNT_BUTTON.value)
|
||||||
|
|
||||||
|
type(AddAccountPopup.ACCOUNT_NAME_INPUT.value, account_name)
|
||||||
|
|
||||||
|
click_obj_by_name(AddAccountPopup.ADVANCE_SECTION.value)
|
||||||
|
click_obj_by_name(AddAccountPopup.TYPE_SELECTOR.value)
|
||||||
|
time.sleep(1)
|
||||||
|
click_obj_by_name(AddAccountPopup.TYPE_WATCH_ONLY.value)
|
||||||
|
|
||||||
|
type(AddAccountPopup.ADDRESS_INPUT.value, address)
|
||||||
|
click_obj_by_name(AddAccountPopup.ADD_ACCOUNT_BUTTON.value)
|
||||||
|
|
||||||
|
def importPrivateKey(self, account_name: str, password: str, private_key: str):
|
||||||
|
click_obj_by_name(MainWalletScreen.ADD_ACCOUNT_BUTTON.value)
|
||||||
|
|
||||||
|
type(AddAccountPopup.PASSWORD_INPUT.value, password)
|
||||||
|
type(AddAccountPopup.ACCOUNT_NAME_INPUT.value, account_name)
|
||||||
|
|
||||||
|
click_obj_by_name(AddAccountPopup.ADVANCE_SECTION.value)
|
||||||
|
click_obj_by_name(AddAccountPopup.TYPE_SELECTOR.value)
|
||||||
|
time.sleep(1)
|
||||||
|
click_obj_by_name(AddAccountPopup.TYPE_PRIVATE_KEY.value)
|
||||||
|
|
||||||
|
type(AddAccountPopup.PRIVATE_KEY_INPUT.value, private_key)
|
||||||
|
click_obj_by_name(AddAccountPopup.ADD_ACCOUNT_BUTTON.value)
|
||||||
|
|
||||||
|
def importSeedPhrase(self, account_name: str, password: str, mnemonic: str):
|
||||||
|
click_obj_by_name(MainWalletScreen.ADD_ACCOUNT_BUTTON.value)
|
||||||
|
|
||||||
|
type(AddAccountPopup.PASSWORD_INPUT.value, password)
|
||||||
|
type(AddAccountPopup.ACCOUNT_NAME_INPUT.value, account_name)
|
||||||
|
|
||||||
|
click_obj_by_name(AddAccountPopup.ADVANCE_SECTION.value)
|
||||||
|
click_obj_by_name(AddAccountPopup.TYPE_SELECTOR.value)
|
||||||
|
time.sleep(1)
|
||||||
|
click_obj_by_name(AddAccountPopup.TYPE_SEED_PHRASE.value)
|
||||||
|
|
||||||
|
words = mnemonic.split()
|
||||||
|
scroll_obj_by_name(AddAccountPopup.SCROLL_BAR.value)
|
||||||
|
time.sleep(2)
|
||||||
|
|
||||||
|
scroll_obj_by_name(AddAccountPopup.SCROLL_BAR.value)
|
||||||
|
time.sleep(2)
|
||||||
|
|
||||||
|
scroll_obj_by_name(AddAccountPopup.SCROLL_BAR.value)
|
||||||
|
time.sleep(2)
|
||||||
|
|
||||||
|
type(AddAccountPopup.SEED_PHRASE_INPUT_0.value, words[0])
|
||||||
|
type(AddAccountPopup.SEED_PHRASE_INPUT_1.value, words[1])
|
||||||
|
type(AddAccountPopup.SEED_PHRASE_INPUT_2.value, words[2])
|
||||||
|
type(AddAccountPopup.SEED_PHRASE_INPUT_3.value, words[3])
|
||||||
|
type(AddAccountPopup.SEED_PHRASE_INPUT_4.value, words[4])
|
||||||
|
type(AddAccountPopup.SEED_PHRASE_INPUT_5.value, words[5])
|
||||||
|
type(AddAccountPopup.SEED_PHRASE_INPUT_6.value, words[6])
|
||||||
|
type(AddAccountPopup.SEED_PHRASE_INPUT_7.value, words[7])
|
||||||
|
type(AddAccountPopup.SEED_PHRASE_INPUT_8.value, words[8])
|
||||||
|
type(AddAccountPopup.SEED_PHRASE_INPUT_9.value, words[9])
|
||||||
|
type(AddAccountPopup.SEED_PHRASE_INPUT_10.value, words[10])
|
||||||
|
type(AddAccountPopup.SEED_PHRASE_INPUT_11.value, words[11])
|
||||||
|
time.sleep(2)
|
||||||
|
|
||||||
|
click_obj_by_name(AddAccountPopup.ADD_ACCOUNT_BUTTON.value)
|
||||||
|
|
||||||
|
def generateNewAccount(self, account_name: str, password: str):
|
||||||
|
click_obj_by_name(MainWalletScreen.ADD_ACCOUNT_BUTTON.value)
|
||||||
|
|
||||||
|
type(AddAccountPopup.PASSWORD_INPUT.value, password)
|
||||||
|
type(AddAccountPopup.ACCOUNT_NAME_INPUT.value, account_name)
|
||||||
|
|
||||||
|
time.sleep(2)
|
||||||
|
click_obj_by_name(AddAccountPopup.ADD_ACCOUNT_BUTTON.value)
|
||||||
|
|
||||||
|
def verifyAccountNameIsPresent(self, account_name: str):
|
||||||
|
verify_text_matching(MainWalletScreen.ACCOUNT_NAME.value, account_name)
|
||||||
|
|
|
@ -13,6 +13,7 @@ _appClosureTimeout = 2 #[seconds]
|
||||||
@OnScenarioStart
|
@OnScenarioStart
|
||||||
def hook(context):
|
def hook(context):
|
||||||
erase_directory("../../../../../Status/data")
|
erase_directory("../../../../../Status/data")
|
||||||
|
erase_directory("../../../../../Status/qt")
|
||||||
startApplication(_statusDektopAppName)
|
startApplication(_statusDektopAppName)
|
||||||
context.userData = {}
|
context.userData = {}
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@ from objectmaphelper import *
|
||||||
|
|
||||||
statusDesktop_mainWindow = {"name": "mainWindow", "type": "StatusWindow", "visible": True}
|
statusDesktop_mainWindow = {"name": "mainWindow", "type": "StatusWindow", "visible": True}
|
||||||
mainWindow_dropRectangle_Rectangle = {"container": statusDesktop_mainWindow, "id": "dropRectangle", "type": "Rectangle", "unnamed": 1, "visible": True}
|
mainWindow_dropRectangle_Rectangle = {"container": statusDesktop_mainWindow, "id": "dropRectangle", "type": "Rectangle", "unnamed": 1, "visible": True}
|
||||||
loginView_passwordInput = {"container": statusDesktop_mainWindow, "echoMode": 2, "id": "inputValue", "passwordCharacter": "•", "type": "StyledTextField", "unnamed": 1, "visible": True}
|
loginView_passwordInput = {"container": statusDesktop_mainWindow, "echoMode": 2, "passwordCharacter": "•", "type": "StyledTextField", "unnamed": 1, "visible": True}
|
||||||
loginView_changeAccountBtn = {"container": statusDesktop_mainWindow, "id": "changeAccountBtn", "type": "Rectangle", "unnamed": 1, "visible": True}
|
loginView_changeAccountBtn = {"container": statusDesktop_mainWindow, "id": "changeAccountBtn", "type": "Rectangle", "unnamed": 1, "visible": True}
|
||||||
loginView_submitBtn = {"container": statusDesktop_mainWindow, "type": "StatusRoundButton", "visible": True}
|
loginView_submitBtn = {"container": statusDesktop_mainWindow, "type": "StatusRoundButton", "visible": True}
|
||||||
loginView_main = {"container": statusDesktop_mainWindow, "type": "LoginView", "visible": True}
|
loginView_main = {"container": statusDesktop_mainWindow, "type": "LoginView", "visible": True}
|
||||||
|
@ -12,20 +12,20 @@ loginView_errMsgLabel = {"container": statusDesktop_mainWindow, "id": "errMsg",
|
||||||
statusDesktop_mainWindow_overlay = {"container": statusDesktop_mainWindow, "type": "Overlay", "unnamed": 1, "visible": True}
|
statusDesktop_mainWindow_overlay = {"container": statusDesktop_mainWindow, "type": "Overlay", "unnamed": 1, "visible": True}
|
||||||
accountsView_accountListPanel = {"container": statusDesktop_mainWindow_overlay, "type": "AccountListPanel", "visible": True}
|
accountsView_accountListPanel = {"container": statusDesktop_mainWindow_overlay, "type": "AccountListPanel", "visible": True}
|
||||||
acknowledge_checkbox = {"checkable": True, "container": statusDesktop_mainWindow_overlay, "objectName": "acknowledgeCheckBox", "type": "StatusCheckBox", "visible": True}
|
acknowledge_checkbox = {"checkable": True, "container": statusDesktop_mainWindow_overlay, "objectName": "acknowledgeCheckBox", "type": "StatusCheckBox", "visible": True}
|
||||||
termsOfUseCheckBox_StatusCheckBox = {"checkable": True, "container": statusDesktop_mainWindow_overlay, "id":"termsOfUse", "type": "StatusCheckBox", "visible": True}
|
termsOfUseCheckBox_StatusCheckBox = {"checkable": True, "container": statusDesktop_mainWindow_overlay, "objectName":"termsOfUseCheckBox", "type": "StatusCheckBox", "visible": True}
|
||||||
getStartedStatusButton_StatusButton = {"container": statusDesktop_mainWindow_overlay, "objectName": "getStartedStatusButton", "type": "StatusButton", "visible": True}
|
getStartedStatusButton_StatusButton = {"container": statusDesktop_mainWindow_overlay, "objectName": "getStartedStatusButton", "type": "StatusButton", "visible": True}
|
||||||
mainWindow_I_am_new_to_Status_StatusBaseText = {"container": statusDesktop_mainWindow, "text": "I am new to Status", "type": "StatusBaseText", "unnamed": 1, "visible": True}
|
mainWindow_I_am_new_to_Status_StatusBaseText = {"container": statusDesktop_mainWindow, "text": "I am new to Status", "type": "StatusBaseText", "unnamed": 1, "visible": True}
|
||||||
mainWindow_Generate_new_keys_StatusBaseText = {"container": statusDesktop_mainWindow, "text": "Generate new keys", "type": "StatusBaseText", "unnamed": 1, "visible": True}
|
mainWindow_Generate_new_keys_StatusBaseText = {"container": statusDesktop_mainWindow, "text": "Generate new keys", "type": "StatusBaseText", "unnamed": 1, "visible": True}
|
||||||
get_Started_StatusBaseText = {"container": statusDesktop_mainWindow_overlay, "text": "Get Started", "type": "StatusBaseText", "unnamed": 1, "visible": True}
|
get_Started_StatusBaseText = {"container": statusDesktop_mainWindow_overlay, "text": "Get Started", "type": "StatusBaseText", "unnamed": 1, "visible": True}
|
||||||
i_accept_Status_StatusBaseText = {"container": statusDesktop_mainWindow_overlay, "text": "I accept Status", "type": "StatusBaseText", "unnamed": 1, "visible": True}
|
i_accept_Status_StatusBaseText = {"container": statusDesktop_mainWindow_overlay, "text": "I accept Status", "type": "StatusBaseText", "unnamed": 1, "visible": True}
|
||||||
termsOfUseLink_StatusBaseText = {"container": statusDesktop_mainWindow_overlay, "objectName": "termsOfUseLink", "type": "StatusBaseText", "visible": True}
|
termsOfUseLink_StatusBaseText = {"container": statusDesktop_mainWindow_overlay, "objectName": "termsOfUseLink", "type": "StatusBaseText", "visible": True}
|
||||||
mainWindow_edit_TextEdit = {"container": statusDesktop_mainWindow, "id": "edit", "type": "TextEdit", "unnamed": 1, "visible": True}
|
mainWindow_edit_TextEdit = {"container": statusDesktop_mainWindow, "type": "TextEdit", "unnamed": 1, "visible": True}
|
||||||
mainWindow_Next_StatusBaseText = {"container": statusDesktop_mainWindow, "text": "Next", "type": "StatusBaseText", "unnamed": 1, "visible": True}
|
mainWindow_Next_StatusBaseText = {"container": statusDesktop_mainWindow, "text": "Next", "type": "StatusBaseText", "unnamed": 1, "visible": True}
|
||||||
mainWindow_Confirm_password_PlaceholderText = {"container": statusDesktop_mainWindow, "text": "Confirm password", "type": "PlaceholderText", "unnamed": 1, "visible": True}
|
mainWindow_Confirm_password_PlaceholderText = {"container": statusDesktop_mainWindow, "text": "Confirm password", "type": "PlaceholderText", "unnamed": 1, "visible": True}
|
||||||
mainWindow_Display_name_StatusBaseText = {"container": statusDesktop_mainWindow, "text": "Display name", "type": "StatusBaseText", "unnamed": 1, "visible": True}
|
mainWindow_Display_name_StatusBaseText = {"container": statusDesktop_mainWindow, "text": "Display name", "type": "StatusBaseText", "unnamed": 1, "visible": True}
|
||||||
mainWindow_nextBtn_StatusButton = {"container": statusDesktop_mainWindow, "id": "nextBtn", "type": "StatusButton", "unnamed": 1, "visible": True}
|
mainWindow_nextBtn_StatusButton = {"container": statusDesktop_mainWindow, "type": "StatusButton", "unnamed": 1, "visible": True}
|
||||||
mainWindow_New_password_PlaceholderText = {"container": statusDesktop_mainWindow, "text": "New password", "type": "PlaceholderText", "unnamed": 1, "visible": True}
|
mainWindow_New_password_PlaceholderText = {"container": statusDesktop_mainWindow, "text": "New password", "type": "PlaceholderText", "unnamed": 1, "visible": True}
|
||||||
mainWindow_Password_textField = {"container": statusDesktop_mainWindow, "echoMode": 2, "id": "inputValue", "occurrence": 2, "passwordCharacter": "•", "type": "StyledTextField", "unnamed": 1, "visible": True}
|
mainWindow_Password_textField = {"container": statusDesktop_mainWindow, "echoMode": 2, "occurrence": 2, "passwordCharacter": "•", "type": "StyledTextField", "unnamed": 1, "visible": True}
|
||||||
mainWindow_Rectangle = {"container": statusDesktop_mainWindow, "occurrence": 11, "type": "Rectangle", "unnamed": 1, "visible": True}
|
mainWindow_Rectangle = {"container": statusDesktop_mainWindow, "occurrence": 11, "type": "Rectangle", "unnamed": 1, "visible": True}
|
||||||
mainWindow_Create_password_StatusBaseText = {"container": statusDesktop_mainWindow, "text": "Create password", "type": "StatusBaseText", "unnamed": 1, "visible": True}
|
mainWindow_Create_password_StatusBaseText = {"container": statusDesktop_mainWindow, "text": "Create password", "type": "StatusBaseText", "unnamed": 1, "visible": True}
|
||||||
mainWindow_Confirm_you_password_again_PlaceholderText = {"container": statusDesktop_mainWindow, "text": "Confirm you password (again)", "type": "PlaceholderText", "unnamed": 1, "visible": True}
|
mainWindow_Confirm_you_password_again_PlaceholderText = {"container": statusDesktop_mainWindow, "text": "Confirm you password (again)", "type": "PlaceholderText", "unnamed": 1, "visible": True}
|
||||||
|
@ -88,7 +88,7 @@ mainWindow_Restore_Status_Profile_StatusBaseText = {"container": statusDesktop_m
|
||||||
mainWindow_Rectangle_4 = {"container": statusDesktop_mainWindow, "occurrence": 31, "type": "Rectangle", "unnamed": 1, "visible": True}
|
mainWindow_Rectangle_4 = {"container": statusDesktop_mainWindow, "occurrence": 31, "type": "Rectangle", "unnamed": 1, "visible": True}
|
||||||
mainWindow_submitButton_StatusButton = {"container": statusDesktop_mainWindow, "id": "submitButton", "type": "StatusButton", "unnamed": 1, "visible": True}
|
mainWindow_submitButton_StatusButton = {"container": statusDesktop_mainWindow, "id": "submitButton", "type": "StatusButton", "unnamed": 1, "visible": True}
|
||||||
i_understand_StatusBaseText = {"container": statusDesktop_mainWindow_overlay, "text": "I understand", "type": "StatusBaseText", "unnamed": 1, "visible": True}
|
i_understand_StatusBaseText = {"container": statusDesktop_mainWindow_overlay, "text": "I understand", "type": "StatusBaseText", "unnamed": 1, "visible": True}
|
||||||
mainWindow_navBarListView_ListView = {"container": statusDesktop_mainWindow, "id": "navBarListView", "type": "ListView", "unnamed": 1, "visible": True}
|
mainWindow_navBarListView_ListView = {"container": statusDesktop_mainWindow, "type": "ListView", "unnamed": 1, "visible": True}
|
||||||
navBarListView_StatusNavBarTabButton = {"checkable": True, "container": mainWindow_navBarListView_ListView, "occurrence": 4, "type": "StatusNavBarTabButton", "unnamed": 1, "visible": True}
|
navBarListView_StatusNavBarTabButton = {"checkable": True, "container": mainWindow_navBarListView_ListView, "occurrence": 4, "type": "StatusNavBarTabButton", "unnamed": 1, "visible": True}
|
||||||
statusIcon_StatusIcon_3 = {"container": navBarListView_StatusNavBarTabButton, "id": "statusIcon", "source": "qrc:/StatusQ/src/assets/img/icons/settings.svg", "type": "StatusIcon", "unnamed": 1, "visible": True}
|
statusIcon_StatusIcon_3 = {"container": navBarListView_StatusNavBarTabButton, "id": "statusIcon", "source": "qrc:/StatusQ/src/assets/img/icons/settings.svg", "type": "StatusIcon", "unnamed": 1, "visible": True}
|
||||||
mainWindow_ScrollView = {"container": statusDesktop_mainWindow, "type": "ScrollView", "unnamed": 1, "visible": True}
|
mainWindow_ScrollView = {"container": statusDesktop_mainWindow, "type": "ScrollView", "unnamed": 1, "visible": True}
|
||||||
|
@ -135,7 +135,6 @@ walletAccount_WalletAccountDelegate = {"container": mainWindow_ScrollView_2, "ob
|
||||||
twenty_four_seed_phrase_address = {"container": mainWindow_ScrollView_2, "text": "0x28cf6770664821a51984daf5b9fb1b52e6538e4b", "type": "StatusBaseText", "unnamed": 1, "visible": True}
|
twenty_four_seed_phrase_address = {"container": mainWindow_ScrollView_2, "text": "0x28cf6770664821a51984daf5b9fb1b52e6538e4b", "type": "StatusBaseText", "unnamed": 1, "visible": True}
|
||||||
advanced_listItem_StatusNavigationListItem = {"container": mainWindow_ScrollView, "objectName": "Advanced-listItem", "type": "StatusNavigationListItem", "visible": True}
|
advanced_listItem_StatusNavigationListItem = {"container": mainWindow_ScrollView, "objectName": "Advanced-listItem", "type": "StatusNavigationListItem", "visible": True}
|
||||||
communities_AppMenu_StatusNavigationListItem = {"container": mainWindow_ScrollView, "objectName": "Communities-AppMenu", "type": "StatusNavigationListItem", "visible": True}
|
communities_AppMenu_StatusNavigationListItem = {"container": mainWindow_ScrollView, "objectName": "Communities-AppMenu", "type": "StatusNavigationListItem", "visible": True}
|
||||||
o_ScrollBar = {"container": mainWindow_ScrollView, "type": "ScrollBar", "unnamed": 1, "visible": True}
|
|
||||||
wallet_AppMenu_StatusNavigationListItem = {"container": mainWindow_ScrollView, "objectName": "Wallet-AppMenu", "type": "StatusNavigationListItem", "visible": True}
|
wallet_AppMenu_StatusNavigationListItem = {"container": mainWindow_ScrollView, "objectName": "Wallet-AppMenu", "type": "StatusNavigationListItem", "visible": True}
|
||||||
mainWindow_public_chat_icon_StatusIcon = {"container": statusDesktop_mainWindow, "objectName": "public-chat-icon", "source": "qrc:/StatusQ/src/assets/img/icons/public-chat.svg", "type": "StatusIcon", "visible": True}
|
mainWindow_public_chat_icon_StatusIcon = {"container": statusDesktop_mainWindow, "objectName": "public-chat-icon", "source": "qrc:/StatusQ/src/assets/img/icons/public-chat.svg", "type": "StatusIcon", "visible": True}
|
||||||
|
|
||||||
|
@ -149,5 +148,38 @@ mainWindow_submitBtn_StatusButton = {"container": statusDesktop_mainWindow, "id"
|
||||||
appearance_SettingsMenu_StatusNavigationListItem = {"container": mainWindow_ScrollView, "objectName": "Appearance-SettingsMenu", "type": "StatusNavigationListItem", "visible": True}
|
appearance_SettingsMenu_StatusNavigationListItem = {"container": mainWindow_ScrollView, "objectName": "Appearance-SettingsMenu", "type": "StatusNavigationListItem", "visible": True}
|
||||||
advanced_SettingsMenu_StatusNavigationListItem = {"container": mainWindow_ScrollView, "objectName": "Advanced-SettingsMenu", "type": "StatusNavigationListItem", "visible": True}
|
advanced_SettingsMenu_StatusNavigationListItem = {"container": mainWindow_ScrollView, "objectName": "Advanced-SettingsMenu", "type": "StatusNavigationListItem", "visible": True}
|
||||||
walletSettingsLineButton = {"container": mainWindow_ScrollView_2, "objectName": "WalletSettingsLineButton", "type": "StatusSettingsLineButton", "visible": True}
|
walletSettingsLineButton = {"container": mainWindow_ScrollView_2, "objectName": "WalletSettingsLineButton", "type": "StatusSettingsLineButton", "visible": True}
|
||||||
|
|
||||||
navBarListView_Settings_navbar_StatusNavBarTabButton = {"checkable": True, "container": mainWindow_navBarListView_ListView, "objectName": "Settings-navbar", "type": "StatusNavBarTabButton", "visible": True}
|
navBarListView_Settings_navbar_StatusNavBarTabButton = {"checkable": True, "container": mainWindow_navBarListView_ListView, "objectName": "Settings-navbar", "type": "StatusNavBarTabButton", "visible": True}
|
||||||
settings_navbar_settings_icon_StatusIcon = {"container": navBarListView_Settings_navbar_StatusNavBarTabButton, "objectName": "settings-icon", "source": "qrc:/StatusQ/src/assets/img/icons/settings.svg", "type": "StatusIcon", "visible": True}
|
settings_navbar_settings_icon_StatusIcon = {"container": navBarListView_Settings_navbar_StatusNavBarTabButton, "objectName": "settings-icon", "type": "StatusIcon", "visible": True}
|
||||||
|
|
||||||
|
navBarListView_Wallet_navbar_StatusNavBarTabButton = {"checkable": True, "container": mainWindow_navBarListView_ListView, "objectName": "Wallet-navbar", "type": "StatusNavBarTabButton", "visible": True}
|
||||||
|
wallet_navbar_wallet_icon_StatusIcon = {"container": navBarListView_Wallet_navbar_StatusNavBarTabButton, "objectName": "wallet-icon", "type": "StatusIcon", "visible": True}
|
||||||
|
|
||||||
|
mainWallet_Account_Name = {"container": statusDesktop_mainWindow, "objectName": "accountName", "type": "StatusBaseText", "visible": True}
|
||||||
|
mainWallet_Add_Account = {"container": statusDesktop_mainWindow, "text": "Add account", "type": "StatusBaseText", "unnamed": 1, "visible": True}
|
||||||
|
|
||||||
|
mainWallet_Add_Account_Popup_Main = {"container": statusDesktop_mainWindow, "objectName": "AddAccountModalContent", "type": "ScrollView", "visible": True}
|
||||||
|
mainWallet_Add_Account_Popup_Password = {"container": mainWallet_Add_Account_Popup_Main, "text": "Enter your password...", "type": "PlaceholderText", "unnamed": 1, "visible": True}
|
||||||
|
mainWallet_Add_Account_Popup_Advanced = {"container": mainWallet_Add_Account_Popup_Main, "text": "Advanced", "type": "StatusBaseText", "unnamed": 1, "visible": True}
|
||||||
|
mainWallet_Add_Account_Popup_Type_Selector = {"container": mainWallet_Add_Account_Popup_Main, "text": "Default", "type": "StatusBaseText", "unnamed": 1, "visible": True}
|
||||||
|
mainWallet_Add_Account_Popup_Type_Watch_Only = {"container": statusDesktop_mainWindow, "text": "Add a watch-only address", "type": "StatusBaseText", "unnamed": 1, "visible": True}
|
||||||
|
mainWallet_Add_Account_Popup_Type_Private_Key = {"container": statusDesktop_mainWindow, "text": "Generate from Private key", "type": "StatusBaseText", "unnamed": 1, "visible": True}
|
||||||
|
mainWallet_Add_Account_Popup_Type_Seed_Phrase = {"container": statusDesktop_mainWindow, "text": "Import new Seed Phrase", "type": "StatusBaseText", "unnamed": 1, "visible": True}
|
||||||
|
mainWallet_Add_Account_Popup_Account_Name = {"container": mainWallet_Add_Account_Popup_Main, "text": "Enter an account name...", "type": "StatusBaseText", "unnamed": 1, "visible": True}
|
||||||
|
mainWallet_Add_Account_Popup_Watch_Only_Address = {"container": mainWallet_Add_Account_Popup_Main, "text": "Enter address...", "type": "StatusBaseText", "unnamed": 1, "visible": True}
|
||||||
|
mainWallet_Add_Account_Popup_Private_Key = {"container": mainWallet_Add_Account_Popup_Main, "text": "Paste the contents of your private key", "type": "StatusBaseText", "unnamed": 1, "visible": True}
|
||||||
|
mainWindow_Add_Account_Popup_Seed_Phrase_0 = {"container": mainWallet_Add_Account_Popup_Main, "type": "StatusBaseText", "objectName": "seedPhraseInputPlaceholder0", "visible": True}
|
||||||
|
mainWindow_Add_Account_Popup_Seed_Phrase_1 = {"container": mainWallet_Add_Account_Popup_Main, "type": "StatusBaseText", "objectName": "seedPhraseInputPlaceholder1", "visible": True}
|
||||||
|
mainWindow_Add_Account_Popup_Seed_Phrase_2 = {"container": mainWallet_Add_Account_Popup_Main, "type": "StatusBaseText", "objectName": "seedPhraseInputPlaceholder2", "visible": True}
|
||||||
|
mainWindow_Add_Account_Popup_Seed_Phrase_3 = {"container": mainWallet_Add_Account_Popup_Main, "type": "StatusBaseText", "objectName": "seedPhraseInputPlaceholder3", "visible": True}
|
||||||
|
mainWindow_Add_Account_Popup_Seed_Phrase_4 = {"container": mainWallet_Add_Account_Popup_Main, "type": "StatusBaseText", "objectName": "seedPhraseInputPlaceholder4", "visible": True}
|
||||||
|
mainWindow_Add_Account_Popup_Seed_Phrase_5 = {"container": mainWallet_Add_Account_Popup_Main, "type": "StatusBaseText", "objectName": "seedPhraseInputPlaceholder5", "visible": True}
|
||||||
|
mainWindow_Add_Account_Popup_Seed_Phrase_6 = {"container": mainWallet_Add_Account_Popup_Main, "type": "StatusBaseText", "objectName": "seedPhraseInputPlaceholder6", "visible": True}
|
||||||
|
mainWindow_Add_Account_Popup_Seed_Phrase_7 = {"container": mainWallet_Add_Account_Popup_Main, "type": "StatusBaseText", "objectName": "seedPhraseInputPlaceholder7", "visible": True}
|
||||||
|
mainWindow_Add_Account_Popup_Seed_Phrase_8 = {"container": mainWallet_Add_Account_Popup_Main, "type": "StatusBaseText", "objectName": "seedPhraseInputPlaceholder8", "visible": True}
|
||||||
|
mainWindow_Add_Account_Popup_Seed_Phrase_9 = {"container": mainWallet_Add_Account_Popup_Main, "type": "StatusBaseText", "objectName": "seedPhraseInputPlaceholder9", "visible": True}
|
||||||
|
mainWindow_Add_Account_Popup_Seed_Phrase_10 = {"container": mainWallet_Add_Account_Popup_Main, "type": "StatusBaseText", "objectName": "seedPhraseInputPlaceholder10", "visible": True}
|
||||||
|
mainWindow_Add_Account_Popup_Seed_Phrase_11 = {"container": mainWallet_Add_Account_Popup_Main, "type": "StatusBaseText", "objectName": "seedPhraseInputPlaceholder11", "visible": True}
|
||||||
|
|
||||||
|
mainWallet_Add_Account_Popup_Footer = {"container": statusDesktop_mainWindow, "type": "StatusModalFooter", "unnamed": 1, "visible": True}
|
||||||
|
mainWallet_Add_Account_Popup_Footer_Add_Account = {"container": mainWallet_Add_Account_Popup_Footer, "text": "Add account", "type": "StatusBaseText", "unnamed": 1, "visible": True}
|
|
@ -11,7 +11,11 @@ def step(context: any):
|
||||||
_statusMain.open_settings()
|
_statusMain.open_settings()
|
||||||
|
|
||||||
|
|
||||||
@When("the user activates wallet and opens the wallets section")
|
@When("the user activates wallet and opens the wallet settings")
|
||||||
|
def step(context: any):
|
||||||
|
_settingsScreen.activate_open_wallet_settings()
|
||||||
|
|
||||||
|
@When("the user activates wallet and opens the wallet section")
|
||||||
def step(context: any):
|
def step(context: any):
|
||||||
_settingsScreen.activate_open_wallet_section()
|
_settingsScreen.activate_open_wallet_section()
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,27 @@
|
||||||
|
from screens.StatusWalletScreen import StatusWalletScreen
|
||||||
|
|
||||||
|
_walletScreen = StatusWalletScreen()
|
||||||
|
|
||||||
|
@When("the user accept the signing phrase")
|
||||||
|
def step(context):
|
||||||
|
_walletScreen.acceptSigningPhrase()
|
||||||
|
|
||||||
|
@When("the user add watch only account with |any| and |any|")
|
||||||
|
def step(context, account_name, address):
|
||||||
|
_walletScreen.addWatchOnlyAccount(account_name, address)
|
||||||
|
|
||||||
|
@When("the user generate a new account with |any| and |any|")
|
||||||
|
def step(context, account_name, password):
|
||||||
|
_walletScreen.generateNewAccount(account_name, password)
|
||||||
|
|
||||||
|
@When("the user import a private key with |any| and |any| and |any|")
|
||||||
|
def step(context, account_name, password, private_key):
|
||||||
|
_walletScreen.importPrivateKey(account_name, password, private_key)
|
||||||
|
|
||||||
|
@When("the user import a seed phrase with |any| and |any| and |any|")
|
||||||
|
def step(context, account_name, password, mnemonic):
|
||||||
|
_walletScreen.importSeedPhrase(account_name, password, mnemonic)
|
||||||
|
|
||||||
|
@Then("the new account |any| is added")
|
||||||
|
def step(context, account_name):
|
||||||
|
_walletScreen.verifyAccountNameIsPresent(account_name)
|
|
@ -4,6 +4,6 @@ HOOK_SUB_PROCESSES=false
|
||||||
IMPLICITAUTSTART=0
|
IMPLICITAUTSTART=0
|
||||||
LANGUAGE=Python
|
LANGUAGE=Python
|
||||||
OBJECTMAPSTYLE=script
|
OBJECTMAPSTYLE=script
|
||||||
TEST_CASES=tst_statusLoginPassword tst_basicChatFlow
|
TEST_CASES=tst_statusLoginPassword tst_basicChatFlow tst_wallet
|
||||||
VERSION=3
|
VERSION=3
|
||||||
WRAPPERS=Qt
|
WRAPPERS=Qt
|
||||||
|
|
|
@ -95,7 +95,7 @@ Feature: Status Desktop Sign Up
|
||||||
When user signs up with username tester123 and password TesTEr16843/!@00
|
When user signs up with username tester123 and password TesTEr16843/!@00
|
||||||
Then the user lands on the signed in app
|
Then the user lands on the signed in app
|
||||||
When the user opens app settings screen
|
When the user opens app settings screen
|
||||||
And the user activates wallet and opens the wallets section
|
And the user activates wallet and opens the wallet settings
|
||||||
Then the 12 seed phrase address is 0x8285cb9bf17b23d64a489a8dad29163dd227d0fd displayed in the wallet
|
Then the 12 seed phrase address is 0x8285cb9bf17b23d64a489a8dad29163dd227d0fd displayed in the wallet
|
||||||
|
|
||||||
|
|
||||||
|
@ -127,7 +127,7 @@ Feature: Status Desktop Sign Up
|
||||||
When user signs up with username tester124 and password TesTEr16843/!@00
|
When user signs up with username tester124 and password TesTEr16843/!@00
|
||||||
Then the user lands on the signed in app
|
Then the user lands on the signed in app
|
||||||
When the user opens app settings screen
|
When the user opens app settings screen
|
||||||
And the user activates wallet and opens the wallets section
|
And the user activates wallet and opens the wallet settings
|
||||||
Then the 18 seed phrase address is 0xba1d0d6ef35df8751df5faf55ebd885ad0e877b0 displayed in the wallet
|
Then the 18 seed phrase address is 0xba1d0d6ef35df8751df5faf55ebd885ad0e877b0 displayed in the wallet
|
||||||
|
|
||||||
|
|
||||||
|
@ -165,7 +165,7 @@ Feature: Status Desktop Sign Up
|
||||||
When user signs up with username tester124 and password TesTEr16843/!@00
|
When user signs up with username tester124 and password TesTEr16843/!@00
|
||||||
Then the user lands on the signed in app
|
Then the user lands on the signed in app
|
||||||
When the user opens app settings screen
|
When the user opens app settings screen
|
||||||
And the user activates wallet and opens the wallets section
|
And the user activates wallet and opens the wallet settings
|
||||||
Then the 24 seed phrase address is 0x28cf6770664821a51984daf5b9fb1b52e6538e4b displayed in the wallet
|
Then the 24 seed phrase address is 0x28cf6770664821a51984daf5b9fb1b52e6538e4b displayed in the wallet
|
||||||
|
|
||||||
Scenario: User signs up with wrong imported seed phrase
|
Scenario: User signs up with wrong imported seed phrase
|
||||||
|
|
|
@ -0,0 +1,46 @@
|
||||||
|
Feature: Status Desktop Wallet
|
||||||
|
|
||||||
|
As a user I want to use the wallet
|
||||||
|
|
||||||
|
Background: Sign up & Enable wallet section
|
||||||
|
Given A first time user lands on the status desktop and generates new key
|
||||||
|
When user signs up with username tester123 and password TesTEr16843/!@00
|
||||||
|
Then the user lands on the signed in app
|
||||||
|
When the user opens app settings screen
|
||||||
|
When the user activates wallet and opens the wallet section
|
||||||
|
When the user accept the signing phrase
|
||||||
|
|
||||||
|
Scenario Outline: User add a watch only account
|
||||||
|
When the user add watch only account with <account_name> and <address>
|
||||||
|
Then the new account <account_name> is added
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
| account_name | address |
|
||||||
|
| one | 0x8397bc3c5a60a1883174f722403d63a8833312b7 |
|
||||||
|
| two | 0xf51ba8631618b9b3521ff4eb9adfd8a837455226 |
|
||||||
|
|
||||||
|
|
||||||
|
Scenario Outline: User generate a new account from wallet
|
||||||
|
When the user generate a new account with <account_name> and TesTEr16843/!@00
|
||||||
|
Then the new account <account_name> is added
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
| account_name |
|
||||||
|
| one |
|
||||||
|
| two |
|
||||||
|
|
||||||
|
Scenario Outline: User import a private key
|
||||||
|
When the user import a private key with <account_name> and TesTEr16843/!@00 and <private_key>
|
||||||
|
Then the new account <account_name> is added
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
| account_name | private_key |
|
||||||
|
| one | 8da4ef21b864d2cc526dbdb2a120bd2874c36c9d0a1fb7f8c63d7f7a8b41de8f |
|
||||||
|
|
||||||
|
Scenario Outline: User import a seed phrase
|
||||||
|
When the user import a seed phrase with <account_name> and TesTEr16843/!@00 and <seed_phrase>
|
||||||
|
Then the new account <account_name> is added
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
| account_name | seed_phrase |
|
||||||
|
| one | indoor dish desk flag debris potato excuse depart ticket judge file exit |
|
|
@ -0,0 +1,8 @@
|
||||||
|
source(findFile('scripts', 'python/bdd.py'))
|
||||||
|
|
||||||
|
setupHooks('../shared/scripts/bdd_hooks.py')
|
||||||
|
collectStepDefinitions('./steps', '../shared/steps', './shared/walletSteps')
|
||||||
|
|
||||||
|
def main():
|
||||||
|
testSettings.throwOnFailure = True
|
||||||
|
runFeatureFile('test.feature')
|
|
@ -164,6 +164,7 @@ StatusGridView {
|
||||||
width: grid.cellWidth - (Style.current.halfPadding/2)
|
width: grid.cellWidth - (Style.current.halfPadding/2)
|
||||||
height: (grid.cellHeight - Style.current.halfPadding)
|
height: (grid.cellHeight - Style.current.halfPadding)
|
||||||
textEdit.errorMessageCmp.visible: false
|
textEdit.errorMessageCmp.visible: false
|
||||||
|
textEdit.input.placeholder.objectName: "seedPhraseInputPlaceholder" + index
|
||||||
leftComponentText: index + 1
|
leftComponentText: index + 1
|
||||||
inputList: BIP39_en { }
|
inputList: BIP39_en { }
|
||||||
property int itemIndex: index
|
property int itemIndex: index
|
||||||
|
|
|
@ -34,6 +34,7 @@ Item {
|
||||||
Row {
|
Row {
|
||||||
spacing: Style.current.halfPadding
|
spacing: Style.current.halfPadding
|
||||||
StatusBaseText {
|
StatusBaseText {
|
||||||
|
objectName: "accountName"
|
||||||
font.pixelSize: 28
|
font.pixelSize: 28
|
||||||
font.bold: true
|
font.bold: true
|
||||||
text: currentAccount.name
|
text: currentAccount.name
|
||||||
|
|
|
@ -160,6 +160,7 @@ StatusModal {
|
||||||
leftPadding: Style.current.padding
|
leftPadding: Style.current.padding
|
||||||
rightPadding: Style.current.padding
|
rightPadding: Style.current.padding
|
||||||
height: Style.dp(400)
|
height: Style.dp(400)
|
||||||
|
objectName: "AddAccountModalContent"
|
||||||
|
|
||||||
Column {
|
Column {
|
||||||
property alias accountNameInput: accountNameInput
|
property alias accountNameInput: accountNameInput
|
||||||
|
@ -176,10 +177,12 @@ StatusModal {
|
||||||
id: passwordInput
|
id: passwordInput
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
|
|
||||||
placeholderText: qsTr("Enter your password…")
|
placeholderText: qsTr("Enter your password...")
|
||||||
label: qsTr("Password")
|
label: qsTr("Password")
|
||||||
textField.echoMode: TextInput.Password
|
textField.echoMode: TextInput.Password
|
||||||
validationError: root.passwordValidationError
|
validationError: root.passwordValidationError
|
||||||
|
textField.objectName: "accountModalPassword"
|
||||||
|
validationError: popup.passwordValidationError
|
||||||
inputLabel.font.pixelSize: 15
|
inputLabel.font.pixelSize: 15
|
||||||
inputLabel.font.weight: Font.Normal
|
inputLabel.font.weight: Font.Normal
|
||||||
onTextChanged: {
|
onTextChanged: {
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
Subproject commit a8c860474530eb93459ec56321ad88b08cb03ec9
|
Subproject commit 28b76ce4ca6c5f1b1a43b0317116ed4ef0e43e37
|
Loading…
Reference in New Issue