status-desktop/test/e2e/tests/onboarding/test_onboarding_generate_ne...

148 lines
7.6 KiB
Python
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import random
import string
import allure
import pytest
from allure import step
import constants
from . import marks
import configs.timeouts
from gui.components.onboarding.before_started_popup import BeforeStartedPopUp
from gui.components.onboarding.beta_consent_popup import BetaConsentPopup
from gui.components.picture_edit_popup import shift_image, PictureEditPopup
from gui.components.splash_screen import SplashScreen
from gui.screens.onboarding import WelcomeToStatusView, BiometricsView, KeysView, \
YourEmojihashAndIdenticonRingView
pytestmark = marks
@pytest.fixture
def keys_screen(main_window) -> KeysView:
with step('Open Generate new keys view'):
BeforeStartedPopUp().get_started()
welcome_screen = WelcomeToStatusView().wait_until_appears()
return welcome_screen.get_keys()
@allure.testcase('https://ethstatus.testrail.net/index.php?/cases/view/703421', 'Generate new keys')
@allure.testcase('https://ethstatus.testrail.net/index.php?/cases/view/703010', 'Settings - Sign out & Quit')
@pytest.mark.case(703421, 703010)
@pytest.mark.critical # TODO 'https://github.com/status-im/status-desktop/issues/13013'
@pytest.mark.parametrize('user_name, password, user_image, zoom, shift', [
pytest.param(
''.join((random.choice(
string.ascii_letters + string.digits + random.choice('_- '))
for i in range(5, 25))
).strip(' '),
''.join((random.choice(
string.ascii_letters + string.digits + string.punctuation)
for _ in range(10, 28))
),
random.choice(['sample_JPEG_1920×1280.jpeg', 'file_example_PNG_3MB.png', 'file_example_JPG_2500kB.jpg']),
5,
shift_image(0, 1000, 1000, 0))
])
def test_generate_new_keys_sign_out_from_settings(aut, main_window, keys_screen, user_name: str, password,
user_image: str, zoom: int, shift):
with step('Click generate new keys and open profile view'):
profile_view = keys_screen.generate_new_keys()
assert profile_view.is_next_button_enabled is False, \
f'Next button is enabled on profile screen when it should not'
with step('Type in the display name on the profile view'):
profile_view.set_display_name(user_name)
assert profile_view.get_display_name() == user_name, \
f'Display name is empty or was not filled in'
assert not profile_view.get_error_message, \
f'Error message {profile_view.get_error_message} is present when it should not'
with step('Click plus button and add user picture'):
profile_view.set_profile_picture(configs.testpath.TEST_IMAGES / user_image)
PictureEditPopup().set_zoom_shift_for_picture(zoom=zoom, shift=shift)
assert profile_view.get_profile_image is not None, f'Profile picture was not set / applied'
assert profile_view.is_next_button_enabled is True, \
f'Next button is not enabled on profile screen'
with step('Open password set up view, fill in the form and click back'):
create_password_view = profile_view.next()
assert not create_password_view.is_create_password_button_enabled, \
f'Create password button is enabled when it should not'
confirm_password_view = create_password_view.create_password(password)
confirm_password_view.back()
assert create_password_view.get_password_from_first_field is not None, \
f'Password field lost its value when clicking back button'
assert create_password_view.get_password_from_confirmation_field is not None, \
f'Password confirmation field lost its value when clicking back button'
with step('Click create password and open password confirmation screen'):
confirm_password_view = create_password_view.click_create_password()
assert not confirm_password_view.is_confirm_password_button_enabled, \
f'Finalise Status password creation button is enabled when it should not'
with step('Confirm password and login'):
confirm_password_view.confirm_password(password)
if configs.system.get_platform() == "Darwin":
assert BiometricsView().is_touch_id_button_visible(), f"TouchID button is not found"
BiometricsView().wait_until_appears().prefer_password()
SplashScreen().wait_until_appears().wait_until_hidden()
with step('Verify emojihash and identicon ring profile screen appeared and capture the details'):
emoji_hash_identicon_view = YourEmojihashAndIdenticonRingView().verify_emojihash_view_present()
chat_key = emoji_hash_identicon_view.get_chat_key
emoji_hash_public_key = emoji_hash_identicon_view.get_emoji_hash
assert emoji_hash_identicon_view.is_identicon_ring_visible, f'Identicon ring is not present when it should'
with step('Click Start using Status'):
next_view = emoji_hash_identicon_view.next()
if configs.system.get_platform() == "Darwin":
next_view.start_using_status()
SplashScreen().wait_until_appears().wait_until_hidden()
if not configs.system.TEST_MODE:
BetaConsentPopup().confirm()
with step('Verify that user avatar background color'):
avatar_color = str(main_window.left_panel.profile_button.object.identicon.asset.color.name).upper()
assert avatar_color in constants.AvatarColors.available_colors(), \
f'Avatar color should be one of the allowed colors but is {avatar_color}'
with step('Open online identifier and check the data'):
online_identifier = main_window.left_panel.open_online_identifier()
assert online_identifier.get_user_name == user_name, \
f'Display name in online identifier is wrong, current: {online_identifier.get_user_name}, expected: {user_name}'
assert online_identifier.is_identicon_ring_visible, \
f'Identicon ring is not present when it should'
assert str(online_identifier.object.pubkey) is not None, \
f'Public key is not present'
assert str(online_identifier.object.pubkey) == emoji_hash_public_key, f'Public keys should match when they dont'
with step('Open user profile from online identifier and check the data'):
profile_popup = online_identifier.open_profile_popup_from_online_identifier()
profile_popup_user_name = profile_popup.user_name
profile_popup_chat_key = profile_popup.copy_chat_key
assert profile_popup_user_name == user_name, \
f'Display name in user profile is wrong, current: {profile_popup_user_name}, expected: {user_name}'
assert profile_popup_chat_key == chat_key, \
f'Chat key in user profile is wrong, current: {profile_popup_chat_key}, expected: {chat_key}'
assert profile_popup.get_emoji_hash == emoji_hash_public_key, \
f'Public keys should match when they dont'
with step('Open share profile popup and check the data'):
share_profile_popup = profile_popup.share_profile()
profile_link = share_profile_popup.get_profile_link()
emoji_hash = share_profile_popup.get_emoji_hash()
assert share_profile_popup.is_profile_qr_code_visibile
assert chat_key in profile_link, f'Profile link is wrong {profile_link}, it does not contain correct chat key'
assert emoji_hash == emoji_hash_public_key, f'Public keys do not match'
share_profile_popup.close()
with step('Click left panel and open settings'):
main_window.left_panel.click()
settings = main_window.left_panel.open_settings()
with step('Click sign out and quit in settings'):
sign_out_screen = settings.left_panel.open_sign_out_and_quit()
sign_out_screen.sign_out_and_quit()