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

[#18608] Collectibles fetching performance #18921

Merged
merged 14 commits into from
Mar 7, 2024

Conversation

ulisesmac
Copy link
Contributor

@ulisesmac ulisesmac commented Feb 20, 2024

fixes #18608
fixes #18614

Summary

This PR improves the performance of the collectible fetching and storing by changing the strategy to request them, it gives similar results in terms of UX.

Recorded in a development build, release should be even faster.

Before (UI freezed):

Screencast.from.2024-02-20.15-55-34.webm

Now:

Screencast.from.2024-02-20.14-40-16.webm

Details

(if you are interested)

This PR:

  1. Adds a memoized version of key transformation functions.

    I've tried several approaches, also implementing a custom key-value cache based on a JS object (similar to reagent's one). but I realized just memoizing is the best.

    I did some local measurements (not too strict), I was getting 38 - 45ms and now I'm getting 7 - 21 ms, so this is definitely an improvement.

  2. Remove the buggy SVG collectibles.
    They've been too problematic, they fill the console with warnings, and don't properly understand the svgs received. I've seen React Native Skia, we can give it a try. Now I'm just showing a placeholder for these collectibles, as well as for the missing ones. We must implement a proper collectible component.
    image
    image

  3. Remove the displayable-collectibles? function.
    According to designs, all collectibles should be displayed, but some of them aren't unsupported.
    Screenshot from 2024-02-20 13-37-32

  4. (The actual issue) Instead of requesting all the owned collectibles by batches:

    1. Reduce the batch size (from 1000 to 25)

    2. Only request one batch when the user logs in, the remaining will be requested as the user scrolls the listings.

    3. Divides the batch size (25) by the number of accounts and perform individual request to get the collectibles for each account evenly. (e.g. 25 collectibles and 5 accounts mean 5 collectibles per account). This is only applied in home screen, when we visit an account, all those 25 collectibles are for the visited account.

    4. Stores the collectibles fetched per account in a separate re-frame key (:ui :collectibles :fetched), once all requests have finished, writes the collectibles into their accounts. The reason is the view is subscribed, if we update each time we receive. we'll get many re-renders, besides performance, it doesn't look good in terms of UX.

    5. Change the subscription to list all the collectibles in the home page:

      This is a listing:

      image

      So we should add new received collectibles at the end of the listing to have a nice UX, also flat list behaves weird (jumps) if new items are added in the middle. Currently we are adding in the middle, this PR changes the sub to add at the end.

      E.g. Currently, if we have account-1 and account-2 collectibles, the list would look as:

      • acc-1--coll-1
      • acc-1--coll-2
      • acc-1--coll-3
      • acc-2--coll-1
      • acc-2--coll-2
      • acc-2--coll-3

      If we receive more collectibles, for each account then they will be inserted in the middle of the listing:

      • acc-1--coll-1
      • acc-1--coll-2
      • acc-1--coll-3
      • acc-1--coll-4 <- Here!
      • acc-2--coll-1
      • acc-2--coll-2
      • acc-2--coll-3
      • acc-2--coll-4 <- Here!

      So this PR changes the sub to return:

      • acc-1--coll-1
      • acc-2--coll-1
      • acc-1--coll-2
      • acc-2--coll-2
      • acc-1--coll-3
      • acc-2--coll-3

      New collectibles will be added to the end, and don't worry, it properly handles accounts containing a different amount of collectibles.

Testing notes

