Skip to content

Commit 9645f30

Browse files
committed
chore(@e2e): changes to support new activity center
1 parent ef62ffb commit 9645f30

File tree

8 files changed

+98
-42
lines changed

8 files changed

+98
-42
lines changed

test/e2e/gui/components/activity_center.py

Lines changed: 58 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -9,70 +9,77 @@
99
from gui.elements.button import Button
1010
from gui.elements.object import QObject
1111
from gui.elements.scroll import Scroll
12-
from gui.objects_map import names
12+
from gui.objects_map import names, activity_center_names
1313
from scripts.tools.image import Image
1414

1515

1616
class ContactRequest:
1717

1818
def __init__(self, obj):
1919
self.object = obj
20-
self.contact_request: typing.Optional[Image] = None
21-
self._accept_button: typing.Optional[Button] = None
22-
self._decline_button: typing.Optional[Button] = None
23-
self._notification_request_state: typing.Optional[Image] = None
20+
self.contact_request: typing.Optional[str] = None
21+
self.accept_button: typing.Optional[Button] = None
22+
self.decline_button: typing.Optional[Button] = None
23+
self.more_button: typing.Optional[Button] = None
24+
self.notification_request_state: typing.Optional[str] = None
2425
self.init_ui()
2526

2627
def __repr__(self):
2728
return self.contact_request
2829

2930
def init_ui(self):
31+
self.accept_button = Button(activity_center_names.activityCenterContactRequestAcceptButton)
32+
self.decline_button = Button(activity_center_names.activityCenterContactRequestDeclineButton)
33+
self.more_button = Button(activity_center_names.activityCenterContactRequestMoreButton)
34+
35+
# get header text
36+
try:
37+
header_obj = QObject(activity_center_names.activityCenterContactRequestHeader)
38+
self.contact_request = str(header_obj.object.primaryText) if hasattr(header_obj.object, 'primaryText') else None
39+
except Exception:
40+
self.contact_request = None
41+
3042
for child in walk_children(self.object):
31-
if str(getattr(child, 'objectName', '')) == 'acceptBtn':
32-
self._accept_button = Button(real_name=driver.objectMap.realName(child))
33-
elif str(getattr(child, 'objectName', '')) == 'declineBtn':
34-
self._decline_button = Button(real_name=driver.objectMap.realName(child))
35-
elif str(getattr(child, 'objectName', '')) == 'StatusMessageHeader_DisplayName':
36-
self.contact_request = str(child.text)
37-
elif str(getattr(child, 'id', '')) == 'textItem':
38-
self._notification_request_state = str(child.text)
43+
if str(getattr(child, 'id', '')) == 'textItem':
44+
self.notification_request_state = str(child.text)
45+
break
3946

4047
@allure.step('Accept request')
4148
def accept(self):
42-
assert self._accept_button is not None, 'Button not found'
43-
self._accept_button.click()
49+
assert self.accept_button is not None, 'Button not found'
50+
self.accept_button.click()
4451

4552
@allure.step('Decline request')
4653
def decline(self):
47-
assert self._decline_button is not None, 'Button not found'
48-
self._decline_button.click()
54+
assert self.decline_button is not None, 'Button not found'
55+
self.decline_button.click()
4956

5057

5158
class ActivityCenter(QObject):
5259

5360
def __init__(self):
54-
super(ActivityCenter, self).__init__(names.activityCenterPopup)
61+
super().__init__(activity_center_names.activityCenterLeftPanel)
5562
self.activity_center_button = Scroll(names.activityCenterStatusFlatButton)
56-
self.notification_contact_request = QObject(names.o_ActivityNotificationContactRequest)
57-
self.activity_center_panel = QObject(names.activityCenterTopBar_ActivityCenterPopupTopBarPanel)
58-
self.activity_center_contact_request = QObject(names.activityCenterContactRequest)
63+
self.activity_center_contact_request = QObject(activity_center_names.activityCenterContactRequest)
64+
self.scroll = Scroll(activity_center_names.activityCenterScrollView)
65+
self.navigation_button = Button(activity_center_names.activityCenterNavigationButton)
5966

6067
@property
6168
@allure.step('Get contact items')
6269
def contact_items(self) -> typing.List[ContactRequest]:
6370
return [ContactRequest(item) for item in driver.findAllObjects(self.activity_center_contact_request.real_name)]
6471

