Chore/onboarding tests (#331)
* chore: added clicking on back button and checking correct views appear during onboarding * chore: click clear button on profile view and checking field is empty added * chore: show and hide password verifications added to test_check_password_strength_and_login
This commit is contained in:
parent
b74ba4f7eb
commit
50ada60385
|
@ -70,6 +70,7 @@ mainWindow_inputLayout_ColumnLayout = {"container": statusDesktop_mainWindow, "i
|
||||||
mainWindow_statusBaseInput_StatusBaseInput = {"container": mainWindow_inputLayout_ColumnLayout, "objectName": "onboardingDisplayNameInput", "type": "TextEdit", "visible": True}
|
mainWindow_statusBaseInput_StatusBaseInput = {"container": mainWindow_inputLayout_ColumnLayout, "objectName": "onboardingDisplayNameInput", "type": "TextEdit", "visible": True}
|
||||||
mainWindow_errorMessage_StatusBaseText = {"container": mainWindow_inputLayout_ColumnLayout, "type": "StatusBaseText", "unnamed": 1, "visible": True}
|
mainWindow_errorMessage_StatusBaseText = {"container": mainWindow_inputLayout_ColumnLayout, "type": "StatusBaseText", "unnamed": 1, "visible": True}
|
||||||
mainWindow_nameInput_StatusInput = {"container": statusDesktop_mainWindow, "id": "nameInput", "type": "StatusInput", "unnamed": 1, "visible": True}
|
mainWindow_nameInput_StatusInput = {"container": statusDesktop_mainWindow, "id": "nameInput", "type": "StatusInput", "unnamed": 1, "visible": True}
|
||||||
|
mainWindow_clear_icon_StatusIcon = {"container": mainWindow_StatusWindow, "objectName": "clear-icon", "type": "StatusIcon"}
|
||||||
|
|
||||||
# Your emojihash and identicon ring
|
# Your emojihash and identicon ring
|
||||||
mainWindow_welcomeScreenUserProfileImage_StatusSmartIdenticon = {"container": mainWindow_InsertDetailsView, "objectName": "welcomeScreenUserProfileImage", "type": "StatusSmartIdenticon", "visible": True}
|
mainWindow_welcomeScreenUserProfileImage_StatusSmartIdenticon = {"container": mainWindow_InsertDetailsView, "objectName": "welcomeScreenUserProfileImage", "type": "StatusSmartIdenticon", "visible": True}
|
||||||
|
@ -86,6 +87,8 @@ mainWindow_Create_password_StatusButton = {"checkable": False, "container": main
|
||||||
mainWindow_view_PasswordView = {"container": statusDesktop_mainWindow, "id": "view", "type": "PasswordView", "unnamed": 1, "visible": True}
|
mainWindow_view_PasswordView = {"container": statusDesktop_mainWindow, "id": "view", "type": "PasswordView", "unnamed": 1, "visible": True}
|
||||||
mainWindow_RowLayout = {"container": mainWindow_StatusWindow, "type": "RowLayout", "unnamed": 1, "visible": True}
|
mainWindow_RowLayout = {"container": mainWindow_StatusWindow, "type": "RowLayout", "unnamed": 1, "visible": True}
|
||||||
mainWindow_strengthInditactor_StatusPasswordStrengthIndicator = {"container": mainWindow_StatusWindow, "id": "strengthInditactor", "type": "StatusPasswordStrengthIndicator", "unnamed": 1, "visible": True}
|
mainWindow_strengthInditactor_StatusPasswordStrengthIndicator = {"container": mainWindow_StatusWindow, "id": "strengthInditactor", "type": "StatusPasswordStrengthIndicator", "unnamed": 1, "visible": True}
|
||||||
|
mainWindow_show_icon_StatusIcon = {"container": mainWindow_StatusWindow, "objectName": "show-icon", "type": "StatusIcon", "visible": True}
|
||||||
|
mainWindow_hide_icon_StatusIcon = {"container": mainWindow_StatusWindow, "objectName": "hide-icon", "type": "StatusIcon", "visible": True}
|
||||||
|
|
||||||
# Confirm Password View
|
# Confirm Password View
|
||||||
mainWindow_ConfirmPasswordView = {"container": statusDesktop_mainWindow, "type": "ConfirmPasswordView", "unnamed": 1,"visible": True}
|
mainWindow_ConfirmPasswordView = {"container": statusDesktop_mainWindow, "type": "ConfirmPasswordView", "unnamed": 1,"visible": True}
|
||||||
|
|
|
@ -263,6 +263,7 @@ class YourProfileView(OnboardingView):
|
||||||
self._erros_text_label = TextLabel('mainWindow_errorMessage_StatusBaseText')
|
self._erros_text_label = TextLabel('mainWindow_errorMessage_StatusBaseText')
|
||||||
self._next_button = Button('mainWindow_Next_StatusButton')
|
self._next_button = Button('mainWindow_Next_StatusButton')
|
||||||
self._login_input_object = QObject('mainWindow_nameInput_StatusInput')
|
self._login_input_object = QObject('mainWindow_nameInput_StatusInput')
|
||||||
|
self._clear_icon = QObject('mainWindow_clear_icon_StatusIcon')
|
||||||
|
|
||||||
@property
|
@property
|
||||||
@allure.step('Get next button enabled state')
|
@allure.step('Get next button enabled state')
|
||||||
|
@ -284,6 +285,15 @@ class YourProfileView(OnboardingView):
|
||||||
self._display_name_text_field.clear().text = value
|
self._display_name_text_field.clear().text = value
|
||||||
return self
|
return self
|
||||||
|
|
||||||
|
@allure.step('Get user display name')
|
||||||
|
def get_display_name(self) -> str:
|
||||||
|
return str(self._display_name_text_field.object.text)
|
||||||
|
|
||||||
|
@allure.step('Click clear button')
|
||||||
|
def clear_field(self):
|
||||||
|
self._clear_icon.click()
|
||||||
|
return self
|
||||||
|
|
||||||
@allure.step('Set user image')
|
@allure.step('Set user image')
|
||||||
def set_user_image(self, fp: SystemPath) -> PictureEditPopup:
|
def set_user_image(self, fp: SystemPath) -> PictureEditPopup:
|
||||||
allure.attach(name='User image', body=fp.read_bytes(), attachment_type=allure.attachment_type.PNG)
|
allure.attach(name='User image', body=fp.read_bytes(), attachment_type=allure.attachment_type.PNG)
|
||||||
|
@ -390,6 +400,18 @@ class CreatePasswordView(OnboardingView):
|
||||||
self._password_view_object = QObject('mainWindow_view_PasswordView')
|
self._password_view_object = QObject('mainWindow_view_PasswordView')
|
||||||
self._strength_indicator = QObject('mainWindow_strengthInditactor_StatusPasswordStrengthIndicator')
|
self._strength_indicator = QObject('mainWindow_strengthInditactor_StatusPasswordStrengthIndicator')
|
||||||
self._indicator_panel_object = QObject('mainWindow_RowLayout')
|
self._indicator_panel_object = QObject('mainWindow_RowLayout')
|
||||||
|
self._show_icon = QObject('mainWindow_show_icon_StatusIcon')
|
||||||
|
self._hide_icon = QObject('mainWindow_hide_icon_StatusIcon')
|
||||||
|
|
||||||
|
@allure.step('Get password content from first field')
|
||||||
|
def get_password_from_first_field(self, echo_mode) -> str:
|
||||||
|
self._new_password_text_field.real_name['echoMode'] = echo_mode
|
||||||
|
return str(self._new_password_text_field.object.displayText)
|
||||||
|
|
||||||
|
@allure.step('Get password content from confirmation field')
|
||||||
|
def get_password_from_confirmation_field(self, echo_mode) -> str:
|
||||||
|
self._confirm_password_text_field.real_name['echoMode'] = echo_mode
|
||||||
|
return str(self._confirm_password_text_field.object.displayText)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
@allure.step('Verify: Create password button enabled')
|
@allure.step('Verify: Create password button enabled')
|
||||||
|
@ -428,6 +450,16 @@ class CreatePasswordView(OnboardingView):
|
||||||
def password_error_message(self) -> str:
|
def password_error_message(self) -> str:
|
||||||
return self._password_view_object.object.errorMsgText
|
return self._password_view_object.object.errorMsgText
|
||||||
|
|
||||||
|
@allure.step('Click show icon by index')
|
||||||
|
def click_show_icon(self, index):
|
||||||
|
show_icons = driver.findAllObjects(self._show_icon.real_name)
|
||||||
|
driver.mouseClick(show_icons[index])
|
||||||
|
|
||||||
|
@allure.step('Click hide icon by index')
|
||||||
|
def click_hide_icon(self, index):
|
||||||
|
hide_icons = driver.findAllObjects(self._hide_icon.real_name)
|
||||||
|
driver.mouseClick(hide_icons[index])
|
||||||
|
|
||||||
@allure.step('Set password in first field')
|
@allure.step('Set password in first field')
|
||||||
def set_password_in_first_field(self, value: str):
|
def set_password_in_first_field(self, value: str):
|
||||||
self._new_password_text_field.clear().text = value
|
self._new_password_text_field.clear().text = value
|
||||||
|
@ -440,6 +472,10 @@ class CreatePasswordView(OnboardingView):
|
||||||
def create_password(self, value: str) -> 'ConfirmPasswordView':
|
def create_password(self, value: str) -> 'ConfirmPasswordView':
|
||||||
self.set_password_in_first_field(value)
|
self.set_password_in_first_field(value)
|
||||||
self.set_password_in_confirmation_field(value)
|
self.set_password_in_confirmation_field(value)
|
||||||
|
self.click_create_password()
|
||||||
|
return ConfirmPasswordView().wait_until_appears()
|
||||||
|
|
||||||
|
def click_create_password(self):
|
||||||
self._create_button.click()
|
self._create_button.click()
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
return ConfirmPasswordView().wait_until_appears()
|
return ConfirmPasswordView().wait_until_appears()
|
||||||
|
@ -475,6 +511,10 @@ class ConfirmPasswordView(OnboardingView):
|
||||||
def set_password(self, value: str):
|
def set_password(self, value: str):
|
||||||
self._confirm_password_text_field.text = value
|
self._confirm_password_text_field.text = value
|
||||||
|
|
||||||
|
@allure.step('Click confirm password')
|
||||||
|
def click_confirm_password(self):
|
||||||
|
self._confirm_button.click()
|
||||||
|
|
||||||
@allure.step('Confirm password')
|
@allure.step('Confirm password')
|
||||||
def confirm_password(self, value: str):
|
def confirm_password(self, value: str):
|
||||||
self.set_password(value)
|
self.set_password(value)
|
||||||
|
@ -485,6 +525,11 @@ class ConfirmPasswordView(OnboardingView):
|
||||||
self._back_button.click()
|
self._back_button.click()
|
||||||
return CreatePasswordView().wait_until_appears()
|
return CreatePasswordView().wait_until_appears()
|
||||||
|
|
||||||
|
@allure.step('Get password content from confirmation again field')
|
||||||
|
def get_password_from_confirmation_again_field(self, echo_mode) -> str:
|
||||||
|
self._confirm_password_text_field.real_name['echoMode'] = echo_mode
|
||||||
|
return str(self._confirm_password_text_field.object.displayText)
|
||||||
|
|
||||||
|
|
||||||
class BiometricsView(OnboardingView):
|
class BiometricsView(OnboardingView):
|
||||||
|
|
||||||
|
|
|
@ -37,7 +37,9 @@ def keys_screen(main_window) -> KeysView:
|
||||||
def test_generate_new_keys(main_window, keys_screen, user_name: str, password, user_image: str, zoom: int, shift):
|
def test_generate_new_keys(main_window, keys_screen, user_name: str, password, user_image: str, zoom: int, shift):
|
||||||
with step(f'Setup profile with name: {user_name} and image: {user_image}'):
|
with step(f'Setup profile with name: {user_name} and image: {user_image}'):
|
||||||
|
|
||||||
|
keys_screen.generate_new_keys().back()
|
||||||
profile_view = keys_screen.generate_new_keys()
|
profile_view = keys_screen.generate_new_keys()
|
||||||
|
assert profile_view.is_next_button_enabled is False
|
||||||
profile_view.set_display_name(user_name)
|
profile_view.set_display_name(user_name)
|
||||||
if user_image is not None:
|
if user_image is not None:
|
||||||
profile_picture_popup = profile_view.set_user_image(configs.testpath.TEST_FILES / user_image)
|
profile_picture_popup = profile_view.set_user_image(configs.testpath.TEST_FILES / user_image)
|
||||||
|
@ -63,12 +65,15 @@ def test_generate_new_keys(main_window, keys_screen, user_name: str, password, u
|
||||||
chat_key = details_view.chat_key
|
chat_key = details_view.chat_key
|
||||||
emoji_hash = details_view.emoji_hash
|
emoji_hash = details_view.emoji_hash
|
||||||
assert details_view.is_identicon_ring_visible
|
assert details_view.is_identicon_ring_visible
|
||||||
|
details_view.back().next()
|
||||||
|
|
||||||
with step('Finalize onboarding and open main screen'):
|
with step('Finalize onboarding and open main screen'):
|
||||||
|
|
||||||
create_password_view = details_view.next()
|
create_password_view = details_view.next()
|
||||||
|
create_password_view.back().next()
|
||||||
assert not create_password_view.is_create_password_button_enabled
|
assert not create_password_view.is_create_password_button_enabled
|
||||||
confirm_password_view = create_password_view.create_password(password)
|
confirm_password_view = create_password_view.create_password(password)
|
||||||
|
confirm_password_view.back().click_create_password()
|
||||||
confirm_password_view.confirm_password(password)
|
confirm_password_view.confirm_password(password)
|
||||||
if configs.system.IS_MAC:
|
if configs.system.IS_MAC:
|
||||||
assert BiometricsView().is_touch_id_button_visible(), f"TouchID button is not found"
|
assert BiometricsView().is_touch_id_button_visible(), f"TouchID button is not found"
|
||||||
|
|
|
@ -80,6 +80,10 @@ def test_sign_up_with_wrong_name(keys_screen, user_name: str, error: str):
|
||||||
assert profile_view.is_next_button_enabled is False
|
assert profile_view.is_next_button_enabled is False
|
||||||
assert profile_view.error_message == error
|
assert profile_view.error_message == error
|
||||||
|
|
||||||
|
with step('Clear content of disply name field and verify it is empty'):
|
||||||
|
profile_view.clear_field()
|
||||||
|
assert profile_view.get_display_name() == ''
|
||||||
|
|
||||||
|
|
||||||
@allure.testcase('https://ethstatus.testrail.net/index.php?/cases/view/702993',
|
@allure.testcase('https://ethstatus.testrail.net/index.php?/cases/view/702993',
|
||||||
'Sign up with wrong password format in both new password and confirmation input')
|
'Sign up with wrong password format in both new password and confirmation input')
|
||||||
|
|
|
@ -38,7 +38,8 @@ def keys_screen(main_window) -> KeysView:
|
||||||
pytest.param('+1_3!48aT1', good_elements),
|
pytest.param('+1_3!48aT1', good_elements),
|
||||||
pytest.param('+1_3!48aTq', great_elements)
|
pytest.param('+1_3!48aTq', great_elements)
|
||||||
])
|
])
|
||||||
def test_check_password_strength_and_login(keys_screen, main_window, user_account, password: str, password_strength_elements):
|
def test_check_password_strength_and_login(keys_screen, main_window, user_account, password: str,
|
||||||
|
password_strength_elements):
|
||||||
with step('Input correct user name'):
|
with step('Input correct user name'):
|
||||||
profile_view = keys_screen.generate_new_keys()
|
profile_view = keys_screen.generate_new_keys()
|
||||||
profile_view.set_display_name(user_account.name)
|
profile_view.set_display_name(user_account.name)
|
||||||
|
@ -48,14 +49,44 @@ def test_check_password_strength_and_login(keys_screen, main_window, user_accoun
|
||||||
create_password_view = details_view.next()
|
create_password_view = details_view.next()
|
||||||
create_password_view.set_password_in_first_field(password)
|
create_password_view.set_password_in_first_field(password)
|
||||||
|
|
||||||
|
with step('Click show icon to show password and check that shown password is correct'):
|
||||||
|
create_password_view.click_show_icon(0)
|
||||||
|
assert create_password_view.get_password_from_first_field(0) == password
|
||||||
|
|
||||||
|
with step('Click show icon to hide password and check that there are dots instead'):
|
||||||
|
create_password_view.click_hide_icon(0)
|
||||||
|
assert create_password_view.get_password_from_first_field(2) == '●●●●●●●●●●'
|
||||||
|
|
||||||
with step('Verify that correct strength indicator color, text and green messages appear'):
|
with step('Verify that correct strength indicator color, text and green messages appear'):
|
||||||
assert create_password_view.strength_indicator_color == password_strength_elements[1]
|
assert create_password_view.strength_indicator_color == password_strength_elements[1]
|
||||||
assert create_password_view.strength_indicator_text == password_strength_elements[0]
|
assert create_password_view.strength_indicator_text == password_strength_elements[0]
|
||||||
assert sorted(create_password_view.green_indicator_messages) == sorted(password_strength_elements[2])
|
assert sorted(create_password_view.green_indicator_messages) == sorted(password_strength_elements[2])
|
||||||
|
|
||||||
with step('Verify that user can login afterwards'):
|
with step('Enter password to confirmation field'):
|
||||||
confirm_password_view = create_password_view.create_password(password)
|
create_password_view.set_password_in_confirmation_field(password)
|
||||||
confirm_password_view.confirm_password(password)
|
|
||||||
|
with step('Click show icon to show password and check that shown password is correct'):
|
||||||
|
create_password_view.click_show_icon(1)
|
||||||
|
assert create_password_view.get_password_from_confirmation_field(0) == password
|
||||||
|
|
||||||
|
with step('Click show icon to hide password and check that there are dots instead'):
|
||||||
|
create_password_view.click_hide_icon(0)
|
||||||
|
assert create_password_view.get_password_from_confirmation_field(2) == '●●●●●●●●●●'
|
||||||
|
|
||||||
|
with step('Confirm creation of password and set password in confirmation again field'):
|
||||||
|
confirm_password_view = create_password_view.click_create_password()
|
||||||
|
confirm_password_view.set_password(password)
|
||||||
|
|
||||||
|
with step('Click show icon to show password and check that shown password is correct'):
|
||||||
|
create_password_view.click_show_icon(0)
|
||||||
|
assert confirm_password_view.get_password_from_confirmation_again_field(0) == password
|
||||||
|
|
||||||
|
with step('Click show icon to hide password and check that there are dots instead'):
|
||||||
|
create_password_view.click_hide_icon(0)
|
||||||
|
assert confirm_password_view.get_password_from_confirmation_again_field(2) == '●●●●●●●●●●'
|
||||||
|
|
||||||
|
with step('Verify that the user can login afterwards'):
|
||||||
|
confirm_password_view.click_confirm_password()
|
||||||
if configs.system.IS_MAC:
|
if configs.system.IS_MAC:
|
||||||
BiometricsView().wait_until_appears().prefer_password()
|
BiometricsView().wait_until_appears().prefer_password()
|
||||||
SplashScreen().wait_until_appears().wait_until_hidden()
|
SplashScreen().wait_until_appears().wait_until_hidden()
|
||||||
|
|
Loading…
Reference in New Issue