Skip to content

[#21902] Reimplement community overview #22293

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

Merged
merged 16 commits into from
Mar 26, 2025

Conversation

ulisesmac
Copy link
Contributor

fixes #21902
fixes #22236

Summary

This PR re implements the community overview page since it had multiple bugs (from design impl, to code and performance).

figma: https://www.figma.com/design/h9wo4GipgZURbqqr1vShFN/Communities-for-Mobile?node-id=10275-397889&m=dev

Test on Emulator:

Screencast.From.2025-03-13.12-29-43.mp4

iOS device:

video_2025-03-13_14-18-33.mp4

Android device:

video_2025-03-13_14-18-40.mp4

Testing notes

Please visit different communities on different devices to make sure everything looks ok. It took more time to make sure the UI looks fine on different devices with different configurations.

Please test all previous features are still working at least as before. I'd highly appreciate any bug report on it.

Platforms

  • Android
  • iOS

status: ready

@status-im-auto
Copy link
Member

status-im-auto commented Mar 13, 2025

Jenkins Builds

Click to see older builds (41)
Commit #️⃣ Finished (UTC) Duration Platform Result
b65d2a4 #1 2025-03-13 20:27:45 ~3 min tests 📄log
✔️ b65d2a4 #1 2025-03-13 20:31:57 ~7 min android 🤖apk 📲
✔️ b65d2a4 #1 2025-03-13 20:32:30 ~8 min android-e2e 🤖apk 📲
✔️ b65d2a4 #1 2025-03-13 20:34:48 ~10 min ios 📱ipa 📲
✔️ 6bdb838 #2 2025-03-13 20:46:19 ~5 min tests 📄log
✔️ 6bdb838 #2 2025-03-13 20:48:31 ~7 min android-e2e 🤖apk 📲
✔️ 6bdb838 #2 2025-03-13 20:49:46 ~8 min android 🤖apk 📲
✔️ 6bdb838 #2 2025-03-13 20:50:53 ~9 min ios 📱ipa 📲
✔️ df9e949 #3 2025-03-18 20:18:14 ~5 min tests 📄log
✔️ df9e949 #3 2025-03-18 20:22:12 ~9 min android-e2e 🤖apk 📲
✔️ df9e949 #3 2025-03-18 20:22:55 ~9 min android 🤖apk 📲
✔️ df9e949 #3 2025-03-18 20:23:29 ~10 min ios 📱ipa 📲
✔️ 78be0d4 #4 2025-03-18 23:24:38 ~5 min tests 📄log
✔️ 78be0d4 #4 2025-03-18 23:28:31 ~9 min android-e2e 🤖apk 📲
✔️ 78be0d4 #4 2025-03-18 23:29:05 ~9 min ios 📱ipa 📲
✔️ 78be0d4 #4 2025-03-18 23:29:12 ~9 min android 🤖apk 📲
2580d94 #5 2025-03-19 00:54:41 ~3 min tests 📄log
✔️ 2580d94 #5 2025-03-19 01:00:35 ~9 min android-e2e 🤖apk 📲
✔️ 2580d94 #5 2025-03-19 01:01:06 ~9 min android 🤖apk 📲
✔️ 2580d94 #5 2025-03-19 01:01:16 ~9 min ios 📱ipa 📲
✔️ 8e010b2 #6 2025-03-19 01:13:12 ~5 min tests 📄log
✔️ 8e010b2 #6 2025-03-19 01:17:00 ~9 min android-e2e 🤖apk 📲
✔️ 8e010b2 #6 2025-03-19 01:17:41 ~9 min ios 📱ipa 📲
✔️ 8e010b2 #6 2025-03-19 01:17:49 ~9 min android 🤖apk 📲
effa284 #7 2025-03-20 22:54:15 ~3 min tests 📄log
✔️ effa284 #7 2025-03-20 22:59:43 ~8 min android-e2e 🤖apk 📲
✔️ effa284 #7 2025-03-20 23:00:25 ~9 min android 🤖apk 📲
✔️ effa284 #7 2025-03-20 23:01:04 ~10 min ios 📱ipa 📲
fc51d3f #8 2025-03-20 23:18:33 ~3 min tests 📄log
✔️ fc51d3f #8 2025-03-20 23:24:16 ~9 min android-e2e 🤖apk 📲
✔️ fc51d3f #8 2025-03-20 23:24:35 ~9 min android 🤖apk 📲
✔️ fc51d3f #8 2025-03-20 23:24:43 ~9 min ios 📱ipa 📲
4b114f5 #9 2025-03-21 13:54:43 ~8 min tests 📄log
✔️ a496bb7 #10 2025-03-21 14:02:57 ~5 min tests 📄log
✔️ a496bb7 #10 2025-03-21 14:05:06 ~7 min android 🤖apk 📲
✔️ a496bb7 #10 2025-03-21 14:05:39 ~8 min android-e2e 🤖apk 📲
✔️ a496bb7 #10 2025-03-21 14:10:49 ~13 min ios 📱ipa 📲
✔️ 8ebde75 #11 2025-03-21 14:58:45 ~5 min tests 📄log
✔️ 8ebde75 #11 2025-03-21 15:01:30 ~8 min android-e2e 🤖apk 📲
✔️ 8ebde75 #11 2025-03-21 15:02:53 ~10 min android 🤖apk 📲
✔️ 8ebde75 #11 2025-03-21 15:03:04 ~10 min ios 📱ipa 📲
Commit #️⃣ Finished (UTC) Duration Platform Result
✔️ 768909c #13 2025-03-25 20:53:07 ~4 min tests 📄log
✔️ 768909c #13 2025-03-25 20:57:06 ~8 min android-e2e 🤖apk 📲
✔️ 768909c #13 2025-03-25 20:57:35 ~8 min android 🤖apk 📲
✔️ 768909c #13 2025-03-25 21:01:42 ~13 min ios 📱ipa 📲
✔️ 7d02adb #15 2025-03-26 20:35:54 ~4 min tests 📄log
✔️ 7d02adb #15 2025-03-26 20:38:00 ~6 min android-e2e 🤖apk 📲
✔️ 7d02adb #15 2025-03-26 20:39:49 ~8 min android 🤖apk 📲
✔️ 7d02adb #15 2025-03-26 20:42:28 ~11 min ios 📱ipa 📲

@ulisesmac
Copy link
Contributor Author

Please ignore the changes in ddb8c53, this was built on top of the solution for

You can get the main diff at b65d2a4

@du82
Copy link

du82 commented Mar 13, 2025

This is really good looking, a much needed improvement!

I just wish there was basic file sharing ability and voice messages to make the chat features actually competitive

Copy link
Contributor

@ilmotta ilmotta left a comment

Choose a reason for hiding this comment

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

Excellent results in this PR @ulisesmac! It's a bit too large to review, but I shared what I could as feedback.

@ulisesmac
Copy link
Contributor Author

This is really good looking, a much needed improvement!

I just wish there was basic file sharing ability and voice messages to make the chat features actually competitive

@du82 Thanks for the comment!

Yes, people nowadays use audio messages too often, but due to our decentralized nature it may involve some challenges. I asked the team about it and it's something we'll evaluate, not right now but soon.

@du82
Copy link

du82 commented Mar 16, 2025

This is really good looking, a much needed improvement!
I just wish there was basic file sharing ability and voice messages to make the chat features actually competitive

@du82 Thanks for the comment!

Yes, people nowadays use audio messages too often, but due to our decentralized nature it may involve some challenges. I asked the team about it and it's something we'll evaluate, not right now but soon.

Audio messages were available in v1.X, and so far v2.x is a downgrade. It has less functionality and feels like crypto capitalism is consuming the messaging app. The default tab used to be messaging, and now that's an afterthought.

Comment on lines 34 to 39
(defn right-content
[min-size?]
(merge
{:flex-grow 1
:flex-basis 1}
(when min-size?
{:min-height 32})))
[min-size? centered-content?]
(cond-> {}
centered-content? (assoc :flex-grow 1 :flex-basis 1)
min-size? (assoc :min-height 32)))
Copy link
Member