65-
@allure.step('Wait until appears {0}')
66-
def wait_until_appears(self, timeout_msec: int = configs.timeouts.UI_LOAD_TIMEOUT_MSEC):
67-
self.activity_center_panel.wait_until_appears(timeout_msec)
68-
return self
69-
72+
# TODO: navigation buttons are the same so its hard to click a certain button
7073
@allure.step('Click activity center button')
7174
def click_activity_center_button(self, text: str):
72-
for button in driver.findAllObjects(self.activity_center_button.real_name):
73-
if str(getattr(button, 'text', '')) == str(text):
74-
driver.mouseClick(button)
75-
break
75+
started_at = time.monotonic()
76+
self.activity_center_button.real_name['text'] = text
77+
78+
while not self.activity_center_button.is_visible:
79+
if time.monotonic() - started_at > 5:
80+
raise TimeoutError(f'Activity center button with text "{text}" not found after {5} seconds')
81+
self.navigation_button.click()
82+
self.activity_center_button.click()
7683
return self
7784

7885
@allure.step('Find contact request')
@@ -89,3 +96,24 @@ def find_contact_request_in_list(
8996
@allure.step('Accept contact request')
9097
def accept_contact_request(self, request):
9198
return request.accept()
99+
100+
def vertical_scroll_down(self, element: QObject, timeout_sec: int = 5):
101+
started_at = time.monotonic()
102+
while not element.is_visible:
103+
driver.mouse.scroll(self.object, self.object.width / 2, self.object.height / 2, 0, -30, 1, 0.1)
104+
if time.monotonic() - started_at > timeout_sec:
105+
raise LookupError(f'Object not found: {element}')
106+
107+
def horizontal_scroll_right(self, element: QObject, timeout_sec: int = 5):
108+
started_at = time.monotonic()
109+
while not element.is_visible:
110+
driver.mouse.scroll(self.object, self.object.width / 2, self.object.height / 2, 30, 0, 1, 0.1)
111+
if time.monotonic() - started_at > timeout_sec:
112+
raise LookupError(f'Object not found: {element}')
113+
114+
def horizontal_scroll_left(self, element: QObject, timeout_sec: int = 5):
115+
started_at = time.monotonic()
116+
while not element.is_visible:
117+
driver.mouse.scroll(self.object, self.object.width / 2, self.object.height / 2, -30, 0, 1, 0.1)
118+
if time.monotonic() - started_at > timeout_sec:
119+
raise LookupError(f'Object not found: {element}')

test/e2e/gui/elements/scroll.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,3 +26,12 @@ def vertical_scroll_up(self, element: QObject, timeout_sec: int = 5):
2626
driver.mouse.scroll(self.object, self.object.width / 2, self.object.height / 2, 0, 30, 1, 0.1)
2727
if time.monotonic() - started_at > timeout_sec:
2828
raise LookupError(f'Object not found: {element}')
29+
30+
@allure.step('Scroll horizontal right to object {1}')
31+
def horizontal_scroll_right(self, element: QObject, timeout_sec: int = 5):
32+
started_at = time.monotonic()
33+
while not element.is_visible:
34+
driver.mouse.scroll(self.object, self.object.width / 2, self.object.height / 2, 30, 0, 1, 0.1)
35+
if time.monotonic() - started_at > timeout_sec:
36+
raise LookupError(f'Object not found: {element}')
37+

test/e2e/gui/main_window.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
from configs.timeouts import APP_LOAD_TIMEOUT_MSEC
1111
from constants import UserAccount, CommunityData, Color
1212
from constants.dock_buttons import DockButtons
13+
from gui.components.activity_center import ActivityCenter
1314
from gui.components.introduce_yourself_popup import IntroduceYourselfPopup
1415
from gui.components.context_menu import ContextMenu
1516
from gui.components.toast_message import ToastMessage
@@ -42,6 +43,12 @@ def __init__(self):
4243
self.community_template_button = Button(names.statusCommunityMainNavBarListView_CommunityNavBarButton)
4344
self.settings_button = Button(names.settingsGearButton)
4445
self.wallet_button = Button(names.mainWalletButton)
46+
self.activity_center_button = Button(names.activityCenterButton)
47+
48+
@allure.step('Click notifications button and open activity center')
49+
@open_with_retries(ActivityCenter)
50+
def open_activity_center(self):
51+
return self.activity_center_button
4552

4653
@allure.step('Click Home button and open Home screen')
4754
@open_with_retries(HomeScreen)
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
from gui.objects_map.names import statusDesktop_mainWindow
2+
from objectmaphelper import *
3+
4+
# Map for activity center
5+
6+
activityCenterLeftPanel = {"container": statusDesktop_mainWindow, "objectName": "activityCenterLeftPanel", "type": "ColumnLayout", "visible": True}
7+
activityCenterListView = {"container": statusDesktop_mainWindow, "id": "listView", "type": "StatusListView", "unnamed": 1, "visible": True}
8+
activityCenterListLoader = {"container": activityCenterListView, "index": 0, "type": "Loader", "unnamed": 1, "visible": True}
9+
activityCenterContactRequest = {"container": activityCenterListLoader, "type": "ActivityNotificationContactRequest", "unnamed": 1, "visible": True}
10+
activityCenterContactRequestAcceptButton = {"container": activityCenterListLoader, "objectName": "acceptBtn", "type": "StatusFlatRoundButton", "visible": True}
11+
activityCenterContactRequestDeclineButton = {"container": activityCenterListLoader, "objectName": "declineBtn", "type": "StatusFlatRoundButton", "visible": True}
12+
activityCenterContactRequestMoreButton = {"container": activityCenterListLoader, "objectName": "moreBtn", "type": "StatusFlatRoundButton", "visible": True}
13+
activityCenterContactRequestHeader = {"container": activityCenterContactRequest, "type": "NotificationBaseHeaderRow", "unnamed": 1, "visible": True}
14+
activityCenterScrollView = {"container": statusDesktop_mainWindow, "type": "StatusScrollView", "unnamed": 1, "visible": True}
15+
activityCenterGroupButton = {"container": activityCenterScrollView, "objectName": "activityCenterGroupButton", "type": "StatusFlatButton", "visible": True}
16+
activityCenterNavigationButton = {"container": activityCenterLeftPanel, "type": "StatusNavigationButton", "visible": True}

test/e2e/gui/objects_map/names.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@
5353
"type": "StatusNavBarTabButton", "visible": True}
5454
settingsGearButton = {"container": communitiesSettingsNavBarList, "objectName": "Settings-navbar",
5555
"type": "StatusNavBarTabButton", "visible": True}
56+
activityCenterButton = {"container": communitiesSettingsNavBarList, "objectName": "Activity Center-navbar", "type": "StatusNavBarTabButton", "visible": True}
5657

