feat(@DesktopApp): Login- 12, 18, 24 Seed Phrase

https://github.com/status-im/status-desktop/issues/6274
https://github.com/status-im/status-desktop/issues/6275
https://github.com/status-im/status-desktop/issues/6276

Login for 12, 18 and 24 seed Phrase
This commit is contained in:
femi 2022-07-08 00:56:21 +01:00 committed by Olufemi Ade-Olusile
parent 00dc09fb18
commit 3bdba429e3
10 changed files with 320 additions and 138 deletions

View File

@ -44,6 +44,13 @@ def is_loaded(objName: str):
except LookupError:
return False, obj
def is_Visible(objName: str):
try:
squish.findObject(getattr(names, objName))
return True
except LookupError:
return False
# It checks if the given object is visible and enabled.
def is_visible_and_enabled(obj):
@ -66,24 +73,25 @@ def click_obj(obj):
except LookupError:
return False
def get_obj(objName: str):
obj = squish.findObject(getattr(names, objName))
return obj
# It executes the click action into object with given object name:
def click_obj_by_name(objName: str):
try:
obj = squish.waitForObject(getattr(names, objName))
squish.mouseClick(obj, squish.Qt.LeftButton)
return True
except LookupError:
return False
def scroll_obj_by_name(objName: str):
obj = squish.waitForObject(getattr(names, objName))
squish.mouseWheel(obj, 206, 35, 0, -1, squish.Qt.ControlModifier)
def check_obj_by_name(objName: str):
try:
obj = squish.waitForObject(getattr(names, objName))
obj.checked = True
return True
except LookupError:
return False
def is_text_matching(objName: str, text: str):
@ -92,6 +100,7 @@ def is_text_matching(objName: str, text: str):
test.compare(obj.text, text, "Found the following text " + text)
return True
except LookupError:
print(objName + " is not found, please check app for correct object and update object mapper")
return False

View File

@ -14,3 +14,7 @@ def verify_screen(objName: str, timeout: int=_MAX_WAIT_OBJ_TIMEOUT):
def verify_object_enabled(objName: str, timeout: int=_MIN_WAIT_OBJ_TIMEOUT, condition: bool=True):
result = is_loaded_visible_and_enabled(objName, timeout)
test.verify(result, condition)
def verify_text_matching(objName: str, text: str):
test.verify(is_text_matching(objName, text), True)

View File

@ -15,12 +15,20 @@ from drivers.SquishDriverVerification import *
class MainScreenComponents(Enum):
ADVANCED_OPTION = "advanced_StatusBaseText"
ADVANCED_OPTION: str = "advanced_StatusBaseText"
SCROLL_BAR: str = "o_ScrollBar"
WALLET_ITEM: str = "wallet_AppMenu_StatusNavigationListItem"
class AdvancedOptionScreen(Enum):
ACTIVATE_OR_DEACTIVATE_WALLET = "o_StatusSettingsLineButton"
I_UNDERSTAND_POP_UP = "i_understand_StatusBaseText"
ACTIVATE_OR_DEACTIVATE_WALLET: str = "o_StatusSettingsLineButton"
I_UNDERSTAND_POP_UP: str = "i_understand_StatusBaseText"
class WalletSettingsScreen(Enum):
TWELVE_SEED_PHRASE: str = "twelve_seed_phrase_address"
EIGHTEEN_SEED_PHRASE: str = "eighteen_seed_phrase_address"
TWENTY_FOUR_SEED_PHRASE: str = "twenty_four_seed_phrase_address"
class SettingsScreen:
@ -28,7 +36,25 @@ class SettingsScreen:
def __init__(self):
verify_screen(MainScreenComponents.ADVANCED_OPTION.value)
def activate_wallet(self):
click_obj_by_name(MainScreenComponents.ADVANCED_OPTION.value)
click_obj_by_name(AdvancedOptionScreen.ACTIVATE_OR_DEACTIVATE_WALLET.value)
click_obj_by_name(AdvancedOptionScreen.I_UNDERSTAND_POP_UP.value)
def activate_open_wallet_section(self):
scroll_obj_by_name(MainScreenComponents.SCROLL_BAR.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.I_UNDERSTAND_POP_UP.value)
verify_object_enabled(MainScreenComponents.WALLET_ITEM.value)
click_obj_by_name(MainScreenComponents.WALLET_ITEM.value)
def verify_address(self, phrase: str, address: str):
if phrase =='18':
verify_text_matching(WalletSettingsScreen.EIGHTEEN_SEED_PHRASE.value, address)
if phrase == '24':
verify_text_matching(WalletSettingsScreen.TWENTY_FOUR_SEED_PHRASE.value, address)
if phrase == '12':
verify_text_matching(WalletSettingsScreen.TWELVE_SEED_PHRASE.value, address)

View File

