From 38b3e03fe5e3e525b4b12f5b17647d0ff30cbfd5 Mon Sep 17 00:00:00 2001 From: Anastasiya Semenkevich Date: Wed, 6 Nov 2024 21:49:46 +0300 Subject: [PATCH] chore: simplify new permission class --- .../community/community_channel_popups.py | 1 + .../components/community/invite_contacts.py | 4 +- .../community/new_permission_popup.py | 85 +------------------ test/e2e/gui/screens/community.py | 22 +---- test/e2e/scripts/utils/generators.py | 4 + .../test_communities_categories.py | 4 +- .../communities/test_communities_channels.py | 14 +-- .../communities/test_communities_kick_ban.py | 4 +- ...test_communities_pin_and_unpin_messages.py | 4 +- ...end_accept_decline_request_from_profile.py | 5 +- .../test_messaging_1x1_chat.py | 5 +- .../test_messaging_group_chat.py | 7 +- 12 files changed, 38 insertions(+), 121 deletions(-) diff --git a/test/e2e/gui/components/community/community_channel_popups.py b/test/e2e/gui/components/community/community_channel_popups.py index b458682cd2..897ca6fd86 100644 --- a/test/e2e/gui/components/community/community_channel_popups.py +++ b/test/e2e/gui/components/community/community_channel_popups.py @@ -6,6 +6,7 @@ from gui.elements.button import Button from gui.elements.check_box import CheckBox from gui.elements.text_edit import TextEdit from gui.objects_map import names +from gui.screens.community_settings import PermissionsSettingsView class ChannelPopup(BasePopup): diff --git a/test/e2e/gui/components/community/invite_contacts.py b/test/e2e/gui/components/community/invite_contacts.py index 02498f7923..f4ed38ec18 100644 --- a/test/e2e/gui/components/community/invite_contacts.py +++ b/test/e2e/gui/components/community/invite_contacts.py @@ -42,10 +42,10 @@ class InviteContactsPopup(BasePopup): selected = [] for member in driver.findAllObjects(self.member_checkbox.real_name): - if str(getattr(member, 'objectName', '')).split('-')[1] in contacts: + if str(getattr(member, 'objectName', '')).split('contactCheckbox-')[1] in contacts: CheckBox(member).set(True) assert member.checkState != 0, f"Member item checkbox is not checked" - selected.append(str(getattr(member, 'objectName', '')).split('-')[1]) + selected.append(str(getattr(member, 'objectName', '')).split('contactCheckbox-')[1]) assert set(contacts) == set(selected), f'Selected contacts: {selected}, expected: {contacts}' diff --git a/test/e2e/gui/components/community/new_permission_popup.py b/test/e2e/gui/components/community/new_permission_popup.py index 1d6937baf6..f25dd9f1a8 100644 --- a/test/e2e/gui/components/community/new_permission_popup.py +++ b/test/e2e/gui/components/community/new_permission_popup.py @@ -8,9 +8,10 @@ from gui.elements.check_box import CheckBox from gui.elements.object import QObject from gui.elements.text_edit import TextEdit from gui.objects_map import communities_names +from gui.screens.community_settings import PermissionsSettingsView -class NewPermissionPopup(QObject): +class NewPermissionPopup(PermissionsSettingsView): def __init__(self): super(NewPermissionPopup, self).__init__() self._who_holds_checkbox = CheckBox(communities_names.whoHoldsSwitch_StatusSwitch) @@ -25,89 +26,7 @@ class NewPermissionPopup(QObject): self._who_holds_list_item = QObject(communities_names.who_holds_StatusItemSelector) self._is_allowed_to_list_item = QObject(communities_names.is_allowed_to_StatusFlowSelector) - @allure.step('Wait until appears {0}') - def wait_until_appears(self, timeout_msec: int = configs.timeouts.UI_LOAD_TIMEOUT_MSEC): - driver.waitForObjectExists(self._create_permission_button.real_name, timeout_msec) - return self - - @allure.step('Set state of who holds checkbox') - def set_who_holds_checkbox_state(self, state): - if state is False: - self._who_holds_checkbox.set(state) - - @allure.step('Open Who holds context menu') - def open_who_holds_context_menu(self, attempt: int = 2): - try: - for child in walk_children(self._who_holds_list_item.object): - if getattr(child, 'objectName', '') == 'addItemButton': - driver.mouseClick(child) - return self._who_holds_asset_field.wait_until_appears() - except AssertionError: - if attempt: - return self.open_who_holds_context_menu(attempt - 1) - else: - raise LookupError('Add button for who holds not found') - - @allure.step('Open Is allowed to context menu') - def open_is_allowed_to_context_menu(self, attempt: int = 2): - try: - for child in walk_children(self._is_allowed_to_list_item.object): - if getattr(child, 'objectName', '') == 'addItemButton': - driver.mouseClick(child) - return - except LookupError: - if attempt: - return self.open_is_allowed_to_context_menu(attempt - 1) - else: - raise LookupError('Add button for allowed to not found') - - @allure.step('Set asset and amount') - def set_who_holds_asset_and_amount(self, asset: str, amount: str): - if asset is not False: - self.open_who_holds_context_menu() - self._who_holds_asset_field.clear().text = asset - self._asset_item.click() - self._who_holds_asset_field.wait_until_hidden() - self._who_holds_amount_field.text = amount - self.click_add_button_who_holds() - return self - - @allure.step('Choose option from Is allowed to context menu') - def set_is_allowed_to(self, name): - self.open_is_allowed_to_context_menu() - self._is_allowed_to_option_button.real_name['objectName'] = name - self._is_allowed_to_option_button.wait_until_appears().click() - self.click_add_button_is_allowed() - return self - - @allure.step('Click add button for who holds') - def click_add_button_who_holds(self, attempt: int = 2): - self._add_button_who_holds.click() - try: - self._add_button_who_holds.wait_until_hidden() - except AssertionError as err: - if attempt: - self.click_add_button_who_holds(attempt - 1) - else: - raise err - - @allure.step('Click add button is allowed') - def click_add_button_is_allowed(self, attempt: int = 2): - self._add_button_is_allowed_to.click() - try: - self._add_button_is_allowed_to.wait_until_hidden() - except AssertionError as err: - if attempt: - self.click_add_button_is_allowed(attempt - 1) - else: - raise err - @allure.step('Click create permission') def create_permission(self): self._create_permission_button.click() self._create_permission_button.wait_until_hidden() - - @allure.step('Switch hide permission checkbox') - def switch_hide_permission_checkbox(self, state): - self._hide_permission_checkbox.set(state) - return self diff --git a/test/e2e/gui/screens/community.py b/test/e2e/gui/screens/community.py index 9f46bca89a..5a3078029c 100644 --- a/test/e2e/gui/screens/community.py +++ b/test/e2e/gui/screens/community.py @@ -350,16 +350,6 @@ class LeftPanel(QObject): self._more_button.click() return ContextMenu() - @allure.step('Get visibility state of delete item') - def is_delete_item_visible(self) -> bool: - return self._delete_category_item.is_visible - - @allure.step('Get visibility state of edit item') - def is_edit_item_visible(self) -> bool: - return self.edit_category_item.is_visible - - - @allure.step('Open new channel popup inside category') def open_new_channel_popup_in_category(self) -> NewChannelPopup: self._arrow_button.click() @@ -376,16 +366,10 @@ class LeftPanel(QObject): def right_click_on_panel(self): super(LeftPanel, self).right_click() - @allure.step('Invite people to community') - def invite_people_to_community(self, contacts: typing.List[str], message: str, attempts: int = 2): + @allure.step('Open add members popup') + def open_add_members_popup(self): self._add_members_button.click() - try: - InviteContactsPopup().wait_until_appears().invite(contacts, message) - except AssertionError as err: - if attempts: - self.invite_people_to_community(contacts, message, attempts - 1) - else: - raise err + return InviteContactsPopup().wait_until_appears() class Chat(QObject): diff --git a/test/e2e/scripts/utils/generators.py b/test/e2e/scripts/utils/generators.py index effd2367a1..66e65ba3c2 100644 --- a/test/e2e/scripts/utils/generators.py +++ b/test/e2e/scripts/utils/generators.py @@ -76,3 +76,7 @@ def get_wallet_address_from_mnemonic(mnemonic_data) -> str: child_w = w.get_child_for_path("m/44'/60'/0'/0/0") address_from_mnemonic = child_w.address() return address_from_mnemonic + + +def random_text_message(): + return ''.join(random.choice(string.ascii_letters + string.digits) for _ in range(1, 141)) diff --git a/test/e2e/tests/communities/test_communities_categories.py b/test/e2e/tests/communities/test_communities_categories.py index 30207578de..889f5bddc3 100644 --- a/test/e2e/tests/communities/test_communities_categories.py +++ b/test/e2e/tests/communities/test_communities_categories.py @@ -36,7 +36,7 @@ def test_member_role_cannot_add_edit_or_delete_category(main_screen: MainWindow) with step('Verify that context menu does not appear'): assert not ContextMenu().is_visible with step('Verify that delete item is not present in more options context menu'): - assert not community_screen.left_panel.open_more_options().is_edit_item_visible() + assert not community_screen.left_panel.open_more_options().edit_category_item.is_visible with step('Verify that member cannot delete category'): with step('Right-click on category in the left navigation bar'): @@ -44,7 +44,7 @@ def test_member_role_cannot_add_edit_or_delete_category(main_screen: MainWindow) with step('Verify that context menu does not appear'): assert not ContextMenu().is_visible with step('Verify that delete item is not present in more options context menu'): - assert not community_screen.left_panel.open_more_options().is_delete_item_visible() + assert not community_screen.left_panel.open_more_options().delete_category_item.is_visible @allure.testcase('https://ethstatus.testrail.net/index.php?/cases/view/704622', 'Community category clicking') diff --git a/test/e2e/tests/communities/test_communities_channels.py b/test/e2e/tests/communities/test_communities_channels.py index bd8c061fdf..c2ff70e44a 100644 --- a/test/e2e/tests/communities/test_communities_channels.py +++ b/test/e2e/tests/communities/test_communities_channels.py @@ -1,5 +1,6 @@ import random import string +import time import allure import pytest @@ -149,13 +150,16 @@ def test_member_cannot_see_hidden_channel(multiple_instances, user_data_one, use community_screen = main_screen.left_panel.select_community('Community with 2 users') with step(f'User {user_two.name}, create hidden channel, verify that it is in the list'): - permission_popup = community_screen.left_panel.open_create_channel_popup().create(channel_name, + create_channel_popup = community_screen.left_panel.open_create_channel_popup().create(channel_name, channel_description, emoji=None) - permission_popup.add_permission().set_who_holds_asset_and_amount(asset, amount).set_is_allowed_to( - 'viewOnly').switch_hide_permission_checkbox(True).create_permission() - permission_popup.hide_permission(True) - permission_popup.save_button.click() + permission_popup = create_channel_popup.add_permission() + time.sleep(3) + permission_popup.set_who_holds_asset_and_amount(asset, amount) + permission_popup.set_is_allowed_to('viewOnly') + permission_popup.switch_hide_permission_checkbox(True) + permission_popup.create_permission() + create_channel_popup.save_create_button.click() channel = community_screen.left_panel.get_channel_parameters(channel_name) assert driver.waitFor(lambda: channel in community_screen.left_panel.channels, configs.timeouts.UI_LOAD_TIMEOUT_MSEC) diff --git a/test/e2e/tests/communities/test_communities_kick_ban.py b/test/e2e/tests/communities/test_communities_kick_ban.py index 4913a8599f..bd75b8b7fb 100644 --- a/test/e2e/tests/communities/test_communities_kick_ban.py +++ b/test/e2e/tests/communities/test_communities_kick_ban.py @@ -9,6 +9,7 @@ from constants import UserAccount, RandomUser, RandomCommunity, CommunityData from constants.community import ToastMessages from gui.screens.community import Members from gui.screens.messages import MessagesScreen +from scripts.utils.generators import random_text_message from . import marks import configs.testpath @@ -69,7 +70,8 @@ def test_community_admin_ban_kick_member_and_delete_message(multiple_instances): main_screen.create_community(community_data=community) community_screen = main_screen.left_panel.select_community(community.name) - community_screen.left_panel.invite_people_to_community([user_one.name], 'Message') + add_members = community_screen.left_panel.open_add_members_popup() + add_members.invite([user_one.name], message=random_text_message()) main_screen.hide() with step(f'User {user_one.name}, accept invitation from {user_two.name}'): diff --git a/test/e2e/tests/communities/test_communities_pin_and_unpin_messages.py b/test/e2e/tests/communities/test_communities_pin_and_unpin_messages.py index 6aab9680b6..4c7f278e62 100644 --- a/test/e2e/tests/communities/test_communities_pin_and_unpin_messages.py +++ b/test/e2e/tests/communities/test_communities_pin_and_unpin_messages.py @@ -7,6 +7,7 @@ from allure_commons._allure import step import driver from gui.components.community.pinned_messages_popup import PinnedMessagesPopup from gui.main_window import MainWindow +from scripts.utils.generators import random_text_message from . import marks import configs from constants import ColorCodes, UserAccount, RandomUser, RandomCommunity @@ -70,7 +71,8 @@ def test_join_community_and_pin_unpin_message(multiple_instances): community = RandomCommunity() main_screen.create_community(community_data=community) community_screen = main_screen.left_panel.select_community(community.name) - community_screen.left_panel.invite_people_to_community([user_one.name], 'Message') + add_members = community_screen.left_panel.open_add_members_popup() + add_members.invite([user_one.name], message=random_text_message()) main_screen.hide() with step(f'User {user_one.name}, accept invitation from {user_two.name}'): diff --git a/test/e2e/tests/communities/test_communities_send_accept_decline_request_from_profile.py b/test/e2e/tests/communities/test_communities_send_accept_decline_request_from_profile.py index a78d01e347..20f6f08633 100644 --- a/test/e2e/tests/communities/test_communities_send_accept_decline_request_from_profile.py +++ b/test/e2e/tests/communities/test_communities_send_accept_decline_request_from_profile.py @@ -6,6 +6,7 @@ import driver from gui.components.profile_popup import ProfilePopupFromMembers from gui.components.remove_contact_popup import RemoveContactPopup from gui.main_window import MainWindow +from scripts.utils.generators import random_text_message from . import marks import configs from constants import UserAccount, RandomUser, RandomCommunity @@ -98,8 +99,8 @@ def test_communities_send_accept_decline_request_remove_contact_from_profile(mul main_screen.create_community(community_data=community) community_screen = main_screen.left_panel.select_community(community.name) - community_screen.left_panel.invite_people_to_community([user_one.name], 'Message') - community_screen.left_panel.invite_people_to_community([user_three.name], 'Message') + add_popup = community_screen.left_panel.open_add_members_popup() + add_popup.invite([user_one.name, user_three.name], message=random_text_message()) main_screen.hide() with step(f'User {user_three.name}, accept invitation from {user_two.name}'): diff --git a/test/e2e/tests/crtitical_tests_prs/test_messaging_1x1_chat.py b/test/e2e/tests/crtitical_tests_prs/test_messaging_1x1_chat.py index 0a9d2765be..0815c6375d 100644 --- a/test/e2e/tests/crtitical_tests_prs/test_messaging_1x1_chat.py +++ b/test/e2e/tests/crtitical_tests_prs/test_messaging_1x1_chat.py @@ -16,6 +16,7 @@ from gui.screens.messages import MessagesScreen import configs.testpath from constants import RandomUser, UserAccount from gui.main_window import MainWindow +from scripts.utils.generators import random_text_message from scripts.utils.parsers import remove_tags from . import marks @@ -196,8 +197,8 @@ def test_1x1_chat_add_contact_in_settings(multiple_instances): f"There is no image in the last message" with step(f'User {user_one.name}, reply to own message and verify that message displayed as a reply'): - chat_message_reply = \ - ''.join(random.choice(string.ascii_letters + string.digits) for _ in range(1, 21)) + chat_message_reply = random_text_message() + message.hover_message().reply_own_message(chat_message_reply) chat = main_window.left_panel.open_messages_screen().left_panel.click_chat_by_name(user_two.name) message = chat.find_message_by_text(chat_message_reply, 0) diff --git a/test/e2e/tests/crtitical_tests_prs/test_messaging_group_chat.py b/test/e2e/tests/crtitical_tests_prs/test_messaging_group_chat.py index 81abb617a4..af037831b6 100644 --- a/test/e2e/tests/crtitical_tests_prs/test_messaging_group_chat.py +++ b/test/e2e/tests/crtitical_tests_prs/test_messaging_group_chat.py @@ -13,6 +13,7 @@ from constants import UserAccount, RandomUser from constants.messaging import Messaging from gui.main_window import MainWindow from gui.screens.messages import MessagesScreen, ToolBar +from scripts.utils.generators import random_text_message from . import marks pytestmark = marks @@ -128,8 +129,7 @@ def test_group_chat_add_contact_in_ac(multiple_instances, community_name, domain assert messages_screen.group_chat.group_name == group_chat_new_name with step('Send message to group chat and verify it was sent'): - chat_message = ''.join(random.choices(string.ascii_letters + - string.digits, k=40)) + chat_message = random_text_message() messages_screen.group_chat.send_message_to_group_chat(chat_message) message_objects = messages_screen.chat.messages('0') message_items = [message.text for message in message_objects] @@ -166,8 +166,7 @@ def test_group_chat_add_contact_in_ac(multiple_instances, community_name, domain assert len(messages_screen.right_panel.members) == 2 with step('Send message to group chat after user removal and verify it'): - chat_message_2 = ''.join(random.choices(string.ascii_letters + - string.digits, k=40)) + chat_message_2 = random_text_message() messages_screen.group_chat.send_message_to_group_chat(chat_message_2) message_objects = messages_screen.chat.messages('1') message_items = [message.text for message in message_objects]