Make sure to add the mentioned addreses (in this PR's issue) to test the performance. Sometimes even if you added them, status-go doesn't return the collectibles, maybe you'll need to wait (idk for how long) after adding them.

Platforms

  • Android
  • iOS
Non-functional
  • CPU performance / speed of the app

Steps to test

  • Open Status
  • Go to Wallet
  • Add the addresses listed in the related issue as watch only accounts
  • Log out, log in (you may need to test this many times, Status go doesn't retrieve collectibles after adding the accounts, I waited for 1 day in an emulator).

status: ready

@ulisesmac ulisesmac self-assigned this Feb 20, 2024
Comment on lines +24 to +26
(def ->kebab-case-keyword (memoize csk/->kebab-case-keyword))
(def ->PascalCaseKeyword (memoize csk/->PascalCaseKeyword))

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Memoized version to convert keys 👀

Comment on lines -48 to +62
:wallet/all-collectibles
:wallet/all-collectibles-list
:<- [:wallet]
(fn [wallet]
(->> wallet
:accounts
(mapcat (comp :collectibles val))
(add-collectibles-preview-url))))
(fn [{:keys [accounts]}]
(let [max-collectibles (->> accounts
(map (comp count :collectibles val))
(apply max))
all-collectibles (map (fn [[_address {:keys [collectibles]}]]
(let [amount-to-add (- max-collectibles (count collectibles))
empty-collectibles (repeat amount-to-add nil)]
(reduce conj collectibles empty-collectibles)))
accounts)]
(->> all-collectibles
(apply interleave)
(remove nil?)
(add-collectibles-preview-url)))))
Copy link
Contributor Author

Choose a reason for hiding this comment

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

The sub updated to return the listing in a different order

Copy link
Member

Choose a reason for hiding this comment

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

I believe the idea is to display one collectible from each account in order (with a workaround to place nil for accounts with fewer collectibles and filtering them)

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

Yeah, that's correct, I tried to explain this with an example in the description 😅

@@ -25,24 +25,8 @@
(is (match? result-db expected-db))))))

(deftest store-collectibles
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Test updated

Comment on lines +32 to +40
:window-size 11
:num-columns 2
:render-fn (fn [{:keys [preview-url] :as collectible}]
[quo/collectible
{:images [preview-url]
:on-press #(when on-collectible-press
(on-collectible-press collectible))}])
:on-end-reached on-end-reached
:on-end-reached-threshold 4}])))
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Changed the window size (from 21 to 11) to render less collectibles, hopefully this will increase the performance since less images have to be rendered.

Also added an on-end-reached fn to trigger the request for more collectibles,

@status-im-auto
Copy link
Member

status-im-auto commented Feb 20, 2024

Jenkins Builds

Click to see older builds (16)
Commit #️⃣ Finished (UTC) Duration Platform Result
✔️ 6dfb87d #1 2024-02-20 22:10:13 ~4 min tests 📄log
✔️ 6dfb87d #1 2024-02-20 22:13:26 ~8 min android-e2e 🤖apk 📲
✔️ 6dfb87d #1 2024-02-20 22:13:27 ~8 min android 🤖apk 📲
✔️ 6dfb87d #1 2024-02-20 22:59:25 ~54 min ios 📱ipa 📲
4f29c08 #2 2024-03-04 16:34:31 ~1 min tests 📄log
✔️ 4f29c08 #2 2024-03-04 16:39:49 ~6 min android-e2e 🤖apk 📲
✔️ 4f29c08 #2 2024-03-04 16:40:18 ~7 min android 🤖apk 📲
✔️ 4f29c08 #2 2024-03-04 16:41:16 ~7 min ios 📱ipa 📲
✔️ 636bc5e #3 2024-03-04 18:25:39 ~6 min tests 📄log
✔️ 636bc5e #3 2024-03-04 18:26:12 ~6 min android 🤖apk 📲
✔️ 636bc5e #3 2024-03-04 18:26:56 ~7 min ios 📱ipa 📲
✔️ 636bc5e #3 2024-03-04 18:27:09 ~7 min android-e2e 🤖apk 📲
f8d6035 #4 2024-03-05 19:51:32 ~1 min tests 📄log
✔️ f8d6035 #4 2024-03-05 19:57:28 ~7 min android-e2e 🤖apk 📲
✔️ f8d6035 #4 2024-03-05 19:57:35 ~7 min android 🤖apk 📲
✔️ f8d6035 #4 2024-03-05 19:57:47 ~7 min ios 📱ipa 📲
Commit #️⃣ Finished (UTC) Duration Platform Result
✔️ 208c443 #6 2024-03-05 20:47:49 ~6 min android-e2e 🤖apk 📲
✔️ 208c443 #6 2024-03-05 20:48:58 ~7 min android 🤖apk 📲
✔️ 208c443 #6 2024-03-05 20:49:25 ~7 min ios 📱ipa 📲
✔️ 2941746 #7 2024-03-07 17:39:16 ~5 min tests 📄log
✔️ 2941746 #7 2024-03-07 17:41:32 ~7 min ios 📱ipa 📲
✔️ 2941746 #7 2024-03-07 17:41:53 ~8 min android-e2e 🤖apk 📲
✔️ 2941746 #7 2024-03-07 17:42:01 ~8 min android 🤖apk 📲

