fix(@desktop/tests): Fixing gif and image unfirling scenarios

Fix #7912
This commit is contained in:
Michal Iskierko 2022-11-30 10:20:25 +01:00 committed by Michał Iskierko
parent 5d19667f2d
commit 0da0360beb
10 changed files with 47 additions and 44 deletions

View File

@ -172,6 +172,10 @@ def scroll_obj_by_name(objName: str):
obj = squish.waitForObject(getattr(names, objName)) obj = squish.waitForObject(getattr(names, objName))
squish.mouseWheel(obj, 206, 35, 0, -1, squish.Qt.ControlModifier) squish.mouseWheel(obj, 206, 35, 0, -1, squish.Qt.ControlModifier)
def reset_scroll_obj_by_name(objName: str):
obj = squish.waitForObject(getattr(names, objName))
obj.contentY = 0
# execute do_fn until validation_fn returns True or timeout is reached # execute do_fn until validation_fn returns True or timeout is reached
def do_until_validation_with_timeout(do_fn, validation_fn, message: str, timeout_ms: int=_MAX_WAIT_OBJ_TIMEOUT * 2): def do_until_validation_with_timeout(do_fn, validation_fn, message: str, timeout_ms: int=_MAX_WAIT_OBJ_TIMEOUT * 2):
start_time = time.time() start_time = time.time()

View File

@ -16,6 +16,7 @@ import string
from wsgiref import validate from wsgiref import validate
from drivers.SquishDriver import * from drivers.SquishDriver import *
from drivers.SquishDriverVerification import * from drivers.SquishDriverVerification import *
from utils.ObjectAccess import *
from .StatusMainScreen import MainScreenComponents from .StatusMainScreen import MainScreenComponents
from .StatusMainScreen import StatusMainScreen from .StatusMainScreen import StatusMainScreen
@ -48,6 +49,7 @@ class ENSScreen(Enum):
class MessagingOptionScreen(Enum): class MessagingOptionScreen(Enum):
ACTIVATE_OR_DEACTIVATE_LINK_PREVIEW: str = "displayMessageLinkPreviewItem" ACTIVATE_OR_DEACTIVATE_LINK_PREVIEW: str = "displayMessageLinkPreviewItem"
LINK_PREVIEW_SWITCH: str = "linkPreviewSwitch"
ACTIVATE_OR_DECTIVATE_IMAGE_UNFURLING: str = "imageUnfurlingItem" ACTIVATE_OR_DECTIVATE_IMAGE_UNFURLING: str = "imageUnfurlingItem"
TENOR_GIFS_PREVIEW_SWITCH_ITEM: str = "tenorGifsPreviewSwitchItem" TENOR_GIFS_PREVIEW_SWITCH_ITEM: str = "tenorGifsPreviewSwitchItem"
SCROLLVIEW: str = "settingsContentBase_ScrollView" SCROLLVIEW: str = "settingsContentBase_ScrollView"
@ -160,21 +162,26 @@ class SettingsScreen:
def open_messaging_settings(self): def open_messaging_settings(self):
click_obj_by_name(SidebarComponents.MESSAGING_ITEM.value) click_obj_by_name(SidebarComponents.MESSAGING_ITEM.value)
def activate_link_preview(self): # if link preview is activated do nothing
def activate_link_preview_if_dectivated(self):
click_obj_by_name(SidebarComponents.MESSAGING_ITEM.value) click_obj_by_name(SidebarComponents.MESSAGING_ITEM.value)
scroll_item_until_item_is_visible(MessagingOptionScreen.SCROLLVIEW.value, MessagingOptionScreen.ACTIVATE_OR_DEACTIVATE_LINK_PREVIEW.value) # view can be scrolled down, we need to reset scroll
click_obj_by_name(MessagingOptionScreen.ACTIVATE_OR_DEACTIVATE_LINK_PREVIEW.value) reset_scroll_obj_by_name(MessagingOptionScreen.SCROLLVIEW.value)
scroll_item_until_item_is_visible(MessagingOptionScreen.SCROLLVIEW.value, MessagingOptionScreen.LINK_PREVIEW_SWITCH.value)
switch = wait_and_get_obj(MessagingOptionScreen.LINK_PREVIEW_SWITCH.value)
if not switch.checked:
click_obj_by_name(MessagingOptionScreen.LINK_PREVIEW_SWITCH.value)
# Post condition: Messaging Settings and Link Preview are visible (@see open_messaging_settings and activate_link_preview) # Post condition: Messaging Settings is active and Link Preview is activated (@see open_messaging_settings and activate_link_preview_if_dectivated)
def activate_image_unfurling(self): def activate_image_unfurling(self):
scroll_item_until_item_is_visible(MessagingOptionScreen.SCROLLVIEW.value, MessagingOptionScreen.ACTIVATE_OR_DECTIVATE_IMAGE_UNFURLING.value) scroll_item_until_item_is_visible(MessagingOptionScreen.SCROLLVIEW.value, MessagingOptionScreen.ACTIVATE_OR_DECTIVATE_IMAGE_UNFURLING.value)
click_obj_by_name(MessagingOptionScreen.ACTIVATE_OR_DECTIVATE_IMAGE_UNFURLING.value) click_obj_by_name(MessagingOptionScreen.ACTIVATE_OR_DECTIVATE_IMAGE_UNFURLING.value)
# Post condition: Messaging Settings and Link Preview are visible (@see open_messaging_settings and activate_link_preview) # Post condition: Messaging Settings is active and Link Preview is activated (@see open_messaging_settings and activate_link_preview_if_dectivated)
def check_tenor_gif_preview_is_enabled(self): def the_user_activates_tenor_gif_preview(self):
click_obj_by_name(SidebarComponents.MESSAGING_ITEM.value)
scroll_item_until_item_is_visible(MessagingOptionScreen.SCROLLVIEW.value, MessagingOptionScreen.TENOR_GIFS_PREVIEW_SWITCH_ITEM.value) scroll_item_until_item_is_visible(MessagingOptionScreen.SCROLLVIEW.value, MessagingOptionScreen.TENOR_GIFS_PREVIEW_SWITCH_ITEM.value)
tenorSwitch = wait_and_get_obj(MessagingOptionScreen.TENOR_GIFS_PREVIEW_SWITCH_ITEM.value) click_obj_by_name(MessagingOptionScreen.TENOR_GIFS_PREVIEW_SWITCH_ITEM.value)
verify(tenorSwitch.enabled, "Tenor GIFs preview is enabled")
def toggle_test_networks(self): def toggle_test_networks(self):
# needed cause if we do it immmediately the toggle doesn't work # needed cause if we do it immmediately the toggle doesn't work

