status-mobile icon indicating copy to clipboard operation
status-mobile copied to clipboard

fix(wallet): Collectibles not fetched for new and recovered accounts

Open smohamedjavid opened this issue 1 year ago • 7 comments

fixes #18613

Summary

This PR fixes collectibles not fetched for newly added or recovered accounts.

Review notes

When we call the wallet_getCollectiblesAsync RPC, it returns the cached data from the DB. For the newly added address, the collectible is not fetched for those addresses and is not cached in the DB. So, immediately we get an empty response with an updating state and the last fetched timestamp (which would be -1 for those addresses).

status-go fetches the collectibles in the background and signals the client with wallet-collectibles-ownership-update-*. When the mobile receives it, it checks for any added (cached in the DB) collectibles and requests for collectibles for that chain id. The wallet-collectibles-ownership-update-* sends only the contract address and token ID of the collectibles added/updated/removed. Later, we can check for updated or removed collectibles and act on them accordingly on the mobile.

Another problem is that when the accounts (apart from the default wallet account) are added from the backup data, they do not initiate the collectable fetching in the status-go which is fixed in this PR: https://github.com/status-im/status-go/pull/5739

The status-go fix is to send an event on adding/removing accounts from processing the backed-up data to initiate collectibles fetch in the background.

Platforms

  • Android
  • iOS

Steps to test

  • Open Status
  • Recover a profile with wallet accounts with collectibles
  • Verify the collectibles are fetched

status: ready

smohamedjavid avatar Aug 05 '24 17:08 smohamedjavid

Jenkins Builds

