Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add a UI for toggling developer feature flags #18602

Merged
merged 3 commits into from
Feb 6, 2024
Merged

Conversation

J-Son89
Copy link
Contributor

@J-Son89 J-Son89 commented Jan 23, 2024

This pr: #18530 and some recent discussions in the Wallet Team to start using Feature Epics (e.g #18568) encouraged the need for small improvements in how we use feature-flags.

Note - Please review by commit chore: add feature flags poc only

Created a simple UI page for a devs, QA, designer to toggle on/off these feature flags - intended for development purposes only

I wanted to bring this discussion so this pr is completely open to suggestion and hapopy to scrap the whle thing and take a new approach if needs be.

quick demo:

Screen.Recording.2024-01-23.at.21.03.48.mov

I didn't pull other features into this screen just yet as this can be done in a follow up.

Testing notes:
two features are feature flag.

The bridging - go to a wallet account, press the "Bridge" button.

The second is edit keypair, go to "Add account", press "edit" button beside " default keypair"

@J-Son89 J-Son89 changed the title Jc/feature flags Add a UI for toggling developer feature flags Jan 23, 2024
@status-im-auto
Copy link
Member

status-im-auto commented Jan 23, 2024

Jenkins Builds

Click to see older builds (37)
Commit #️⃣ Finished (UTC) Duration Platform Result
1c43b02 #1 2024-01-23 21:00:21 ~2 min tests 📄log
1c43b02 #2 2024-01-23 21:02:31 ~1 min tests 📄log
✔️ 1c43b02 #2 2024-01-23 21:06:19 ~5 min ios 📱ipa 📲
✔️ 1c43b02 #2 2024-01-23 21:07:50 ~7 min android 🤖apk 📲
✔️ 1c43b02 #2 2024-01-23 21:08:02 ~7 min android-e2e 🤖apk 📲
✔️ 2269587 #3 2024-01-23 21:18:32 ~5 min ios 📱ipa 📲
✔️ 2269587 #3 2024-01-23 21:19:08 ~5 min tests 📄log
✔️ 2269587 #3 2024-01-23 21:22:00 ~8 min android 🤖apk 📲
✔️ 2269587 #3 2024-01-23 21:22:01 ~8 min android-e2e 🤖apk 📲
✔️ 2269587 #4 2024-01-25 21:18:56 ~5 min tests 📄log
✔️ 2269587 #4 2024-01-25 21:20:01 ~6 min ios 📱ipa 📲
✔️ 2269587 #4 2024-01-25 21:22:17 ~8 min android-e2e 🤖apk 📲
✔️ 2269587 #4 2024-01-25 21:22:21 ~8 min android 🤖apk 📲
✔️ 602547f #6 2024-01-29 12:49:35 ~5 min tests 📄log
✔️ 602547f #6 2024-01-29 12:51:18 ~6 min ios 📱ipa 📲
✔️ 602547f #6 2024-01-29 12:51:30 ~7 min android-e2e 🤖apk 📲
✔️ 602547f #6 2024-01-29 12:52:09 ~7 min android 🤖apk 📲
✔️ be443bf #7 2024-01-31 12:39:51 ~5 min tests 📄log
✔️ be443bf #7 2024-01-31 12:40:04 ~5 min ios 📱ipa 📲
✔️ be443bf #7 2024-01-31 12:42:25 ~7 min android-e2e 🤖apk 📲
✔️ be443bf #7 2024-01-31 12:42:40 ~8 min android 🤖apk 📲
✔️ 9231d79 #8 2024-01-31 15:13:02 ~4 min tests 📄log
✔️ 9231d79 #8 2024-01-31 15:13:44 ~5 min ios 📱ipa 📲
✔️ 9231d79 #8 2024-01-31 15:16:23 ~8 min android 🤖apk 📲
✔️ 9231d79 #8 2024-01-31 15:16:39 ~8 min android-e2e 🤖apk 📲
✔️ b635053 #9 2024-02-01 11:54:57 ~5 min tests 📄log
✔️ b635053 #9 2024-02-01 11:55:08 ~5 min ios 📱ipa 📲
✔️ b635053 #9 2024-02-01 11:56:22 ~6 min android 🤖apk 📲
✔️ b635053 #9 2024-02-01 11:57:25 ~7 min android-e2e 🤖apk 📲
✔️ 358d2b4 #10 2024-02-01 21:25:04 ~5 min ios 📱ipa 📲
✔️ 358d2b4 #10 2024-02-01 21:25:42 ~6 min tests 📄log
✔️ 358d2b4 #10 2024-02-01 21:27:57 ~8 min android-e2e 🤖apk 📲
✔️ 358d2b4 #10 2024-02-01 21:28:12 ~8 min android 🤖apk 📲
✔️ ad712bd #11 2024-02-02 15:03:11 ~6 min ios 📱ipa 📲
✔️ ad712bd #11 2024-02-02 15:03:13 ~6 min tests 📄log
✔️ ad712bd #11 2024-02-02 15:03:42 ~6 min android-e2e 🤖apk 📲
✔️ ad712bd #11 2024-02-02 15:06:16 ~9 min android 🤖apk 📲
Commit #️⃣ Finished (UTC) Duration Platform Result
✔️ 1c6e74f #12 2024-02-05 15:39:30 ~5 min tests 📄log
✔️ 1c6e74f #12 2024-02-05 15:39:35 ~5 min ios 📱ipa 📲
✔️ 1c6e74f #12 2024-02-05 15:42:57 ~8 min android-e2e 🤖apk 📲
✔️ 1c6e74f #12 2024-02-05 15:42:57 ~8 min android 🤖apk 📲
✔️ 0ac4e02 #14 2024-02-06 12:15:25 ~5 min tests 📄log
✔️ 0ac4e02 #14 2024-02-06 12:15:35 ~5 min ios 📱ipa 📲
✔️ 0ac4e02 #14 2024-02-06 12:17:49 ~7 min android-e2e 🤖apk 📲
✔️ 0ac4e02 #14 2024-02-06 12:17:49 ~7 min android 🤖apk 📲

@J-Son89 J-Son89 changed the base branch from develop to jc/clean-mocks January 23, 2024 21:00
status-im-preview/main-screens)))
status-im-preview/main-screens)

