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

Communities: Share airdrop address in non token-gated community #18189

Conversation

FFFra
Copy link
Contributor

@FFFra FFFra commented Dec 14, 2023

fixes #18081

Summary

This pull request addresses the first two subtasks of #18081, encompassing:

  • Displaying a summary of the selected airdrop addresses.
  • Presenting the list of potential airdrop addresses.

Figma

Please check changes here:

Before refactor, using bottom-sheet:

Simulator.Screen.Recording.-.iPhone.11.Pro.-.2023-12-14.at.13.01.16.mp4

After the refactor, using a new screen:

Simulator.Screen.Recording.-.iPhone.13.-.2023-12-20.at.15.44.07.mp4

Review notes

For now, we are not been pixel perfect. To actually select the address is the next scope.

This feature is currently under a flag that is not enabled in the develop branch, so these changes do not require manual QA.

Platforms
  • Android
  • iOS
Functional
  • public chats
  • group chats
  • wallet / transactions
  • networks

Steps to test

  • Navigate to src/status_im2/config.cljs and set community-accounts-selection-enabled? to true.
  • Ensure you have some wallets. If not, you can create them in the wallet tab.
  • Create a community on desktop and invite another user.
  • When the invited user attempts to join this community, the option to select airdrop addresses should appear.

status: ready

@FFFra FFFra added this to the 1.27.0 - Alpha milestone Dec 14, 2023
@FFFra FFFra self-assigned this Dec 14, 2023
@status-im-auto
Copy link
Member

status-im-auto commented Dec 14, 2023

Jenkins Builds

Click to see older builds (35)
Commit #️⃣ Finished (UTC) Duration Platform Result
c3dacc4 #1 2023-12-14 16:23:38 ~2 min tests 📄log
✔️ c3dacc4 #1 2023-12-14 16:29:38 ~8 min android-e2e 🤖apk 📲
✔️ c3dacc4 #1 2023-12-14 16:29:39 ~8 min android 🤖apk 📲
✔️ c3dacc4 #1 2023-12-14 16:34:59 ~13 min ios 📱ipa 📲
6e42c34 #2 2023-12-14 17:22:52 ~2 min tests 📄log
✔️ 6e42c34 #2 2023-12-14 17:26:04 ~5 min ios 📱ipa 📲
✔️ 6e42c34 #2 2023-12-14 17:27:22 ~6 min android 🤖apk 📲
✔️ 6e42c34 #2 2023-12-14 17:27:35 ~7 min android-e2e 🤖apk 📲
45eb276 #3 2023-12-20 17:08:51 ~2 min tests 📄log
✔️ 45eb276 #3 2023-12-20 17:14:02 ~7 min android-e2e 🤖apk 📲
✔️ 45eb276 #3 2023-12-20 17:14:14 ~7 min android 🤖apk 📲
✔️ 45eb276 #3 2023-12-20 17:18:24 ~11 min ios 📱ipa 📲
0ebb106 #4 2023-12-21 04:42:14 ~2 min tests 📄log
✔️ 0ebb106 #4 2023-12-21 04:46:29 ~6 min ios 📱ipa 📲
7afb64e #5 2023-12-21 04:48:43 ~2 min tests 📄log
525f1c5 #6 2023-12-21 04:53:28 ~1 min tests 📄log
✔️ 525f1c5 #6 2023-12-21 04:58:03 ~6 min android-e2e 🤖apk 📲
✔️ 525f1c5 #6 2023-12-21 04:58:39 ~7 min android 🤖apk 📲
1467f2e #7 2023-12-21 05:00:53 ~2 min tests 📄log
1467f2e #8 2023-12-21 05:03:30 ~2 min tests 📄log
✔️ 1467f2e #7 2023-12-21 05:04:39 ~5 min ios 📱ipa 📲
✔️ 1467f2e #7 2023-12-21 05:05:50 ~7 min android 🤖apk 📲
✔️ 1467f2e #7 2023-12-21 05:05:56 ~7 min android-e2e 🤖apk 📲
39711b0 #9 2023-12-21 05:16:33 ~2 min tests 📄log
39711b0 #11 2023-12-21 05:21:23 ~2 min tests 📄log
✔️ 2c08f38 #12 2023-12-21 05:26:26 ~4 min tests 📄log
✔️ 2c08f38 #11 2023-12-21 05:28:34 ~6 min android-e2e 🤖apk 📲
✔️ 2c08f38 #11 2023-12-21 05:29:41 ~7 min android 🤖apk 📲
✔️ 2c08f38 #11 2023-12-21 05:38:03 ~15 min ios 📱ipa 📲
✔️ 2c08f38 #14 2023-12-21 05:49:57 ~3 min tests 📄log
✔️ 2c08f38 #13 2023-12-21 05:52:29 ~6 min android 🤖apk 📲
✔️ 2c08f38 #13 2023-12-21 05:52:33 ~6 min android-e2e 🤖apk 📲
✔️ 2c08f38 #13 2023-12-21 05:58:50 ~12 min ios 📱ipa 📲
520be0b #13 2023-12-21 05:42:06 ~2 min tests 📄log
✔️ 520be0b #12 2023-12-21 05:44:55 ~5 min ios 📱ipa 📲
Commit #️⃣ Finished (UTC) Duration Platform Result
✔️ ce0c5a1 #15 2023-12-21 06:47:55 ~5 min tests 📄log
✔️ ce0c5a1 #14 2023-12-21 06:48:42 ~5 min ios 📱ipa 📲
✔️ ce0c5a1 #14 2023-12-21 06:50:15 ~7 min android-e2e 🤖apk 📲
✔️ ce0c5a1 #14 2023-12-21 06:51:23 ~8 min android 🤖apk 📲
✔️ 9beee9c #16 2023-12-21 09:16:05 ~4 min tests 📄log
✔️ 9beee9c #15 2023-12-21 09:18:34 ~6 min android-e2e 🤖apk 📲
✔️ 9beee9c #15 2023-12-21 09:19:13 ~7 min android 🤖apk 📲
✔️ 9beee9c #15 2023-12-21 09:24:46 ~13 min ios 📱ipa 📲

:description :text
:action :arrow
:label :preview
:label-props {:type :accounts
:data (take 1 accounts)}
;; TODO: Substitute the provided data with the selected airdrop
Copy link
Contributor

Choose a reason for hiding this comment

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

please create an issue and link in the TODO. 👍

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 have the issue already, gonna link it. Good idea!

Copy link
Contributor

Choose a reason for hiding this comment

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

I recall there was a discussion about discontinuing the use of TODO comments and relying solely on GitHub issues to track tasks.

Copy link
Contributor

Choose a reason for hiding this comment

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

Yeah it's preferable to do that 👌

@FFFra FFFra force-pushed the communities-share-airdrop-address-in-non-token-gated-community branch from c3dacc4 to 6e42c34 Compare December 14, 2023 17:20
Copy link
Contributor

@ajayesivan ajayesivan left a comment

Choose a reason for hiding this comment

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

There is a delay when opening the airdrop sheet, check out the video. I'm implementing it as a screen and the performance is better.

Screen.Recording.2023-12-15.at.14.58.05.mov

[rn/flat-list
{:data accounts
:render-fn render-item
:key-fn :id}])])
Copy link
Contributor

