mirror of
https://github.com/status-im/status-desktop.git
synced 2025-02-01 09:17:29 +00:00
10f34d0610
- Added new test case `tst_passwordStrength` in `suite_onboarding` that uses squish screenshot validation. - Added verification points (mac OS) for some password strength validations, using pixel comparison and some minor percentage of failure / color precision allowed. Closes #7003
156 lines
7.0 KiB
Python
156 lines
7.0 KiB
Python
# ******************************************************************************
|
|
# Status.im
|
|
# *****************************************************************************/
|
|
# /**
|
|
# * \file StatusWelcomeScreen.py
|
|
# *
|
|
# * \date May 2022
|
|
# * \brief Sign Up and Login for new users to the app.
|
|
# *****************************************************************************/
|
|
|
|
from array import array
|
|
from enum import Enum
|
|
import sys
|
|
from drivers.SquishDriver import *
|
|
from drivers.SquishDriverVerification import *
|
|
from common.SeedUtils import *
|
|
|
|
|
|
class AgreementPopUp(Enum):
|
|
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: str = "mainWindow_I_am_new_to_Status_StatusBaseText"
|
|
GENERATE_NEW_KEYS: str = "keysMainView_PrimaryAction_Button"
|
|
USERNAME_INPUT: str = "onboarding_DiplayName_Input"
|
|
DETAILS_NEXT_BUTTON: str = "onboarding_DetailsView_NextButton"
|
|
WELCOME_TO_STATUS: str = "mainWindow_Welcome_to_Status_StyledText"
|
|
NEW_PASSWORD_BUTTON: str = "mainWindow_New_password_PlaceholderText"
|
|
NEW_PSW_INPUT: str = "onboarding_newPsw_Input"
|
|
CONFIRM_PSW_INPUT: str = "onboarding_confirmPsw_Input"
|
|
CREATE_PSW_BUTTON: str = "onboarding_create_password_button"
|
|
CONFIRM_PSW_AGAIN_INPUT: str = "onboarding_confirmPswAgain_Input"
|
|
FINALIZE_PSW_BUTTON: str = "onboarding_finalise_password_button"
|
|
PASSWORD_PREFERENCE: str = "mainWindow_I_prefer_to_use_my_password_StatusBaseText"
|
|
|
|
|
|
class SeedPhraseComponents(Enum):
|
|
IMPORT_A_SEED_TEXT: str = "import_a_seed_phrase_StatusBaseText"
|
|
INVALID_SEED_TEXT: str = "onboarding_InvalidSeed_Text"
|
|
IMPORT_A_SEED_BUTTON: str = "keysMainView_PrimaryAction_Button"
|
|
TWELVE_WORDS_BUTTON: str = "switchTabBar_12_words_Button"
|
|
EIGHTEEN_WORDS_BUTTON: str = "switchTabBar_18_words_Button"
|
|
TWENTY_FOUR_BUTTON: str = "switchTabBar_24_words_Button"
|
|
SEEDS_WORDS_TEXTFIELD_template: str = "onboarding_SeedPhrase_Input_TextField_"
|
|
SUBMIT_BUTTON: str = "seedPhraseView_Submit_Button"
|
|
|
|
class PasswordStrengthPossibilities(Enum):
|
|
LOWER_VERY_WEAK = "lower_very_weak"
|
|
UPPER_VERY_WEAK = "upper_very_weak"
|
|
NUMBERS_VERY_WEAK = "numbers_very_weak"
|
|
SYMBOLS_VERY_WEAK = "symbols_very_weak"
|
|
NUMBERS_SYMBOLS_WEAK ="numbers_symbols_weak"
|
|
NUMBERS_SYMBOLS_LOWER_SOSO = "numbers_symbols_lower_so-so"
|
|
NUMBERS_SYMBOLS_LOWER_UPPER_GOOD = "numbers_symbols_lower_upper_good"
|
|
NUMBERS_SYMBOLS_LOWER_UPPER_GREAT = "numbers_symbols_lower_upper_great"
|
|
|
|
class StatusWelcomeScreen:
|
|
|
|
def __init__(self):
|
|
verify_screen(AgreementPopUp.OK_GOT_IT_BUTTON.value)
|
|
|
|
def agree_terms_conditions_and_generate_new_key(self):
|
|
self._agree_terms_and_conditions()
|
|
click_obj_by_name(SignUpComponents.GENERATE_NEW_KEYS.value)
|
|
|
|
def agree_terms_conditions_and_navigate_to_import_seed_phrase(self):
|
|
self._agree_terms_and_conditions()
|
|
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_phrase: str):
|
|
words = seed_phrase.split()
|
|
|
|
if len(words) == 12:
|
|
click_obj_by_name(SeedPhraseComponents.TWELVE_WORDS_BUTTON.value)
|
|
elif len(words) == 18:
|
|
click_obj_by_name(SeedPhraseComponents.EIGHTEEN_WORDS_BUTTON.value)
|
|
elif len(words) == 24:
|
|
click_obj_by_name(SeedPhraseComponents.TWENTY_FOUR_BUTTON.value)
|
|
else:
|
|
test.fail("Wrong amount of seed words", len(words))
|
|
|
|
input_seed_phrase(SeedPhraseComponents.SEEDS_WORDS_TEXTFIELD_template.value, words)
|
|
|
|
def input_username_and_password_and_finalize_sign_up(self, username: str, password: str):
|
|
self.input_username(username)
|
|
|
|
self.input_password(password)
|
|
|
|
self.input_confirmation_password(password)
|
|
|
|
if sys.platform == "darwin":
|
|
click_obj_by_name(SignUpComponents.PASSWORD_PREFERENCE.value)
|
|
|
|
def input_username(self, username: str):
|
|
type(SignUpComponents.USERNAME_INPUT.value, username)
|
|
click_obj_by_name(SignUpComponents.DETAILS_NEXT_BUTTON.value)
|
|
# There is another page with the same Next button
|
|
click_obj_by_name(SignUpComponents.DETAILS_NEXT_BUTTON.value)
|
|
|
|
def input_password(self, password: str):
|
|
type(SignUpComponents.NEW_PSW_INPUT.value, password)
|
|
type(SignUpComponents.CONFIRM_PSW_INPUT.value, password)
|
|
click_obj_by_name(SignUpComponents.CREATE_PSW_BUTTON.value)
|
|
|
|
def input_confirmation_password(self, password: str):
|
|
type(SignUpComponents.CONFIRM_PSW_AGAIN_INPUT.value, password)
|
|
click_obj_by_name(SignUpComponents.FINALIZE_PSW_BUTTON.value)
|
|
|
|
def _agree_terms_and_conditions(self):
|
|
if sys.platform == "darwin":
|
|
click_obj_by_name(AgreementPopUp.OK_GOT_IT_BUTTON.value)
|
|
|
|
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)
|
|
|
|
def seed_phrase_visible(self):
|
|
is_loaded_visible_and_enabled(SeedPhraseComponents.INVALID_SEED_TEXT.value)
|
|
|
|
# The following validation is based in screenshots comparison and is OS dependent:
|
|
def validate_password_strength(self, strength: str):
|
|
if sys.platform == "darwin":
|
|
if strength == PasswordStrengthPossibilities.LOWER_VERY_WEAK.value:
|
|
verify_screenshot("VP-PWStrength-lower_very_weak")
|
|
|
|
elif strength == PasswordStrengthPossibilities.UPPER_VERY_WEAK.value:
|
|
verify_screenshot("VP-PWStrength-upper_very_weak")
|
|
|
|
elif strength == PasswordStrengthPossibilities.NUMBERS_VERY_WEAK.value:
|
|
verify_screenshot("VP-PWStrength-numbers_very_weak")
|
|
|
|
elif strength == PasswordStrengthPossibilities.SYMBOLS_VERY_WEAK.value:
|
|
verify_screenshot("VP-PWStrength-symbols_very_weak")
|
|
|
|
elif strength == PasswordStrengthPossibilities.NUMBERS_SYMBOLS_WEAK.value:
|
|
verify_screenshot("VP-PWStrength-numbers_symbols_weak")
|
|
|
|
elif strength == PasswordStrengthPossibilities.NUMBERS_SYMBOLS_LOWER_SOSO.value:
|
|
verify_screenshot("VP-PWStrength-numbers_symbols_lower_so-so")
|
|
|
|
elif strength == PasswordStrengthPossibilities.NUMBERS_SYMBOLS_LOWER_UPPER_GOOD.value:
|
|
verify_screenshot("VP-PWStrength-numbers_symbols_lower_upper_good")
|
|
|
|
elif strength == PasswordStrengthPossibilities.NUMBERS_SYMBOLS_LOWER_UPPER_GREAT.value:
|
|
verify_screenshot("VP-PWStrength-numbers_symbols_lower_upper_great")
|
|
|
|
# TODO: Get screenshots in Linux
|
|
|