@ -16,9 +16,9 @@ from drivers.SquishDriverVerification import *
class MainScreenComponents(Enum):
STATUS_ICON = "mainWindow_statusIcon_StatusIcon_2"
PUBLIC_CHAT_ICON = "mainWindow_dropRectangle_Rectangle"
PUBLIC_CHAT_ICON = "mainWindow_public_chat_icon_StatusIcon"
JOIN_PUBLIC_CHAT = "join_public_chat_StatusMenuItemDelegate"
SETTINGS_BUTTON = "statusIcon_StatusIcon_4"
SETTINGS_BUTTON = "settings_icon_StatusIcon"
class ChatNamePopUp(Enum):
@ -30,10 +30,10 @@ class ChatNamePopUp(Enum):
class StatusMainScreen:
def __init__(self):
verify_screen(MainScreenComponents.STATUS_ICON.value)
verify_screen(MainScreenComponents.PUBLIC_CHAT_ICON.value)
def joinChatRoom(self, room):
click_obj_by_name(MainScreenComponents.STATUS_ICON.value)
def joinChatRoom(self, room: str):
click_obj_by_name(MainScreenComponents.PUBLIC_CHAT_ICON.value)
click_obj_by_name(MainScreenComponents.JOIN_PUBLIC_CHAT.value)
type(ChatNamePopUp.INPUT_ROOM_TOPIC_TEXT.value, room)
click_obj_by_name(ChatNamePopUp.START_CHAT.value)

View File

