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

fix(wallets): no routes render on input amount #20112

Merged
merged 3 commits into from
May 23, 2024

Conversation

BalogunofAfrica
Copy link
Contributor

@BalogunofAfrica BalogunofAfrica commented May 20, 2024

fixes #19910
fixes #20111
fixes #20136

Summary

Render "No routes Found" only based on the flows in 1 and 2

Platforms

  • Android
  • iOS
Functional
  • wallet / transactions

Steps to test

  • Open Status
  • Go to wallet tab
  • Click on account
  • Click on send
  • Paste wallet address
  • Select token
  • Input amount and then disabled networks with balance
    • "No routes Found" should show immediately
  • Input an invalid amount initially, "No routes Found" should not be show, just the error state

Simulator Screen Recording - iPhone 11 Pro - 2024-05-20 at 14 11 47

@status-im-auto
Copy link
Member

status-im-auto commented May 20, 2024

Jenkins Builds

Click to see older builds (28)
Commit #️⃣ Finished (UTC) Duration Platform Result
✔️ d91db35 #1 2024-05-20 13:27:22 ~5 min tests 📄log
✔️ 0074c5e #2 2024-05-20 13:33:40 ~6 min android 🤖apk 📲
✔️ 0074c5e #2 2024-05-20 13:36:06 ~8 min android-e2e 🤖apk 📲
✔️ 0074c5e #2 2024-05-20 13:36:15 ~8 min ios 📱ipa 📲
✔️ f550d44 #3 2024-05-20 18:58:17 ~4 min tests 📄log
✔️ f550d44 #3 2024-05-20 19:02:10 ~8 min android-e2e 🤖apk 📲
✔️ f550d44 #3 2024-05-20 19:02:17 ~8 min android 🤖apk 📲
✔️ f550d44 #3 2024-05-20 19:04:31 ~10 min ios 📱ipa 📲
✔️ 2005f35 #4 2024-05-20 19:17:26 ~4 min tests 📄log
✔️ 2005f35 #4 2024-05-20 19:21:24 ~8 min android-e2e 🤖apk 📲
✔️ 2005f35 #4 2024-05-20 19:21:28 ~8 min android 🤖apk 📲
✔️ 2005f35 #4 2024-05-20 19:21:29 ~8 min ios 📱ipa 📲
✔️ 1e46f27 #5 2024-05-21 07:15:55 ~4 min tests 📄log
✔️ 1e46f27 #5 2024-05-21 07:19:47 ~8 min android-e2e 🤖apk 📲
✔️ 1e46f27 #5 2024-05-21 07:19:49 ~8 min ios 📱ipa 📲
✔️ 1e46f27 #5 2024-05-21 07:19:53 ~8 min android 🤖apk 📲
✔️ 62b04c0 #6 2024-05-21 10:45:30 ~4 min tests 📄log
✔️ 62b04c0 #6 2024-05-21 10:49:28 ~8 min android-e2e 🤖apk 📲
✔️ 62b04c0 #6 2024-05-21 10:49:32 ~8 min android 🤖apk 📲
✔️ 62b04c0 #6 2024-05-21 10:49:38 ~8 min ios 📱ipa 📲
✔️ 4769f3b #7 2024-05-21 19:12:17 ~4 min tests 📄log
✔️ 4769f3b #7 2024-05-21 19:16:13 ~8 min android 🤖apk 📲
✔️ 4769f3b #7 2024-05-21 19:16:14 ~8 min android-e2e 🤖apk 📲
✔️ 4769f3b #7 2024-05-21 19:16:47 ~8 min ios 📱ipa 📲
✔️ 07723b3 #8 2024-05-22 14:03:39 ~4 min tests 📄log
✔️ 07723b3 #8 2024-05-22 14:07:29 ~8 min android-e2e 🤖apk 📲
✔️ 07723b3 #8 2024-05-22 14:07:42 ~8 min android 🤖apk 📲
✔️ 07723b3 #8 2024-05-22 14:07:43 ~8 min ios 📱ipa 📲
Commit #️⃣ Finished (UTC) Duration Platform Result
✔️ 27090df #9 2024-05-23 10:04:37 ~4 min tests 📄log
✔️ 27090df #9 2024-05-23 10:08:37 ~8 min android-e2e 🤖apk 📲
✔️ 27090df #9 2024-05-23 10:08:40 ~8 min android 🤖apk 📲
✔️ 27090df #9 2024-05-23 10:09:33 ~9 min ios 📱ipa 📲
✔️ 1a5ec02 #10 2024-05-23 11:18:41 ~4 min tests 📄log
✔️ 1a5ec02 #10 2024-05-23 11:21:06 ~6 min android 🤖apk 📲
✔️ 1a5ec02 #10 2024-05-23 11:21:43 ~7 min android-e2e 🤖apk 📲
✔️ 1a5ec02 #10 2024-05-23 11:23:27 ~8 min ios 📱ipa 📲

