test(suite_onboarding): fix tests (#10260)

#9285
This commit is contained in:
Vladimir Druzhinin 2023-05-04 18:18:19 +02:00 committed by GitHub
parent 7e4419d239
commit 219eb04da9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 157 additions and 86 deletions

View File

@ -18,7 +18,6 @@ class BaseElement:
@property
def object(self):
return squish.waitForObject(self.object_name)
@property
def existent(self):

View File

@ -7,9 +7,9 @@
# * \date February 2022
# * \brief It defines the status login screen behavior and properties.
# *****************************************************************************/
from enum import Enum
import configs
from drivers.SquishDriver import *
from drivers.SquishDriverVerification import *
from screens.StatusAccountsScreen import StatusAccountsScreen
@ -62,6 +62,7 @@ class StatusLoginScreen():
click_obj_by_name(SLoginComponents.SUBMIT_BTN.value)
def verify_error_message_is_displayed(self):
SplashScreen().wait_until_appears().wait_until_hidden(configs.squish.APP_LOAD_TIMEOUT_MSEC)
verify_object_enabled(SLoginComponents.ERR_MSG_LABEL.value)
def get_accounts_selector_popup(self):

View File

@ -8,13 +8,68 @@
# * \brief Sign Up and Login for new users to the app.
# *****************************************************************************/
from array import array
from enum import Enum
import sys
from abc import abstractmethod
from enum import Enum
import common.Common as common
from common.SeedUtils import *
from drivers.SquishDriver import *
from drivers.SquishDriverVerification import *
from common.SeedUtils import *
import common.Common as common
class OnboardingBaseScreen(BaseElement):
def __init__(self, object_name):
super(OnboardingBaseScreen, self).__init__(object_name)
self._back_button = Button('onboarding_back_button')
@abstractmethod
def back(self):
pass
class CreatePasswordView(OnboardingBaseScreen):
def __init__(self):
super(CreatePasswordView, self).__init__('mainWindow_CreatePasswordView')
self._new_password_text_field = TextEdit('onboarding_newPsw_Input')
self._confirm_password_text_field = TextEdit('onboarding_confirmPsw_Input')
self._create_button = Button('onboarding_create_password_button')
self._password_strength_indicator = BaseElement('onboarding_strengthInditactor')
@property
def new_password(self) -> str:
return self._new_password_text_field.text
@new_password.setter
def new_password(self, value: str):
self._new_password_text_field.text = value
@property
def confirm_password(self) -> str:
return self._new_password_text_field.text
@confirm_password.setter
def confirm_password(self, value: str):
self._new_password_text_field.text = value
@property
def password_strength_indicator(self):
return self._password_strength_indicator.image
def is_password_strength_indicator_equal(self, indicator : str):
verify_text_matching(self._password_strength_indicator.symbolic_name, indicator)
def create_password(self, value: str):
self.new_password.text = value
self.confirm_password.text = value
self._create_button.click()
# TODO: return Confirm Password View
def back(self):
self._back_button.click()
# TODO: return Details View
class AgreementPopUp(Enum):
@ -23,6 +78,7 @@ class AgreementPopUp(Enum):
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"
@ -44,6 +100,7 @@ class SignUpComponents(Enum):
WELCOME_SCREEN_CHAT_KEY_TEXT: str = "mainWindow_WelcomeScreen_ChatKeyText"
BACK_BTN: str = "onboarding_back_button"
class SeedPhraseComponents(Enum):
IMPORT_A_SEED_TEXT: str = "import_a_seed_phrase_StatusBaseText"
INVALID_SEED_TEXT: str = "onboarding_InvalidSeed_Text"
@ -54,6 +111,7 @@ class SeedPhraseComponents(Enum):
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"
@ -64,14 +122,17 @@ class PasswordStrengthPossibilities(Enum):
NUMBERS_SYMBOLS_LOWER_UPPER_GOOD = "numbers_symbols_lower_upper_good"
NUMBERS_SYMBOLS_LOWER_UPPER_GREAT = "numbers_symbols_lower_upper_great"
class MainScreen(Enum):
SETTINGS_BUTTON = "settings_navbar_settings_icon_StatusIcon"
class LoginView(Enum):
LOGIN_VIEW_USER_IMAGE: str = "loginView_userImage"
PASSWORD_INPUT = "loginView_passwordInput"
SUBMIT_BTN = "loginView_submitBtn"
class StatusWelcomeScreen:
def __init__(self):

View File

@ -3,9 +3,14 @@ from scripts.global_names import *
# Main:
mainWindow_Welcome_to_Status_StyledText = {"container": statusDesktop_mainWindow, "text": "Welcome to Status", "type": "StyledText", "unnamed": 1, "visible": True}
mainWindow_startupOnboarding_OnboardingLayout = {"container": statusDesktop_mainWindow, "objectName": "startupOnboardingLayout", "type": "OnboardingLayout", "visible": True}
onboarding_newPsw_Input = {"container": statusDesktop_mainWindow, "objectName": "passwordViewNewPassword", "type": "StatusPasswordInput", "visible": True}
onboarding_confirmPsw_Input = {"container": statusDesktop_mainWindow, "objectName": "passwordViewNewPasswordConfirm", "type": "StatusPasswordInput", "visible": True}
onboarding_create_password_button = {"container": statusDesktop_mainWindow, "objectName": "onboardingCreatePasswordButton", "type": "StatusButton"}
# Create Password View
mainWindow_CreatePasswordView = {"container": statusDesktop_mainWindow, "type": "CreatePasswordView", "unnamed": 1, "visible": True}
onboarding_newPsw_Input = {"container": mainWindow_CreatePasswordView, "objectName": "passwordViewNewPassword", "type": "StatusPasswordInput", "visible": True}
onboarding_confirmPsw_Input = {"container": mainWindow_CreatePasswordView, "objectName": "passwordViewNewPasswordConfirm", "type": "StatusPasswordInput", "visible": True}
onboarding_create_password_button = {"container": mainWindow_CreatePasswordView, "objectName": "onboardingCreatePasswordButton", "type": "StatusButton"}
onboarding_strengthInditactor = {"container": mainWindow_CreatePasswordView, "type": "StatusPasswordStrengthIndicator", "unnamed": 1, "visible": True}
onboarding_confirmPswAgain_Input = {"container": statusDesktop_mainWindow, "objectName": "confirmAgainPasswordInput", "type": "StatusPasswordInput", "visible": True}
onboarding_finalise_password_button = {"container": statusDesktop_mainWindow, "objectName": "confirmPswSubmitBtn", "type": "StatusButton"}
acknowledge_checkbox = {"checkable": True, "container": statusDesktop_mainWindow_overlay, "objectName": "acknowledgeCheckBox", "type": "StatusCheckBox", "visible": True}

View File

@ -55,7 +55,6 @@ communities_StatusNavigationListItem = {"container": mainWindow_ScrollView, "obj
profile_StatusNavigationListItem = {"container": mainWindow_ScrollView, "objectName": SettingsSubsection.PROFILE.value, "type": "StatusNavigationListItem", "visible": True}
messaging_StatusNavigationListItem = {"container": mainWindow_ScrollView, "objectName": SettingsSubsection.MESSAGING.value, "type": "StatusNavigationListItem", "visible": True}
# Profile Settings:
mainWindow_MyProfileView = {"container": statusDesktop_mainWindow, "type": "MyProfileView", "unnamed": 1, "visible": True}
displayName_StatusInput = {"container": statusDesktop_mainWindow, "objectName": "displayNameInput", "type": "StatusInput", "visible": True}
@ -86,7 +85,6 @@ add_StatusButton = {"checkable": False, "container": statusDesktop_mainWindow_ov
linksView = {"container": statusDesktop_mainWindow, "id": "linksView", "type": "StatusListView", "unnamed": 1, "visible": True}
edit_TextEdit = {"container": statusDesktop_mainWindow_overlay, "id": "edit", "type": "TextEdit", "unnamed": 1, "visible": True}
# Wallet Settings:
settings_Wallet_MainView_GeneratedAccounts = {"container": statusDesktop_mainWindow, "objectName":'generatedAccounts', "type": 'ListView'}
settings_Wallet_AccountView_DeleteAccount = {"container": statusDesktop_mainWindow, "type": "StatusButton", "objectName": "deleteAccountButton"}
@ -170,4 +168,3 @@ change_password_menu_new_password = {"container": statusDesktop_mainWindow_overl
change_password_menu_new_password_confirm = {"container": statusDesktop_mainWindow_overlay, "objectName": "passwordViewNewPasswordConfirm", "type": "StatusPasswordInput", "visible": True}
change_password_menu_submit_button = {"container": statusDesktop_mainWindow_overlay, "objectName": "changePasswordModalSubmitButton", "type": "StatusButton", "visible": True}
change_password_success_menu_sign_out_quit_button = {"container": statusDesktop_mainWindow_overlay, "objectName": "changePasswordSuccessModalSignOutAndQuitButton", "type": "StatusButton", "visible": True}

View File

@ -1,5 +1,8 @@
import configs
from screens.StatusLoginScreen import StatusLoginScreen
_loginScreen = StatusLoginScreen()
#########################
@ -23,8 +26,6 @@ def step(context, username, password):
@Then("the user is NOT able to login to Status Desktop application")
def step(context):
_main_screen = StatusMainScreen()
_main_screen.wait_for_splash_animation_ends()
_loginScreen.verify_error_message_is_displayed()
###########################################################################

View File

@ -1,6 +1,14 @@
from screens.StatusWelcomeScreen import StatusWelcomeScreen
from pathlib import Path
import sys
from screens.StatusWelcomeScreen import CreatePasswordView
_welcome_screen = CreatePasswordView()
@When('the user inputs the password \"|any|\"')
def step(context, password):
_welcome_screen.new_password = str(password)
_welcomeScreen = StatusWelcomeScreen()
@Then("the password strength indicator is \"|any|\"")
def step(context, strength):

View File

@ -1,86 +1,86 @@
Feature: Status Desktop Sign Up, negative cases
As a user I do not want to Sign-up with incorrect data into the Status Desktop application.
As a user I do not want to Sign-up with incorrect data into the Status Desktop application.
The following scenarios cover negative Sign up process scenarios when trying to do it with wrong data.
The following scenarios cover negative Sign up process scenarios when trying to do it with wrong data.
The feature start sequence is the following (setup on its own `bdd_hooks`):
** given A first time user lands on the status desktop and generates new key
The feature start sequence is the following (setup on its own `bdd_hooks`):
** given A first time user lands on the status desktop and generates new key
[Cleanup]
** the user navigates to first onboarding page
[Cleanup]
** the user navigates to first onboarding page
Scenario Outline: The user cannot sign up with wrong username format
Given the user clears input "onboarding_DiplayName_Input"
When the user inputs the following "<username>" with ui-component "onboarding_DiplayName_Input"
Then the following ui-component "onboarding_DetailsView_NextButton" is not enabled
Scenario Outline: The user cannot sign up with wrong username format
Given the user clears input "onboarding_DiplayName_Input"
When the user inputs the following "<username>" with ui-component "onboarding_DiplayName_Input"
Then the following ui-component "onboarding_DetailsView_NextButton" is not enabled
Examples:
| username |
| Athl |
| Gra |
| tester3@ |
Examples:
| username |
| Athl |
| Gra |
| tester3@ |
Scenario Outline: The user cannot sign up with wrong password format in both new password and confirmation input
Given the user inputs username "<username>"
When the user inputs the following "<wrongpassword>" with ui-component "onboarding_newPsw_Input"
And the user inputs the following "<wrongpassword>" with ui-component "onboarding_confirmPsw_Input"
Then the following ui-component "onboarding_create_password_button" is not enabled
Scenario Outline: The user cannot sign up with wrong password format in both new password and confirmation input
Given the user inputs username "<username>"
When the user inputs the following "<wrongpassword>" with ui-component "onboarding_newPsw_Input"
And the user inputs the following "<wrongpassword>" with ui-component "onboarding_confirmPsw_Input"
Then the following ui-component "onboarding_create_password_button" is not enabled
Examples:
| username | wrongpassword |
| tester124 | badP |
Examples:
| username | wrongpassword |
| tester124 | badP |
Scenario Outline: The user cannot sign up with right password format in new password input but incorrect in confirmation password input
Given the user inputs username "<username>"
And the user inputs the following "<password>" with ui-component "onboarding_newPsw_Input"
When the user inputs the following "<wrongpassword>" with ui-component "onboarding_confirmPsw_Input"
Then the following ui-component "onboarding_create_password_button" is not enabled
Scenario Outline: The user cannot sign up with right password format in new password input but incorrect in confirmation password input
Given the user inputs username "<username>"
And the user inputs the following "<password>" with ui-component "onboarding_newPsw_Input"
When the user inputs the following "<wrongpassword>" with ui-component "onboarding_confirmPsw_Input"
Then the following ui-component "onboarding_create_password_button" is not enabled
Examples:
| username | wrongpassword | password |
| tester124 | bad2!s | TesTEr16843/!@01 |
Examples:
| username | wrongpassword | password |
| tester124 | bad2!s | TesTEr16843/!@01 |
Scenario Outline: The user cannot sign up with incorrect confirmation-again password
Given the user inputs username "<username>"
And the user inputs the following "<password>" with ui-component "onboarding_newPsw_Input"
And the user inputs the following "<password>" with ui-component "onboarding_confirmPsw_Input"
And the user clicks on the following ui-component "onboarding_create_password_button"
When the user inputs the following "<wrongpassword>" with ui-component "onboarding_confirmPswAgain_Input"
Then the following ui-component "onboarding_finalise_password_button" is not enabled
Scenario Outline: The user cannot sign up with incorrect confirmation-again password
Given the user inputs username "<username>"
And the user inputs the following "<password>" with ui-component "onboarding_newPsw_Input"
And the user inputs the following "<password>" with ui-component "onboarding_confirmPsw_Input"
And the user clicks on the following ui-component "onboarding_create_password_button"
When the user inputs the following "<wrongpassword>" with ui-component "onboarding_confirmPswAgain_Input"
Then the following ui-component "onboarding_finalise_password_button" is not enabled
Examples:
| username | wrongpassword | password |
| tester123 | TesTEr16843/!@) | TesTEr16843/!@01 |
Examples:
| username | wrongpassword | password |
| tester123 | TesTEr16843/!@) | TesTEr16843/!@01 |
Scenario Outline: The user cannot finish Sign Up and Sign In process with wrong password format in both new password and confirmation input
Given the user inputs username "<username>"
When the user inputs the following "<wrongpassword>" with ui-component "onboarding_newPsw_Input"
And the user inputs the following "<wrongpassword>" with ui-component "onboarding_confirmPsw_Input"
Then the following ui-component "onboarding_create_password_button" is not enabled
Scenario Outline: The user cannot finish Sign Up and Sign In process with wrong password format in both new password and confirmation input
Given the user inputs username "<username>"
When the user inputs the following "<wrongpassword>" with ui-component "onboarding_newPsw_Input"
And the user inputs the following "<wrongpassword>" with ui-component "onboarding_confirmPsw_Input"
Then the following ui-component "onboarding_create_password_button" is not enabled
Examples:
| username | wrongpassword |
| tester123 | Invalid34 |
Examples:
| username | wrongpassword |
| tester123 | Invalid34 |
Scenario Outline: The user cannot finish Sign Up and Sign In process with right password format in new password input but incorrect in confirmation password input
Given the user inputs username "<username>"
And the user inputs the following "<password>" with ui-component "onboarding_newPsw_Input"
When the user inputs the following "<wrongpassword>" with ui-component "onboarding_confirmPsw_Input"
Then the following ui-component "onboarding_create_password_button" is not enabled
Scenario Outline: The user cannot finish Sign Up and Sign In process with right password format in new password input but incorrect in confirmation password input
Given the user inputs username "<username>"
And the user inputs the following "<password>" with ui-component "onboarding_newPsw_Input"
When the user inputs the following "<wrongpassword>" with ui-component "onboarding_confirmPsw_Input"
Then the following ui-component "onboarding_create_password_button" is not enabled
Examples:
| username | wrongpassword | password |
| tester123 | Invalid34 | TesTEr16843/!@00 |
Examples:
| username | wrongpassword | password |
| tester123 | Invalid34 | TesTEr16843/!@00 |
Scenario Outline: The user cannot finish Sign Up and Sign In process with incorrect confirmation-again password
Given the user inputs username "<username>"
And the user inputs the following "<password>" with ui-component "onboarding_newPsw_Input"
And the user inputs the following "<password>" with ui-component "onboarding_confirmPsw_Input"
And the user clicks on the following ui-component "onboarding_create_password_button"
When the user inputs the following "<wrongpassword>" with ui-component "onboarding_confirmPswAgain_Input"
Then the following ui-component "onboarding_finalise_password_button" is not enabled
Scenario Outline: The user cannot finish Sign Up and Sign In process with incorrect confirmation-again password
Given the user inputs username "<username>"
And the user inputs the following "<password>" with ui-component "onboarding_newPsw_Input"
And the user inputs the following "<password>" with ui-component "onboarding_confirmPsw_Input"
And the user clicks on the following ui-component "onboarding_create_password_button"
When the user inputs the following "<wrongpassword>" with ui-component "onboarding_confirmPswAgain_Input"
Then the following ui-component "onboarding_finalise_password_button" is not enabled
Examples:
| username | wrongpassword | password |
| tester123 | Invalid34 | TesTEr16843/!@00 |
Examples:
| username | wrongpassword | password |
| tester123 | Invalid34 | TesTEr16843/!@00 |

View File

@ -6,7 +6,6 @@ Feature: Status Desktop Sign Up with seed phrase, negative cases
The feature start sequence follows the global one (setup on global `bdd_hooks`): No additional steps
@mayfail
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

View File

@ -29,7 +29,6 @@ Feature: Status Desktop login
| username | password |
| Athletic_Prime | TesTEr16843/!@00 |
@mayfail
Scenario Outline: User tries to login with an invalid password
Given A first time user lands on the status desktop and generates new key
And the user signs up with username "<username>" and password "<password>"

View File

@ -23,7 +23,6 @@ Feature: Status Desktop Sign Up
Then the user lands on the signed in app
And the user is online
@mayfail
Scenario Outline: The user signs up with imported seed phrase and and its state is online
Given A first time user lands on the status desktop and navigates to import seed phrase
When the user inputs the seed phrase "<seed>"
@ -39,6 +38,7 @@ Feature: Status Desktop Sign Up
| provide between target maze travel enroll edge churn random sight grass lion diet sugar cable fiction reflect reason gaze camp tone maximum task unlock | 0xCb59031d11D233112CB57DFd667fE1FF6Cd7b6Da |
@mayfail
# https://github.com/status-im/status-desktop/issues/10069
Scenario: The user signs up with a profile image
Given A first time user lands on the status desktop and generates new key
And the user signs up with profileImage "doggo.jpeg", username "tester123" and password "TesTEr16843/!@00"

View File

@ -153,6 +153,7 @@ StatusWindow {
if(state === Constants.appState.startup) {
// we're here only in case of error when we're returning from the app loading state
loader.sourceComponent = undefined
appLoadingAnimation.active = false
startupOnboarding.visible = true
}
else if(state === Constants.appState.appLoading) {