(when config/quo-preview-enabled?
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we should rename this var quo-preview-enabled? to something more generic

@@ -0,0 +1,30 @@
(ns status-im.contexts.preview.feature-flags.view
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we need to rename preview to something like developer or something to that effect

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Or just drop it all together?
feature-flags in itself is a good context name.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ah, I believe there is some aim to not overload the context folder with too many direct folders as these are mainly higher concepts (related to designs files/functionality) mostly.

e.g
contexts/chat
contexts/shell
contexts/communities

and the problem becomes that the codebase is a bit more confusing to navigate if we start adding small sets of functionality within contexts.

but maybe feature flags can live somewhere better anyway 🤔
I'll leave for now but happy to have it moved going forward

(fn [a]
(update-in a [section flag] not))))

(defn alert [context flag action]
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

a simple abstraction idea, we can have others depending on the use case 👍

(def ^:private feature-flags-config
(reagent/atom
{:wallet
{:edit-default-keypair (check-env :DEV_FF_EDIT_DEFAULT_KEYPAIR)
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should allow for defaults to be set by an env var so devs can have a better dev experience - didn't quite get this working for new vars, perhaps dependent on the app being built for it to load?
@siddarthkay do you know?
better again would be that we can use env.dev or something hidden by gitignore 👍

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

looks good to me overall,

should allow for defaults to be set by an env var so devs can have a better dev experience - didn't quite get this working for new vars, perhaps dependent on the app being built for it to load?

I think that's desireable,
if you need to pull from env, you will have to rebuild the code with the new env variable set, since they are build time flags, I think.

We have already a bunch of feature flags in config maybe worth moving those as well at some point?

the only thing that is missing that I can see, is that some feature flags are not UI only (anything that is also toggling status-go code will want for example to be making potentially an RPC and store it in settings, so you have it on when you login/logout/restart etc), maybe we should accommodate for that use case (some hooks or something)? (@alwx is working on adding a feature flag for some status-go code).

Also worth considering if you want to store in async storage, just to make it a bit more permanent, it might be a bit unexpected for a developer that make run.. clears your feature flags (unless you set them in the env file), but either is fine I think, this is simpler.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We have already a bunch of feature flags in config maybe worth moving those as well at some point?

👍🏼

Also worth considering if you want to store in async storage, just to make it a bit more permanent

Nice 👍🏼! Good idea for a follow-up


(def ^:private feature-flags-config
(reagent/atom
{:wallet
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

seperated by context mostly for the ui but this can also be one keyword.
e.g :wallet.edit-default-keypair

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I personally prefer without nesting, so that the function get-flag and others receive only one keyword argument. It simplifies tremendously grepping in the project. We would then qualify the flag, like :wallet/edit-default-keypair.

Perhaps even better is if we namespace the key since we have already required the namespace anyway to call functions like ff/alert. Namespacing would make them even more unique in the system. clojure-lsp can find references to namespaced keys very precisely. Given that feature flag keywords will be concentrated in one namespace, we wouldn't have to worry about updating them in the code because we wouldn't be moving them out of status-im.feature-flags.

;; In status-im.feature-flags
(def ^:private feature-flags-config
  (reagent/atom
   {::wallet.edit-default-keypair ...
    ::wallet.bridge-token         ...}))

;; ::wallet.edit-default-keypair will be expanded behind the
;; scenes to status-im.feature-flags/wallet.edit-default-keypair

;; Anywhere else, e.g. status-im.contexts.wallet.create-account.view
(ff/alert ::ff/wallet.edit-default-keypair
          (fn []
            (rf/dispatch [:navigate-to :wallet-select-keypair])))

@J-Son89 J-Son89 requested review from ilmotta and cammellos January 23, 2024 21:16
@J-Son89 J-Son89 changed the title Add a UI for toggling developer feature flags Add a UI for toggling developer feature flags Jan 23, 2024
@ulisesmac
Copy link
Contributor

I totally like the idea! 💯

@OmarBasem
Copy link
Contributor

➕ 1️⃣

@clauxx
Copy link
Member

clauxx commented Jan 24, 2024

Looks great 💯

@J-Son89
Copy link
Contributor Author

J-Son89 commented Feb 5, 2024

gave it a smoke test and looks fine @VolodLytvynenko 👍

@status-im-auto
Copy link
Member

69% of end-end tests have passed

Total executed tests: 48
Failed tests: 14
Expected to fail tests: 1
Passed tests: 33
IDs of failed tests: 702809,702782,702859,702732,702851,702840,702948,702745,704615,703202,702843,702731,702730,702958 
IDs of expected to fail tests: 703503 

Failed tests (14)

Click to expand
  • Rerun failed tests

  • Class TestActivityMultipleDevicePRTwo:

    1. test_activity_center_admin_notification_accept_swipe, id: 702958

    Device 2: Find `Text` by `xpath`: `//android.view.ViewGroup[@content-desc='chat-item']//android.widget.TextView[contains(@text,'https://status.app/c/')]`
    Device 2: Wait for element `Button` for max 120s and click when it is available

    activity_center/test_activity_center.py:469: in test_activity_center_admin_notification_accept_swipe
        self.community_2.join_community(open_community=False)
    ../views/chat_view.py:436: in join_community
        self.join_button.wait_and_click(120)
    ../views/base_element.py:96: in wait_and_click
        self.wait_for_visibility_of_element(sec)
    ../views/base_element.py:139: in wait_for_visibility_of_element
        raise TimeoutException(
     Device 2: Button by accessibility id:`show-request-to-join-screen-button` is not found on the screen after wait_for_visibility_of_element
    



    Device sessions

    Class TestOneToOneChatMultipleSharedDevicesNewUi:

    1. test_1_1_chat_emoji_send_reply_and_open_link, id: 702782

    Device 1: Long press on BaseElement until expected element is shown
    Device 1: Find Button by xpath: //*[@text="Reply"]

    critical/chats/test_1_1_public_chats.py:117: in test_1_1_chat_emoji_send_reply_and_open_link
        self.chat_1.quote_message(emoji_unicode)
    ../views/chat_view.py:1071: in quote_message
        self.reply_message_button.click()
    ../views/base_element.py:90: in click
        self.find_element().click()
    ../views/base_element.py:79: in find_element
        raise NoSuchElementException(
     Device 1: Button by xpath: `//*[@text="Reply"]` is not found on the screen; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors#no-such-element-exception
    



    Device sessions

    2. test_1_1_chat_non_latin_messages_stack_update_profile_photo, id: 702745

    Device 2: Find MemberPhoto by xpath: //*[starts-with(@text,'profile_photo')]/ancestor::android.view.ViewGroup[@content-desc='chat-item']//*[@content-desc='user-avatar']
    Device 2: Image differs from template to 7.027659696691177 percents

    critical/chats/test_1_1_public_chats.py:314: in test_1_1_chat_non_latin_messages_stack_update_profile_photo
        self.errors.verify_no_errors()
    base_test_case.py:191: in verify_no_errors
        pytest.fail('\n '.join([self.errors.pop(0) for _ in range(len(self.errors))]))
     Image of user in 1-1 chat is too different from template!
    



    Device sessions

    3. test_1_1_chat_pin_messages, id: 702731

    Device 1: Waiting for message to be sent for 30 sec
    Device 1: Find Text by xpath: //*[starts-with(@text,'Message 1')]/ancestor::android.view.ViewGroup[@content-desc='chat-item']

    critical/chats/test_1_1_public_chats.py:186: in test_1_1_chat_pin_messages
        self.chat_1.chat_element_by_text(self.message_1).wait_for_status_to_be("Delivered")
    ../views/chat_view.py:239: in wait_for_status_to_be
        current_status = self.status
    ../views/chat_view.py:211: in status
        Text(self.driver, xpath=self.locator).click()
    ../views/base_element.py:90: in click
        self.find_element().click()
    ../views/base_element.py:79: in find_element
        raise NoSuchElementException(
     Device 1: Text by xpath: `//*[starts-with(@text,'Message 1')]/ancestor::android.view.ViewGroup[@content-desc='chat-item']` is not found on the screen; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors#no-such-element-exception
    



    Device sessions

    4. test_1_1_chat_message_reaction, id: 702730

    Device 2: Wait for text element EmojisNumber to be equal to 1
    Device 2: Find EmojisNumber by xpath: //*[starts-with(@text,'Message sender')]/ancestor::android.view.ViewGroup[@content-desc='chat-item']/../..//*[@content-desc='emoji-reaction-2']/android.widget.TextView[2]

    critical/chats/test_1_1_public_chats.py:64: in test_1_1_chat_message_reaction
        message_receiver.emojis_below_message(emoji="thumbs-up").wait_for_element_text(1, 90)
    ../views/base_element.py:173: in wait_for_element_text
        element_text = self.find_element().text.strip()
    ../views/base_element.py:79: in find_element
        raise NoSuchElementException(
     Device 2: EmojisNumber by xpath: `//*[starts-with(@text,'Message sender')]/ancestor::android.view.ViewGroup[@content-desc='chat-item']/../..//*[@content-desc='emoji-reaction-2']/android.widget.TextView[2]` is not found on the screen; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors#no-such-element-exception
    



    Device sessions

    Class TestActivityCenterContactRequestMultipleDevicePR:

    1. test_activity_center_contact_request_accept_swipe_mark_all_as_read, id: 702851

    Device 1: Tap on found: Button
    # STEP: Device1 check that contact appeared in contact list mutually

    /home/jenkins/.local/lib/python3.10/site-packages/urllib3/connectionpool.py:703: in urlopen
        httplib_response = self._make_request(
    /home/jenkins/.local/lib/python3.10/site-packages/urllib3/connectionpool.py:449: in _make_request
        six.raise_from(e, None)
    <string>:3: in raise_from
        ???
    /home/jenkins/.local/lib/python3.10/site-packages/urllib3/connectionpool.py:444: in _make_request
        httplib_response = conn.getresponse()
    /usr/lib/python3.10/http/client.py:1375: in getresponse
        response.begin()
    /usr/lib/python3.10/http/client.py:318: in begin
        version, status, reason = self._read_status()
    /usr/lib/python3.10/http/client.py:287: in _read_status
        raise RemoteDisconnected("Remote end closed connection without"
    E   http.client.RemoteDisconnected: Remote end closed connection without response
    
    During handling of the above exception, another exception occurred:
    activity_center/test_activity_center.py:133: in test_activity_center_contact_request_accept_swipe_mark_all_as_read
        self.device_2.just_fyi('Device1 check that contact appeared in contact list mutually')
    ../views/base_view.py:394: in just_fyi
        self.driver.execute_script("sauce:context=STEP: %s" % some_str)
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py:405: in execute_script
        return self.execute(command, {"script": script, "args": converted_args})["value"]
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py:343: in execute
        response = self.command_executor.execute(driver_command, params)
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/remote_connection.py:291: in execute
        return self._request(command_info[0], url, body=data)
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/remote_connection.py:312: in _request
        response = self._conn.request(method, url, body=body, headers=headers)
    /home/jenkins/.local/lib/python3.10/site-packages/urllib3/request.py:78: in request
        return self.request_encode_body(
    /home/jenkins/.local/lib/python3.10/site-packages/urllib3/request.py:170: in request_encode_body
        return self.urlopen(method, url, **extra_kw)
    /home/jenkins/.local/lib/python3.10/site-packages/urllib3/poolmanager.py:376: in urlopen
        response = conn.urlopen(method, u.request_uri, **kw)
    /home/jenkins/.local/lib/python3.10/site-packages/urllib3/connectionpool.py:787: in urlopen
        retries = retries.increment(
    /home/jenkins/.local/lib/python3.10/site-packages/urllib3/util/retry.py:550: in increment
        raise six.reraise(type(error), error, _stacktrace)
    /home/jenkins/.local/lib/python3.10/site-packages/urllib3/packages/six.py:769: in reraise
        raise value.with_traceback(tb)
    /home/jenkins/.local/lib/python3.10/site-packages/urllib3/connectionpool.py:703: in urlopen
        httplib_response = self._make_request(
    /home/jenkins/.local/lib/python3.10/site-packages/urllib3/connectionpool.py:449: in _make_request
        six.raise_from(e, None)
    <string>:3: in raise_from
        ???
    /home/jenkins/.local/lib/python3.10/site-packages/urllib3/connectionpool.py:444: in _make_request
        httplib_response = conn.getresponse()
    /usr/lib/python3.10/http/client.py:1375: in getresponse
        response.begin()
    /usr/lib/python3.10/http/client.py:318: in begin
        version, status, reason = self._read_status()
    /usr/lib/python3.10/http/client.py:287: in _read_status
        raise RemoteDisconnected("Remote end closed connection without"
     ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))
    



    Device sessions

    Class TestCommunityMultipleDeviceMergedTwo:

    1. test_community_markdown_support, id: 702809

    Device 1: Looking for a message by text: quote reply (one row)
    Device 2: Looking for a message by text: quote reply (one row)

    critical/chats/test_public_chat_browsing.py:979: in test_community_markdown_support
        self.errors.verify_no_errors()
    base_test_case.py:191: in verify_no_errors
        pytest.fail('\n '.join([self.errors.pop(0) for _ in range(len(self.errors))]))
     bold text in underscores is not displayed with markdown in community channel for the recipient (device 1) 
    E   
    E    italic text in underscore is not displayed with markdown in community channel for the recipient (device 1) 
    E   
    E    inline code is not displayed with markdown in community channel for the recipient (device 1)
    



    Device sessions

    2. test_community_hashtag_links_to_community_channels, id: 702948

    Device 2: Find Text by xpath: //android.view.ViewGroup[@content-desc='chat-item']//android.widget.TextView[contains(@text,'#cats')]
    Device 2: Looking for a message by text: it is just a message text

    critical/chats/test_public_chat_browsing.py:1090: in test_community_hashtag_links_to_community_channels
        self.errors.verify_no_errors()
    base_test_case.py:191: in verify_no_errors
        pytest.fail('\n '.join([self.errors.pop(0) for _ in range(len(self.errors))]))
     Message in community channel is not visible for user before join
    



    Device sessions

    Class TestGroupChatMultipleDeviceMergedNewUI:

    1. test_group_chat_pin_messages, id: 702732

    Device 2: Find Text by xpath: //*[@content-desc='pinned-messages-menu']//*[starts-with(@text,'Message 4')]/../../*[@content-desc='pinned-by']/android.widget.TextView
    Device 2: Text is user admin

    critical/chats/test_group_chat.py:404: in test_group_chat_pin_messages
        self.errors.verify_no_errors()
    base_test_case.py:191: in verify_no_errors
        pytest.fail('\n '.join([self.errors.pop(0) for _ in range(len(self.errors))]))
     Pinned messages count 4 doesn't match expected 3 for user 2
    



    Device sessions

    2. test_group_chat_reactions, id: 703202

    Device 1: Wait for text element EmojisNumber to be equal to 1
    Device 1: Find EmojisNumber by xpath: //*[starts-with(@text,'This is a test message to check some reactions.')]/ancestor::android.view.ViewGroup[@content-desc='chat-item']/../..//*[@content-desc='emoji-reaction-4']/android.widget.TextView[2]

    critical/chats/test_group_chat.py:121: in test_group_chat_reactions
        message_element.emojis_below_message(emoji="laugh").wait_for_element_text(1)
    ../views/base_element.py:173: in wait_for_element_text
        element_text = self.find_element().text.strip()
    ../views/base_element.py:79: in find_element
        raise NoSuchElementException(
     Device 1: EmojisNumber by xpath: `//*[starts-with(@text,'This is a test message to check some reactions.')]/ancestor::android.view.ViewGroup[@content-desc='chat-item']/../..//*[@content-desc='emoji-reaction-4']/android.widget.TextView[2]` is not found on the screen; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors#no-such-element-exception
    



    Device sessions

    Class TestCommunityMultipleDeviceMerged:

    1. test_community_one_image_send_reply, id: 702859

    Device 2: Click system back button
    Device 2: Looking for a message by text: description

    critical/chats/test_public_chat_browsing.py:439: in test_community_one_image_send_reply
        self.channel_2.chat_element_by_text(image_description).wait_for_visibility_of_element(10)
    ../views/base_element.py:139: in wait_for_visibility_of_element
        raise TimeoutException(
     Device 2: ChatElementByText by xpath:`//*[starts-with(@text,'description')]/ancestor::android.view.ViewGroup[@content-desc='chat-item']` is not found on the screen after wait_for_visibility_of_element
    



    Device sessions

    2. test_community_emoji_send_copy_paste_reply, id: 702840

    Device 2: Quoting '👱🏿‍♂️' message
    Device 2: Find BaseElement by xpath: //*[@content-desc=':chat-floating-screen']//*[starts-with(@text,'👱🏿‍♂️')]

    critical/chats/test_public_chat_browsing.py:520: in test_community_emoji_send_copy_paste_reply
        self.channel_2.quote_message(emoji_unicode)
    ../views/chat_view.py:1070: in quote_message
        self.chat_view_element_starts_with_text(message).long_press_until_element_is_shown(self.reply_message_button)
    ../views/base_element.py:318: in long_press_until_element_is_shown
        element = self.find_element()
    ../views/base_element.py:79: in find_element
        raise NoSuchElementException(
     Device 2: BaseElement by xpath: `//*[@content-desc=':chat-floating-screen']//*[starts-with(@text,'👱🏿‍♂️')]` is not found on the screen; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors#no-such-element-exception
    



    Device sessions

    3. test_community_edit_delete_message_when_offline, id: 704615

    Device 1: Looking for a message by text: message to edit
    Device 1: Looking for a message by text: message to delete

    critical/chats/test_public_chat_browsing.py:781: in test_community_edit_delete_message_when_offline
        self.channel_1.driver.fail("Message '%s' was not received")
    base_test_case.py:179: in fail
        pytest.fail('Device %s: %s' % (self.number, text))
     Device 1: Message '%s' was not received
    



    Device sessions

    4. test_community_message_edit, id: 702843

    Device 1: Wait for text element EmojisNumber to be equal to 1
    Device 1: Find EmojisNumber by xpath: //*[starts-with(@text,'Message AFTER edit 2 (Edited)')]/ancestor::android.view.ViewGroup[@content-desc='chat-item']/../..//*[@content-desc='emoji-reaction-2']/android.widget.TextView[2]

    critical/chats/test_public_chat_browsing.py:358: in test_community_message_edit
        self.errors.verify_no_errors()
    base_test_case.py:191: in verify_no_errors
        pytest.fail('\n '.join([self.errors.pop(0) for _ in range(len(self.errors))]))
     Message reaction is not shown for the sender
    



    Device sessions

    Expected to fail tests (1)

    Click to expand

    Class TestCommunityOneDeviceMerged:

    1. test_community_discovery, id: 703503

    Test is not run, e2e blocker  
    

    [[reason: [NOTRUN] Curated communities not loading, https://github.com//issues/17852]]

    Passed tests (33)

    Click to expand

    Class TestActivityMultipleDevicePRTwo:

    1. test_activity_center_mentions, id: 702957
    Device sessions

    Class TestOneToOneChatMultipleSharedDevicesNewUi:

    1. test_1_1_chat_text_message_delete_push_disappear, id: 702733
    Device sessions

    2. test_1_1_chat_push_emoji, id: 702813
    Device sessions

    3. test_1_1_chat_edit_message, id: 702855
    Device sessions

    4. test_1_1_chat_send_image_save_and_share, id: 703391
    Device sessions

    Class TestOneToOneChatMultipleSharedDevicesNewUiTwo:

    1. test_1_1_chat_delete_via_long_press_relogin, id: 702784
    Device sessions

    2. test_1_1_chat_is_shown_message_sent_delivered_from_offline, id: 702783
    Device sessions

    3. test_1_1_chat_mute_chat, id: 703496
    Device sessions

    Class TestDeepLinksOneDevice:

    1. test_links_open_universal_links_from_chat, id: 704613
    Device sessions

    2. test_links_deep_links, id: 702775
    Device sessions

    Class TestActivityCenterContactRequestMultipleDevicePR:

    1. test_add_contact_field_validation, id: 702777
    Device sessions

    2. test_activity_center_contact_request_decline, id: 702850
    Device sessions

    Class TestActivityMultipleDevicePR:

    1. test_navigation_jump_to, id: 702936
    Device sessions

    2. test_activity_center_reply_read_unread_delete_filter_swipe, id: 702947
    Device sessions

    Class TestCommunityMultipleDeviceMergedTwo:

    1. test_community_mentions_push_notification, id: 702786
    Device sessions

    2. test_community_leave, id: 702845
    Device sessions

    3. test_community_join_when_node_owner_offline, id: 703629
    Device sessions

    Class TestGroupChatMultipleDeviceMergedNewUI:

    1. test_group_chat_mute_chat, id: 703495
    Device sessions

    2. test_group_chat_send_image_save_and_share, id: 703297
    Device sessions

    3. test_group_chat_join_send_text_messages_push, id: 702807
    Device sessions

    4. test_group_chat_offline_pn, id: 702808
    Device sessions

    Class TestCommunityOneDeviceMerged:

    1. test_restore_multiaccount_with_waku_backup_remove_switch, id: 703133
    Device sessions

    2. test_community_copy_and_paste_message_in_chat_input, id: 702742
    Device sessions

    3. test_community_undo_delete_message, id: 702869
    Device sessions

    4. test_community_navigate_to_channel_when_relaunch, id: 702846
    Device sessions

    5. test_community_mute_community_and_channel, id: 703382
    Device sessions

    Class TestCommunityMultipleDeviceMerged:

    1. test_community_several_images_send_reply, id: 703194
    Device sessions

    2. test_community_mark_all_messages_as_read, id: 703086
    Device sessions

    3. test_community_contact_block_unblock_offline, id: 702894
    Device sessions

    4. test_community_message_delete, id: 702839
    Device sessions

    5. test_community_message_send_check_timestamps_sender_username, id: 702838
    Device sessions

    6. test_community_links_with_previews_github_youtube_twitter_gif_send_enable, id: 702844
    Device sessions

    7. test_community_unread_messages_badge, id: 702841
    Device sessions

    @VolodLytvynenko
    Copy link
    Contributor

    VolodLytvynenko commented Feb 6, 2024

    @VolodLytvynenko - I see you QA'ing this. I rebased as there was conflicts and added one more feature flag to the remove account - on the wallet account options (account switcher bottom sheet) and on the edit account page.

    I will do a quick smoke check myself to test this is all okay 👍

    @J-Son89 Apologies, I was on day off yesterday. I'm now addressing this PR. Thank you for smoke

    @VolodLytvynenko
    Copy link
    Contributor

    hi @J-Son89 one question. Should the account be able to be removed if 'remove-account' toggle is activated? For not it does not work so

    remove_acc.mp4

    @J-Son89
    Copy link
    Contributor Author

    J-Son89 commented Feb 6, 2024

    apologies, yes the remove account feature should be available. I have fixed that now and the remove account feature flag should be correctly hooked up.

    @VolodLytvynenko
    Copy link
    Contributor

    hi @J-Son89 Thank you for PR> These are issues that can be addressed in future tasks. Please take a look at them if they should be fixed as part of this PR. If not, the PR can be merged and I will create them in a separate follow ups.

    ISSUE 1: Unable to remove an account with available tokens/collectibles

    Steps to reproduce:

    1. Recover the user with at least one account containing tokens or collectibles (not watch-only).
    2. Attempt to remove the current account.

    Actual result:

    The account with available tokens/collectibles cannot be removed.

    remove.mp4

    Expected result:

    • Users should be able to remove an account even if it contains available tokens or collectibles?
    • If a user has only one account, should they still have the ability to remove it?

    @VolodLytvynenko
    Copy link
    Contributor

    ISSUE 2: Watch-Only Addresses Available for Bridging

    Steps:

    1. Open a regular account.
    2. Navigate to the bridge -> tap on the avatar in the top-right corner.
    3. Check the available accounts for bridging.

    Actual Result:

    Watch-only accounts are shown and can be selected for bridging.

    bridge.mp4

    Expected Result:

    Watch-only accounts should not be displayed as options for bridging

    @J-Son89
    Copy link
    Contributor Author

    J-Son89 commented Feb 6, 2024

    Great finds @VolodLytvynenko! 🙏

    Let's handle these in separate issues as their scope is beyond to this pr

    @status-im-auto
    Copy link
    Member

    65% of end-end tests have passed

    Total executed tests: 48
    Failed tests: 16
    Expected to fail tests: 1
    Passed tests: 31
    
    IDs of failed tests: 702782,702784,702948,702783,704615,702869,703496,702936,703202,703391,702786,702947,702843,702731,702958,703629 
    
    IDs of expected to fail tests: 703503 
    

    Failed tests (16)

    Click to expand
  • Rerun failed tests

  • Class TestCommunityOneDeviceMerged:

    1. test_community_undo_delete_message, id: 702869

    Device 1: Tap on found: Button
    Device 1: Find `Button` by `xpath`: `//*[@text="Undo"]`

    critical/chats/test_public_chat_browsing.py:112: in test_community_undo_delete_message
        self.channel.element_by_text("Undo").click()
    ../views/base_element.py:90: in click
        self.find_element().click()
    ../views/base_element.py:79: in find_element
        raise NoSuchElementException(
     Device 1: Button by xpath: `//*[@text="Undo"]` is not found on the screen; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors#no-such-element-exception
    



    Device sessions

    Class TestGroupChatMultipleDeviceMergedNewUI:

    1. test_group_chat_reactions, id: 703202

    Device 1: Wait for text element EmojisNumber to be equal to 1
    Device 1: Find EmojisNumber by xpath: //*[starts-with(@text,'This is a test message to check some reactions.')]/ancestor::android.view.ViewGroup[@content-desc='chat-item']/../..//*[@content-desc='emoji-reaction-1']/android.widget.TextView[2]

    critical/chats/test_group_chat.py:120: in test_group_chat_reactions
        message_element.emojis_below_message(emoji="love").wait_for_element_text(1)
    ../views/base_element.py:173: in wait_for_element_text
        element_text = self.find_element().text.strip()
    ../views/base_element.py:79: in find_element
        raise NoSuchElementException(
     Device 1: EmojisNumber by xpath: `//*[starts-with(@text,'This is a test message to check some reactions.')]/ancestor::android.view.ViewGroup[@content-desc='chat-item']/../..//*[@content-desc='emoji-reaction-1']/android.widget.TextView[2]` is not found on the screen; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors#no-such-element-exception
    



    Device sessions

    Class TestOneToOneChatMultipleSharedDevicesNewUiTwo:

    1. test_1_1_chat_delete_via_long_press_relogin, id: 702784

    Test setup failed: critical/chats/test_1_1_public_chats.py:546: in prepare_devices
        self.home_2.handle_contact_request(self.username_1)
    ../views/home_view.py:382: in handle_contact_request
        chat_element.accept_contact_request()
    ../views/home_view.py:150: in accept_contact_request
        self.handle_cr("accept-contact-request")
    ../views/home_view.py:147: in handle_cr
        ).wait_for_rendering_ended_and_click()
    ../views/base_element.py:155: in wait_for_rendering_ended_and_click
        self.wait_for_visibility_of_element(20)
    ../views/base_element.py:139: in wait_for_visibility_of_element
        raise TimeoutException(
     Device 2: Button by xpath:`//*[contains(@text, 'sender')]/ancestor::*[@content-desc='activity']/*[@content-desc="accept-contact-request"]` is not found on the screen after wait_for_visibility_of_element
    



    2. test_1_1_chat_is_shown_message_sent_delivered_from_offline, id: 702783

    Device 2: Tap on found: Button
    Device 2: Attempt 0 is successful clicking close-activity-center

    Test setup failed: critical/chats/test_1_1_public_chats.py:546: in prepare_devices
        self.home_2.handle_contact_request(self.username_1)
    ../views/home_view.py:382: in handle_contact_request
        chat_element.accept_contact_request()
    ../views/home_view.py:150: in accept_contact_request
        self.handle_cr("accept-contact-request")
    ../views/home_view.py:147: in handle_cr
        ).wait_for_rendering_ended_and_click()
    ../views/base_element.py:155: in wait_for_rendering_ended_and_click
        self.wait_for_visibility_of_element(20)
    ../views/base_element.py:139: in wait_for_visibility_of_element
        raise TimeoutException(
     Device 2: Button by xpath:`//*[contains(@text, 'sender')]/ancestor::*[@content-desc='activity']/*[@content-desc="accept-contact-request"]` is not found on the screen after wait_for_visibility_of_element
    



    Device sessions

    3. test_1_1_chat_mute_chat, id: 703496

    Test setup failed: critical/chats/test_1_1_public_chats.py:546: in prepare_devices
        self.home_2.handle_contact_request(self.username_1)
    ../views/home_view.py:382: in handle_contact_request
        chat_element.accept_contact_request()
    ../views/home_view.py:150: in accept_contact_request
        self.handle_cr("accept-contact-request")
    ../views/home_view.py:147: in handle_cr
        ).wait_for_rendering_ended_and_click()
    ../views/base_element.py:155: in wait_for_rendering_ended_and_click
        self.wait_for_visibility_of_element(20)
    ../views/base_element.py:139: in wait_for_visibility_of_element
        raise TimeoutException(
     Device 2: Button by xpath:`//*[contains(@text, 'sender')]/ancestor::*[@content-desc='activity']/*[@content-desc="accept-contact-request"]` is not found on the screen after wait_for_visibility_of_element
    



    Class TestActivityMultipleDevicePR:

    1. test_navigation_jump_to, id: 702936

    Device 2: Click until ChatMessageInput by accessibility id: chat-message-input will be presented
    Device 2: Sending message 'hello'

    Test setup failed: activity_center/test_activity_center.py:254: in prepare_devices
        self.chat_2.send_message(self.text_message)
    ../views/chat_view.py:1012: in send_message
        self.chat_message_input.wait_for_element(wait_chat_input_sec)
    ../views/base_element.py:121: in wait_for_element
        raise TimeoutException(
     Device `2`: `ChatMessageInput` by` accessibility id`: `chat-message-input` is not found on the screen after wait_for_element
    



    Device sessions

    2. test_activity_center_reply_read_unread_delete_filter_swipe, id: 702947

    Test setup failed: activity_center/test_activity_center.py:254: in prepare_devices
        self.chat_2.send_message(self.text_message)
    ../views/chat_view.py:1012: in send_message
        self.chat_message_input.wait_for_element(wait_chat_input_sec)
    ../views/base_element.py:121: in wait_for_element
        raise TimeoutException(
     Device `2`: `ChatMessageInput` by` accessibility id`: `chat-message-input` is not found on the screen after wait_for_element
    



    Class TestOneToOneChatMultipleSharedDevicesNewUi:

    1. test_1_1_chat_emoji_send_reply_and_open_link, id: 702782

    Device 1: Tap on found: SendMessageButton
    Device 2: Looking for a message by text: Test with link: https://status.im/ here should be nothing unusual.

    critical/chats/test_1_1_public_chats.py:149: in test_1_1_chat_emoji_send_reply_and_open_link
        self.chat_2.chat_element_by_text(url_message).wait_for_element(20)
    ../views/base_element.py:121: in wait_for_element
        raise TimeoutException(
     Device `2`: `ChatElementByText` by` xpath`: `//*[starts-with(@text,'Test with link: https://status.im/ here should be nothing unusual.')]/ancestor::android.view.ViewGroup[@content-desc='chat-item']` is not found on the screen after wait_for_element
    



    Device sessions

    2. test_1_1_chat_send_image_save_and_share, id: 703391

    Device 2: Click system back button
    Device 2: Looking for a message by text: test image

    critical/chats/test_1_1_public_chats.py:411: in test_1_1_chat_send_image_save_and_share
        self.chat_2.chat_element_by_text(image_description).wait_for_visibility_of_element(30)
    ../views/base_element.py:139: in wait_for_visibility_of_element
        raise TimeoutException(
     Device 2: ChatElementByText by xpath:`//*[starts-with(@text,'test image')]/ancestor::android.view.ViewGroup[@content-desc='chat-item']` is not found on the screen after wait_for_visibility_of_element
    



    Device sessions

    3. test_1_1_chat_pin_messages, id: 702731

    Device 1: Find Text by xpath: //*[starts-with(@text,'Message 1')]/ancestor::android.view.ViewGroup[@content-desc='chat-item']//*[@content-desc='message-status']/android.widget.TextView
    Device 1: Text is Sent

    critical/chats/test_1_1_public_chats.py:186: in test_1_1_chat_pin_messages
        self.chat_1.chat_element_by_text(self.message_1).wait_for_status_to_be("Delivered")
    ../views/chat_view.py:243: in wait_for_status_to_be
        raise TimeoutException("Message status was not changed to %s, it's %s" % (expected_status, current_status))
     Message status was not changed to Delivered, it's Sent
    



    Device sessions

    Class TestCommunityMultipleDeviceMerged:

    1. test_community_edit_delete_message_when_offline, id: 704615

    Device 1: Looking for a message by text: text after edit
    Device 1: Looking for a message by text: message to delete

    critical/chats/test_public_chat_browsing.py:796: in test_community_edit_delete_message_when_offline
        self.errors.verify_no_errors()
    base_test_case.py:191: in verify_no_errors
        pytest.fail('\n '.join([self.errors.pop(0) for _ in range(len(self.errors))]))
     Updated message 'text after edit' is not delivered to the receiver
    



    Device sessions

    2. test_community_message_edit, id: 702843

    Device 1: Wait for text element EmojisNumber to be equal to 1
    Device 1: Find EmojisNumber by xpath: //*[starts-with(@text,'Message AFTER edit 2 (Edited)')]/ancestor::android.view.ViewGroup[@content-desc='chat-item']/../..//*[@content-desc='emoji-reaction-2']/android.widget.TextView[2]

    critical/chats/test_public_chat_browsing.py:358: in test_community_message_edit
        self.errors.verify_no_errors()
    base_test_case.py:191: in verify_no_errors
        pytest.fail('\n '.join([self.errors.pop(0) for _ in range(len(self.errors))]))
     Message reaction is not shown for the sender
    



    Device sessions

    Class TestActivityMultipleDevicePRTwo:

    1. test_activity_center_admin_notification_accept_swipe, id: 702958

    Device 2: Find Text by xpath: //android.view.ViewGroup[@content-desc='chat-item']//android.widget.TextView[contains(@text,'https://status.app/c/')]
    Device 2: Wait for element Button for max 120s and click when it is available

    activity_center/test_activity_center.py:469: in test_activity_center_admin_notification_accept_swipe
        self.community_2.join_community(open_community=False)
    ../views/chat_view.py:436: in join_community
        self.join_button.wait_and_click(120)
    ../views/base_element.py:96: in wait_and_click
        self.wait_for_visibility_of_element(sec)
    ../views/base_element.py:139: in wait_for_visibility_of_element
        raise TimeoutException(
     Device 2: Button by accessibility id:`show-request-to-join-screen-button` is not found on the screen after wait_for_visibility_of_element
    



    Device sessions

    Class TestCommunityMultipleDeviceMergedTwo:

    1. test_community_hashtag_links_to_community_channels, id: 702948

    Device 2: Find Text by xpath: //android.view.ViewGroup[@content-desc='chat-item']//android.widget.TextView[contains(@text,'#cats')]
    Device 2: Looking for a message by text: it is just a message text

    critical/chats/test_public_chat_browsing.py:1090: in test_community_hashtag_links_to_community_channels
        self.errors.verify_no_errors()
    base_test_case.py:191: in verify_no_errors
        pytest.fail('\n '.join([self.errors.pop(0) for _ in range(len(self.errors))]))
     Receiver was not navigated to the cats channel
    



    Device sessions

    2. test_community_mentions_push_notification, id: 702786

    Device 2: Getting PN by 'user_2'
    Device 2: Looking for a message by text: user_2

    critical/chats/test_public_chat_browsing.py:927: in test_community_mentions_push_notification
        self.errors.verify_no_errors()
    base_test_case.py:191: in verify_no_errors
        pytest.fail('\n '.join([self.errors.pop(0) for _ in range(len(self.errors))]))
     Message reaction is not shown for the sender
    E    Edited message is not shown correctly for the (receiver) admin
    



    Device sessions

    3. test_community_join_when_node_owner_offline, id: 703629

    Device 2: Looking for community: 'open community'
    Device 2: Click until Text by accessibility id: community-description-text will be presented

    critical/chats/test_public_chat_browsing.py:1177: in test_community_join_when_node_owner_offline
        self.errors.verify_no_errors()
    base_test_case.py:191: in verify_no_errors
        pytest.fail('\n '.join([self.errors.pop(0) for _ in range(len(self.errors))]))
     not
    E    Text "You joined “closed community”" in shown toast element doesn't match expected "You joined “open community”"
    



    Device sessions

    Expected to fail tests (1)

    Click to expand

    Class TestCommunityOneDeviceMerged:

    1. test_community_discovery, id: 703503

    Test is not run, e2e blocker  
    

    [[reason: [NOTRUN] Curated communities not loading, https://github.com//issues/17852]]

    Passed tests (31)

    Click to expand

    Class TestCommunityOneDeviceMerged:

    1. test_restore_multiaccount_with_waku_backup_remove_switch, id: 703133
    Device sessions

    2. test_community_copy_and_paste_message_in_chat_input, id: 702742
    Device sessions

    3. test_community_navigate_to_channel_when_relaunch, id: 702846
    Device sessions

    4. test_community_mute_community_and_channel, id: 703382
    Device sessions

    Class TestGroupChatMultipleDeviceMergedNewUI:

    1. test_group_chat_pin_messages, id: 702732
    Device sessions

    2. test_group_chat_mute_chat, id: 703495
    Device sessions

    3. test_group_chat_send_image_save_and_share, id: 703297
    Device sessions

    4. test_group_chat_join_send_text_messages_push, id: 702807
    Device sessions

    5. test_group_chat_offline_pn, id: 702808
    Device sessions

    Class TestActivityCenterContactRequestMultipleDevicePR:

    1. test_add_contact_field_validation, id: 702777
    Device sessions

    2. test_activity_center_contact_request_accept_swipe_mark_all_as_read, id: 702851
    Device sessions

    3. test_activity_center_contact_request_decline, id: 702850
    Device sessions

    Class TestOneToOneChatMultipleSharedDevicesNewUi:

    1. test_1_1_chat_text_message_delete_push_disappear, id: 702733
    Device sessions

    2. test_1_1_chat_push_emoji, id: 702813
    Device sessions

    3. test_1_1_chat_non_latin_messages_stack_update_profile_photo, id: 702745
    Device sessions

    4. test_1_1_chat_edit_message, id: 702855
    Device sessions

    5. test_1_1_chat_message_reaction, id: 702730
    Device sessions

    Class TestDeepLinksOneDevice:

    1. test_links_open_universal_links_from_chat, id: 704613
    Device sessions

    2. test_links_deep_links, id: 702775
    Device sessions

    Class TestCommunityMultipleDeviceMerged:

    1. test_community_several_images_send_reply, id: 703194
    Device sessions

    2. test_community_one_image_send_reply, id: 702859
    Device sessions

    3. test_community_emoji_send_copy_paste_reply, id: 702840
    Device sessions

    4. test_community_mark_all_messages_as_read, id: 703086
    Device sessions

    5. test_community_contact_block_unblock_offline, id: 702894
    Device sessions

    6. test_community_message_delete, id: 702839
    Device sessions

    7. test_community_message_send_check_timestamps_sender_username, id: 702838
    Device sessions

    8. test_community_links_with_previews_github_youtube_twitter_gif_send_enable, id: 702844
    Device sessions

    9. test_community_unread_messages_badge, id: 702841
    Device sessions

    Class TestActivityMultipleDevicePRTwo:

    1. test_activity_center_mentions, id: 702957
    Device sessions

    Class TestCommunityMultipleDeviceMergedTwo:

    1. test_community_markdown_support, id: 702809
    Device sessions

    2. test_community_leave, id: 702845
    Device sessions

    @J-Son89 J-Son89 merged commit ef60275 into develop Feb 6, 2024
    6 checks passed
    @J-Son89 J-Son89 deleted the jc/feature-flags branch February 6, 2024 16:24
    @status-im-auto
    Copy link
    Member

    81% of end-end tests have passed

    Total executed tests: 16
    Failed tests: 3
    Expected to fail tests: 0
    Passed tests: 13
    
    IDs of failed tests: 702782,704615,702869 
    

    Failed tests (3)

    Click to expand
  • Rerun failed tests

  • Class TestOneToOneChatMultipleSharedDevicesNewUi:

    1. test_1_1_chat_emoji_send_reply_and_open_link, id: 702782

    Device 2: Find `OpenInStatusButton` by `xpath`: `//*[@text="Open in Status"]`
    Device 2: Tap on found: OpenInStatusButton

    critical/chats/test_1_1_public_chats.py:178: in test_1_1_chat_emoji_send_reply_and_open_link
        self.errors.verify_no_errors()
    base_test_case.py:191: in verify_no_errors
        pytest.fail('\n '.join([self.errors.pop(0) for _ in range(len(self.errors))]))
     Reply for 'Test with link: https://status.im/ here should be nothing unusual.' not present in message received in public chat
    



    Device sessions

    Class TestCommunityOneDeviceMerged:

    1. test_community_undo_delete_message, id: 702869

    Device 1: Tap on found: Button
    Device 1: Find Button by xpath: //*[@text="Undo"]

    critical/chats/test_public_chat_browsing.py:112: in test_community_undo_delete_message
        self.channel.element_by_text("Undo").click()
    ../views/base_element.py:90: in click
        self.find_element().click()
    ../views/base_element.py:79: in find_element
        raise NoSuchElementException(
     Device 1: Button by xpath: `//*[@text="Undo"]` is not found on the screen; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors#no-such-element-exception
    



    Device sessions

    Class TestCommunityMultipleDeviceMerged:

    1. test_community_edit_delete_message_when_offline, id: 704615

    Device 1: Looking for a message by text: text after edit
    Device 1: Looking for a message by text: message to delete

    critical/chats/test_public_chat_browsing.py:796: in test_community_edit_delete_message_when_offline
        self.errors.verify_no_errors()
    base_test_case.py:191: in verify_no_errors
        pytest.fail('\n '.join([self.errors.pop(0) for _ in range(len(self.errors))]))
     Updated message 'text after edit' is not delivered to the receiver
    



    Device sessions

    Passed tests (13)

    Click to expand

    Class TestActivityMultipleDevicePR:

    1. test_navigation_jump_to, id: 702936
    Device sessions

    2. test_activity_center_reply_read_unread_delete_filter_swipe, id: 702947
    Device sessions

    Class TestCommunityMultipleDeviceMerged:

    1. test_community_message_edit, id: 702843
    Device sessions

    Class TestGroupChatMultipleDeviceMergedNewUI:

    1. test_group_chat_reactions, id: 703202
    Device sessions

    Class TestOneToOneChatMultipleSharedDevicesNewUi:

    1. test_1_1_chat_send_image_save_and_share, id: 703391
    Device sessions

    2. test_1_1_chat_pin_messages, id: 702731
    Device sessions

    Class TestCommunityMultipleDeviceMergedTwo:

    1. test_community_hashtag_links_to_community_channels, id: 702948
    Device sessions

    2. test_community_mentions_push_notification, id: 702786
    Device sessions

    3. test_community_join_when_node_owner_offline, id: 703629
    Device sessions

    Class TestActivityMultipleDevicePRTwo:

    1. test_activity_center_admin_notification_accept_swipe, id: 702958
    Device sessions

    Class TestOneToOneChatMultipleSharedDevicesNewUiTwo:

    1. test_1_1_chat_delete_via_long_press_relogin, id: 702784
    Device sessions

    2. test_1_1_chat_is_shown_message_sent_delivered_from_offline, id: 702783
    Device sessions

    3. test_1_1_chat_mute_chat, id: 703496
    Device sessions

    Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
    Projects
    Archived in project
    Archived in project
    Development

    Successfully merging this pull request may close these issues.