@OmarBasem
Copy link
Member

@BalogunofAfrica in the video, I see it is showing "no routes found" after disabling a network and while still loading, is that correct behaviour?

@OmarBasem
Copy link
Member

OmarBasem commented May 20, 2024

Not related to this PR: it seems on smaller devices when trying to display routes for the 3 networks it will be cropped from the bottom cc @J-Son89

Screenshot 2024-05-20 at 17 29 19

@briansztamfater
Copy link
Member

Thanks @BalogunofAfrica for addressing this! Also, when the amount is invalid after disabling a network we shouldn't fetch routes again. Instead, we should reset the values of the sender and receiver cards to zero (similar to what we do there

(send-utils/reset-network-amounts-to-zero
).

@BalogunofAfrica
Copy link
Contributor Author

@BalogunofAfrica in the video, I see it is showing "no routes found" after disabling a network and while still loading, is that correct behaviour?

Yes according to the original issue here: #19910

@briansztamfater
Copy link
Member

briansztamfater commented May 20, 2024

@BalogunofAfrica in the video, I see it is showing "no routes found" after disabling a network and while still loading, is that correct behaviour?

Yes according to the original issue here: #19910

We should not load new routes in that case, the input is invalid at that point so we can immediately show the error to the user and avoid a loading state. Please check with design team if any doubts.

@@ -334,7 +336,7 @@
:fees fee-formatted
:amount amount-text
:receiver (address/get-shortened-key to-address)}])
(when (or no-routes-found? limit-insufficient?)
(when no-routes-found?
Copy link
Member

Choose a reason for hiding this comment

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

this component and it's bindings is becoming larger and larger. Do we think we can componentize some smaller parts of this?

e.g we make a [no-routes ...] component in this view just to make this block slightly smaller? 🤔 🙏

@briansztamfater
Copy link
Member

briansztamfater commented May 20, 2024

Can you cherry-pick a819c50?

I made some additional changes to comply with design expectations, and probably it is better to include the changes in this PR to avoid conflicts and make sure we can close #19910 after merging this one.

maxvaluedisabledchain.mp4

@BalogunofAfrica BalogunofAfrica force-pushed the fix/no-routes-render branch 2 times, most recently from f550d44 to 2005f35 Compare May 20, 2024 19:12
#(when input-error (debounce/clear-all))
(fn []
(when input-error (debounce/clear-all))
(when routes (rf/dispatch [:wallet/reset-network-amounts-to-zero])))
Copy link
Member

Choose a reason for hiding this comment

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

I made a mistake, we should check for (and limit-insufficient? routes)

(assoc-in [:wallet :ui :send :loading-suggested-routes?] true))}))
{:db (assoc-in db [:wallet :ui :send :disabled-from-chain-ids] chain-ids)}))