View File

@ -38,7 +38,7 @@ class StatusAccountsScreen():
account_obj = None account_obj = None
[is_loaded, accountsList] = is_loaded_visible_and_enabled(SAccountsComponents.ACCOUNTS_POPUP.value) [is_loaded, accountsList] = is_loaded_visible_and_enabled(SAccountsComponents.ACCOUNTS_POPUP.value)
if is_loaded: if is_loaded:
for child in getChildrenOfType(accountsList, "AccountMenuItemPanel"): for child in get_children_of_type(accountsList, "AccountMenuItemPanel"):
if(child.label == account): if(child.label == account):
account_obj = child account_obj = child
found = True found = True

View File

@ -374,24 +374,15 @@ class StatusChatScreen:
last_message_obj = self.get_message_at_index(0) last_message_obj = self.get_message_at_index(0)
verify(bool(last_message_obj.isEdited), "Message is not marked as edited") verify(bool(last_message_obj.isEdited), "Message is not marked as edited")
def verify_last_message_sent(self, message: str): def get_last_message_text(self):
# Get the message text
# We don't search for StatusTextMessage_chatText directly, because there're 2 instances of it in a reply message
last_message_obj = self.get_message_at_index(0) last_message_obj = self.get_message_at_index(0)
text_message_obj = get_children_with_object_name(last_message_obj, ChatItems.STATUS_MESSAGE_TEXT_MESSAGE.value)[0] return last_message_obj.messageText
text_edit_obj = get_children_with_object_name(text_message_obj, ChatItems.STATUS_TEXT_MESSAGE_CHAT_TEXT.value)[0]
verify(not is_null(text_edit_obj), "Checking last message sent: " + message) def verify_last_message_sent(self, message: str):
verify_text_contains(str(text_edit_obj.text), str(message)) verify_text_contains(str(self.get_last_message_text()), str(message))
def verify_last_message_sent_is_not(self, message: str): def verify_last_message_sent_is_not(self, message: str):
last_message_obj = self.get_message_at_index(0) verify_text_does_not_contain(str(self.get_last_message_text()), str(message))
text_message_objs = get_children_with_object_name(last_message_obj, ChatItems.STATUS_MESSAGE_TEXT_MESSAGE.value)
if len(text_message_objs) == 0:
passes("Success: No message was found")
return
text_edit_obj = get_children_with_object_name(text_message_objs[0], ChatItems.STATUS_TEXT_MESSAGE_CHAT_TEXT.value)[0]
verify(not is_null(text_edit_obj), "Checking last message sent: " + message)
verify_text_does_not_contain(str(text_edit_obj.text), str(message))
# This method expects to have just one mention / link in the last chat message # This method expects to have just one mention / link in the last chat message
def verify_last_message_sent_contains_mention(self, displayName: str, message: str): def verify_last_message_sent_contains_mention(self, displayName: str, message: str):