Choose a reason for hiding this comment

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

Small nitpick:

maybe we can format these kind of assocs with a map-like structure?
for example:

(defn right-content
   [min-size? centered-content?]
   (cond-> {}
     centered-content? (assoc :flex-grow 1 
                              :flex-basis 1)
     min-size?         (assoc :min-height 32)))

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Yes, we usually (and our lint-fix task) formats like that, in this case I deliberately wanted to keep it inline since it's a short map. Do you think this pattern is wrong?

Copy link
Member

Choose a reason for hiding this comment

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

I don't think it's wrong, though I think it's easier to glance at map structure than an inline structure. For me, the inline structure reminds me of a sequence of things, but in this case we know we mean it's a sequence of key-values.

For example, here's another way of looking at it:

(def thing {:flex-grow 1 :flex-basis 1}

(def other {:flex-grow 1
            :flex-basis 1}

Even though it's a small map, I would still prefer seeing each key-value on its own line just for readability. Though it's not a big deal, since as you say it's a small map 🗺️

Copy link
Member

@seanstrom seanstrom left a comment

Choose a reason for hiding this comment

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

@ulisesmac thanks for the PR 🙌

I left a few comments, but my main comment would be about the new worklet file worklets/communities.js.

I'm wondering if we should extract some of these special number values and pass them as arguments into the JS functions from the ClojureScript functions. Not sure if that's possible, but it seems we can pass in a map with some animation configuration data.

For example, instead of hard-coding -42.5 we'll try to name that value and pass it in as an argument. Though, I would imagine we don't need to do this for every number, like 0, 1, and -1 are probably safe to keep in JS since those are likely generic animation configuration. But the special animation configuration could be passed as an argument(s). Thoughts?

@ulisesmac ulisesmac force-pushed the 21902-communities-ui-artifacts-in-header branch 2 times, most recently from 2580d94 to 8e010b2 Compare March 19, 2025 01:07
Comment on lines +23 to +26
;; NOTE: values compared against `scroll-amount` to trigger animations.
(def expand-header-threshold
"Dragging distance to collapse/extend the community."
150)
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Hey @seanstrom

I find very difficult to name all the values passed, those values are just style values needed to match designs due to animations, also I don't think giving names to those is significantly helpful.

Instead, I named the configurable props for animations and I'm passing them to the worklets. Since maybe the names aren't clear enough, I added a docstring to these so they can be configured more easily.

wdyt? is that enough?

@ulisesmac ulisesmac force-pushed the 21902-communities-ui-artifacts-in-header branch from effa284 to fc51d3f Compare March 20, 2025 23:14
@ulisesmac ulisesmac moved this from REVIEW to E2E Tests in Pipeline for QA Mar 20, 2025
@status-im-auto
Copy link
Member

29% of end-end tests have passed

Total executed tests: 14
Failed tests: 7
Expected to fail tests: 3
Passed tests: 4
IDs of failed tests: 727230,702742,727229,741612,703133,741554,702843 
IDs of expected to fail tests: 741840,741839,741841 

Failed tests (7)

Click to expand
  • Rerun failed tests

  • Class TestCommunityOneDeviceMerged:

    1. test_community_copy_and_paste_message_in_chat_input, id: 702742

    Device 1: Looking for community: 'closed community'
    Device 1: Click until `Text` by `accessibility id`: `community-title` will be presented

    Test setup failed: critical/chats/test_public_chat_browsing.py:33: in prepare_devices
        self.home.get_chat(self.community_name, community=True).click()
    ../views/home_view.py:61: in click
        self.click_until_presence_of_element(desired_element=desired_element)
    ../views/base_element.py:106: in click_until_presence_of_element
        self.find_element().click()
    ../views/home_view.py:71: in find_element
        self.wait_for_visibility_of_element(20)
    ../views/base_element.py:138: in wait_for_visibility_of_element
        raise TimeoutException(
     Device 1: ChatElement by xpath:`//*[@content-desc='chat-name-text'][starts-with(@text,'closed community')]/..` is not found on the screen after wait_for_visibility_of_element
    



    Device sessions

    2. test_restore_multiaccount_with_waku_backup_remove_profile_switch, id: 703133

    Test setup failed: critical/chats/test_public_chat_browsing.py:33: in prepare_devices
        self.home.get_chat(self.community_name, community=True).click()
    ../views/home_view.py:61: in click
        self.click_until_presence_of_element(desired_element=desired_element)
    ../views/base_element.py:106: in click_until_presence_of_element
        self.find_element().click()
    ../views/home_view.py:71: in find_element
        self.wait_for_visibility_of_element(20)
    ../views/base_element.py:138: in wait_for_visibility_of_element
        raise TimeoutException(
     Device 1: ChatElement by xpath:`//*[@content-desc='chat-name-text'][starts-with(@text,'closed community')]/..` is not found on the screen after wait_for_visibility_of_element
    



    Class TestWalletOneDevice:

    1. test_wallet_bridge_flow_mainnet, id: 741612

    Device 1: Find SlideButton by xpath: //*[@resource-id='slide-button-track']
    Device 1: Click system back button

    critical/wallet/test_wallet_mainnet.py:353: in test_wallet_bridge_flow_mainnet
        self.errors.verify_no_errors()
    base_test_case.py:179: in verify_no_errors
        pytest.fail('\n '.join([self.errors.pop(0) for _ in range(len(self.errors))]))
     Device 1: Optimism to Arbitrum: Est. time is not shown on the Review Bridge screen
    E    Device 1: Arbitrum to Base: Est. time is not shown on the Review Bridge screen
    E    Device 1: Base to Optimism: Est. time is not shown on the Review Bridge screen
    



    2. test_wallet_send_flow_mainnet, id: 741554

    Device 1: Swiping right on element SlideButton
    Device 1: Find SlideButton by xpath: //*[@resource-id='slide-button-track']

    critical/wallet/test_wallet_mainnet.py:160: in test_wallet_send_flow_mainnet
        self.errors.verify_no_errors()
    base_test_case.py:179: in verify_no_errors
        pytest.fail('\n '.join([self.errors.pop(0) for _ in range(len(self.errors))]))
     Device 1: Ether on Mainnet: Est. time is not shown on the Review Send page
    E    Device 1: Ether on Arbitrum: Est. time is not shown on the Review Send page
    E    Device 1: Status on Mainnet: Est. time is not shown on the Review Send page
    E    Device 1: Status on Optimism: Est. time is not shown on the Review Send page
    



    Class TestWalletMultipleDevice:

    1. test_wallet_send_asset_from_drawer, id: 727230

    Device 2: Find Text by xpath: //android.view.ViewGroup[@content-desc='container']/android.widget.TextView[@text='Ether']/../android.widget.TextView[3]
    Device 2: Text is 0.21299 ETH

    critical/wallet/test_wallet_testnet.py:202: in test_wallet_send_asset_from_drawer
        self.errors.verify_no_errors()
    base_test_case.py:179: in verify_no_errors
        pytest.fail('\n '.join([self.errors.pop(0) for _ in range(len(self.errors))]))
     Device 1: Eth amount in the shdUaM8M6QcxQ4qn32nQ's wallet is 0.4635 but should be 0.2505
    



    2. test_wallet_send_eth, id: 727229

    Device 2: Find Text by xpath: //android.view.ViewGroup[@content-desc='container']/android.widget.TextView[@text='Ether']/../android.widget.TextView[3]
    Device 2: Text is 0.21289 ETH

    critical/wallet/test_wallet_testnet.py:167: in test_wallet_send_eth
        self.errors.verify_no_errors()
    base_test_case.py:179: in verify_no_errors
        pytest.fail('\n '.join([self.errors.pop(0) for _ in range(len(self.errors))]))
     Device 1: Eth amount in the shdUaM8M6QcxQ4qn32nQ's wallet is 0.4635 but should be 0.2506
    



    Class TestCommunityMultipleDeviceMerged:

    1. test_community_message_edit, id: 702843

    Device 1: Looking for community: 'open community'
    Device 1: Click until Text by accessibility id: community-title will be presented

    Test setup failed: critical/chats/test_public_chat_browsing.py:340: in prepare_devices
        self.channel_1 = self.home_1.get_to_community_channel_from_home(self.community_name)
    ../views/home_view.py:366: in get_to_community_channel_from_home
        self.get_chat(community_name, community=True).click()
    ../views/home_view.py:61: in click
        self.click_until_presence_of_element(desired_element=desired_element)
    ../views/base_element.py:106: in click_until_presence_of_element
        self.find_element().click()
    ../views/home_view.py:71: in find_element
        self.wait_for_visibility_of_element(20)
    ../views/base_element.py:138: 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
    



    Device sessions

    Expected to fail tests (3)

    Click to expand

    Class TestWalletCollectibles:

    1. test_wallet_send_collectible, id: 741840

    Device 1: Tap on found: Button
    Device 1: Find EditBox by accessibility id: address-text-input

    critical/wallet/test_collectibles.py:102: in test_wallet_send_collectible
        self.wallet_view.address_text_input.send_keys(self.receiver['wallet_address'])
    ../views/base_element.py:365: in send_keys
        self.find_element().send_keys(value)
    ../views/base_element.py:78: in find_element
        raise NoSuchElementException(
     Device 1: EditBox by accessibility id: `address-text-input` 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 
    

    [[Collectibles list is not loaded sometimes]]

    2. test_wallet_collectibles_balance, id: 741839

    # STEP: Check BVL collectible info and image
    # STEP: Check Glitch Punks collectible info and image

    critical/wallet/test_collectibles.py:95: in test_wallet_collectibles_balance
        self.errors.verify_no_errors()
    base_test_case.py:179: in verify_no_errors
        pytest.fail('\n '.join([self.errors.pop(0) for _ in range(len(self.errors))]))
     Device 1: Collectible 'BVL' is not displayed
    E    Device 1: Collectible 'Glitch Punks' is not displayed 
    

    [[Collectibles list is not loaded sometimes]]

    3. test_wallet_collectible_send_from_expanded_info_view, id: 741841

    Device 1: Find Button by accessibility id: collectibles-tab
    Device 1: Tap on found: Button

    critical/wallet/test_collectibles.py:158: in test_wallet_collectible_send_from_expanded_info_view
        self.wallet_view.get_collectible_element('Glitch Punks').wait_for_element().click()
    ../views/base_element.py:120: in wait_for_element
        raise TimeoutException(
     Device `1`: `CollectibleItemElement` by` xpath`: `//*[@content-desc='collectible-list-item']//*[contains(@text,'Glitch Punks')]/../..` is not found on the screen after wait_for_element 
    

    [[Collectibles list is not loaded sometimes]]

    Passed tests (4)

    Click to expand

    Class TestWalletOneDevice:

    1. test_wallet_swap_flow_mainnet, id: 741555
    2. test_wallet_add_remove_regular_account, id: 727231
    3. test_wallet_balance_mainnet, id: 740490

    Class TestOneToOneChatMultipleSharedDevicesNewUi:

    1. test_1_1_chat_non_latin_messages_stack_update_profile_photo, id: 702745
    Device sessions

    @ulisesmac
    Copy link
    Contributor Author

    @seanstrom I reformatted the map, thanks for the review 👍

    @seanstrom
    Copy link
    Member

    @ulisesmac sorry for the delay, just read your comment about the naming of those special arguments.

    I think what you have is good, and I think your reasoning about the trouble with naming things is very valid. I suppose naming things might be a workaround for just wanting to write these JavaScript functions in ClojureScript haha. Though I imagine that's not currently possible since those worklets run in a separate environment then our main app.

    I wonder if later on we can experiment with adding another shadow-cljs build for the worklets in our app. Not sure if that would help or hurt things, but it could be a fun thing side-quest 🧙

    @mariia-skrypnyk
    Copy link

    Thanks @ulisesmac for your patience!
    PR finally can be merged!

    @mariia-skrypnyk mariia-skrypnyk moved this from IN TESTING to MERGE in Pipeline for QA Mar 26, 2025
    @status-im-auto
    Copy link
    Member

    81% of end-end tests have passed

    Total executed tests: 68
    Failed tests: 7
    Expected to fail tests: 6
    Passed tests: 55
    
    IDs of failed tests: 727231,702894,703086,727230,741925,704615,740222 
    
    IDs of expected to fail tests: 702844,741840,741839,741841,741924,703503 
    

    Failed tests (7)

    Click to expand
  • Rerun failed tests

  • Class TestWalletOneDevice:

    1. test_wallet_add_remove_regular_account, id: 727231

    # STEP: Adding new regular account
    Device 1: Find `Button` by `accessibility id`: `add-account`

    critical/wallet/test_wallet_mainnet.py:357: in test_wallet_add_remove_regular_account
        self.wallet_view.add_regular_account(account_name=new_account_name)
    ../views/wallet_view.py:245: in add_regular_account
        self.add_account_button.click()
    ../views/base_element.py:89: in click
        element = self.find_element()
    ../views/base_element.py:78: in find_element
        raise NoSuchElementException(
     Device 1: Button by accessibility id: `add-account` 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 TestFallbackMultipleDevice:

    1. test_fallback_validate_seed_phrase, id: 740222

    # STEP: Device 2: try recovering an account which is already synced
    Device 2: Find EditBox by accessibility id: passphrase-input

    critical/test_fallback.py:378: in test_fallback_validate_seed_phrase
        self.sign_in_2.passphrase_edit_box.clear()
    ../views/base_element.py:369: in clear
        self.find_element().clear()
    ../views/base_element.py:78: in find_element
        raise NoSuchElementException(
     Device 2: EditBox by accessibility id: `passphrase-input` 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 TestWalletMultipleDevice:

    1. test_wallet_send_asset_from_drawer, id: 727230

    Device 2: Scrolling down to Text
    Device 2: Find Text by xpath: //android.view.ViewGroup[@content-desc='container']/android.widget.TextView[@text='Ether']/../android.widget.TextView[3]

    critical/wallet/test_wallet_testnet.py:192: in test_wallet_send_asset_from_drawer
        self._check_balances_after_tx(amount_to_send, None, None, eth_amount_sender, eth_amount_receiver)
    critical/wallet/test_wallet_testnet.py:96: in _check_balances_after_tx
        self.loop.run_until_complete(
    /usr/lib/python3.10/asyncio/base_events.py:649: in run_until_complete
        return future.result()
    __init__.py:38: in run_in_parallel
        returns.append(await k)
    /usr/lib/python3.10/concurrent/futures/thread.py:58: in run
        result = self.fn(*self.args, **self.kwargs)
    critical/wallet/test_wallet_testnet.py:73: in wait_for_wallet_balance_to_update
        new_eth_amount = round(wallet_view.get_asset(asset_name='Ether').get_amount(), 4)
    ../views/wallet_view.py:23: in get_amount
        element.scroll_to_element()
    ../views/base_element.py:188: in scroll_to_element
        return self.find_element()
    ../views/base_element.py:83: in find_element
        raise exception
    ../views/base_element.py:76: in find_element
        return self.driver.find_element(self.by, self.locator)
    ../../../../status-app-prs-rerun@tmp/venv/lib/python3.10/site-packages/appium/webdriver/webdriver.py:409: in find_element
        return self.execute(RemoteCommand.FIND_ELEMENT, {'using': by, 'value': value})['value']
    ../../../../status-app-prs-rerun@tmp/venv/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py:345: in execute
        self.error_handler.check_response(response)
    ../../../../status-app-prs-rerun@tmp/venv/lib/python3.10/site-packages/appium/webdriver/errorhandler.py:122: in check_response
        raise exception_class(msg=message, stacktrace=format_stacktrace(stacktrace))
     An unknown server-side error occurred while processing the command. Original error: 'POST /element' cannot be proxied to UiAutomator2 server because the instrumentation process is not running (probably crashed). Check the server log and/or the logcat output for more details
    E   Stacktrace:
    E   UnknownError: An unknown server-side error occurred while processing the command. Original error: 'POST /element' cannot be proxied to UiAutomator2 server because the instrumentation process is not running (probably crashed). Check the server log and/or the logcat output for more details
    E       at UIA2Proxy.command (/root/lambda/shared-tools/volume/uiautomator/uiautomator-2.32.3/node_modules/@appium/base-driver/lib/jsonwp-proxy/proxy.js:355:13)
    E       at runMicrotasks (<anonymous>)
    E       at processTicksAndRejections (node:internal/process/task_queues:96:5)
    E       at AndroidUiautomator2Driver.doFindElementOrEls (/root/lambda/shared-tools/volume/uiautomator/uiautomator-2.32.3/lib/commands/find.js:44:7)
    E       at doFind (/root/lambda/shared-tools/volume/uiautomator/uiautomator-2.32.3/node_modules/appium-android-driver/lib/commands/find.ts:48:17)
    E       at wrappedCondFn (/root/lambda/shared-tools/volume/uiautomator/uiautomator-2.32.3/node_modules/@appium/base-driver/lib/basedriver/commands/timeout.ts:137:14)
    E       at spin (/root/lambda/shared-tools/volume/uiautomator/uiautomator-2.32.3/node_modules/asyncbox/lib/asyncbox.js:221:20)
    E       at waitForCondition (/root/lambda/shared-tools/volume/uiautomator/uiautomator-2.32.3/node_modules/asyncbox/lib/asyncbox.js:238:10)
    E       at AndroidUiautomator2Driver.implicitWaitForCondition (/root/lambda/shared-tools/volume/uiautomator/uiautomator-2.32.3/node_modules/@appium/base-driver/lib/basedriver/commands/timeout.ts:139:12)
    E       at AndroidUiautomator2Driver.findElOrEls (/root/lambda/shared-tools/volume/uiautomator/uiautomator-2.32.3/node_modules/appium-android-driver/lib/commands/find.ts:71:5)
    E       at AndroidUiautomator2Driver.findElOrElsWithProcessing (/root/lambda/shared-tools/volume/uiautomator/uiautomator-2.32.3/node_modules/@appium/base-driver/lib/basedriver/commands/find.ts:60:12)
    E       at AndroidUiautomator2Driver.findElement (/root/lambda/shared-tools/volume/uiautomator/uiautomator-2.32.3/node_modules/@appium/base-driver/lib/basedriver/commands/find.ts:75:12)
    



    Class TestCommunityMultipleDeviceMergedThree:

    1. test_community_send_message_from_offline, id: 741925

    Device 2: Click until ChatMessageInput by accessibility id: chat-message-input will be presented
    Device 2: Looking for a message by text: message in 1-1 chat

    critical/chats/test_public_chat_browsing.py:1410: in test_community_send_message_from_offline
        self.errors.verify_no_errors()
    base_test_case.py:179: in verify_no_errors
        pytest.fail('\n '.join([self.errors.pop(0) for _ in range(len(self.errors))]))
     Device 1: Can't receive the message 'message in 1-1 chat' in 1-1 chat if it's sent from offline
    



    Device sessions

    Class TestCommunityMultipleDeviceMerged:

    1. test_community_contact_block_unblock_offline, id: 702894

    Device 1: Looking for chat: 'shUDazw4ZVSZ3SMRAtwC'
    Device 1: Find Button by xpath: //*[@content-desc='author-primary-name'][starts-with(@text,'shUDazw4ZVSZ3SMRAtwC')]/../*[@content-desc='Unblock']

    critical/chats/test_public_chat_browsing.py:739: in test_community_contact_block_unblock_offline
        self.home_1.get_chat(self.username_2).profile_unblock_button.click()
    ../views/base_element.py:89: in click
        element = self.find_element()
    ../views/base_element.py:78: in find_element
        raise NoSuchElementException(
     Device 1: Button by xpath: `//*[@content-desc='author-primary-name'][starts-with(@text,'shUDazw4ZVSZ3SMRAtwC')]/../*[@content-desc='Unblock']` 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_community_mark_all_messages_as_read, id: 703086

    Device 1: Looking for community: 'open community'
    Device 1: Click until Text by accessibility id: community-title will be presented

    critical/chats/test_public_chat_browsing.py:799: in test_community_mark_all_messages_as_read
        community_1_element.click()
    ../views/home_view.py:61: in click
        self.click_until_presence_of_element(desired_element=desired_element)
    ../views/base_element.py:109: in click_until_presence_of_element
        raise NoSuchElementException("%s element not found" % desired_element.name)
     Text element not found; 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 community: 'open community'
    Device 1: Click until Text by accessibility id: community-title will be presented

    critical/chats/test_public_chat_browsing.py:826: in test_community_edit_delete_message_when_offline
        self.home_1.get_chat(self.community_name, community=True).click()
    ../views/home_view.py:61: in click
        self.click_until_presence_of_element(desired_element=desired_element)
    ../views/base_element.py:109: in click_until_presence_of_element
        raise NoSuchElementException("%s element not found" % desired_element.name)
     Text element not found; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors#no-such-element-exception
    



    Device sessions

    Expected to fail tests (6)

    Click to expand

    Class TestCommunityMultipleDeviceMergedThree:

    1. test_community_mobile_data_and_wi_fi_only_fetching, id: 741924

    Device 2: Click until ChatMessageInput by accessibility id: chat-message-input will be presented
    Device 2: Looking for a message by text: message text 2

    critical/chats/test_public_chat_browsing.py:1356: in test_community_mobile_data_and_wi_fi_only_fetching
        self.errors.verify_no_errors()
    base_test_case.py:179: in verify_no_errors
        pytest.fail('\n '.join([self.errors.pop(0) for _ in range(len(self.errors))]))
     Device 2: Message 'message text 3' in 1-1 chat, which is sent when receiver was offline, is missed 
    

    [[Community message can be fetched from offline when using mobile data]]

    Device sessions

    Class TestWalletCollectibles:

    1. test_wallet_send_collectible, id: 741840

    Device 1: Tap on found: Button
    Device 1: Find EditBox by accessibility id: address-text-input

    critical/wallet/test_collectibles.py:102: in test_wallet_send_collectible
        self.wallet_view.address_text_input.send_keys(self.receiver['wallet_address'])
    ../views/base_element.py:365: in send_keys
        self.find_element().send_keys(value)
    ../views/base_element.py:78: in find_element
        raise NoSuchElementException(
     Device 1: EditBox by accessibility id: `address-text-input` 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 
    

    [[Collectibles list is not loaded sometimes]]

    2. test_wallet_collectibles_balance, id: 741839

    # STEP: Check BVL collectible info and image
    # STEP: Check Glitch Punks collectible info and image

    critical/wallet/test_collectibles.py:95: in test_wallet_collectibles_balance
        self.errors.verify_no_errors()
    base_test_case.py:179: in verify_no_errors
        pytest.fail('\n '.join([self.errors.pop(0) for _ in range(len(self.errors))]))
     Device 1: Collectible 'BVL' is not displayed
    E    Device 1: Collectible 'Glitch Punks' is not displayed 
    

    [[Collectibles list is not loaded sometimes]]

    3. test_wallet_collectible_send_from_expanded_info_view, id: 741841

    Device 1: Find Button by accessibility id: collectibles-tab
    Device 1: Tap on found: Button

    critical/wallet/test_collectibles.py:158: in test_wallet_collectible_send_from_expanded_info_view
        self.wallet_view.get_collectible_element('Glitch Punks').wait_for_element().click()
    ../views/base_element.py:120: in wait_for_element
        raise TimeoutException(
     Device `1`: `CollectibleItemElement` by` xpath`: `//*[@content-desc='collectible-list-item']//*[contains(@text,'Glitch Punks')]/../..` is not found on the screen after wait_for_element 
    

    [[Collectibles list is not loaded sometimes]]

    Class TestCommunityMultipleDeviceMerged:

    1. test_community_links_with_previews_github_youtube_twitter_gif_send_enable, id: 702844

    Device 2: Find EmojisNumber by xpath: //*[starts-with(@text,'https://m.youtube.com/watch?v=Je7yErjEVt4')]/ancestor::android.view.ViewGroup[@content-desc='chat-item']/../..//*[@content-desc='emoji-reaction-4']/android.widget.TextView[2]
    Device 2: Element EmojisNumber text is equal to 1

    critical/chats/test_public_chat_browsing.py:662: in test_community_links_with_previews_github_youtube_twitter_gif_send_enable
        self.errors.verify_no_errors()
    base_test_case.py:179: in verify_no_errors
        pytest.fail('\n '.join([self.errors.pop(0) for _ in range(len(self.errors))]))
     Device 1: No preview is loaded for url https://youtu.be/Je7yErjEVt4
    E    Device 1: No preview is loaded for url https://www.youtube.com/watch?v=XN-SVmuJH2g&list=PLbrz7IuP1hrgNtYe9g6YHwHO6F3OqNMao
    E    Device 1: No preview is loaded for url https://m.youtube.com/watch?v=Je7yErjEVt4 
    

    [[Youtube links preview is not loaded on LambdaTest emulators, needs investigation]]

    Device sessions

    Class TestCommunityOneDeviceMerged:

    1. test_community_discovery, id: 703503

    Device 1: Image differs from template to 0.0 percents
    Device 1: Find BaseElement by xpath: //*[@content-desc='community-title']/preceding-sibling::*/android.widget.ImageView

    critical/chats/test_public_chat_browsing.py:295: in test_community_discovery
        if self.community_view.community_logo.is_element_differs_from_template('status_community_logo.png'):
    ../views/base_element.py:259: in is_element_differs_from_template
        difference = ImageChops.difference(self.image, self.template)
    ../views/base_element.py:237: in image
        return Image.open(BytesIO(base64.b64decode(self.find_element().screenshot_as_base64)))
    ../views/base_element.py:78: in find_element
        raise NoSuchElementException(
     Device 1: BaseElement by xpath: `//*[@content-desc='community-title']/preceding-sibling::*/android.widget.ImageView` 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 
    

    [[Might fail if the Discover curation dapp is too slow to load > 2 mins]]

    Device sessions

    Passed tests (55)

    Click to expand

    Class TestActivityMultipleDevicePR:

    1. test_activity_center_reply_read_unread_delete_filter_swipe, id: 702947
    Device sessions

    Class TestWalletOneDevice:

    1. test_wallet_swap_flow_mainnet, id: 741555
    2. test_wallet_balance_mainnet, id: 740490
    3. test_wallet_bridge_flow_mainnet, id: 741612
    4. test_wallet_send_flow_mainnet, id: 741554

    Class TestCommunityMultipleDeviceMergedTwo:

    1. test_community_leave, id: 702845
    Device sessions

    2. test_community_mentions_push_notification, id: 702786
    Device sessions

    3. test_community_markdown_support, id: 702809
    Device sessions

    4. test_community_hashtag_links_to_community_channels, id: 702948
    Device sessions

    5. test_community_join_when_node_owner_offline, id: 703629
    Device sessions

    Class TestFallbackMultipleDevice:

    1. test_fallback_add_key_pair, id: 741054
    2. test_fallback_sync_with_error, id: 740220
    3. test_fallback_with_correct_seed_phrase, id: 740221

    Class TestDeepLinksOneDevice:

    1. test_links_open_universal_links_from_chat, id: 704613
    Device sessions

    2. test_links_deep_links_profile, id: 702775
    Device sessions

    3. test_deep_links_communities, id: 739307
    Device sessions

    Class TestAndroid12:

    1. test_create_account_android_12, id: 741806
    Device sessions

    Class TestCommunityOneDeviceMerged:

    1. test_restore_multiaccount_with_waku_backup_remove_profile_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_undo_delete_message, id: 702869
    Device sessions

    5. test_community_mute_community_and_channel, id: 703382
    Device sessions

    Class TestOneToOneChatMultipleSharedDevicesNewUi:

    1. test_1_1_chat_edit_message, id: 702855
    Device sessions

    2. test_1_1_chat_message_reaction, id: 702730
    Device sessions

    3. test_1_1_chat_non_latin_messages_stack_update_profile_photo, id: 702745
    Device sessions

    4. test_1_1_chat_pin_messages, id: 702731
    Device sessions

    5. test_1_1_chat_text_message_delete_push_disappear, id: 702733
    Device sessions

    6. test_1_1_chat_push_emoji, id: 702813
    Device sessions

    7. test_1_1_chat_emoji_send_reply_and_open_link, id: 702782
    Device sessions

    8. test_1_1_chat_send_image_save_and_share, id: 703391
    Device sessions

    Class TestGroupChatMultipleDeviceMergedNewUI:

    1. test_group_chat_reactions, id: 703202
    Device sessions

    2. test_group_chat_join_send_text_messages_push, id: 702807
    Device sessions

    3. test_group_chat_offline_pn, id: 702808
    Device sessions

    4. test_group_chat_pin_messages, id: 702732
    Device sessions

    5. test_group_chat_send_image_save_and_share, id: 703297
    Device sessions

    6. test_group_chat_mute_chat, id: 703495
    Device sessions

    Class TestAndroid13:

    1. test_create_account_android_13, id: 741807
    Device sessions

    Class TestWalletMultipleDevice:

    1. test_wallet_send_eth, id: 727229

    Class TestActivityMultipleDevicePRTwo:

    1. test_activity_center_admin_notification_accept_swipe, id: 702958
    Device sessions

    2. test_activity_center_mentions, id: 702957
    Device sessions

    3. test_activity_centre_contact_request_receiver_offline, id: 741809
    Device sessions

    Class TestCommunityMultipleDeviceMergedThree:

    1. test_community_messaging_on_mobile_data, id: 741926
    Device sessions

    Class TestOneToOneChatMultipleSharedDevicesNewUiTwo:

    1. test_1_1_chat_mute_chat, id: 703496
    Device sessions

    2. test_1_1_chat_is_shown_message_sent_delivered_from_offline, id: 702783
    Device sessions

    3. test_1_1_chat_delete_via_long_press_relogin, id: 702784
    Device sessions

    Class TestCommunityMultipleDeviceMerged:

    1. test_community_emoji_send_copy_paste_reply, id: 702840
    Device sessions

    2. test_community_unread_messages_badge, id: 702841
    Device sessions

    3. test_community_message_delete, id: 702839
    Device sessions

    4. test_community_message_send_check_timestamps_sender_username, id: 702838
    Device sessions

    5. test_community_one_image_send_reply, id: 702859
    Device sessions

    6. test_community_message_edit, id: 702843
    Device sessions

    7. test_community_several_images_send_reply, id: 703194
    Device sessions

    Class TestActivityCenterContactRequestMultipleDevicePR:

    1. test_activity_center_contact_request_accept_swipe_mark_all_as_read, id: 702851
    Device sessions

    2. test_activity_center_contact_request_decline, id: 702850
    Device sessions

    3. test_add_contact_field_validation, id: 702777
    Device sessions

    @ulisesmac ulisesmac force-pushed the 21902-communities-ui-artifacts-in-header branch from 768909c to e172b2d Compare March 26, 2025 20:28
    @ulisesmac ulisesmac force-pushed the 21902-communities-ui-artifacts-in-header branch from e172b2d to 7d02adb Compare March 26, 2025 20:30
    @ulisesmac ulisesmac merged commit fcf39d0 into develop Mar 26, 2025
    5 checks passed
    @ulisesmac ulisesmac deleted the 21902-communities-ui-artifacts-in-header branch March 26, 2025 20:44
    @github-project-automation github-project-automation bot moved this from MERGE to DONE in Pipeline for QA Mar 26, 2025
    Comment on lines -367 to +522
    (let [id (or id (quo.context/use-screen-params))]
    (let [community-id (or id (rf/sub [:get-screen-params :community-overview]))
    community (rf/sub [:communities/community-overview community-id])
    Copy link
    Member

    Choose a reason for hiding this comment

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

    hi @ulisesmac, Thank you very much for improving the community screen.

    While addressing conflicts, please ensure that you are not reverting any changes. Here, we are reintroducing :get-screen-params in the community screen.

    Copy link
    Contributor Author

    Choose a reason for hiding this comment

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

    I'll fix it in my next PR, thanks for noticing

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

    Successfully merging this pull request may close these issues.

    Multiple bugs in the community overview page Communities - UI artifacts in the community header
    9 participants