Choose a reason for hiding this comment

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

I don't remember seeing an :id in the accounts map. Could you please double check?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Done! Thanks!

:key-fn :id}])])

(defn- airdrop-addresses
[{:keys [accounts logo-uri community-name]}]
Copy link
Contributor

Choose a reason for hiding this comment

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

Given that we already have the accounts data in our app db, I suggest directly subscribing to it here instead of passing it down as props. I'm unsure about the preferred approach for handling this. @J-Son89, what do you think?

cc: @ilmotta

Copy link
Contributor

Choose a reason for hiding this comment

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

In this case, the subscription should be here, @ajayesivan is correct.
If I follow the code correctly, in the on-press event we initialise view:

                      :on-press          #(rf/dispatch
                                           [:show-bottom-sheet
                                            {:content (fn [] [airdrop-addresses/view
                                                              {:accounts       accounts
                                                               :logo-uri       (get-in images
                                                                                       [:thumbnail :uri])
                                                               :community-name name}])}])

accounts is a subscription, so if anything changes in accounts the on-press event will change.

The problem is that if you already clicked, and the view is displayed already and accounts in the db changes, this change won't be reflect in the UI, unless you close and re-open the sheet, making it effectively non-reactive.

So we should subscribe to accounts in this component, and no need to pass accounts on the on-press event. (things might change once we have a selection etc, but for now, that would be the correct implementation I believe).

Comment on lines 30 to 42
[quo/text {:size :heading-2 :weight :semi-bold} (i18n/label :t/airdrop-addresses)]
[quo/button
{:type :grey
:size 32
:icon-only? true
:on-press #(not-implemented/alert)}
:i/info]]
[quo/context-tag
{:type :community
:size 24
:community-logo logo-uri
:community-name community-name
:container-style {:margin-top 8}}]
Copy link
Contributor

Choose a reason for hiding this comment

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

As you mentioned here, we can use drawer-top component.