Copy link
Member

@smohamedjavid smohamedjavid left a comment

Choose a reason for hiding this comment

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

Took a while to understand the logic. 😄

Nice work as always! @ulisesmac 🚀

Comment on lines -48 to +62
:wallet/all-collectibles
:wallet/all-collectibles-list
:<- [:wallet]
(fn [wallet]
(->> wallet
:accounts
(mapcat (comp :collectibles val))
(add-collectibles-preview-url))))
(fn [{:keys [accounts]}]
(let [max-collectibles (->> accounts
(map (comp count :collectibles val))
(apply max))
all-collectibles (map (fn [[_address {:keys [collectibles]}]]
(let [amount-to-add (- max-collectibles (count collectibles))
empty-collectibles (repeat amount-to-add nil)]
(reduce conj collectibles empty-collectibles)))
accounts)]
(->> all-collectibles
(apply interleave)
(remove nil?)
(add-collectibles-preview-url)))))
Copy link
Member

Choose a reason for hiding this comment

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

I believe the idea is to display one collectible from each account in order (with a workaround to place nil for accounts with fewer collectibles and filtering them)

:justify-content :center
:align-items :center
:background-color :lightblue)}
[text/text "SVG Content"]]
Copy link
Member

Choose a reason for hiding this comment

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

Can we create an issue (if there is not one created yet) for researching SVG support and reimplement it and link it in a comment?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Hi @briansztamfater

We already have an issue for it, it's about support all types of collectibles, I've found other library (react native skia) and we should experiment:
#18657

Copy link
Member

@briansztamfater briansztamfater left a comment

Choose a reason for hiding this comment

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

Great work @ulisesmac! No issues from my side, hope QA can confirm the boost in collectible fetching performance 🚀

@status-im-auto
Copy link
Member

94% of end-end tests have passed

Total executed tests: 48
Failed tests: 2
Expected to fail tests: 1
Passed tests: 45
IDs of failed tests: 702777,702731 
IDs of expected to fail tests: 703503 

Failed tests (2)