Click to see older builds (36)
:grey_question: Commit :hash: Finished (UTC) Duration Platform Result
:heavy_check_mark: 9587c72f #1 2024-08-05 17:33:33 ~4 min tests :page_facing_up:log
:heavy_check_mark: 9587c72f #1 2024-08-05 17:36:36 ~7 min android-e2e :robot:apk :calling:
:heavy_check_mark: 9587c72f #1 2024-08-05 17:37:01 ~7 min android :robot:apk :calling:
:heavy_check_mark: 9587c72f #1 2024-08-05 17:38:15 ~9 min ios :iphone:ipa :calling:
:heavy_check_mark: 168a981a #2 2024-08-05 19:16:19 ~3 min tests :page_facing_up:log
:heavy_check_mark: 168a981a #2 2024-08-05 19:19:28 ~7 min android-e2e :robot:apk :calling:
:heavy_check_mark: 168a981a #2 2024-08-05 19:19:48 ~7 min android :robot:apk :calling:
:heavy_check_mark: 168a981a #2 2024-08-05 19:21:55 ~9 min ios :iphone:ipa :calling:
:heavy_check_mark: a66e8ae0 #3 2024-08-05 19:32:22 ~4 min tests :page_facing_up:log
:heavy_check_mark: a66e8ae0 #3 2024-08-05 19:34:25 ~6 min android :robot:apk :calling:
:heavy_check_mark: a66e8ae0 #3 2024-08-05 19:34:59 ~7 min android-e2e :robot:apk :calling:
:heavy_check_mark: a66e8ae0 #3 2024-08-05 19:43:58 ~16 min ios :iphone:ipa :calling:
:heavy_check_mark: ffbdd433 #5 2024-08-06 21:13:11 ~4 min tests :page_facing_up:log
:heavy_check_mark: ffbdd433 #5 2024-08-06 21:15:47 ~6 min android-e2e :robot:apk :calling:
:heavy_check_mark: ffbdd433 #5 2024-08-06 21:16:25 ~7 min android :robot:apk :calling:
:heavy_check_mark: ffbdd433 #5 2024-08-06 21:18:11 ~9 min ios :iphone:ipa :calling:
:x: 27d6649c #7 2024-08-07 20:15:14 ~3 min tests :page_facing_up:log
:heavy_check_mark: 27d6649c #7 2024-08-07 20:17:54 ~6 min android-e2e :robot:apk :calling:
:heavy_check_mark: 27d6649c #7 2024-08-07 20:20:21 ~8 min android :robot:apk :calling:
:heavy_check_mark: 27d6649c #7 2024-08-07 20:21:23 ~10 min ios :iphone:ipa :calling:
:x: 1e902624 #8 2024-08-07 20:51:09 ~2 min tests :page_facing_up:log
:heavy_check_mark: 1e902624 #8 2024-08-07 20:55:42 ~7 min android-e2e :robot:apk :calling:
:heavy_check_mark: 1e902624 #8 2024-08-07 20:56:14 ~7 min android :robot:apk :calling:
:heavy_check_mark: 1e902624 #8 2024-08-07 20:57:27 ~8 min ios :iphone:ipa :calling:
:heavy_check_mark: 26278521 #9 2024-08-08 20:48:01 ~4 min tests :page_facing_up:log
:heavy_check_mark: 26278521 #9 2024-08-08 20:49:27 ~6 min android-e2e :robot:apk :calling:
:heavy_check_mark: 26278521 #9 2024-08-08 20:51:11 ~7 min android :robot:apk :calling:
:heavy_check_mark: 26278521 #9 2024-08-08 20:53:32 ~10 min ios :iphone:ipa :calling:
:x: 5baf1825 #10 2024-08-20 10:14:39 ~3 min tests :page_facing_up:log
:heavy_check_mark: 5baf1825 #10 2024-08-20 10:18:47 ~7 min android :robot:apk :calling:
:heavy_check_mark: 5baf1825 #10 2024-08-20 10:18:52 ~7 min android-e2e :robot:apk :calling:
:heavy_check_mark: 5baf1825 #10 2024-08-20 10:28:30 ~17 min ios :iphone:ipa :calling:
:heavy_check_mark: b13a3fd0 #11 2024-08-20 11:27:06 ~4 min tests :page_facing_up:log
:heavy_check_mark: b13a3fd0 #11 2024-08-20 11:30:11 ~7 min android-e2e :robot:apk :calling:
:heavy_check_mark: b13a3fd0 #11 2024-08-20 11:31:06 ~8 min android :robot:apk :calling:
:heavy_check_mark: b13a3fd0 #11 2024-08-20 11:32:30 ~9 min ios :iphone:ipa :calling:
:grey_question: Commit :hash: Finished (UTC) Duration Platform Result
:heavy_check_mark: 72886def #12 2024-08-28 10:46:57 ~4 min tests :page_facing_up:log
:heavy_check_mark: 72886def #12 2024-08-28 10:49:03 ~6 min android-e2e :robot:apk :calling:
:heavy_check_mark: 72886def #12 2024-08-28 10:50:47 ~8 min android :robot:apk :calling:
:heavy_check_mark: 72886def #12 2024-08-28 10:54:55 ~12 min ios :iphone:ipa :calling:
:heavy_check_mark: 94476d3b #13 2024-08-30 19:37:55 ~5 min tests :page_facing_up:log
:heavy_check_mark: 94476d3b #13 2024-08-30 19:40:11 ~7 min android-e2e :robot:apk :calling:
:heavy_check_mark: 94476d3b #13 2024-08-30 19:41:28 ~8 min android :robot:apk :calling:
:heavy_check_mark: 94476d3b #13 2024-08-30 19:44:55 ~12 min ios :iphone:ipa :calling:

status-im-auto avatar Aug 05 '24 17:08 status-im-auto

57% of end-end tests have passed

Total executed tests: 7
Failed tests: 3
Expected to fail tests: 0
Passed tests: 4
IDs of failed tests: 727230,702745,727229 

Failed tests (3)