@ -14,36 +14,37 @@ from drivers.SquishDriverVerification import *
class AgreementPopUp(Enum):
OK_GOT_IT_BUTTON = "mainWindow_Ok_got_it_StatusBaseText"
ACKNOWLEDGE_CHECKBOX = "acknowledge_checkbox"
TERMS_OF_USE_CHECK_BOX = "termsOfUseCheckBox_StatusCheckBox"
GET_STARTED_BUTTON = "getStartedStatusButton_StatusButton"
OK_GOT_IT_BUTTON: str = "mainWindow_Ok_got_it_StatusBaseText"
ACKNOWLEDGE_CHECKBOX: str = "acknowledge_checkbox"
TERMS_OF_USE_CHECK_BOX: str = "termsOfUseCheckBox_StatusCheckBox"
GET_STARTED_BUTTON: str = "getStartedStatusButton_StatusButton"
class SignUpComponents(Enum):
NEW_TO_STATUS = "mainWindow_I_am_new_to_Status_StatusBaseText"
GENERATE_NEW_KEYS = "mainWindow_Generate_new_keys_StatusBaseText"
USERNAME_INPUT = "mainWindow_edit_TextEdit"
NEXT_BUTTON = "mainWindow_Next_StatusBaseText"
NEXT_STATUS_BUTTON = "mainWindow_nextBtn_StatusButton"
NEW_PASSWORD_BUTTON = "mainWindow_New_password_PlaceholderText"
PASSWORD_INPUT = "loginView_passwordInput"
CONFIRM_PASSWORD = "mainWindow_Confirm_password_PlaceholderText"
PASSWORD_CONFIRM_INPUT = "mainWindow_inputValue_StyledTextField"
CREATE_PASSWORD = "mainWindow_Create_password_StatusBaseText"
CONFIRM_PASSWORD_AGAIN = "mainWindow_Confirm_you_password_again_PlaceholderText"
FINALIZE_PASSWORD_STEP = "mainWindow_Finalise_Status_Password_Creation_StatusBaseText"
PASSWORD_PREFERENCE = "mainWindow_I_prefer_to_use_my_password_StatusBaseText"
NEW_TO_STATUS: str = "mainWindow_I_am_new_to_Status_StatusBaseText"
GENERATE_NEW_KEYS: str = "mainWindow_Generate_new_keys_StatusBaseText"
USERNAME_INPUT: str = "mainWindow_edit_TextEdit"
NEXT_BUTTON: str = "mainWindow_Next_StatusBaseText"
WELCOME_TO_STATUS: str = "mainWindow_Welcome_to_Status_StyledText"
NEXT_STATUS_BUTTON: str = "mainWindow_nextBtn_StatusButton"
NEW_PASSWORD_BUTTON: str = "mainWindow_New_password_PlaceholderText"
PASSWORD_INPUT: str = "loginView_passwordInput"
CONFIRM_PASSWORD: str = "mainWindow_Confirm_password_PlaceholderText"
PASSWORD_CONFIRM_INPUT: str = "mainWindow_inputValue_StyledTextField"
CREATE_PASSWORD: str = "mainWindow_Create_password_StatusBaseText"
CONFIRM_PASSWORD_AGAIN: str = "mainWindow_Confirm_you_password_again_PlaceholderText"
FINALIZE_PASSWORD_STEP: str = "mainWindow_Finalise_Status_Password_Creation_StatusBaseText"
PASSWORD_PREFERENCE: str = "mainWindow_I_prefer_to_use_my_password_StatusBaseText"
class SeedPhraseComponents(Enum):
IMPORT_A_SEED_TEXT = "import_a_seed_phrase_StatusBaseText"
IMPORT_A_SEED_BUTTON = "mainWindow_button_StatusButton"
TWELVE_WORDS_BUTTON = "switchTabBar_12_words_StatusBaseText"
EIGHTEEN_WORDS_BUTTON = "switchTabBar_18_words_StatusBaseText"
TWENTY_FOUR_BUTTON = "switchTabBar_24_words_StatusBaseText"
SEEDS_WORDS_TEXTFIELD = "mainWindow_placeholder_StatusBaseText"
SUBMIT_BUTTON = "mainWindow_submitButton_StatusButton"
IMPORT_A_SEED_TEXT: str = "import_a_seed_phrase_StatusBaseText"
IMPORT_A_SEED_BUTTON: str = "mainWindow_button_StatusButton"
TWELVE_WORDS_BUTTON: str = "switchTabBar_12_words_StatusBaseText"
EIGHTEEN_WORDS_BUTTON: str = "switchTabBar_18_words_StatusBaseText"
TWENTY_FOUR_BUTTON: str = "switchTabBar_24_words_StatusBaseText"
SEEDS_WORDS_TEXTFIELD: str = "mainWindow_placeholder_StatusBaseText"
SUBMIT_BUTTON: str = "mainWindow_submitButton_StatusButton"
class StatusWelcomeScreen:
@ -60,7 +61,7 @@ class StatusWelcomeScreen:
click_obj_by_name(SeedPhraseComponents.IMPORT_A_SEED_TEXT.value)
click_obj_by_name(SeedPhraseComponents.IMPORT_A_SEED_BUTTON.value)
def input_seed_phrase(self, seed, words, occurrences):
def input_seed_phrase(self, seed: str, words: str, occurrence: str):
if words =='18':
click_obj_by_name(SeedPhraseComponents.EIGHTEEN_WORDS_BUTTON.value)
@ -69,13 +70,11 @@ class StatusWelcomeScreen:
if words == '12':
click_obj_by_name(SeedPhraseComponents.TWELVE_WORDS_BUTTON.value)
type(SeedPhraseComponents.SEEDS_WORDS_TEXTFIELD.value, seed)
def input_username_and_password_and_finalize_sign_up(self, username, password):
type(SeedPhraseComponents.SEEDS_WORDS_TEXTFIELD.value, seed)
def input_username_and_password_and_finalize_sign_up(self, username: str, password: str):
self.input_username(username)
self.input_password(password)
@ -87,15 +86,15 @@ class StatusWelcomeScreen:
click_obj_by_name(SignUpComponents.PASSWORD_PREFERENCE.value)
def input_username(self, username):
def input_username(self, username: str):
type(SignUpComponents.USERNAME_INPUT.value, username)
click_obj_by_name(SignUpComponents.NEXT_BUTTON.value)
click_obj_by_name(SignUpComponents.NEXT_STATUS_BUTTON.value)
def input_password(self, password):
def input_password(self, password: str):
type(SignUpComponents.PASSWORD_INPUT.value, password)
def input_confirmation_password(self, password):
def input_confirmation_password(self, password: str):
type(SignUpComponents.PASSWORD_CONFIRM_INPUT.value, password)
click_obj_by_name(SignUpComponents.CREATE_PASSWORD.value)
@ -104,5 +103,6 @@ class StatusWelcomeScreen:
click_obj_by_name(AgreementPopUp.ACKNOWLEDGE_CHECKBOX.value)
check_obj_by_name(AgreementPopUp.TERMS_OF_USE_CHECK_BOX.value)
click_obj_by_name(AgreementPopUp.GET_STARTED_BUTTON.value)
verify_text_matching(SignUpComponents.WELCOME_TO_STATUS.value, "Welcome to Status")
click_obj_by_name(SignUpComponents.NEW_TO_STATUS.value)

View File