5758
# Online identifier
5859
onlineIdentifierButton = {"container": mainWindow_LeftPanelNavBar, "objectName": "statusProfileNavBarTabButton",

test/e2e/gui/screens/messages.py

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,6 @@ def __init__(self):
9191
self.confirm_button = Button(messaging_names.statusToolBar_Confirm_StatusButton)
9292
self.status_button = Button(messaging_names.statusToolBar_Cancel_StatusButton)
9393
self.contact_tag = QObject(messaging_names.statusToolBar_StatusTagItem)
94-
self.notifications_button = Button(messaging_names.statusToolBar_notificationButton_StatusActivityCenterButton)
9594

9695
@allure.step('Remove member by clicking close icon on member tag')
9796
def click_contact_close_icon(self, member):
@@ -102,11 +101,6 @@ def click_contact_close_icon(self, member):
102101
driver.mouseClick(child)
103102
break
104103

105-
@allure.step('Open activity center')
106-
def open_activity_center(self):
107-
self.notifications_button.click()
108-
return ActivityCenter().wait_until_appears()
109-
110104
@allure.step('Open Pinned messages popup')
111105
def open_pinned_messages_popup(self):
112106
self.pinned_message_tooltip.click()

test/e2e/tests/crtitical_tests_prs/test_messaging_group_chat.py

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -63,10 +63,9 @@ def test_group_chat_add_contact_in_ac(multiple_instances, community_name, domain
6363
with step(f'User {user_two.name}, accept contact request from {user_one.name} via activity center'):
6464
aut_two.attach()
6565
main_window.prepare()
66-
activity_center = ToolBar().open_activity_center()
66+
activity_center = main_window.left_panel.open_activity_center()
6767
request = activity_center.find_contact_request_in_list(user_one.name)
68-
activity_center.click_activity_center_button(
69-
'Contact requests').accept_contact_request(request)
68+
activity_center.accept_contact_request(request)
7069
main_window.left_panel.click()
7170
main_window.hide()
7271

@@ -88,10 +87,9 @@ def test_group_chat_add_contact_in_ac(multiple_instances, community_name, domain
8887
with step(f'User {user_three.name}, accept contact request from {user_one.name} via activity center'):
8988
aut_three.attach()
9089
main_window.prepare()
91-
activity_center = ToolBar().open_activity_center()
90+
activity_center = main_window.left_panel.open_activity_center()
9291
request = activity_center.find_contact_request_in_list(user_one.name, configs.timeouts.APP_LOAD_TIMEOUT_MSEC)
93-
activity_center.click_activity_center_button(
94-
'Contact requests').accept_contact_request(request)
92+
activity_center.accept_contact_request(request)
9593
main_window.left_panel.click()
9694
main_window.hide()
9795

ui/app/AppLayouts/ActivityCenter/ActivityCenterLayout.qml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,9 @@ StatusSectionLayout {
5959
}
6060

6161
leftPanel: ColumnLayout {
62+
63+
objectName: "activityCenterLeftPanel"
64+
6265
id: leftPanel
6366
anchors.fill: parent
6467
spacing: 0

0 commit comments

Comments
 (0)