Click to expand
  • Rerun failed tests

  • Class TestActivityCenterContactRequestMultipleDevicePR:

    1. test_add_contact_field_validation, id: 702777

    Device 2: Tap on found: LogInButton
    ## Signed in successfully!

    activity_center/test_activity_center.py:168: in test_add_contact_field_validation
        self.loop.run_until_complete(run_in_parallel(((_device_1_creates_user, {}),
    /usr/lib/python3.10/asyncio/base_events.py:649: in run_until_complete
        return future.result()
    __init__.py:44: 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)
    activity_center/test_activity_center.py:158: in _device_1_creates_user
        self.profile_1.driver.reset()
    /home/jenkins/.local/lib/python3.10/site-packages/appium/webdriver/extensions/applications.py:299: in reset
        self.execute(Command.RESET)
    /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/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: Cannot start the 'im.status.ethereum.pr' application. Consider checking the driver's troubleshooting documentation. Original error: Error executing adbExec. Original error: 'Command '/home/chef/android-sdk-linux/platform-tools/adb -P 5037 -s emulator-5554 shell am start -W -n im.status.ethereum.pr/im.status.ethereum.MainActivity -S' timed out after 20000ms'. Try to increase the 20000ms adb execution timeout represented by 'adbExecTimeout' capability
    E   Stacktrace:
    E   UnknownError: An unknown server-side error occurred while processing the command. Original error: Cannot start the 'im.status.ethereum.pr' application. Consider checking the driver's troubleshooting documentation. Original error: Error executing adbExec. Original error: 'Command '/home/chef/android-sdk-linux/platform-tools/adb -P 5037 -s emulator-5554 shell am start -W -n im.status.ethereum.pr/im.status.ethereum.MainActivity -S' timed out after 20000ms'. Try to increase the 20000ms adb execution timeout represented by 'adbExecTimeout' capability
    E       at getResponseForW3CError (/mnt/sauce/appium/appium-v2.0.0/packages/base-driver/lib/protocol/errors.js:1073:9)
    E       at asyncHandler (/mnt/sauce/appium/appium-v2.0.0/packages/base-driver/lib/protocol/protocol.js:491:57)
    



    Device sessions

    Class TestOneToOneChatMultipleSharedDevicesNewUi:

    1. test_1_1_chat_pin_messages, id: 702731

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

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



    Device sessions

    Expected to fail tests (1)

    Click to expand

    Class TestCommunityOneDeviceMerged:

    1. test_community_discovery, id: 703503

    Test is not run, e2e blocker  
    

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

    Passed tests (45)

    Click to expand

    Class TestActivityMultipleDevicePRTwo:

    1. test_activity_center_mentions, id: 702957
    Device sessions

    2. test_activity_center_admin_notification_accept_swipe, id: 702958
    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_message_reaction, id: 702730
    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_message_delete, id: 702839
    Device sessions

    8. test_community_message_send_check_timestamps_sender_username, id: 702838
    Device sessions

    9. test_community_links_with_previews_github_youtube_twitter_gif_send_enable, id: 702844
    Device sessions

    10. test_community_message_edit, id: 702843
    Device sessions

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

    1. test_restore_multiaccount_with_waku_backup_remove_switch, id: 703133
    Device sessions

    2. test_community_copy_and_paste_message_in_chat_input, id: 702742
    Device sessions

    3. test_community_undo_delete_message, id: 702869
    Device sessions

    4. test_community_navigate_to_channel_when_relaunch, id: 702846
    Device sessions

    5. test_community_mute_community_and_channel, id: 703382
    Device sessions

    Class 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 TestGroupChatMultipleDeviceMergedNewUI:

    1. test_group_chat_pin_messages, id: 702732
    Device sessions

    2. test_group_chat_mute_chat, id: 703495
    Device sessions

    3. test_group_chat_send_image_save_and_share, id: 703297
    Device sessions

    4. test_group_chat_reactions, id: 703202
    Device sessions

    5. test_group_chat_join_send_text_messages_push, id: 702807
    Device sessions

    6. test_group_chat_offline_pn, id: 702808
    Device sessions

    Class TestDeepLinksOneDevice:

    1. test_links_open_universal_links_from_chat, id: 704613
    Device sessions

    2. test_links_deep_links, id: 702775
    Device sessions

    Class TestActivityCenterContactRequestMultipleDevicePR:

    1. test_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

    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

    @ulisesmac ulisesmac force-pushed the 18608-collectibles-performance branch from 6dfb87d to 4f29c08 Compare March 4, 2024 16:32
    @VolodLytvynenko VolodLytvynenko self-assigned this Mar 5, 2024
    @VolodLytvynenko
    Copy link
    Contributor

    Hi @ulisesmac, could you please check if this issue is related to the current PR? It's interesting because it's reproducible only for this specific user and with the current PR. The user has a lot of data (communities, contacts, wallets), but it's not reproducible for other users who also have a lot of data. Initially, I thought it might be related to an old issue, but in the old issue #18738, it was reproducible randomly and very rarely, unlike in the current PR it happens every time I try to log in.

    ISSUE 1: Frozen login screen occurs after specific user is logged in

    Steps:

    1. Recover user with data
    2. Log out.
    3. Check the login screen.

    Actual result:

    The login screen becomes frozen, and the buttons are unresponsive.

    login.mp4

    Expected result:

    The buttons on the login screen should remain responsive after logout, allowing the user to interact with them.

    Logs:

    logs.txt

    @VolodLytvynenko
    Copy link
    Contributor

    VolodLytvynenko commented Mar 5, 2024

    Today, I'm not super helpful in debugging :(
    I wanted to share another issue where no exact answer if this is PR related. I was able to reproduce it only once within the PR and can't reproduce it in the latest nightly. Could you please check if this is PR related? Hope logs might help

    ISSUE 2: [Android] "No protocol method IMapEntry.-key..." Error is shown after collectibles are quickly scrolled

    Steps:

    1. Log in as a user with a huge amount of collectibles
    2. Scroll collectibles

    Actual result:

    "No protocol method IMapEntry.-key..." Error is shown after collectibles are quickly scrolled

    collectibles.mp4

    Expected result:

    No errors when collectibles are scrolled

    Device:

    Pixel 7a, Android 13

    Logs:

    Status-debug-logs (1).zip

    @ulisesmac
    Copy link
    Contributor Author

    Hey @VolodLytvynenko

    Thanks for testing!

    ISSUE 1: Frozen login screen occurs after specific user is logged in

    I've tested the app on the latest commit on develop, and this issue with this account is reproducible, it means this PR is not involved. The "freeze" happens even before the collectibles are requested.

    Actually, this error seems to be related to some callbacks from status go that are taking some time. Probably due to a lot of info?

    ISSUE 2: [Android] "No protocol method IMapEntry.-key..." Error is shown after collectibles are quickly scrolled

    Thanks for noticing it.

    It happened when a collectible request failed, it failed when a request with an ID was in progress and we dispatched another request with the same ID.

    Now this implementation generates different IDs for all requests and in case of failure, handles the errors properly.

    @status-im-auto
    Copy link
    Member

    90% of end-end tests have passed

    Total executed tests: 48
    Failed tests: 4
    Expected to fail tests: 1
    Passed tests: 43
    
    IDs of failed tests: 702732,703202,702745,702731 
    
    IDs of expected to fail tests: 703503 
    

    Failed tests (4)

    Click to expand
  • Rerun failed tests

  • Class TestOneToOneChatMultipleSharedDevicesNewUi:

    1. test_1_1_chat_non_latin_messages_stack_update_profile_photo, id: 702745

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

    critical/chats/test_1_1_public_chats.py:312: in test_1_1_chat_non_latin_messages_stack_update_profile_photo
        self.errors.verify_no_errors()
    base_test_case.py:191: in verify_no_errors
        pytest.fail('\n '.join([self.errors.pop(0) for _ in range(len(self.errors))]))
     Message with text 'ё, доброго вечерочка' was not received
    



    Device sessions

    2. test_1_1_chat_pin_messages, id: 702731

    Device 1: Find Button by xpath: //*[@content-desc='pins-count']//android.widget.TextView
    Device 2: Find Button by xpath: //*[@content-desc='pins-count']//android.widget.TextView

    critical/chats/test_1_1_public_chats.py:267: in test_1_1_chat_pin_messages
        self.errors.verify_no_errors()
    base_test_case.py:191: in verify_no_errors
        pytest.fail('\n '.join([self.errors.pop(0) for _ in range(len(self.errors))]))
     Pinned messages count is 4 but should be 3 for user 2
    



    Device sessions

    Class TestGroupChatMultipleDeviceMergedNewUI:

    1. test_group_chat_pin_messages, id: 702732

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

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



    Device sessions

    2. test_group_chat_reactions, id: 703202

    Device 1: Find Button by accessibility id: authors-for-reaction-5
    Device 1: Tap on found: Button

    critical/chats/test_group_chat.py:211: in test_group_chat_reactions
        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))]))
     Incorrect reactions count for user admin after changing the reactions
    



    Device sessions

    Expected to fail tests (1)

    Click to expand

    Class TestCommunityOneDeviceMerged:

    1. test_community_discovery, id: 703503

    Test is not run, e2e blocker  
    

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

    Passed tests (43)

    Click to expand

    Class TestDeepLinksOneDevice:

    1. test_links_open_universal_links_from_chat, id: 704613
    Device sessions

    2. test_links_deep_links, id: 702775
    Device sessions

    Class TestOneToOneChatMultipleSharedDevicesNewUi:

    1. test_1_1_chat_send_image_save_and_share, id: 703391
    Device sessions

    2. test_1_1_chat_emoji_send_reply_and_open_link, id: 702782
    Device sessions

    3. test_1_1_chat_message_reaction, id: 702730
    Device sessions

    4. test_1_1_chat_text_message_delete_push_disappear, id: 702733
    Device sessions

    5. test_1_1_chat_edit_message, id: 702855
    Device sessions

    6. test_1_1_chat_push_emoji, id: 702813
    Device sessions

    Class TestCommunityMultipleDeviceMergedTwo:

    1. test_community_hashtag_links_to_community_channels, id: 702948
    Device sessions

    2. test_community_markdown_support, id: 702809
    Device sessions

    3. test_community_join_when_node_owner_offline, id: 703629
    Device sessions

    4. test_community_mentions_push_notification, id: 702786
    Device sessions

    5. test_community_leave, id: 702845
    Device sessions

    Class TestCommunityMultipleDeviceMerged:

    1. test_community_contact_block_unblock_offline, id: 702894
    Device sessions

    2. test_community_unread_messages_badge, id: 702841
    Device sessions

    3. test_community_message_send_check_timestamps_sender_username, id: 702838
    Device sessions

    4. test_community_one_image_send_reply, id: 702859
    Device sessions

    5. test_community_several_images_send_reply, id: 703194
    Device sessions

    6. test_community_mark_all_messages_as_read, id: 703086
    Device sessions

    7. test_community_emoji_send_copy_paste_reply, id: 702840
    Device sessions

    8. test_community_links_with_previews_github_youtube_twitter_gif_send_enable, id: 702844
    Device sessions

    9. test_community_message_delete, id: 702839
    Device sessions

    10. test_community_edit_delete_message_when_offline, id: 704615
    Device sessions

    11. test_community_message_edit, id: 702843
    Device sessions

    Class TestActivityMultipleDevicePR:

    1. test_activity_center_reply_read_unread_delete_filter_swipe, id: 702947
    Device sessions

    2. test_navigation_jump_to, id: 702936
    Device sessions

    Class TestActivityCenterContactRequestMultipleDevicePR:

    1. test_add_contact_field_validation, id: 702777
    Device sessions

    2. test_activity_center_contact_request_accept_swipe_mark_all_as_read, id: 702851
    Device sessions

    3. test_activity_center_contact_request_decline, id: 702850
    Device sessions

    Class TestCommunityOneDeviceMerged:

    1. test_community_navigate_to_channel_when_relaunch, id: 702846
    Device sessions

    2. test_restore_multiaccount_with_waku_backup_remove_switch, id: 703133
    Device sessions

    3. test_community_mute_community_and_channel, id: 703382
    Device sessions

    4. test_community_undo_delete_message, id: 702869
    Device sessions

    5. test_community_copy_and_paste_message_in_chat_input, id: 702742
    Device sessions

    Class TestGroupChatMultipleDeviceMergedNewUI:

    1. test_group_chat_mute_chat, id: 703495
    Device sessions

    2. test_group_chat_join_send_text_messages_push, id: 702807
    Device sessions

    3. test_group_chat_send_image_save_and_share, id: 703297
    Device sessions

    4. test_group_chat_offline_pn, id: 702808
    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 TestOneToOneChatMultipleSharedDevicesNewUiTwo:

    1. test_1_1_chat_mute_chat, id: 703496
    Device sessions

    2. test_1_1_chat_delete_via_long_press_relogin, id: 702784
    Device sessions

    3. test_1_1_chat_is_shown_message_sent_delivered_from_offline, id: 702783
    Device sessions

    @VolodLytvynenko
    Copy link
    Contributor

    Hi @ulisesmac thank you for PR. No issues from my side. PR is ready to be merged

    @ulisesmac ulisesmac force-pushed the 18608-collectibles-performance branch from 208c443 to 2941746 Compare March 7, 2024 17:33
    @ulisesmac ulisesmac merged commit ad546f9 into develop Mar 7, 2024
    6 checks passed
    @ulisesmac ulisesmac deleted the 18608-collectibles-performance branch March 7, 2024 18:05
    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.

    Collectibles performance Collectibles loading performance
    6 participants