Click to expand
  • Rerun failed tests

  • Class TestWalletMultipleDevice:

    1. test_wallet_send_asset_from_drawer, id: 727230

    # STEP: Getting ETH amount in the wallet of the sender before transaction
    Device 1: Find `Button` by `xpath`: `//android.view.ViewGroup[contains(@content-desc,'Account 1')]`
    critical/test_wallet.py:164: in test_wallet_send_asset_from_drawer
        sender_balance, receiver_balance, eth_amount_sender, eth_amount_receiver = self._get_balances_before_tx()
    critical/test_wallet.py:43: in _get_balances_before_tx
        self.wallet_1.get_account_element().click()
    ../views/base_element.py:90: in click
        element = self.find_element()
    ../views/base_element.py:79: in find_element
        raise NoSuchElementException(
     Device 1: Button by xpath: `//android.view.ViewGroup[contains(@content-desc,'Account 1')]` 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
    



    2. test_wallet_send_eth, id: 727229

    Device 1: Find AssetElement by xpath: //android.view.ViewGroup[@content-desc='container']/android.widget.TextView[@text='Ether']
    Device 1: Find AssetElement by xpath: //android.view.ViewGroup[@content-desc='container']/android.widget.TextView[@text='Ether']
    critical/test_wallet.py:131: in test_wallet_send_eth
        sender_balance, receiver_balance, eth_amount_sender, eth_amount_receiver = self._get_balances_before_tx()
    critical/test_wallet.py:44: in _get_balances_before_tx
        eth_amount_sender = self.wallet_1.get_asset(asset_name='Ether').get_amount()
    ../views/wallet_view.py:112: in get_asset
        element.scroll_to_element(down_start_y=0.89, down_end_y=0.8)
    ../views/base_element.py:205: in scroll_to_element
        raise NoSuchElementException(
     Device 1: AssetElement by xpath: `//android.view.ViewGroup[@content-desc='container']/android.widget.TextView[@text='Ether']` 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 TestOneToOneChatMultipleSharedDevicesNewUi:

    1. test_1_1_chat_non_latin_messages_stack_update_profile_photo, id: 702745

    Device 2: Tap on found: Button
    Device 2: Attempt 0 is successful clicking close-activity-center
    Test setup failed: critical/chats/test_1_1_public_chats.py:40: in prepare_devices
        self.home_2.handle_contact_request(self.username_1)
    ../views/home_view.py:409: in handle_contact_request
        chat_element.accept_contact_request()
    ../views/home_view.py:162: in accept_contact_request
        self.handle_cr("accept-contact-request")
    ../views/home_view.py:159: in handle_cr
        ).wait_for_rendering_ended_and_click()
    ../views/base_element.py:163: in wait_for_rendering_ended_and_click
        self.wait_for_visibility_of_element(20)
    ../views/base_element.py:147: in wait_for_visibility_of_element
        raise TimeoutException(
     Device 2: Button by xpath:`//*[contains(@text, 'sender')]/ancestor::*[@content-desc='activity']/*[@content-desc="accept-contact-request"]` is not found on the screen after wait_for_visibility_of_element
    



    Device sessions

    Passed tests (4)

    Click to expand

    Class TestWalletOneDevice:

    1. test_wallet_add_remove_regular_account, id: 727231
    Device sessions

    Class TestCommunityMultipleDeviceMerged:

    1. test_community_message_edit, id: 702843
    Device sessions

    Class TestCommunityOneDeviceMerged:

    1. test_community_copy_and_paste_message_in_chat_input, id: 702742
    Device sessions

    2. test_restore_multiaccount_with_waku_backup_remove_switch, id: 703133
    Device sessions

    status-im-auto avatar Aug 09 '24 11:08 status-im-auto

    hi @smohamedjavid thank you for PR. Usually the collectibles are fetched, but not all. I can share in DM the seed phrase of a user that has such a collectibles.

    ISSUE 1: Incomplete fetching of collectibles after user is restored

    Steps:

    1. Restore user
    2. Check collectibles

    Actual result:

    https://github.com/user-attachments/assets/b85af491-a578-4343-9504-0eb4265be68a

    Expected result:

    Collectibles are fetched after account is restored

    Additional info:

    Note 1: Previously, refreshing the wallet or relogging resolved such issues, but currently, only relogging helps. Note 2: This issue seems to affect collectibles on the testnet. It’s unclear if it’s related to specific collectibles or networks. Note 3: The same issue is reproducible on the desktop platform. (waited ~20 minutes, but collectibles were shown in loading state) image

    Mobile logs:

    Status-debug-logs.zip

    Desktop logs:

    desktop logs.txt

    VolodLytvynenko avatar Aug 09 '24 14:08 VolodLytvynenko

    @VolodLytvynenko - Thanks for testing the PR 🙏

    The issue should be fixed now. The fix includes a status-go update.

    smohamedjavid avatar Aug 20 '24 12:08 smohamedjavid

    Hey @smohamedjavid, unfortunately, I wasn't able to check this PR. yesterday just came back from vacations. I'll take a look at it today. Could you please rebase the current PR and the Status Go PR here?

    VolodLytvynenko avatar Aug 28 '24 10:08 VolodLytvynenko

    @VolodLytvynenko - No worries. I have rebased both PRs 👍

    smohamedjavid avatar Aug 28 '24 10:08 smohamedjavid

    94% of end-end tests have passed

    Total executed tests: 51
    Failed tests: 3
    Expected to fail tests: 0
    Passed tests: 48
    
    IDs of failed tests: 703495,702839,702838 
    

    Failed tests (3)

    Click to expand
  • Rerun failed tests

  • Class TestCommunityMultipleDeviceMerged:

    1. test_community_message_delete, id: 702839

    Device 2: Find `Text` by `xpath`: `//android.view.ViewGroup[@content-desc='chat-item']//android.widget.TextView[contains(@text,'delete for everyone')]`
    Device 2: Long press on `Text`
    critical/chats/test_public_chat_browsing.py:391: in test_community_message_delete
        self.channel_2.delete_message_in_chat(message_to_delete_everyone)
    ../views/chat_view.py:1028: in delete_message_in_chat
        self.chat_element_by_text(message).message_body.long_press_element()
    ../views/base_element.py:324: in long_press_element
        action.long_press(element).release().perform()
    ../../../../status-app-prs-rerun@tmp/venv/lib/python3.10/site-packages/appium/webdriver/common/touch_action.py:174: in perform
        self._driver.execute(Command.TOUCH_ACTION, params)
    ../../../../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))
     The element 'By.xpath: //android.view.ViewGroup[@content-desc='chat-item']//android.widget.TextView[contains(@text,'delete for everyone')]' is not linked to the same object in DOM anymore; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors#stale-element-reference-exception
    E   Stacktrace:
    E   io.appium.uiautomator2.common.exceptions.StaleElementReferenceException: The element 'By.xpath: //android.view.ViewGroup[@content-desc='chat-item']//android.widget.TextView[contains(@text,'delete for everyone')]' is not linked to the same object in DOM anymore
    E   	at io.appium.uiautomator2.model.ElementsCache.restore(ElementsCache.java:122)
    E   	at io.appium.uiautomator2.model.ElementsCache.get(ElementsCache.java:153)
    E   	at io.appium.uiautomator2.handler.Location.safeHandle(Location.java:23)
    E   	at io.appium.uiautomator2.handler.request.SafeRequestHandler.handle(SafeRequestHandler.java:59)
    E   	at io.appium.uiautomator2.server.AppiumServlet.handleRequest(AppiumServlet.java:277)
    E   	at io.appium.uiautomator2.server.AppiumServlet.handleHttpRequest(AppiumServlet.java:271)
    E   	at io.appium.uiautomator2.http.ServerHandler.channelRead(ServerHandler.java:68)
    E   	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:366)
    E   	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:352)
    E   	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:345)
    E   	at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:102)
    E   	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:366)
    E   	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:352)
    E   	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:345)
    E   	at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:435)
    E   	at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:293)
    E   	at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:267)
    E   	at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:250)
    E   	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:366)
    E   	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:352)
    E   	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:345)
    E   	at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:266)
    E   	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:366)
    E   	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:352)
    E   	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:345)
    E   	at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1294)
    E   	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:366)
    E   	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:352)
    E   	at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:911)
    E   	at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:131)
    E   	at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:611)
    E   	at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:552)
    E   	at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:466)
    E   	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:438)
    E   	at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:140)
    E   	at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:144)
    E   	at java.lang.Thread.run(Thread.java:1012)
    



    Device sessions

    2. test_community_message_send_check_timestamps_sender_username, id: 702838

    Device 2: Verifying that 'new message' is under today
    Device 2: Looking for a message by text: new message
    critical/chats/test_public_chat_browsing.py:363: in test_community_message_send_check_timestamps_sender_username
        self.channel_2.verify_message_is_under_today_text(new_message, self.errors, 60)
    ../views/chat_view.py:971: in verify_message_is_under_today_text
        message_element.wait_for_visibility_of_element(timeout)
    ../views/base_element.py:147: in wait_for_visibility_of_element
        raise TimeoutException(
     Device 2: ChatElementByText by xpath:`//*[starts-with(@text,'new message')]/ancestor::android.view.ViewGroup[@content-desc='chat-item']` is not found on the screen after wait_for_visibility_of_element
    



    Device sessions

    Class TestGroupChatMultipleDeviceMergedNewUI:

    1. test_group_chat_mute_chat, id: 703495

    Device 2: Click until ChatMessageInput by accessibility id: chat-message-input will be presented
    Device 2: Looking for a message by text: Chat is unmuted now
    critical/chats/test_group_chat.py:520: in test_group_chat_mute_chat
        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))]))
     Text 'Muted until 00:01 today' is not shown for muted chat
    



    Device sessions

    Passed tests (48)

    Click to expand

    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_activity_center_reply_read_unread_delete_filter_swipe, id: 702947
    Device sessions

    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 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_pin_messages, id: 702731
    Device sessions

    8. test_1_1_chat_message_reaction, id: 702730
    Device sessions

    Class TestWalletMultipleDevice:

    1. test_wallet_send_asset_from_drawer, id: 727230
    2. test_wallet_send_eth, id: 727229

    Class TestGroupChatMultipleDeviceMergedNewUI:

    1. test_group_chat_pin_messages, id: 702732
    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

    5. test_group_chat_offline_pn, id: 702808
    Device sessions

    Class TestWalletOneDevice:

    1. test_wallet_add_remove_regular_account, id: 727231
    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

    5. test_community_join_when_node_owner_offline, id: 703629
    Device sessions

    Class TestCommunityMultipleDeviceMerged:

    1. test_community_several_images_send_reply, id: 703194
    Device sessions

    2. test_community_one_image_send_reply, id: 702859
    Device sessions

    3. test_community_emoji_send_copy_paste_reply, id: 702840
    Device sessions

    4. test_community_mark_all_messages_as_read, id: 703086
    Device sessions

    5. test_community_contact_block_unblock_offline, id: 702894
    Device sessions

    6. test_community_edit_delete_message_when_offline, id: 704615
    Device sessions

    7. test_community_links_with_previews_github_youtube_twitter_gif_send_enable, id: 702844
    Device sessions

    8. test_community_message_edit, id: 702843
    Device sessions

    9. test_community_unread_messages_badge, id: 702841
    Device sessions

    Class TestActivityMultipleDevicePRTwo:

    1. test_activity_center_mentions, id: 702957
    Device sessions

    2. test_activity_center_admin_notification_accept_swipe, id: 702958
    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_discovery, id: 703503
    Device sessions

    4. test_community_undo_delete_message, id: 702869
    Device sessions

    5. test_community_navigate_to_channel_when_relaunch, id: 702846
    Device sessions

    6. test_community_mute_community_and_channel, id: 703382
    Device sessions

    Class TestActivityCenterContactRequestMultipleDevicePR:

    1. test_add_contact_field_validation, id: 702777
    Device sessions

    2. test_activity_center_contact_request_accept_swipe_mark_all_as_read, id: 702851
    Device sessions

    3. test_activity_center_contact_request_decline, id: 702850
    Device sessions

    status-im-auto avatar Aug 28 '24 16:08 status-im-auto

    @smohamedjavid Thank you for PR. No issues from my side. PR is ready to be merged

    VolodLytvynenko avatar Aug 28 '24 18:08 VolodLytvynenko