@ -58,30 +58,19 @@ mainWindow_statusIcon_StatusIcon_2 = {"container": statusDesktop_mainWindow, "id
scrollView_Type_a_message_PlaceholderText = {"container": mainWindow_scrollView_ScrollView, "text": "Type a message.", "type": "PlaceholderText", "unnamed": 1, "visible": True}
import_a_seed_phrase_StatusBaseText = {"container": statusDesktop_mainWindow, "text": "Import a seed phrase", "type": "StatusBaseText", "unnamed": 1, "visible": True}
mainWindow_placeholder_StatusBaseText = {"container": statusDesktop_mainWindow, "id": "placeholder", "type": "StatusBaseText", "unnamed": 1, "visible": True}
mainWindow_placeholder_StatusBaseText_2 = {"container": statusDesktop_mainWindow, "id": "placeholder", "occurrence": 7, "type": "StatusBaseText", "unnamed": 1, "visible": True}
mainWindow_Image = {"container": statusDesktop_mainWindow, "source": "qrc:/imports/assets/png/traffic_lights/close.png", "type": "Image", "unnamed": 1, "visible": True}
mainWindow_edit_TextEdit_2 = {"container": statusDesktop_mainWindow, "id": "edit", "occurrence": 7, "type": "TextEdit", "unnamed": 1, "visible": True}
mainWindow_edit_TextEdit_3 = {"container": statusDesktop_mainWindow, "id": "edit", "occurrence": 2, "type": "TextEdit", "unnamed": 1, "visible": True}
mainWindow_placeholder_StatusBaseText_3 = {"container": statusDesktop_mainWindow, "id": "placeholder", "occurrence": 5, "type": "StatusBaseText", "unnamed": 1, "visible": True}
mainWindow_edit_TextEdit_4 = {"container": statusDesktop_mainWindow, "id": "edit", "occurrence": 8, "type": "TextEdit", "unnamed": 1, "visible": True}
mainWindow_btnOk_StatusButton = {"container": statusDesktop_mainWindow, "id": "btnOk", "type": "StatusButton", "unnamed": 1, "visible": True}
mainWindow_placeholder_StatusBaseText_4 = {"container": statusDesktop_mainWindow, "id": "placeholder", "occurrence": 6, "type": "StatusBaseText", "unnamed": 1, "visible": True}
mainWindow_Rectangle_2 = {"container": statusDesktop_mainWindow, "occurrence": 32, "type": "Rectangle", "unnamed": 1, "visible": True}
mainWindow_switchTabBar_StatusSwitchTabBar = {"container": statusDesktop_mainWindow, "id": "switchTabBar", "type": "StatusSwitchTabBar", "unnamed": 1, "visible": True}
switchTabBar_18_words_StatusBaseText = {"container": mainWindow_switchTabBar_StatusSwitchTabBar, "text": "18 words", "type": "StatusBaseText", "unnamed": 1, "visible": True}
switchTabBar_24_words_StatusBaseText = {"container": mainWindow_switchTabBar_StatusSwitchTabBar, "text": "24 words", "type": "StatusBaseText", "unnamed": 1, "visible": True}
switchTabBar_12_words_StatusBaseText = {"container": mainWindow_switchTabBar_StatusSwitchTabBar, "text": "12 words", "type": "StatusBaseText", "unnamed": 1, "visible": True}
mainWindow_placeholder_StatusBaseText_5 = {"container": statusDesktop_mainWindow, "id": "placeholder", "occurrence": 2, "type": "StatusBaseText", "unnamed": 1, "visible": True}
mainWindow_placeholder_StatusBaseText_6 = {"container": statusDesktop_mainWindow, "id": "placeholder", "occurrence": 8, "type": "StatusBaseText", "unnamed": 1, "visible": True}
mainWindow_placeholder_StatusBaseText_7 = {"container": statusDesktop_mainWindow, "id": "placeholder", "occurrence": 3, "type": "StatusBaseText", "unnamed": 1, "visible": True}
mainWindow_placeholder_StatusBaseText_8 = {"container": statusDesktop_mainWindow, "id": "placeholder", "occurrence": 9, "type": "StatusBaseText", "unnamed": 1, "visible": True}
mainWindow_placeholder_StatusBaseText_9 = {"container": statusDesktop_mainWindow, "id": "placeholder", "occurrence": 4, "type": "StatusBaseText", "unnamed": 1, "visible": True}
mainWindow_placeholder_StatusBaseText_10 = {"container": statusDesktop_mainWindow, "id": "placeholder", "occurrence": 10, "type": "StatusBaseText", "unnamed": 1, "visible": True}
mainWindow_placeholder_StatusBaseText_11 = {"container": statusDesktop_mainWindow, "id": "placeholder", "occurrence": 11, "type": "StatusBaseText", "unnamed": 1, "visible": True}
mainWindow_grid_GridView = {"container": statusDesktop_mainWindow, "id": "grid", "type": "GridView", "unnamed": 1, "visible": True}
grid_seedWordInput_StatusSeedPhraseInput = {"container": mainWindow_grid_GridView, "id": "seedWordInput", "index": 5, "type": "StatusSeedPhraseInput", "unnamed": 1, "visible": True}
seedWordInput_background_Rectangle = {"container": grid_seedWordInput_StatusSeedPhraseInput, "id": "background", "type": "Rectangle", "unnamed": 1, "visible": True}
mainWindow_placeholder_StatusBaseText_12 = {"container": statusDesktop_mainWindow, "id": "placeholder", "occurrence": 12, "type": "StatusBaseText", "unnamed": 1, "visible": True}
mainWindow_statusIcon_StatusIcon_3 = {"container": statusDesktop_mainWindow, "id": "statusIcon", "occurrence": 3, "source": "qrc:/StatusQ/src/assets/img/icons/arrow-left.svg", "type": "StatusIcon", "unnamed": 1, "visible": True}
mainWindow_statusIcon_StatusIcon_4 = {"container": statusDesktop_mainWindow, "id": "statusIcon", "source": "qrc:/StatusQ/src/assets/img/icons/arrow-left.svg", "type": "StatusIcon", "unnamed": 1, "visible": True}
mainWindow_Rectangle_3 = {"container": statusDesktop_mainWindow, "occurrence": 4, "type": "Rectangle", "unnamed": 1, "visible": True}
@ -111,3 +100,48 @@ mainWindow_ScrollView_2 = {"container": statusDesktop_mainWindow, "occurrence":
o_StatusSettingsLineButton = {"container": mainWindow_ScrollView_2, "occurrence": 4, "type": "StatusSettingsLineButton", "unnamed": 1, "visible": True}
navBarListView_StatusNavBarTabButton_2 = {"checkable": True, "container": mainWindow_navBarListView_ListView, "occurrence": 2, "type": "StatusNavBarTabButton", "unnamed": 1, "visible": True}
statusIcon_StatusIcon_4 = {"container": navBarListView_StatusNavBarTabButton_2, "id": "statusIcon", "source": "qrc:/StatusQ/src/assets/img/icons/settings.svg", "type": "StatusIcon", "unnamed": 1, "visible": True}
o_Flickable = {"container": mainWindow_ScrollView, "type": "Flickable", "unnamed": 1, "visible": True}
settingsMenuDelegate_StatusNavigationListItem_2 = {"container": mainWindow_ScrollView, "id": "settingsMenuDelegate", "occurrence": 5, "type": "StatusNavigationListItem", "unnamed": 1, "visible": True}
appsMenuDelegate_StatusNavigationListItem = {"container": mainWindow_ScrollView, "id": "appsMenuDelegate", "occurrence": 2, "type": "StatusNavigationListItem", "unnamed": 1, "visible": True}
twelve_seed_phrase_address = {"container": mainWindow_ScrollView_2, "text": "0x8285cb9bf17b23d64a489a8dad29163dd227d0fd", "type": "StatusBaseText", "unnamed": 1, "visible": True}
o_Flickable_2 = {"container": mainWindow_ScrollView_2, "type": "Flickable", "unnamed": 1, "visible": True}
appsMenuDelegate_StatusNavigationListItem_2 = {"container": mainWindow_ScrollView, "id": "appsMenuDelegate", "occurrence": 3, "type": "StatusNavigationListItem", "unnamed": 1, "visible": True}
settingsMenuDelegate_StatusNavigationListItem_3 = {"container": mainWindow_ScrollView, "id": "settingsMenuDelegate", "occurrence": 2, "type": "StatusNavigationListItem", "unnamed": 1, "visible": True}
settingsMenuDelegate_StatusNavigationListItem_4 = {"container": mainWindow_ScrollView, "id": "settingsMenuDelegate", "type": "StatusNavigationListItem", "unnamed": 1, "visible": True}
settingsMenuDelegate_StatusNavigationListItem_5 = {"container": mainWindow_ScrollView, "id": "settingsMenuDelegate", "occurrence": 6, "type": "StatusNavigationListItem", "unnamed": 1, "visible": True}
follow_your_interests_in_one_of_the_many_Public_Chats_StatusBaseText = {"container": mainWindow_ScrollView, "text": "Follow your interests in one of the many Public Chats.", "type": "StatusBaseText", "unnamed": 1, "visible": True}
notifications_Sounds_StatusBaseText = {"container": mainWindow_ScrollView, "text": "Notifications & Sounds", "type": "StatusBaseText", "unnamed": 1, "visible": True}
wallet_StatusBaseText = {"container": mainWindow_ScrollView, "text": "Wallet", "type": "StatusBaseText", "unnamed": 1, "visible": True}
switchItem_StatusSwitch = {"checkable": True, "container": mainWindow_ScrollView_2, "id": "switchItem", "occurrence": 2, "type": "StatusSwitch", "unnamed": 1, "visible": True}
settingsMenuDelegate_StatusNavigationListItem_6 = {"container": mainWindow_ScrollView, "id": "settingsMenuDelegate", "occurrence": 3, "type": "StatusNavigationListItem", "unnamed": 1, "visible": True}
circle_Rectangle = {"container": mainWindow_ScrollView_2, "id": "circle", "occurrence": 2, "type": "Rectangle", "unnamed": 1, "visible": True}
o_WalletAccountDelegate = {"container": mainWindow_ScrollView_2, "type": "WalletAccountDelegate", "unnamed": 1, "visible": True}
statusIcon_StatusIcon_5 = {"container": mainWindow_ScrollView_2, "id": "statusIcon", "source": "qrc:/StatusQ/src/assets/img/icons/filled-account.svg", "type": "StatusIcon", "unnamed": 1, "visible": True}
mainWindow_Wallet_StatusBaseText = {"container": statusDesktop_mainWindow, "occurrence": 2, "text": "Wallet", "type": "StatusBaseText", "unnamed": 1, "visible": True}
o_StatusListItem = {"container": mainWindow_ScrollView_2, "occurrence": 2, "type": "StatusListItem", "unnamed": 1, "visible": True}
mainWindow_Testnet_Mode_StatusSwitch = {"checkable": True, "container": statusDesktop_mainWindow, "text": "Testnet Mode", "type": "StatusSwitch", "unnamed": 1, "visible": True}
o_crypto_StyledText = {"container": mainWindow_ScrollView, "text": "#crypto", "type": "StyledText", "unnamed": 1, "visible": True}
emptyViewAndSuggestions_EmptyViewPanel = {"container": mainWindow_ScrollView, "id": "emptyViewAndSuggestions", "type": "EmptyViewPanel", "unnamed": 1, "visible": True}
o_vr_ar_StyledText = {"container": mainWindow_ScrollView, "text": "#vr-ar", "type": "StyledText", "unnamed": 1, "visible": True}
o_SuggestedChannel = {"container": mainWindow_ScrollView, "occurrence": 64, "type": "SuggestedChannel", "unnamed": 1, "visible": True}
o_status_assemble_StyledText = {"container": mainWindow_ScrollView, "text": "#status-assemble", "type": "StyledText", "unnamed": 1, "visible": True}
mainWindow_statusIcon_StatusIcon_5 = {"container": statusDesktop_mainWindow, "id": "statusIcon", "source": "qrc:/StatusQ/src/assets/img/icons/chevron-down.svg", "type": "StatusIcon", "unnamed": 1, "visible": True}
o_AccountMenuItemPanel = {"checkable": False, "container": statusDesktop_mainWindow_overlay, "enabled": True, "occurrence": 2, "type": "AccountMenuItemPanel", "unnamed": 1, "visible": True}
mainWindow_walkieTalkieImage_Image = {"container": statusDesktop_mainWindow, "id": "walkieTalkieImage", "source": "qrc:/imports/assets/png/chat/chat@2x.png", "type": "Image", "unnamed": 1, "visible": True}
eighteen_seed_phrase_address = {"container": mainWindow_ScrollView_2, "text": "0xba1d0d6ef35df8751df5faf55ebd885ad0e877b0", "type": "StatusBaseText", "unnamed": 1, "visible": True}
typeRectangle_Rectangle = {"container": mainWindow_ScrollView_2, "id": "typeRectangle", "type": "Rectangle", "unnamed": 1, "visible": True}
mainWindow_StatusFlatButton = {"container": statusDesktop_mainWindow, "type": "StatusFlatButton", "unnamed": 1, "visible": True}
walletAccount_WalletAccountDelegate = {"container": mainWindow_ScrollView_2, "objectName": "walletAccount", "type": "WalletAccountDelegate", "visible": True}
twenty_four_seed_phrase_address = {"container": mainWindow_ScrollView_2, "text": "0x28cf6770664821a51984daf5b9fb1b52e6538e4b", "type": "StatusBaseText", "unnamed": 1, "visible": True}
settings_icon_StatusIcon = {"container": navBarListView_StatusNavBarTabButton, "objectName": "settings-icon", "source": "qrc:/StatusQ/src/assets/img/icons/settings.svg", "type": "StatusIcon", "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}
o_ScrollBar = {"container": mainWindow_ScrollView, "type": "ScrollBar", "unnamed": 1, "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_Rectangle_5 = {"container": statusDesktop_mainWindow, "occurrence": 3, "type": "Rectangle", "unnamed": 1, "visible": True}
mainWindow_Welcome_to_Status_StyledText = {"container": statusDesktop_mainWindow, "text": "Welcome to Status", "type": "StyledText", "unnamed": 1, "visible": True}
mainWindow_Your_fully_decentralized_gateway_to_Ethereum_and_Web3_Crypto_wallet_privacy_first_group_chat_and_dApp_browser_StyledText = {"container": statusDesktop_mainWindow, "text": "Your fully decentralized gateway to Ethereum and Web3. Crypto wallet, privacy first group chat, and dApp browser.", "type": "StyledText", "unnamed": 1, "visible": True}
mainWindow_I_already_use_Status_StatusBaseText = {"container": statusDesktop_mainWindow, "text": "I already use Status", "type": "StatusBaseText", "unnamed": 1, "visible": True}
mainWindow_Enter_a_seed_phrase_StatusBaseText = {"container": statusDesktop_mainWindow, "text": "Enter a seed phrase", "type": "StatusBaseText", "unnamed": 1, "visible": True}

View File

@ -7,11 +7,15 @@ _settingsScreen =SettingsScreen()
@When("the user opens app settings screen")
def step(context):
def step(context: any):
_statusMain.open_settings()
@When("the user activates wallet")
def step(context):
_settingsScreen.activate_wallet()
@When("the user activates wallet and opens the wallets section")
def step(context: any):
_settingsScreen.activate_open_wallet_section()
@Then("the |any| seed phrase address is |any| displayed in the wallet")
def step(context: any, phrase :str, address: str):
_settingsScreen.verify_address(phrase, address)

View File

@ -11,88 +11,191 @@
Feature: Status Desktop Sign Up
As a user I want to Sign-up into the Status Desktop application.
The following scenarios cover Sign up process.
As a user I want to Sign-up into the Status Desktop application.
The following scenarios cover Sign up process.
Scenario: User signs up and signs in with password
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
Scenario: User signs up and signs in with password
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
Scenario Outline: User cannot sign up with wrong username format
Given A first time user lands on the status desktop and generates new key
When user inputs the following <username> with ui-component mainWindow_edit_TextEdit
Then the following ui-component mainWindow_Next_StatusBaseText is not enabled
Scenario Outline: User cannot sign up with wrong username format
Given A first time user lands on the status desktop and generates new key
When user inputs the following <username> with ui-component mainWindow_edit_TextEdit
Then the following ui-component mainWindow_Next_StatusBaseText is not enabled
Examples:
| username |
| Athl |
| Nervo |
| Gra |
| tester3@ |
Examples:
| username |
| Athl |
| Nervo |
| Gra |
| tester3@ |
Scenario Outline: User cannot sign up with wrong password format
Given A first time user lands on the status desktop and generates new key
When the user inputs username <username>
Scenario Outline: User cannot sign up with wrong password format
Given A first time user lands on the status desktop and generates new key
When the user inputs username <username>
# Input wrong password format in both new password and confirmation input and verify create password button is not enabled
When user inputs the following <wrongpassword> with ui-component loginView_passwordInput
And user inputs the following <wrongpassword> with ui-component mainWindow_inputValue_StyledTextField
Then the following ui-component mainWindow_Create_password_StatusBaseText is not enabled
# Input wrong password format in both new password and confirmation input and verify create password button is not enabled
When user inputs the following <wrongpassword> with ui-component loginView_passwordInput
And user inputs the following <wrongpassword> with ui-component mainWindow_inputValue_StyledTextField
Then the following ui-component mainWindow_Create_password_StatusBaseText is not enabled
# Input right password format in new password input but incorrect in confirmation password input and verify create password button is not enabled
When user inputs the following <password> with ui-component loginView_passwordInput
And user inputs the following <wrongpassword> with ui-component mainWindow_inputValue_StyledTextField
Then the following ui-component mainWindow_Create_password_StatusBaseText is not enabled
# Input right password format in new password input but incorrect in confirmation password input and verify create password button is not enabled
When user inputs the following <password> with ui-component loginView_passwordInput
And user inputs the following <wrongpassword> with ui-component mainWindow_inputValue_StyledTextField
Then the following ui-component mainWindow_Create_password_StatusBaseText is not enabled
Examples:
| username | wrongpassword | password |
| tester123 | Invalid34 | TesTEr16843/!@00 |
| tester124 | badP | TesTEr16843/!@01 |
| tester124 | bad2!s | TesTEr16843/!@01 |
Examples:
| username | wrongpassword | password |
| tester123 | Invalid34 | TesTEr16843/!@00 |
| tester124 | badP | TesTEr16843/!@01 |
| tester124 | bad2!s | TesTEr16843/!@01 |
Scenario Outline: User cannot finish Sign Up and Sign In process with wrong password
Given A first time user lands on the status desktop and generates new key
When the user inputs username <username>
Scenario Outline: User cannot finish Sign Up and Sign In process with wrong password
Given A first time user lands on the status desktop and generates new key
When the user inputs username <username>
# Input correct password format in both new password and confirmation input
When user inputs the following <password> with ui-component loginView_passwordInput
And user inputs the following <password> with ui-component mainWindow_inputValue_StyledTextField
And user clicks on the following ui-component mainWindow_Create_password_StatusBaseText
# Input correct password format in both new password and confirmation input
When user inputs the following <password> with ui-component loginView_passwordInput
And user inputs the following <password> with ui-component mainWindow_inputValue_StyledTextField
And user clicks on the following ui-component mainWindow_Create_password_StatusBaseText
# Input wrong password in final password input and verify password creation button is not enabled
When user inputs the following <wrongpassword> with ui-component loginView_passwordInput
Then the following ui-component mainWindow_Finalise_Status_Password_Creation_StatusBaseText is not enabled
# Input wrong password in final password input and verify password creation button is not enabled
When user inputs the following <wrongpassword> with ui-component loginView_passwordInput
Then the following ui-component mainWindow_Finalise_Status_Password_Creation_StatusBaseText is not enabled
Examples:
| username | wrongpassword | password |
| tester123 | Invalid34 | TesTEr16843/!@00 |
| tester123 | TesTEr16843/!@) | TesTEr16843/!@01 |
Examples:
| username | wrongpassword | password |
| tester123 | Invalid34 | TesTEr16843/!@00 |
| tester123 | TesTEr16843/!@) | TesTEr16843/!@01 |
Scenario: User signs up with imported seed phrase
Scenario: User signs up with imported 12 seed phrase
Given A first time user lands on the status desktop and navigates to import seed phrase
When The user inputs 12 seed phrases
| phrases | occurrence |
| lawn | 1 |
| corn | 3 |
| paddle | 5 |
| survey | 7 |
| shrimp | 9 |
| mind | 11 |
| select | 2 |
| gaze | 4 |
| arrest | 6 |
| pear | 8 |
| reduce | 10 |
| scan | 12 |
And user clicks on the following ui-component mainWindow_submitButton_StatusButton
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
And the user activates wallet
Given A first time user lands on the status desktop and navigates to import seed phrase
When The user inputs 12 seed phrases
| phrases | occurrence |
| lawn | 1 |
| corn | 3 |
| paddle | 5 |
| survey | 7 |
| shrimp | 9 |
| mind | 11 |
| select | 2 |
| gaze | 4 |
| arrest | 6 |
| pear | 8 |
| reduce | 10 |
| scan | 12 |
And user clicks on the following ui-component mainWindow_submitButton_StatusButton
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
And the user activates wallet and opens the wallets section
Then the 12 seed phrase address is 0x8285cb9bf17b23d64a489a8dad29163dd227d0fd displayed in the wallet
Scenario: User signs up with imported 18 seed phrase
Given A first time user lands on the status desktop and navigates to import seed phrase
When The user inputs 18 seed phrases
| phrases | occurrence |
| flip | 1 |
| foam | 4 |
| time | 7 |
| sight | 10 |
| scheme | 13 |
| describe | 16 |
| candy | 2 |
| erosion | 5 |
| layer | 8 |
| depth | 11 |
| extend | 14 |
| dish | 17 |
| fog | 3 |
| seven | 6 |
| budget | 9 |
| denial | 12 |
| body | 15 |
| device | 18 |
And user clicks on the following ui-component mainWindow_submitButton_StatusButton
When user signs up with username tester124 and password TesTEr16843/!@00
Then the user lands on the signed in app
When the user opens app settings screen
And the user activates wallet and opens the wallets section
Then the 18 seed phrase address is 0xba1d0d6ef35df8751df5faf55ebd885ad0e877b0 displayed in the wallet
Scenario: User signs up with imported 24 seed phrase
Given A first time user lands on the status desktop and navigates to import seed phrase
When The user inputs 24 seed phrases
| phrases | occurrence |
| abstract | 1 |
| maple | 5 |
| license | 9 |
| damage | 13 |
| margin | 17 |
| marine | 21 |
| prevent | 2 |
| neutral | 6 |
| slender | 10 |
| unique | 14 |
| sphere | 18 |
| drama | 22 |
| exact | 3 |
| pottery | 7 |
| just | 11 |
| consider | 15 |
| debate | 19 |
| dial | 23 |
| oil | 4 |
| deny | 8 |
| timber | 12 |
| angle | 16 |
| exhibit | 20 |
| actress | 24 |
And user clicks on the following ui-component mainWindow_submitButton_StatusButton
When user signs up with username tester124 and password TesTEr16843/!@00
Then the user lands on the signed in app
When the user opens app settings screen
And the user activates wallet and opens the wallets section
Then the 24 seed phrase address is 0x28cf6770664821a51984daf5b9fb1b52e6538e4b displayed in the wallet
Scenario: User signs up with wrong imported seed phrase
Given A first time user lands on the status desktop and navigates to import seed phrase
When The user inputs 24 seed phrases
| phrases | occurrence |
| abstract | 1 |
| maple | 5 |
| games | 9 |
| damage | 13 |
| margin | 17 |
| drama | 21 |
| prevent | 2 |
| neutral | 6 |
| timber | 10 |
| unique | 14 |
| sphere | 18 |
| only | 22 |
| exact | 3 |
| pottery | 7 |
| just | 11 |
| consider | 15 |
| actress | 19 |
| dial | 23 |
| oil | 4 |
| deny | 8 |
| dial | 12 |
| timber | 16 |
| exhibit | 20 |
| house | 24 |
Then the following ui-component mainWindow_submitButton_StatusButton is not enabled

View File

@ -1,7 +1,7 @@
source(findFile('scripts', 'python/bdd.py'))
setupHooks('../shared/scripts/bdd_hooks.py')
collectStepDefinitions('./steps', '../shared/steps', '../shared/signUpSteps')
collectStepDefinitions('./steps', '../shared/steps', '../shared/signUpSteps', '../shared/settingsSteps')
def main():
testSettings.throwOnFailure = True

View File

@ -57,6 +57,7 @@ Column {
id: appsMenuItems
delegate: StatusNavigationListItem {
id: appsMenuDelegate
objectName: model.text + "-AppMenu"
itemId: model.subsection
title: model.text
icon.name: model.icon
@ -84,6 +85,7 @@ Column {
id: settingsMenuItems
delegate: StatusNavigationListItem {
id: settingsMenuDelegate
objectName: model.text + "-SettingsMenu"
itemId: model.subsection
title: model.text
icon.name: model.icon