(rf/reg-event-fx :wallet/reset-network-amounts-to-zero
Copy link
Member

Choose a reason for hiding this comment

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

is this the value set per network? 🤔

Probably @vkjr will need a similar function to set specific network values in: #16974

Maybe we can align the two methods/approaches if needs be?

Copy link
Member

Choose a reason for hiding this comment

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

I think for #16974 we would just need to set a locked-network-values map and maybe modify network-amounts utils function to handle a locked type to render in the card. This utils is very simple, just map and modify current values to zero.

@BalogunofAfrica BalogunofAfrica force-pushed the fix/no-routes-render branch 2 times, most recently from 1e46f27 to 62b04c0 Compare May 21, 2024 10:40
@BalogunofAfrica BalogunofAfrica moved this from REVIEW to E2E Tests in Pipeline for QA May 21, 2024
@status-im-auto
Copy link
Member

85% of end-end tests have passed

Total executed tests: 52
Failed tests: 6
Expected to fail tests: 2
Passed tests: 44
IDs of failed tests: 727230,702894,704615,727229,702807,727232 
IDs of expected to fail tests: 703495,703503 

Failed tests (6)

Click to expand
  • Rerun failed tests

  • Class TestWalletOneDevice:

    1. test_wallet_add_remove_watch_only_account, id: 727232

    Device 1: `Text` is `eth:oeth:arb1:0x8d2413447ff297d30bdc475f6d5cb00254685aae`
    Device 1: Click system back button

    critical/test_wallet.py:212: in test_wallet_add_remove_watch_only_account
        self.home_view.driver.fail(
    base_test_case.py:178: in fail
        pytest.fail('Device %s: %s' % (self.number, text))
     Device 1: Incorrect address 'eth:oeth:arb1:0x8d2413447ff297d30bdc475f6d5cb00254685aae' is shown when swiping between accounts, expected one is '0:x:8:d:2:4:1:3:4:4:7:f:f:2:9:7:d:3:0:b:d:c:4:7:5:f:6:d:5:c:b:0:0:2:5:4:6:8:5:a:a:e'
    



    Device sessions

    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 WalletTab by accessibility id: wallet-stack-tab

    critical/test_wallet.py:119: 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:41: in _get_balances_before_tx
        self.wallet_1.wallet_tab.click()
    ../views/base_element.py:90: in click
        element = self.find_element()
    ../views/base_element.py:79: in find_element
        raise NoSuchElementException(
     Device 1: WalletTab by accessibility id: `wallet-stack-tab` is not found on the screen; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors#no-such-element-exception
    



    2. test_wallet_send_eth, id: 727229

    Device 1: Tap on found: LogInButton
    Device 1: Find Button by accessibility id: done

    critical/test_wallet.py:111: in test_wallet_send_eth
        self.wallet_1.send_asset(address=self.receiver['address'], asset_name='Ether', amount=amount_to_send)
    ../views/wallet_view.py:100: in send_asset
        self.confirm_transaction()
    ../views/wallet_view.py:88: in confirm_transaction
        self.done_button.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 accessibility id: `done` 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 TestGroupChatMultipleDeviceMergedNewUI:

    1. test_group_chat_join_send_text_messages_push, id: 702807

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

    critical/chats/test_group_chat.py:95: in test_group_chat_join_send_text_messages_push
        self.chats[1].chat_element_by_text(message_to_admin).wait_for_status_to_be('Delivered', timeout=120)
    ../views/chat_view.py:225: in wait_for_status_to_be
        raise TimeoutException("Message status was not changed to %s, it's %s" % (expected_status, current_status))
     Message status was not changed to Delivered, it's Sent
    



    Device sessions

    Class TestCommunityMultipleDeviceMerged:

    1. test_community_contact_block_unblock_offline, id: 702894

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

    critical/chats/test_public_chat_browsing.py:705: in test_community_contact_block_unblock_offline
        self.errors.verify_no_errors()
    base_test_case.py:190: in verify_no_errors
        pytest.fail('\n '.join([self.errors.pop(0) for _ in range(len(self.errors))]))
     Hurray! unblocked was not received in public chat after user unblock!
    



    Device sessions

    2. test_community_edit_delete_message_when_offline, id: 704615

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

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



    Device sessions

    Expected to fail tests (2)

    Click to expand

    Class TestGroupChatMultipleDeviceMergedNewUI:

    1. test_group_chat_mute_chat, id: 703495

    # STEP: Change device time so chat will be unmuted by timer
    Device 2: Long press on ChatElement

    critical/chats/test_group_chat.py:464: in test_group_chat_mute_chat
        self.errors.verify_no_errors()
    base_test_case.py:190: in verify_no_errors
        pytest.fail('\n '.join([self.errors.pop(0) for _ in range(len(self.errors))]))
     Chat is still muted after timeout 
    

    [[Chat is not unmuted after expected time: https://github.com//issues/19627]]

    Device sessions

    Class TestCommunityOneDeviceMerged:

    1. test_community_discovery, id: 703503

    Test is not run, e2e blocker  
    

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

    Passed tests (44)

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

    1. test_links_open_universal_links_from_chat, id: 704613
    Device sessions

    2. test_links_deep_links, id: 702775
    Device sessions

    Class TestActivityCenterContactRequestMultipleDevicePR:

    1. test_add_contact_field_validation, id: 702777
    Device sessions

    2. test_activity_center_contact_request_accept_swipe_mark_all_as_read, id: 702851
    Device sessions

    3. test_activity_center_contact_request_decline, id: 702850
    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 TestActivityMultipleDevicePR:

    1. test_navigation_jump_to, id: 702936
    Device sessions

    2. test_activity_center_reply_read_unread_delete_filter_swipe, id: 702947
    Device sessions

    Class 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 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_message_delete, id: 702839
    Device sessions

    6. test_community_message_send_check_timestamps_sender_username, id: 702838
    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 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_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 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

    @qoqobolo qoqobolo self-assigned this May 22, 2024
    @qoqobolo qoqobolo moved this from E2E Tests to IN TESTING in Pipeline for QA May 22, 2024
    @mariia-skrypnyk
    Copy link

    Hi @BalogunofAfrica !

    Thanks for your PR.
    It finally can be merged!

    @BalogunofAfrica BalogunofAfrica merged commit 2ffdeb1 into develop May 23, 2024
    6 checks passed
    Pipeline for QA automation moved this from MERGE to DONE May 23, 2024
    @BalogunofAfrica BalogunofAfrica deleted the fix/no-routes-render branch May 23, 2024 11:33
    Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
    Projects
    Status: DONE
    8 participants