status-desktop/test/e2e/gui/components/online_identifier.py

63 lines
2.2 KiB
Python

import time
import allure
import pyperclip
import configs
import constants
import driver
from gui.components.profile_popup import ProfilePopup
from gui.elements.button import Button
from gui.elements.object import QObject
from gui.elements.text_label import TextLabel
from gui.objects_map import names
class OnlineIdentifier(QObject):
def __init__(self):
super(OnlineIdentifier, self).__init__(names.onlineIdentifierProfileHeader)
self._always_active_button = Button(names.userContextmenu_AlwaysActiveButton)
self._inactive_button = Button(names.userContextmenu_InActiveButton)
self._automatic_button = Button(names.userContextmenu_AutomaticButton)
self._view_my_profile_button = Button(names.userContextMenu_ViewMyProfileAction)
self._copy_link_to_profile = QObject(names.userContextMenu_CopyLinkToProfile)
self._user_name_text_label = TextLabel(names.userLabel_StyledText)
self._identicon_ring = QObject(names.o_StatusIdenticonRing)
@allure.step('Wait until appears {0}')
def wait_until_appears(self, timeout_msec: int = configs.timeouts.UI_LOAD_TIMEOUT_MSEC):
driver.waitFor(lambda: self._view_my_profile_button.is_visible, timeout_msec)
return self
@property
@allure.step('Get user name')
def get_user_name(self) -> str:
return self._user_name_text_label.text
@allure.step('Set user state online')
def set_user_state_online(self):
self._always_active_button.click()
self.wait_until_hidden()
@allure.step('Set user state offline')
def set_user_state_offline(self):
self._inactive_button.click()
self.wait_until_hidden()
@allure.step('Set user automatic state')
def set_user_automatic_state(self):
self._automatic_button.click()
self.wait_until_hidden()
@allure.step('Open Profile popup from online identifier')
def open_profile_popup_from_online_identifier(self) -> ProfilePopup:
self._view_my_profile_button.click()
return ProfilePopup().wait_until_appears()
@allure.step('Copy link to profile from online identifier')
def copy_link_to_profile(self) -> str:
self._copy_link_to_profile.click()
link = str(pyperclip.paste())
return link