View File

@ -1,13 +1,13 @@
import squish import squish
import object import object
def getChildrenOfType(parent, typename, depth=1000): def get_children_of_type(parent, typename, depth=1000):
children = [] children = []
for child in object.children(parent): for child in object.children(parent):
if squish.className(child) == typename: if squish.className(child) == typename:
children.append(child) children.append(child)
if depth: if depth:
children.extend(getChildrenOfType(child, typename, depth - 1)) children.extend(get_children_of_type(child, typename, depth - 1))
return children return children
def get_children_with_object_name(parent, objectName, depth=1000): def get_children_with_object_name(parent, objectName, depth=1000):

View File

@ -89,6 +89,7 @@ generatedAccounts_ListView = {"container": statusDesktop_mainWindow, "objectName
# Messaging Settings: # Messaging Settings:
settingsContentBase_ScrollView = {"container": statusDesktop_mainWindow, "objectName": "settingsContentBaseScrollView", "type": "StatusScrollView", "visible": True} settingsContentBase_ScrollView = {"container": statusDesktop_mainWindow, "objectName": "settingsContentBaseScrollView", "type": "StatusScrollView", "visible": True}
displayMessageLinkPreviewItem = {"container": statusDesktop_mainWindow, "objectName": "displayMessageLinkPreviewsItem", "type": "StatusListItem"} displayMessageLinkPreviewItem = {"container": statusDesktop_mainWindow, "objectName": "displayMessageLinkPreviewsItem", "type": "StatusListItem"}
linkPreviewSwitch = {"container": statusDesktop_mainWindow, "objectName": "MessagingView_showMessageLinksSwitch", "type": "StatusSwitch", "visible": True}
imageUnfurlingItem = {"container": statusDesktop_mainWindow, "objectName": "imageUnfurlingItem", "type": "StatusListItem"} imageUnfurlingItem = {"container": statusDesktop_mainWindow, "objectName": "imageUnfurlingItem", "type": "StatusListItem"}
tenorGifsPreviewSwitchItem = {"container": statusDesktop_mainWindow, "objectName": "MessagingView_sitesListView_StatusListItem_tenor_gifs_subdomain", "type": "StatusListItem"} tenorGifsPreviewSwitchItem = {"container": statusDesktop_mainWindow, "objectName": "MessagingView_sitesListView_StatusListItem_tenor_gifs_subdomain", "type": "StatusListItem"}
contacts_listItem_btn = {"container": statusDesktop_mainWindow, "objectName": "MessagingView_ContactsListItem_btn", "type": "StatusContactRequestsIndicatorListItem"} contacts_listItem_btn = {"container": statusDesktop_mainWindow, "objectName": "MessagingView_ContactsListItem_btn", "type": "StatusContactRequestsIndicatorListItem"}

View File

@ -19,11 +19,7 @@ def step(context: any):
@Given("the user opens the messaging settings") @Given("the user opens the messaging settings")
def step(context: any): def step(context: any):
the_user_opens_the_messaging_settings() the_user_opens_the_messaging_settings()
@Given("tenor GIFs preview is enabled")
def step(context: any):
_settingsScreen.check_tenor_gif_preview_is_enabled()
@Given("the user activates wallet and opens the wallet section") @Given("the user activates wallet and opens the wallet section")
def step(context: any): def step(context: any):
init_steps.the_user_activates_wallet_and_opens_the_wallet_section() init_steps.the_user_activates_wallet_and_opens_the_wallet_section()
@ -39,11 +35,20 @@ def step(context: any):
@Given("the user opens the wallet settings") @Given("the user opens the wallet settings")
def step(context: any): def step(context: any):
the_user_opens_the_wallet_settings() the_user_opens_the_wallet_settings()
######################### #########################
### ACTIONS region: ### ACTIONS region:
######################### #########################
@When("the user activates the link preview if it is deactivated")
def step(context: any):
_settingsScreen.activate_link_preview_if_dectivated()
@When("the user activates tenor GIFs preview")
def step(context: any):
_settingsScreen.the_user_activates_tenor_gif_preview()
@When("the user opens app settings screen") @When("the user opens app settings screen")
def step(context: any): def step(context: any):
the_user_opens_app_settings_screen() the_user_opens_app_settings_screen()
@ -52,10 +57,6 @@ def step(context: any):
def step(context: any): def step(context: any):
the_user_opens_the_messaging_settings() the_user_opens_the_messaging_settings()
@When("the user activates link preview")
def step(context: any):
_settingsScreen.activate_link_preview()
@When("the user activates image unfurling") @When("the user activates image unfurling")
def step(context: any): def step(context: any):
_settingsScreen.activate_image_unfurling() _settingsScreen.activate_image_unfurling()

View File

@ -207,7 +207,7 @@ def step(context):
@Then("the GIF message is displayed") @Then("the GIF message is displayed")
def step(context): def step(context):
_statusChat.verify_last_message_sent("tenor.gif") _statusChat.verify_last_message_sent("tenor.com")
@Then("the image |any| is unfurled in the chat") @Then("the image |any| is unfurled in the chat")
def step(context: any, image_link: str): def step(context: any, image_link: str):

View File

@ -64,23 +64,21 @@ Feature: Status Desktop Chat Basic Flows
When the user clears chat history When the user clears chat history
Then the chat is cleared Then the chat is cleared
@mayfail
# TODO: Verification of gif sent fails. And also `tenor GIFs preview is enabled` step doesn't work. Review it.
Scenario: The user can send a GIF Scenario: The user can send a GIF
Given the user opens app settings screen Given the user opens app settings screen
And the user opens the messaging settings And the user opens the messaging settings
And tenor GIFs preview is enabled When the user activates the link preview if it is deactivated
When the user sends a GIF message And the user activates tenor GIFs preview
And the user opens the chat section
And the user sends a GIF message
Then the GIF message is displayed Then the GIF message is displayed
@mayfail
# TODO: It works standalone but when it runs as part of the sequence, the action of activates link preview doesn't work.
Scenario Outline: The user can activate image unfurling Scenario Outline: The user can activate image unfurling
Given the user sends a chat message "<image_url>" Given the user sends a chat message "<image_url>"
And the image "<image_url>" is not unfurled in the chat And the image "<image_url>" is not unfurled in the chat
When the user opens app settings screen And the user opens app settings screen
And the user opens the messaging settings And the user opens the messaging settings
And the user activates link preview When the user activates the link preview if it is deactivated
And the user activates image unfurling And the user activates image unfurling
And the user opens the chat section And the user opens the chat section
Then the image "<image_url>" is unfurled in the chat Then the image "<image_url>" is unfurled in the chat

View File

@ -170,6 +170,7 @@ SettingsContentBase {
components: [ components: [
StatusSwitch { StatusSwitch {
id: showMessageLinksSwitch id: showMessageLinksSwitch
objectName: "MessagingView_showMessageLinksSwitch"
checked: previewableSites.anyWhitelisted || localAccountSensitiveSettings.displayChatImages checked: previewableSites.anyWhitelisted || localAccountSensitiveSettings.displayChatImages
onToggled: { onToggled: {
if (!checked) { if (!checked) {