@@ -41,6 +42,7 @@
:accounts
vals
(map #(assoc % :customization-color (:color %))))]

Copy link
Contributor

Choose a reason for hiding this comment

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

@FFFra I know you haven't written this code, but this subscription is way to broad, it's subscribing to the whole wallet and pulling just accounts out.
This means that anything that changes in wallet (regardless of whether :accounts is impacted), it will re-render the whole thing.

All of this should be in a subscription:

        accounts                    (->> (rf/sub [:wallet])
                                         :accounts
                                         vals
                                         (map #(assoc % :customization-color (:color %))))]

it should look something like:

accounts-with-customization-color (rf/sub [:wallet/accounts-with-customization-color]) (or whatever naming, the idea is that all the work should be in a subscription and that should be at least a layer-2 subscription, data manipulation in the view should be kept to a minimum.

As a side node, this is a bit an issue with having nested structs in the database, they can help and they are neater, but it's more prone to error, so we should always be careful when we subscribe to make sure we only subscribe to what is strictly needed for the view and no more.

Copy link
Contributor

Choose a reason for hiding this comment

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

  • 1 on this.

Copy link
Contributor

Choose a reason for hiding this comment

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

That's my code 😬.

Copy link
Contributor

Choose a reason for hiding this comment

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

I have the same thing in my PR too.

Copy link
Contributor

Choose a reason for hiding this comment

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

I can update my PR with a subscription like @cammellos suggested and once that's merged @FFFra can make use of that. Or should we go with a follow-up issue approach?

Copy link
Contributor

Choose a reason for hiding this comment

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

up to you, since it's not going to be used and we can merge things quite quickly, either are fine, best to merge as quick as possible since it's all behind a flag, and follow up, to avoid conflicts, but up to you, as long as we don't forget.

Copy link
Contributor

@ajayesivan ajayesivan Dec 15, 2023

Choose a reason for hiding this comment

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

I think followup is the best approach to avoid conflicts. I have created this issue and assigned myself, will raise a PR after this one is merged.

@FFFra you can skip this suggestion for now.

:on-press not-implemented/alert
:on-press #(rf/dispatch
[:show-bottom-sheet
{:content (fn [] [airdrop-addresses/view
Copy link
Contributor

Choose a reason for hiding this comment

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

Because you are passing the data on a on-press, this effectively makes everything in that view non-reactive. I think you should just initialise the view and subscribe within that view, so that if things changes while the view is renderered, things change accordingly.

@FFFra
Copy link
Contributor Author

FFFra commented Dec 20, 2023

Hello, team/ I've updated the PR description with the new video so we can compare :)

Copy link
Contributor

@ajayesivan ajayesivan left a comment

Choose a reason for hiding this comment

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

Nice work!

@FFFra FFFra force-pushed the communities-share-airdrop-address-in-non-token-gated-community branch from 45eb276 to 0ebb106 Compare December 21, 2023 04:39
@status-im-auto
Copy link
Member

27% of end-end tests have passed

Total executed tests: 48
Failed tests: 32
Expected to fail tests: 3
Passed tests: 13
IDs of failed tests: 702809,702782,702733,703194,702859,702813,704613,702957,702840,703495,703086,702948,702894,702745,703297,704615,702855,703202,703391,702786,702839,702838,702844,702843,702807,702808,702730,702845,702775,702958,703629,702841 
IDs of expected to fail tests: 702732,703503,702731 

Failed tests (32)

Click to expand
  • Rerun failed tests

  • Class TestActivityMultipleDevicePRTwo:

    1. test_activity_center_mentions, id: 702957

    Device 1: Find `Button` by `xpath`: `//*[contains(@text, "user2")]`
    Device 1: Find `Button` by `xpath`: `//*[contains(@text, "user2")]`

    Test setup failed: activity_center/test_activity_center.py:385: in prepare_devices
        self.community_1.share_community(self.community_name, self.username_2)
    ../views/chat_view.py:513: in share_community
        user_contact.scroll_and_click()
    ../views/base_element.py:202: in scroll_and_click
        self.scroll_to_element(direction=direction)
    ../views/base_element.py:197: in scroll_to_element
        raise NoSuchElementException(
     Device 1: Button by xpath: `//*[contains(@text, "user2")]` 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_activity_center_admin_notification_accept_swipe, id: 702958

    Test setup failed: activity_center/test_activity_center.py:385: in prepare_devices
        self.community_1.share_community(self.community_name, self.username_2)
    ../views/chat_view.py:513: in share_community
        user_contact.scroll_and_click()
    ../views/base_element.py:202: in scroll_and_click
        self.scroll_to_element(direction=direction)
    ../views/base_element.py:197: in scroll_to_element
        raise NoSuchElementException(
     Device 1: Button by xpath: `//*[contains(@text, "user2")]` 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
    



    Class TestDeepLinksOneDevice:

    1. test_links_open_universal_links_from_chat, id: 704613

    Test setup failed: critical/test_deep_and_universal_links.py:13: in prepare_devices
        self.drivers, self.loop = create_shared_drivers(1)
    base_test_case.py:309: in create_shared_drivers
        drivers = loop.run_until_complete(start_threads(test_suite_data.current_test.name,
    /usr/lib/python3.10/asyncio/base_events.py:649: in run_until_complete
        return future.result()
    __init__.py:26: in start_threads
        returns[k] = await returns[k]
    /usr/lib/python3.10/concurrent/futures/thread.py:58: in run
        result = self.fn(*self.args, **self.kwargs)
    /home/jenkins/.local/lib/python3.10/site-packages/appium/webdriver/webdriver.py:257: in __init__
        super().__init__(
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py:206: in __init__
        self.start_session(capabilities)
    /home/jenkins/.local/lib/python3.10/site-packages/appium/webdriver/webdriver.py:346: in start_session
        response = self.execute(RemoteCommand.NEW_SESSION, w3c_caps)
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py:345: in execute
        self.error_handler.check_response(response)
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/errorhandler.py:193: in check_response
        raise exception_class(value)
     <html><body><h1>502 Bad Gateway</h1>
    E   The server returned an invalid or incomplete response.
    E   </body></html>
    



    2. test_links_deep_links, id: 702775

    Test setup failed: critical/test_deep_and_universal_links.py:13: in prepare_devices
        self.drivers, self.loop = create_shared_drivers(1)
    base_test_case.py:309: in create_shared_drivers
        drivers = loop.run_until_complete(start_threads(test_suite_data.current_test.name,
    /usr/lib/python3.10/asyncio/base_events.py:649: in run_until_complete
        return future.result()
    __init__.py:26: in start_threads
        returns[k] = await returns[k]
    /usr/lib/python3.10/concurrent/futures/thread.py:58: in run
        result = self.fn(*self.args, **self.kwargs)
    /home/jenkins/.local/lib/python3.10/site-packages/appium/webdriver/webdriver.py:257: in __init__
        super().__init__(
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py:206: in __init__
        self.start_session(capabilities)
    /home/jenkins/.local/lib/python3.10/site-packages/appium/webdriver/webdriver.py:346: in start_session
        response = self.execute(RemoteCommand.NEW_SESSION, w3c_caps)
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py:345: in execute
        self.error_handler.check_response(response)
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/errorhandler.py:193: in check_response
        raise exception_class(value)
     <html><body><h1>502 Bad Gateway</h1>
    E   The server returned an invalid or incomplete response.
    E   </body></html>
    



    Class TestOneToOneChatMultipleSharedDevicesNewUi:

    1. test_1_1_chat_emoji_send_reply_and_open_link, id: 702782

    Test setup failed: critical/chats/test_1_1_public_chats.py:43: in prepare_devices
        self.chat_1.send_message('hey')
    ../views/chat_view.py:1004: 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 `1`: `ChatMessageInput` by` accessibility id`: `chat-message-input` is not found on the screen after wait_for_element
    



    2. test_1_1_chat_text_message_delete_push_disappear, id: 702733

    Test setup failed: critical/chats/test_1_1_public_chats.py:43: in prepare_devices
        self.chat_1.send_message('hey')
    ../views/chat_view.py:1004: 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 `1`: `ChatMessageInput` by` accessibility id`: `chat-message-input` is not found on the screen after wait_for_element
    



    3. test_1_1_chat_push_emoji, id: 702813

    Test setup failed: critical/chats/test_1_1_public_chats.py:43: in prepare_devices
        self.chat_1.send_message('hey')
    ../views/chat_view.py:1004: 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 `1`: `ChatMessageInput` by` accessibility id`: `chat-message-input` is not found on the screen after wait_for_element
    



    4. test_1_1_chat_non_latin_messages_stack_update_profile_photo, id: 702745

    Test setup failed: critical/chats/test_1_1_public_chats.py:43: in prepare_devices
        self.chat_1.send_message('hey')
    ../views/chat_view.py:1004: 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 `1`: `ChatMessageInput` by` accessibility id`: `chat-message-input` is not found on the screen after wait_for_element
    



    5. test_1_1_chat_edit_message, id: 702855

    Test setup failed: critical/chats/test_1_1_public_chats.py:43: in prepare_devices
        self.chat_1.send_message('hey')
    ../views/chat_view.py:1004: 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 `1`: `ChatMessageInput` by` accessibility id`: `chat-message-input` is not found on the screen after wait_for_element
    



    6. test_1_1_chat_send_image_save_and_share, id: 703391

    Test setup failed: critical/chats/test_1_1_public_chats.py:43: in prepare_devices
        self.chat_1.send_message('hey')
    ../views/chat_view.py:1004: 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 `1`: `ChatMessageInput` by` accessibility id`: `chat-message-input` is not found on the screen after wait_for_element
    



    7. test_1_1_chat_message_reaction, id: 702730

    Device 1: ChatMessageInput element not found
    Device 1: Sending message 'hey'

    Test setup failed: critical/chats/test_1_1_public_chats.py:43: in prepare_devices
        self.chat_1.send_message('hey')
    ../views/chat_view.py:1004: 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 `1`: `ChatMessageInput` by` accessibility id`: `chat-message-input` is not found on the screen after wait_for_element
    



    Device sessions

    Class TestGroupChatMultipleDeviceMergedNewUI:

    1. test_group_chat_mute_chat, id: 703495

    Test setup failed: critical/chats/test_group_chat.py:19: in prepare_devices
        self.drivers, self.loop = create_shared_drivers(3)
    base_test_case.py:309: in create_shared_drivers
        drivers = loop.run_until_complete(start_threads(test_suite_data.current_test.name,
    /usr/lib/python3.10/asyncio/base_events.py:649: in run_until_complete
        return future.result()
    __init__.py:26: in start_threads
        returns[k] = await returns[k]
    /usr/lib/python3.10/concurrent/futures/thread.py:58: in run
        result = self.fn(*self.args, **self.kwargs)
    /home/jenkins/.local/lib/python3.10/site-packages/appium/webdriver/webdriver.py:257: in __init__
        super().__init__(
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py:206: in __init__
        self.start_session(capabilities)
    /home/jenkins/.local/lib/python3.10/site-packages/appium/webdriver/webdriver.py:346: in start_session
        response = self.execute(RemoteCommand.NEW_SESSION, w3c_caps)
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py:345: in execute
        self.error_handler.check_response(response)
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/errorhandler.py:193: in check_response
        raise exception_class(value)
     <html><body><h1>502 Bad Gateway</h1>
    E   The server returned an invalid or incomplete response.
    E   </body></html>
    



    2. test_group_chat_send_image_save_and_share, id: 703297

    Test setup failed: critical/chats/test_group_chat.py:19: in prepare_devices
        self.drivers, self.loop = create_shared_drivers(3)
    base_test_case.py:309: in create_shared_drivers
        drivers = loop.run_until_complete(start_threads(test_suite_data.current_test.name,
    /usr/lib/python3.10/asyncio/base_events.py:649: in run_until_complete
        return future.result()
    __init__.py:26: in start_threads
        returns[k] = await returns[k]
    /usr/lib/python3.10/concurrent/futures/thread.py:58: in run
        result = self.fn(*self.args, **self.kwargs)
    /home/jenkins/.local/lib/python3.10/site-packages/appium/webdriver/webdriver.py:257: in __init__
        super().__init__(
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py:206: in __init__
        self.start_session(capabilities)
    /home/jenkins/.local/lib/python3.10/site-packages/appium/webdriver/webdriver.py:346: in start_session
        response = self.execute(RemoteCommand.NEW_SESSION, w3c_caps)
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py:345: in execute
        self.error_handler.check_response(response)
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/errorhandler.py:193: in check_response
        raise exception_class(value)
     <html><body><h1>502 Bad Gateway</h1>
    E   The server returned an invalid or incomplete response.
    E   </body></html>
    



    3. test_group_chat_reactions, id: 703202

    Test setup failed: critical/chats/test_group_chat.py:19: in prepare_devices
        self.drivers, self.loop = create_shared_drivers(3)
    base_test_case.py:309: in create_shared_drivers
        drivers = loop.run_until_complete(start_threads(test_suite_data.current_test.name,
    /usr/lib/python3.10/asyncio/base_events.py:649: in run_until_complete
        return future.result()
    __init__.py:26: in start_threads
        returns[k] = await returns[k]
    /usr/lib/python3.10/concurrent/futures/thread.py:58: in run
        result = self.fn(*self.args, **self.kwargs)
    /home/jenkins/.local/lib/python3.10/site-packages/appium/webdriver/webdriver.py:257: in __init__
        super().__init__(
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py:206: in __init__
        self.start_session(capabilities)
    /home/jenkins/.local/lib/python3.10/site-packages/appium/webdriver/webdriver.py:346: in start_session
        response = self.execute(RemoteCommand.NEW_SESSION, w3c_caps)
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py:345: in execute
        self.error_handler.check_response(response)
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/errorhandler.py:193: in check_response
        raise exception_class(value)
     <html><body><h1>502 Bad Gateway</h1>
    E   The server returned an invalid or incomplete response.
    E   </body></html>
    



    4. test_group_chat_join_send_text_messages_push, id: 702807

    Test setup failed: critical/chats/test_group_chat.py:19: in prepare_devices
        self.drivers, self.loop = create_shared_drivers(3)
    base_test_case.py:309: in create_shared_drivers
        drivers = loop.run_until_complete(start_threads(test_suite_data.current_test.name,
    /usr/lib/python3.10/asyncio/base_events.py:649: in run_until_complete
        return future.result()
    __init__.py:26: in start_threads
        returns[k] = await returns[k]
    /usr/lib/python3.10/concurrent/futures/thread.py:58: in run
        result = self.fn(*self.args, **self.kwargs)
    /home/jenkins/.local/lib/python3.10/site-packages/appium/webdriver/webdriver.py:257: in __init__
        super().__init__(
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py:206: in __init__
        self.start_session(capabilities)
    /home/jenkins/.local/lib/python3.10/site-packages/appium/webdriver/webdriver.py:346: in start_session
        response = self.execute(RemoteCommand.NEW_SESSION, w3c_caps)
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py:345: in execute
        self.error_handler.check_response(response)
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/errorhandler.py:193: in check_response
        raise exception_class(value)
     <html><body><h1>502 Bad Gateway</h1>
    E   The server returned an invalid or incomplete response.
    E   </body></html>
    



    5. test_group_chat_offline_pn, id: 702808

    Test setup failed: critical/chats/test_group_chat.py:19: in prepare_devices
        self.drivers, self.loop = create_shared_drivers(3)
    base_test_case.py:309: in create_shared_drivers
        drivers = loop.run_until_complete(start_threads(test_suite_data.current_test.name,
    /usr/lib/python3.10/asyncio/base_events.py:649: in run_until_complete
        return future.result()
    __init__.py:26: in start_threads
        returns[k] = await returns[k]
    /usr/lib/python3.10/concurrent/futures/thread.py:58: in run
        result = self.fn(*self.args, **self.kwargs)
    /home/jenkins/.local/lib/python3.10/site-packages/appium/webdriver/webdriver.py:257: in __init__
        super().__init__(
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py:206: in __init__
        self.start_session(capabilities)
    /home/jenkins/.local/lib/python3.10/site-packages/appium/webdriver/webdriver.py:346: in start_session
        response = self.execute(RemoteCommand.NEW_SESSION, w3c_caps)
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py:345: in execute
        self.error_handler.check_response(response)
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/errorhandler.py:193: in check_response
        raise exception_class(value)
     <html><body><h1>502 Bad Gateway</h1>
    E   The server returned an invalid or incomplete response.
    E   </body></html> 
    

    [[Data delivery issue]]

    Class TestCommunityMultipleDeviceMergedTwo:

    1. test_community_markdown_support, id: 702809

    Test setup failed: critical/chats/test_public_chat_browsing.py:801: in prepare_devices
        self.drivers, self.loop = create_shared_drivers(2)
    base_test_case.py:309: in create_shared_drivers
        drivers = loop.run_until_complete(start_threads(test_suite_data.current_test.name,
    /usr/lib/python3.10/asyncio/base_events.py:649: in run_until_complete
        return future.result()
    __init__.py:26: in start_threads
        returns[k] = await returns[k]
    /usr/lib/python3.10/concurrent/futures/thread.py:58: in run
        result = self.fn(*self.args, **self.kwargs)
    /home/jenkins/.local/lib/python3.10/site-packages/appium/webdriver/webdriver.py:257: in __init__
        super().__init__(
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py:206: in __init__
        self.start_session(capabilities)
    /home/jenkins/.local/lib/python3.10/site-packages/appium/webdriver/webdriver.py:346: in start_session
        response = self.execute(RemoteCommand.NEW_SESSION, w3c_caps)
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py:345: in execute
        self.error_handler.check_response(response)
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/errorhandler.py:193: in check_response
        raise exception_class(value)
     <html><body><h1>502 Bad Gateway</h1>
    E   The server returned an invalid or incomplete response.
    E   </body></html>
    



    2. test_community_hashtag_links_to_community_channels, id: 702948

    Test setup failed: critical/chats/test_public_chat_browsing.py:801: in prepare_devices
        self.drivers, self.loop = create_shared_drivers(2)
    base_test_case.py:309: in create_shared_drivers
        drivers = loop.run_until_complete(start_threads(test_suite_data.current_test.name,
    /usr/lib/python3.10/asyncio/base_events.py:649: in run_until_complete
        return future.result()
    __init__.py:26: in start_threads
        returns[k] = await returns[k]
    /usr/lib/python3.10/concurrent/futures/thread.py:58: in run
        result = self.fn(*self.args, **self.kwargs)
    /home/jenkins/.local/lib/python3.10/site-packages/appium/webdriver/webdriver.py:257: in __init__
        super().__init__(
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py:206: in __init__
        self.start_session(capabilities)
    /home/jenkins/.local/lib/python3.10/site-packages/appium/webdriver/webdriver.py:346: in start_session
        response = self.execute(RemoteCommand.NEW_SESSION, w3c_caps)
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py:345: in execute
        self.error_handler.check_response(response)
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/errorhandler.py:193: in check_response
        raise exception_class(value)
     <html><body><h1>502 Bad Gateway</h1>
    E   The server returned an invalid or incomplete response.
    E   </body></html> 
    

    [[Can't navigate to a channel by hashtag link, https://github.com//issues/18095]]

    3. test_community_mentions_push_notification, id: 702786

    Test setup failed: critical/chats/test_public_chat_browsing.py:801: in prepare_devices
        self.drivers, self.loop = create_shared_drivers(2)
    base_test_case.py:309: in create_shared_drivers
        drivers = loop.run_until_complete(start_threads(test_suite_data.current_test.name,
    /usr/lib/python3.10/asyncio/base_events.py:649: in run_until_complete
        return future.result()
    __init__.py:26: in start_threads
        returns[k] = await returns[k]
    /usr/lib/python3.10/concurrent/futures/thread.py:58: in run
        result = self.fn(*self.args, **self.kwargs)
    /home/jenkins/.local/lib/python3.10/site-packages/appium/webdriver/webdriver.py:257: in __init__
        super().__init__(
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py:206: in __init__
        self.start_session(capabilities)
    /home/jenkins/.local/lib/python3.10/site-packages/appium/webdriver/webdriver.py:346: in start_session
        response = self.execute(RemoteCommand.NEW_SESSION, w3c_caps)
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py:345: in execute
        self.error_handler.check_response(response)
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/errorhandler.py:193: in check_response
        raise exception_class(value)
     <html><body><h1>502 Bad Gateway</h1>
    E   The server returned an invalid or incomplete response.
    E   </body></html>
    



    4. test_community_leave, id: 702845

    Test setup failed: critical/chats/test_public_chat_browsing.py:801: in prepare_devices
        self.drivers, self.loop = create_shared_drivers(2)
    base_test_case.py:309: in create_shared_drivers
        drivers = loop.run_until_complete(start_threads(test_suite_data.current_test.name,
    /usr/lib/python3.10/asyncio/base_events.py:649: in run_until_complete
        return future.result()
    __init__.py:26: in start_threads
        returns[k] = await returns[k]
    /usr/lib/python3.10/concurrent/futures/thread.py:58: in run
        result = self.fn(*self.args, **self.kwargs)
    /home/jenkins/.local/lib/python3.10/site-packages/appium/webdriver/webdriver.py:257: in __init__
        super().__init__(
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py:206: in __init__
        self.start_session(capabilities)
    /home/jenkins/.local/lib/python3.10/site-packages/appium/webdriver/webdriver.py:346: in start_session
        response = self.execute(RemoteCommand.NEW_SESSION, w3c_caps)
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py:345: in execute
        self.error_handler.check_response(response)
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/errorhandler.py:193: in check_response
        raise exception_class(value)
     <html><body><h1>502 Bad Gateway</h1>
    E   The server returned an invalid or incomplete response.
    E   </body></html>
    



    5. test_community_join_when_node_owner_offline, id: 703629

    Test setup failed: critical/chats/test_public_chat_browsing.py:801: in prepare_devices
        self.drivers, self.loop = create_shared_drivers(2)
    base_test_case.py:309: in create_shared_drivers
        drivers = loop.run_until_complete(start_threads(test_suite_data.current_test.name,
    /usr/lib/python3.10/asyncio/base_events.py:649: in run_until_complete
        return future.result()
    __init__.py:26: in start_threads
        returns[k] = await returns[k]
    /usr/lib/python3.10/concurrent/futures/thread.py:58: in run
        result = self.fn(*self.args, **self.kwargs)
    /home/jenkins/.local/lib/python3.10/site-packages/appium/webdriver/webdriver.py:257: in __init__
        super().__init__(
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py:206: in __init__
        self.start_session(capabilities)
    /home/jenkins/.local/lib/python3.10/site-packages/appium/webdriver/webdriver.py:346: in start_session
        response = self.execute(RemoteCommand.NEW_SESSION, w3c_caps)
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py:345: in execute
        self.error_handler.check_response(response)
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/errorhandler.py:193: in check_response
        raise exception_class(value)
     <html><body><h1>502 Bad Gateway</h1>
    E   The server returned an invalid or incomplete response.
    E   </body></html>
    



    Class TestCommunityMultipleDeviceMerged:

    1. test_community_several_images_send_reply, id: 703194

    Test setup failed: critical/chats/test_public_chat_browsing.py:282: in prepare_devices
        self.drivers, self.loop = create_shared_drivers(2)
    base_test_case.py:309: in create_shared_drivers
        drivers = loop.run_until_complete(start_threads(test_suite_data.current_test.name,
    /usr/lib/python3.10/asyncio/base_events.py:649: in run_until_complete
        return future.result()
    __init__.py:26: in start_threads
        returns[k] = await returns[k]
    /usr/lib/python3.10/concurrent/futures/thread.py:58: in run
        result = self.fn(*self.args, **self.kwargs)
    /home/jenkins/.local/lib/python3.10/site-packages/appium/webdriver/webdriver.py:257: in __init__
        super().__init__(
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py:206: in __init__
        self.start_session(capabilities)
    /home/jenkins/.local/lib/python3.10/site-packages/appium/webdriver/webdriver.py:346: in start_session
        response = self.execute(RemoteCommand.NEW_SESSION, w3c_caps)
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py:345: in execute
        self.error_handler.check_response(response)
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/errorhandler.py:193: in check_response
        raise exception_class(value)
     <html><body><h1>502 Bad Gateway</h1>
    E   The server returned an invalid or incomplete response.
    E   </body></html>
    



    2. test_community_one_image_send_reply, id: 702859

    Test setup failed: critical/chats/test_public_chat_browsing.py:282: in prepare_devices
        self.drivers, self.loop = create_shared_drivers(2)
    base_test_case.py:309: in create_shared_drivers
        drivers = loop.run_until_complete(start_threads(test_suite_data.current_test.name,
    /usr/lib/python3.10/asyncio/base_events.py:649: in run_until_complete
        return future.result()
    __init__.py:26: in start_threads
        returns[k] = await returns[k]
    /usr/lib/python3.10/concurrent/futures/thread.py:58: in run
        result = self.fn(*self.args, **self.kwargs)
    /home/jenkins/.local/lib/python3.10/site-packages/appium/webdriver/webdriver.py:257: in __init__
        super().__init__(
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py:206: in __init__
        self.start_session(capabilities)
    /home/jenkins/.local/lib/python3.10/site-packages/appium/webdriver/webdriver.py:346: in start_session
        response = self.execute(RemoteCommand.NEW_SESSION, w3c_caps)
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py:345: in execute
        self.error_handler.check_response(response)
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/errorhandler.py:193: in check_response
        raise exception_class(value)
     <html><body><h1>502 Bad Gateway</h1>
    E   The server returned an invalid or incomplete response.
    E   </body></html>
    



    3. test_community_emoji_send_copy_paste_reply, id: 702840

    Test setup failed: critical/chats/test_public_chat_browsing.py:282: in prepare_devices
        self.drivers, self.loop = create_shared_drivers(2)
    base_test_case.py:309: in create_shared_drivers
        drivers = loop.run_until_complete(start_threads(test_suite_data.current_test.name,
    /usr/lib/python3.10/asyncio/base_events.py:649: in run_until_complete
        return future.result()
    __init__.py:26: in start_threads
        returns[k] = await returns[k]
    /usr/lib/python3.10/concurrent/futures/thread.py:58: in run
        result = self.fn(*self.args, **self.kwargs)
    /home/jenkins/.local/lib/python3.10/site-packages/appium/webdriver/webdriver.py:257: in __init__
        super().__init__(
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py:206: in __init__
        self.start_session(capabilities)
    /home/jenkins/.local/lib/python3.10/site-packages/appium/webdriver/webdriver.py:346: in start_session
        response = self.execute(RemoteCommand.NEW_SESSION, w3c_caps)
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py:345: in execute
        self.error_handler.check_response(response)
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/errorhandler.py:193: in check_response
        raise exception_class(value)
     <html><body><h1>502 Bad Gateway</h1>
    E   The server returned an invalid or incomplete response.
    E   </body></html>
    



    4. test_community_mark_all_messages_as_read, id: 703086

    Test setup failed: critical/chats/test_public_chat_browsing.py:282: in prepare_devices
        self.drivers, self.loop = create_shared_drivers(2)
    base_test_case.py:309: in create_shared_drivers
        drivers = loop.run_until_complete(start_threads(test_suite_data.current_test.name,
    /usr/lib/python3.10/asyncio/base_events.py:649: in run_until_complete
        return future.result()
    __init__.py:26: in start_threads
        returns[k] = await returns[k]
    /usr/lib/python3.10/concurrent/futures/thread.py:58: in run
        result = self.fn(*self.args, **self.kwargs)
    /home/jenkins/.local/lib/python3.10/site-packages/appium/webdriver/webdriver.py:257: in __init__
        super().__init__(
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py:206: in __init__
        self.start_session(capabilities)
    /home/jenkins/.local/lib/python3.10/site-packages/appium/webdriver/webdriver.py:346: in start_session
        response = self.execute(RemoteCommand.NEW_SESSION, w3c_caps)
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py:345: in execute
        self.error_handler.check_response(response)
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/errorhandler.py:193: in check_response
        raise exception_class(value)
     <html><body><h1>502 Bad Gateway</h1>
    E   The server returned an invalid or incomplete response.
    E   </body></html>
    



    5. test_community_contact_block_unblock_offline, id: 702894

    Test setup failed: critical/chats/test_public_chat_browsing.py:282: in prepare_devices
        self.drivers, self.loop = create_shared_drivers(2)
    base_test_case.py:309: in create_shared_drivers
        drivers = loop.run_until_complete(start_threads(test_suite_data.current_test.name,
    /usr/lib/python3.10/asyncio/base_events.py:649: in run_until_complete
        return future.result()
    __init__.py:26: in start_threads
        returns[k] = await returns[k]
    /usr/lib/python3.10/concurrent/futures/thread.py:58: in run
        result = self.fn(*self.args, **self.kwargs)
    /home/jenkins/.local/lib/python3.10/site-packages/appium/webdriver/webdriver.py:257: in __init__
        super().__init__(
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py:206: in __init__
        self.start_session(capabilities)
    /home/jenkins/.local/lib/python3.10/site-packages/appium/webdriver/webdriver.py:346: in start_session
        response = self.execute(RemoteCommand.NEW_SESSION, w3c_caps)
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py:345: in execute
        self.error_handler.check_response(response)
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/errorhandler.py:193: in check_response
        raise exception_class(value)
     <html><body><h1>502 Bad Gateway</h1>
    E   The server returned an invalid or incomplete response.
    E   </body></html> 
    

    [[Message can be missed after unblock: https://github.com//issues/16873]]

    6. test_community_edit_delete_message_when_offline, id: 704615

    Test setup failed: critical/chats/test_public_chat_browsing.py:282: in prepare_devices
        self.drivers, self.loop = create_shared_drivers(2)
    base_test_case.py:309: in create_shared_drivers
        drivers = loop.run_until_complete(start_threads(test_suite_data.current_test.name,
    /usr/lib/python3.10/asyncio/base_events.py:649: in run_until_complete
        return future.result()
    __init__.py:26: in start_threads
        returns[k] = await returns[k]
    /usr/lib/python3.10/concurrent/futures/thread.py:58: in run
        result = self.fn(*self.args, **self.kwargs)
    /home/jenkins/.local/lib/python3.10/site-packages/appium/webdriver/webdriver.py:257: in __init__
        super().__init__(
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py:206: in __init__
        self.start_session(capabilities)
    /home/jenkins/.local/lib/python3.10/site-packages/appium/webdriver/webdriver.py:346: in start_session
        response = self.execute(RemoteCommand.NEW_SESSION, w3c_caps)
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py:345: in execute
        self.error_handler.check_response(response)
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/errorhandler.py:193: in check_response
        raise exception_class(value)
     <html><body><h1>502 Bad Gateway</h1>
    E   The server returned an invalid or incomplete response.
    E   </body></html>
    



    7. test_community_message_delete, id: 702839

    Test setup failed: critical/chats/test_public_chat_browsing.py:282: in prepare_devices
        self.drivers, self.loop = create_shared_drivers(2)
    base_test_case.py:309: in create_shared_drivers
        drivers = loop.run_until_complete(start_threads(test_suite_data.current_test.name,
    /usr/lib/python3.10/asyncio/base_events.py:649: in run_until_complete
        return future.result()
    __init__.py:26: in start_threads
        returns[k] = await returns[k]
    /usr/lib/python3.10/concurrent/futures/thread.py:58: in run
        result = self.fn(*self.args, **self.kwargs)
    /home/jenkins/.local/lib/python3.10/site-packages/appium/webdriver/webdriver.py:257: in __init__
        super().__init__(
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py:206: in __init__
        self.start_session(capabilities)
    /home/jenkins/.local/lib/python3.10/site-packages/appium/webdriver/webdriver.py:346: in start_session
        response = self.execute(RemoteCommand.NEW_SESSION, w3c_caps)
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py:345: in execute
        self.error_handler.check_response(response)
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/errorhandler.py:193: in check_response
        raise exception_class(value)
     <html><body><h1>502 Bad Gateway</h1>
    E   The server returned an invalid or incomplete response.
    E   </body></html>
    



    8. test_community_message_send_check_timestamps_sender_username, id: 702838

    Test setup failed: critical/chats/test_public_chat_browsing.py:282: in prepare_devices
        self.drivers, self.loop = create_shared_drivers(2)
    base_test_case.py:309: in create_shared_drivers
        drivers = loop.run_until_complete(start_threads(test_suite_data.current_test.name,
    /usr/lib/python3.10/asyncio/base_events.py:649: in run_until_complete
        return future.result()
    __init__.py:26: in start_threads
        returns[k] = await returns[k]
    /usr/lib/python3.10/concurrent/futures/thread.py:58: in run
        result = self.fn(*self.args, **self.kwargs)
    /home/jenkins/.local/lib/python3.10/site-packages/appium/webdriver/webdriver.py:257: in __init__
        super().__init__(
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py:206: in __init__
        self.start_session(capabilities)
    /home/jenkins/.local/lib/python3.10/site-packages/appium/webdriver/webdriver.py:346: in start_session
        response = self.execute(RemoteCommand.NEW_SESSION, w3c_caps)
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py:345: in execute
        self.error_handler.check_response(response)
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/errorhandler.py:193: in check_response
        raise exception_class(value)
     <html><body><h1>502 Bad Gateway</h1>
    E   The server returned an invalid or incomplete response.
    E   </body></html>
    



    9. test_community_links_with_previews_github_youtube_twitter_gif_send_enable, id: 702844

    Test setup failed: critical/chats/test_public_chat_browsing.py:282: in prepare_devices
        self.drivers, self.loop = create_shared_drivers(2)
    base_test_case.py:309: in create_shared_drivers
        drivers = loop.run_until_complete(start_threads(test_suite_data.current_test.name,
    /usr/lib/python3.10/asyncio/base_events.py:649: in run_until_complete
        return future.result()
    __init__.py:26: in start_threads
        returns[k] = await returns[k]
    /usr/lib/python3.10/concurrent/futures/thread.py:58: in run
        result = self.fn(*self.args, **self.kwargs)
    /home/jenkins/.local/lib/python3.10/site-packages/appium/webdriver/webdriver.py:257: in __init__
        super().__init__(
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py:206: in __init__
        self.start_session(capabilities)
    /home/jenkins/.local/lib/python3.10/site-packages/appium/webdriver/webdriver.py:346: in start_session
        response = self.execute(RemoteCommand.NEW_SESSION, w3c_caps)
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py:345: in execute
        self.error_handler.check_response(response)
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/errorhandler.py:193: in check_response
        raise exception_class(value)
     <html><body><h1>502 Bad Gateway</h1>
    E   The server returned an invalid or incomplete response.
    E   </body></html>
    



    10. test_community_message_edit, id: 702843

    Test setup failed: critical/chats/test_public_chat_browsing.py:282: in prepare_devices
        self.drivers, self.loop = create_shared_drivers(2)
    base_test_case.py:309: in create_shared_drivers
        drivers = loop.run_until_complete(start_threads(test_suite_data.current_test.name,
    /usr/lib/python3.10/asyncio/base_events.py:649: in run_until_complete
        return future.result()
    __init__.py:26: in start_threads
        returns[k] = await returns[k]
    /usr/lib/python3.10/concurrent/futures/thread.py:58: in run
        result = self.fn(*self.args, **self.kwargs)
    /home/jenkins/.local/lib/python3.10/site-packages/appium/webdriver/webdriver.py:257: in __init__
        super().__init__(
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py:206: in __init__
        self.start_session(capabilities)
    /home/jenkins/.local/lib/python3.10/site-packages/appium/webdriver/webdriver.py:346: in start_session
        response = self.execute(RemoteCommand.NEW_SESSION, w3c_caps)
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py:345: in execute
        self.error_handler.check_response(response)
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/errorhandler.py:193: in check_response
        raise exception_class(value)
     <html><body><h1>502 Bad Gateway</h1>
    E   The server returned an invalid or incomplete response.
    E   </body></html>
    



    11. test_community_unread_messages_badge, id: 702841

    Test setup failed: critical/chats/test_public_chat_browsing.py:282: in prepare_devices
        self.drivers, self.loop = create_shared_drivers(2)
    base_test_case.py:309: in create_shared_drivers
        drivers = loop.run_until_complete(start_threads(test_suite_data.current_test.name,
    /usr/lib/python3.10/asyncio/base_events.py:649: in run_until_complete
        return future.result()
    __init__.py:26: in start_threads
        returns[k] = await returns[k]
    /usr/lib/python3.10/concurrent/futures/thread.py:58: in run
        result = self.fn(*self.args, **self.kwargs)
    /home/jenkins/.local/lib/python3.10/site-packages/appium/webdriver/webdriver.py:257: in __init__
        super().__init__(
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py:206: in __init__
        self.start_session(capabilities)
    /home/jenkins/.local/lib/python3.10/site-packages/appium/webdriver/webdriver.py:346: in start_session
        response = self.execute(RemoteCommand.NEW_SESSION, w3c_caps)
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py:345: in execute
        self.error_handler.check_response(response)
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/errorhandler.py:193: in check_response
        raise exception_class(value)
     <html><body><h1>502 Bad Gateway</h1>
    E   The server returned an invalid or incomplete response.
    E   </body></html>
    



    Expected to fail tests (3)

    Click to expand

    Class TestOneToOneChatMultipleSharedDevicesNewUi:

    1. test_1_1_chat_pin_messages, id: 702731

    Test is not run, e2e blocker  
    

    [[reason: [NOTRUN] Pin feature is in development]]

    Class TestGroupChatMultipleDeviceMergedNewUI:

    1. test_group_chat_pin_messages, id: 702732

    Test is not run, e2e blocker  
    

    [[reason: [NOTRUN] Pin feature is in development]]

    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 (13)

    Click to expand

    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 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 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 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

    @FFFra FFFra force-pushed the communities-share-airdrop-address-in-non-token-gated-community branch 2 times, most recently from 525f1c5 to 1467f2e Compare December 21, 2023 04:58
    @ajayesivan ajayesivan force-pushed the communities-share-airdrop-address-in-non-token-gated-community branch from 1e33cf3 to 39711b0 Compare December 21, 2023 05:18
    @ajayesivan ajayesivan force-pushed the communities-share-airdrop-address-in-non-token-gated-community branch 2 times, most recently from 2c08f38 to ce0c5a1 Compare December 21, 2023 06:42
    @status-im-auto
    Copy link
    Member

    71% of end-end tests have passed

    Total executed tests: 48
    Failed tests: 8
    Expected to fail tests: 6
    Passed tests: 34
    
    IDs of failed tests: 702777,703133,702957,702851,703086,704615,702958,703629 
    
    IDs of expected to fail tests: 702732,702894,702783,703503,702731,702808 
    

    Failed tests (8)

    Click to expand
  • Rerun failed tests

  • Class TestCommunityMultipleDeviceMergedTwo:

    1. test_community_join_when_node_owner_offline, id: 703629

    Device 2: Tap on found: Button
    Device 2: Looking for community: 'open community'

    critical/chats/test_public_chat_browsing.py:1136: 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))]))
     Joined status is not displayed
    E    open community is not listed inside Joined communities tab
    



    Device sessions

    Class TestCommunityOneDeviceMerged:

    1. test_restore_multiaccount_with_waku_backup_remove_switch, id: 703133

    Device 1: Logging out
    Device 1: Scrolling down to LogoutButton

    critical/chats/test_public_chat_browsing.py:192: in test_restore_multiaccount_with_waku_backup_remove_switch
        profile.logout()
    ../views/profile_view.py:479: in logout
        self.logout_dialog.logout_button.click()
    ../views/base_element.py:443: in click
        self.find_element().click()
    ../views/base_element.py:435: in find_element
        raise NoSuchElementException(
     Device 1: `LogoutButton` by `xpath`:`//*[@text="Log out" or @text="LOG OUT"]` 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_add_contact_field_validation, id: 702777

    Device 2: Logging out
    Device 2: Scrolling down to LogoutButton

    activity_center/test_activity_center.py:145: in test_add_contact_field_validation
        self.profile_2.logout()
    ../views/profile_view.py:479: in logout
        self.logout_dialog.logout_button.click()
    ../views/base_element.py:443: in click
        self.find_element().click()
    ../views/base_element.py:435: in find_element
        raise NoSuchElementException(
     Device 2: `LogoutButton` by `xpath`:`//*[@text="Log out" or @text="LOG OUT"]` 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_activity_center_contact_request_accept_swipe_mark_all_as_read, id: 702851

    Device 2: Logging out
    Device 2: Scrolling down to LogoutButton

    activity_center/test_activity_center.py:93: in test_activity_center_contact_request_accept_swipe_mark_all_as_read
        self.profile_2.logout()
    ../views/profile_view.py:479: in logout
        self.logout_dialog.logout_button.click()
    ../views/base_element.py:443: in click
        self.find_element().click()
    ../views/base_element.py:435: in find_element
        raise NoSuchElementException(
     Device 2: `LogoutButton` by `xpath`:`//*[@text="Log out" or @text="LOG OUT"]` 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_mark_all_messages_as_read, id: 703086

    Device 1: Looking for chat: 'general'
    Device 1: Click system back button

    critical/chats/test_public_chat_browsing.py:755: in test_community_mark_all_messages_as_read
        community_1_element.long_press_until_element_is_shown(mark_as_read_button)
    ../views/base_element.py:318: in long_press_until_element_is_shown
        element = self.find_element()
    ../views/home_view.py:74: in find_element
        self.wait_for_visibility_of_element(20)
    ../views/base_element.py:139: in wait_for_visibility_of_element
        raise TimeoutException(
     Device 1: ChatElement by xpath:`//*[@content-desc='chat-name-text'][starts-with(@text,'open community')]/..` is not found on the screen after wait_for_visibility_of_element; also Unexpected Alert is shown: 'Feature not implemented.'
    



    Device sessions

    2. test_community_edit_delete_message_when_offline, id: 704615

    Device 1: Could not reach home view by pressing system back button
    Device 1: Find CommunitiesTab by accessibility id: communities-stack-tab

    critical/chats/test_public_chat_browsing.py:773: in test_community_edit_delete_message_when_offline
        self.home_1.communities_tab.click()
    ../views/base_element.py:90: in click
        self.find_element().click()
    ../views/base_element.py:79: in find_element
        raise NoSuchElementException(
     Device 1: CommunitiesTab by accessibility id: `communities-stack-tab` 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; also Unexpected Alert is shown: 'Feature not implemented.'
    



    Device sessions

    Class TestActivityMultipleDevicePRTwo:

    1. test_activity_center_mentions, id: 702957

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

    Test setup failed: activity_center/test_activity_center.py:374: in prepare_devices
        self.home_2.handle_contact_request(self.username_1)
    ../views/home_view.py:383: 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, 'user1')]/ancestor::*[@content-desc='activity']/*[@content-desc="accept-contact-request"]` is not found on the screen after wait_for_visibility_of_element
    



    Device sessions

    2. test_activity_center_admin_notification_accept_swipe, id: 702958

    Test setup failed: activity_center/test_activity_center.py:374: in prepare_devices
        self.home_2.handle_contact_request(self.username_1)
    ../views/home_view.py:383: 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, 'user1')]/ancestor::*[@content-desc='activity']/*[@content-desc="accept-contact-request"]` is not found on the screen after wait_for_visibility_of_element
    



    Expected to fail tests (6)

    Click to expand

    Class TestOneToOneChatMultipleSharedDevicesNewUi:

    1. test_1_1_chat_pin_messages, id: 702731

    Test is not run, e2e blocker  
    

    [[reason: [NOTRUN] Pin feature is in development]]

    Class TestOneToOneChatMultipleSharedDevicesNewUiTwo:

    1. test_1_1_chat_is_shown_message_sent_delivered_from_offline, id: 702783

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

    critical/chats/test_1_1_public_chats.py:612: in test_1_1_chat_is_shown_message_sent_delivered_from_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))]))
     Message status was not changed to Delivered, it's Sent after back up online! 
    

    [[Data delivery issue]]

    Device sessions

    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]]

    Class TestGroupChatMultipleDeviceMergedNewUI:

    1. test_group_chat_pin_messages, id: 702732

    Test is not run, e2e blocker  
    

    [[reason: [NOTRUN] Pin feature is in development]]

    2. test_group_chat_offline_pn, id: 702808

    Device 3: Looking for a message by text: message from old member
    Device 3: Looking for a message by text: message from new member

    critical/chats/test_group_chat.py:324: in test_group_chat_offline_pn
        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))]))
     Messages PN was not fetched from offline 
    

    [[Data delivery issue]]

    Device sessions

    Class TestCommunityMultipleDeviceMerged:

    1. test_community_contact_block_unblock_offline, id: 702894

    Device 1: Find ProfileButton by accessibility id: open-profile
    Device 1: Wait for element Button for max 30s and click when it is available

    critical/chats/test_public_chat_browsing.py:687: in test_community_contact_block_unblock_offline
        profile_1.contacts_button.wait_and_click()
    ../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 1: Button by accessibility id:`contacts-button` is not found on the screen after wait_for_visibility_of_element 
    

    [[Message can be missed after unblock: https://github.com//issues/16873]]

    Device sessions

    Passed tests (34)

    Click to expand

    Class TestOneToOneChatMultipleSharedDevicesNewUi:

    1. test_1_1_chat_emoji_send_reply_and_open_link, id: 702782
    Device sessions

    2. test_1_1_chat_text_message_delete_push_disappear, id: 702733
    Device sessions

    3. test_1_1_chat_push_emoji, id: 702813
    Device sessions

    4. test_1_1_chat_non_latin_messages_stack_update_profile_photo, id: 702745
    Device sessions

    5. test_1_1_chat_edit_message, id: 702855
    Device sessions

    6. test_1_1_chat_send_image_save_and_share, id: 703391
    Device sessions

    7. 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 TestCommunityMultipleDeviceMergedTwo:

    1. test_community_markdown_support, id: 702809
    Device sessions

    2. test_community_hashtag_links_to_community_channels, id: 702948
    Device sessions

    3. test_community_mentions_push_notification, id: 702786
    Device sessions

    4. test_community_leave, id: 702845
    Device sessions

    Class TestOneToOneChatMultipleSharedDevicesNewUiTwo:

    1. test_1_1_chat_delete_via_long_press_relogin, id: 702784
    Device sessions

    2. test_1_1_chat_mute_chat, id: 703496
    Device sessions

    Class TestCommunityOneDeviceMerged:

    1. test_community_copy_and_paste_message_in_chat_input, id: 702742
    Device sessions

    2. test_community_undo_delete_message, id: 702869
    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_mute_chat, id: 703495
    Device sessions

    2. test_group_chat_send_image_save_and_share, id: 703297
    Device sessions

    3. test_group_chat_reactions, id: 703202
    Device sessions

    4. test_group_chat_join_send_text_messages_push, id: 702807
    Device sessions

    Class TestActivityCenterContactRequestMultipleDevicePR:

    1. test_activity_center_contact_request_decline, id: 702850
    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_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_message_edit, id: 702843
    Device sessions

    8. test_community_unread_messages_badge, id: 702841
    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

    @ajayesivan
    Copy link
    Contributor

    The changes introduced in this PR are disabled in develop under a flag, so it doesn't require manual qa. I think failed e2e is not related to this PR. @status-im/mobile-qa Could you please check and confirm?

    @ajayesivan ajayesivan self-assigned this Dec 21, 2023
    @pavloburykh
    Copy link
    Contributor

    @ajayesivan thank you for the PR. Failed e2e are not PR related. Ready for merge.

    @ajayesivan ajayesivan force-pushed the communities-share-airdrop-address-in-non-token-gated-community branch from ce0c5a1 to 9beee9c Compare December 21, 2023 09:11
    @ajayesivan ajayesivan merged commit e59e34d into develop Dec 21, 2023
    6 checks passed
    @ajayesivan ajayesivan deleted the communities-share-airdrop-address-in-non-token-gated-community branch December 21, 2023 09:28
    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.

    Communities: Share airdrop address in non token-gated community
    6 participants