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

Implement getSuggestedRoutes endpoint in the Send Flow for wallet #18104

Merged
merged 1 commit into from
Dec 19, 2023

Conversation

briansztamfater
Copy link
Member

@briansztamfater briansztamfater commented Dec 6, 2023

fixes #18201

Summary

This PR includes token amount selection screen into the Send flow and implements getSuggestedRoutes endpoint, which based on the response can enable the Confirm button to proceed to Transaction Confirmation Screen (to be implemented in a follow up PR)

suggestedroutesdemo.mp4

Platforms

  • Android
  • iOS

Areas that maybe impacted

Functional
  • wallet / transactions

Steps to test

  • Open Status
  • Open an account
  • Select Send option
  • Select a token
  • Input an address
  • Input an amount, and wait until a route is loaded. Should be enough balance for the sending amount + fees, otherwise a route won't be found
  • Verify correct behavior of the screen (see demo video above)

status: ready

@briansztamfater briansztamfater added the feature feature requests label Dec 6, 2023
@status-im-auto
Copy link
Member

status-im-auto commented Dec 6, 2023

Jenkins Builds

Click to see older builds (64)
Commit #️⃣ Finished (UTC) Duration Platform Result
e42d22e #1 2023-12-06 19:19:48 ~2 min ios 📄log
e42d22e #1 2023-12-06 19:20:44 ~3 min tests 📄log
36b2139 #2 2023-12-06 19:24:20 ~2 min ios 📄log
d281f5f #3 2023-12-06 19:28:07 ~2 min ios 📄log
✔️ d281f5f #3 2023-12-06 19:32:16 ~6 min android 🤖apk 📲
abec7a7 #4 2023-12-06 19:35:51 ~2 min ios 📄log
✔️ abec7a7 #4 2023-12-06 19:40:23 ~6 min android 🤖apk 📲
✔️ abec7a7 #4 2023-12-06 19:40:35 ~6 min android-e2e 🤖apk 📲
abec7a7 #4 2023-12-06 19:43:44 ~9 min tests 📄log
5eceecf #5 2023-12-06 21:02:58 ~4 min ios 📄log
✔️ 5eceecf #5 2023-12-06 21:05:47 ~7 min android-e2e 🤖apk 📲
✔️ 5eceecf #5 2023-12-06 21:09:11 ~10 min android 🤖apk 📲
5eceecf #5 2023-12-06 21:12:42 ~14 min tests 📄log
✔️ fa46e05 #6 2023-12-06 21:34:27 ~11 min android-e2e 🤖apk 📲
fa46e05 #6 2023-12-06 21:34:29 ~11 min tests 📄log
✔️ fa46e05 #6 2023-12-06 21:34:29 ~11 min android 🤖apk 📲
✔️ fa46e05 #6 2023-12-06 21:34:45 ~12 min ios 📱ipa 📲
✔️ 4c604ab #7 2023-12-08 03:40:17 ~6 min ios 📱ipa 📲
4c604ab #7 2023-12-08 03:45:19 ~11 min tests 📄log
✔️ 4c604ab #7 2023-12-08 03:45:24 ~11 min android-e2e 🤖apk 📲
✔️ 4c604ab #7 2023-12-08 03:45:28 ~11 min android 🤖apk 📲
3250a21 #9 2023-12-11 04:30:34 ~3 min tests 📄log
✔️ 3250a21 #9 2023-12-11 04:32:57 ~6 min android-e2e 🤖apk 📲
✔️ 3250a21 #9 2023-12-11 04:33:09 ~6 min ios 📱ipa 📲
✔️ 3250a21 #9 2023-12-11 04:35:15 ~8 min android 🤖apk 📲
51b758b #10 2023-12-11 04:46:28 ~2 min tests 📄log
✔️ 51b758b #10 2023-12-11 04:50:21 ~6 min android-e2e 🤖apk 📲
✔️ 51b758b #10 2023-12-11 04:51:29 ~7 min android 🤖apk 📲
✔️ 51b758b #10 2023-12-11 04:56:16 ~12 min ios 📱ipa 📲
f1da839 #11 2023-12-13 15:53:33 ~2 min tests 📄log
✔️ f1da839 #11 2023-12-13 15:56:41 ~5 min android-e2e 🤖apk 📲
✔️ f1da839 #11 2023-12-13 15:56:57 ~6 min android 🤖apk 📲
✔️ f1da839 #11 2023-12-13 16:02:21 ~11 min ios 📱ipa 📲
03fab92 #12 2023-12-13 21:38:44 ~2 min tests 📄log
✔️ 03fab92 #12 2023-12-13 21:41:58 ~5 min ios 📱ipa 📲
4ec3775 #13 2023-12-13 21:47:39 ~4 min tests 📄log
✔️ 4ec3775 #13 2023-12-13 21:49:54 ~6 min android-e2e 🤖apk 📲
✔️ 4ec3775 #13 2023-12-13 21:50:54 ~7 min android 🤖apk 📲
✔️ 4ec3775 #13 2023-12-13 21:56:30 ~13 min ios 📱ipa 📲
9bf50e6 #14 2023-12-14 04:36:51 ~1 min tests 📄log
✔️ 315b38a #15 2023-12-14 04:41:59 ~3 min tests 📄log
✔️ 315b38a #15 2023-12-14 04:45:20 ~7 min android-e2e 🤖apk 📲
✔️ 315b38a #15 2023-12-14 04:45:28 ~7 min android 🤖apk 📲
✔️ 315b38a #15 2023-12-14 04:51:12 ~12 min ios 📱ipa 📲
✔️ 57664f3 #16 2023-12-14 15:25:09 ~4 min tests 📄log
✔️ 57664f3 #16 2023-12-14 15:27:39 ~6 min android-e2e 🤖apk 📲
✔️ 57664f3 #16 2023-12-14 15:27:55 ~7 min android 🤖apk 📲
✔️ 57664f3 #16 2023-12-14 15:32:17 ~11 min ios 📱ipa 📲
✔️ a40a05e #17 2023-12-14 16:10:39 ~4 min tests 📄log
✔️ a40a05e #17 2023-12-14 16:13:14 ~6 min android 🤖apk 📲
✔️ a40a05e #17 2023-12-14 16:13:31 ~7 min android-e2e 🤖apk 📲
✔️ a40a05e #17 2023-12-14 16:19:55 ~13 min ios 📱ipa 📲
✔️ 1d63ee8 #18 2023-12-14 21:40:43 ~5 min ios 📱ipa 📲
✔️ 1d63ee8 #18 2023-12-14 21:43:12 ~7 min android-e2e 🤖apk 📲
✔️ 1d63ee8 #18 2023-12-14 21:43:14 ~7 min android 🤖apk 📲
✔️ 1d63ee8 #19 2023-12-15 15:04:36 ~4 min tests 📄log
✔️ 21dcda2 #20 2023-12-15 17:59:18 ~6 min tests 📄log
✔️ 21dcda2 #19 2023-12-15 18:01:48 ~8 min android-e2e 🤖apk 📲
✔️ 21dcda2 #19 2023-12-15 18:02:10 ~9 min android 🤖apk 📲
✔️ 21dcda2 #19 2023-12-15 18:06:07 ~13 min ios 📱ipa 📲
✔️ dc3bf43 #21 2023-12-17 15:03:55 ~4 min tests 📄log
✔️ dc3bf43 #20 2023-12-17 15:06:54 ~7 min android-e2e 🤖apk 📲
✔️ dc3bf43 #20 2023-12-17 15:07:03 ~8 min android 🤖apk 📲
✔️ dc3bf43 #20 2023-12-17 15:11:37 ~12 min ios 📱ipa 📲
Commit #️⃣ Finished (UTC) Duration Platform Result
✔️ 05fd97e #22 2023-12-19 00:13:14 ~4 min tests 📄log
✔️ 05fd97e #21 2023-12-19 00:16:24 ~8 min android-e2e 🤖apk 📲
✔️ 05fd97e #21 2023-12-19 00:16:30 ~8 min android 🤖apk 📲
✔️ 05fd97e #21 2023-12-19 00:22:06 ~13 min ios 📱ipa 📲
✔️ e541a2a #23 2023-12-19 10:52:00 ~3 min tests 📄log
✔️ e541a2a #22 2023-12-19 10:55:40 ~7 min android-e2e 🤖apk 📲
✔️ e541a2a #22 2023-12-19 10:55:45 ~7 min android 🤖apk 📲
✔️ e541a2a #22 2023-12-19 10:59:40 ~11 min ios 📱ipa 📲

@briansztamfater briansztamfater force-pushed the feat/suggested-routes branch 3 times, most recently from d281f5f to abec7a7 Compare December 6, 2023 19:33
@briansztamfater briansztamfater self-assigned this Dec 6, 2023
Comment on lines +147 to +149
(cond loading-suggested-routes?
[quo/text "Loading routes"]
(and (not loading-suggested-routes?) route)
[quo/text "Route found"]
(and (not loading-suggested-routes?) (nil? route))
[quo/text "Route not found"])]
Copy link
Member Author

Choose a reason for hiding this comment

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

This is temporary, should be addressed in #16929

@briansztamfater briansztamfater force-pushed the feat/suggested-routes branch 2 times, most recently from 5eceecf to fa46e05 Compare December 6, 2023 21:22
@@ -390,3 +390,15 @@
(def ^:const account-default-customization-color :blue)

(def ^:const wallet-account-name-max-length 20)

(def ^:const gas-rate-low 0)
Copy link
Contributor

Choose a reason for hiding this comment

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

🙌

@@ -205,10 +205,14 @@
(with-precision 2)
str))

(defn add
(defn- add*
[bn1 n2]
(.add ^js bn1 n2))

Copy link
Contributor

Choose a reason for hiding this comment

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

not for now, but these methods should probably all be covered in tests. We can add this as part of the post 1.27 workset 👍

Copy link
Contributor

Choose a reason for hiding this comment

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

I added it (and explained why) in a previous PR.

#17920 (comment)

I can add some tests in a following PR @J-Son89

Copy link
Contributor

Choose a reason for hiding this comment

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

@ulisesmac - I was making no comment about the added function, I understand the use case. My point is more that we are using a bunch of (afaik) untested utilities that handle numbers. Tests would be great but we can wait until post 1.27 as let's focus on the delivering those features to the best quality as possible :)

Copy link
Contributor

Choose a reason for hiding this comment

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

Oh yes, that's true!, we are relying on the functions in this namespace. They need to be tested.

@@ -48,7 +48,7 @@
:<- [:wallet/balances]
:<- [:wallet/tokens-loading?]
(fn [[accounts balances tokens-loading?]]
(mapv (fn [{:keys [color address type] :as account}]
(mapv (fn [{:keys [color address] :as account}]
Copy link
Contributor

Choose a reason for hiding this comment

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

why did you remove type? it's needed on line 54?

Copy link
Contributor

Choose a reason for hiding this comment

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

Maybe we should destructure this map in another way, so that the app doesn't compile if the var doesn't exist.

(mapv (fn [{:keys        [color address]
            account-type :type
            :as          account}]
        ,,,
        ;;line 54:
        :type (if (= account-type :watch) :watch-only :empty)
        ,,,)
      [,,,])

currently the app is compiling but in the line 54: (= type :watch) is always going to be false.
Just to give a little more of context on it in case it's needed:

(= type :watch)
;; => false

type
;; => #object[cljs$core$type]

token-id (:symbol token)
network-preferences [constants/mainnet-chain-id] ; TODO: don't hardcode network preferences
gas-rates constants/gas-rate-low
amount-in (money/mul (money/bignumber amount)
Copy link
Contributor

Choose a reason for hiding this comment

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

might be better to make amount-in a helper fn?

(defn amount-in-hex [amount token-decimal]
 (money/to-hex-in (money/mul (money/bignumber amount) (money/from-decimal token-decimal))) 

Copy link
Contributor

Choose a reason for hiding this comment

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

I think the same, as a named function it'll be clearer what these calculations mean 👍

Comment on lines +249 to +250

(defn amount-in-hex
Copy link
Contributor

Choose a reason for hiding this comment

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

A test can be added for this function

@status-im-auto
Copy link
Member

58% of end-end tests have passed

Total executed tests: 48
Failed tests: 15
Expected to fail tests: 5
Passed tests: 28
IDs of failed tests: 702782,702733,702777,702813,703133,703495,702745,702850,703297,702855,703202,703391,702807,702808,702730 
IDs of expected to fail tests: 702732,702948,702894,703503,702731 

Failed tests (15)

Click to expand
  • Rerun failed tests

  • Class TestGroupChatMultipleDeviceMergedNewUI:

    1. test_group_chat_mute_chat, id: 703495
    Test setup failed: /home/jenkins/.local/lib/python3.10/site-packages/urllib3/connectionpool.py:703: in urlopen
        httplib_response = self._make_request(
    /home/jenkins/.local/lib/python3.10/site-packages/urllib3/connectionpool.py:449: in _make_request
        six.raise_from(e, None)
    <string>:3: in raise_from
        ???
    /home/jenkins/.local/lib/python3.10/site-packages/urllib3/connectionpool.py:444: in _make_request
        httplib_response = conn.getresponse()
    /usr/lib/python3.10/http/client.py:1375: in getresponse
        response.begin()
    /usr/lib/python3.10/http/client.py:318: in begin
        version, status, reason = self._read_status()
    /usr/lib/python3.10/http/client.py:287: in _read_status
        raise RemoteDisconnected("Remote end closed connection without"
    E   http.client.RemoteDisconnected: Remote end closed connection without response
    
    During handling of the above exception, another exception occurred:
    critical/chats/test_group_chat.py:65: in prepare_devices
        self.homes[0].just_fyi('Admin creates group chat')
    ../views/base_view.py:387: in just_fyi
        self.driver.execute_script("sauce:context=STEP: %s" % some_str)
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py:405: in execute_script
        return self.execute(command, {"script": script, "args": converted_args})["value"]
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py:343: in execute
        response = self.command_executor.execute(driver_command, params)
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/remote_connection.py:291: in execute
        return self._request(command_info[0], url, body=data)
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/remote_connection.py:312: in _request
        response = self._conn.request(method, url, body=body, headers=headers)
    /home/jenkins/.local/lib/python3.10/site-packages/urllib3/request.py:78: in request
        return self.request_encode_body(
    /home/jenkins/.local/lib/python3.10/site-packages/urllib3/request.py:170: in request_encode_body
        return self.urlopen(method, url, **extra_kw)
    /home/jenkins/.local/lib/python3.10/site-packages/urllib3/poolmanager.py:376: in urlopen
        response = conn.urlopen(method, u.request_uri, **kw)
    /home/jenkins/.local/lib/python3.10/site-packages/urllib3/connectionpool.py:787: in urlopen
        retries = retries.increment(
    /home/jenkins/.local/lib/python3.10/site-packages/urllib3/util/retry.py:550: in increment
        raise six.reraise(type(error), error, _stacktrace)
    /home/jenkins/.local/lib/python3.10/site-packages/urllib3/packages/six.py:769: in reraise
        raise value.with_traceback(tb)
    /home/jenkins/.local/lib/python3.10/site-packages/urllib3/connectionpool.py:703: in urlopen
        httplib_response = self._make_request(
    /home/jenkins/.local/lib/python3.10/site-packages/urllib3/connectionpool.py:449: in _make_request
        six.raise_from(e, None)
    <string>:3: in raise_from
        ???
    /home/jenkins/.local/lib/python3.10/site-packages/urllib3/connectionpool.py:444: in _make_request
        httplib_response = conn.getresponse()
    /usr/lib/python3.10/http/client.py:1375: in getresponse
        response.begin()
    /usr/lib/python3.10/http/client.py:318: in begin
        version, status, reason = self._read_status()
    /usr/lib/python3.10/http/client.py:287: in _read_status
        raise RemoteDisconnected("Remote end closed connection without"
     ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))
    



    2. test_group_chat_send_image_save_and_share, id: 703297

    Test setup failed: /home/jenkins/.local/lib/python3.10/site-packages/urllib3/connectionpool.py:703: in urlopen
        httplib_response = self._make_request(
    /home/jenkins/.local/lib/python3.10/site-packages/urllib3/connectionpool.py:449: in _make_request
        six.raise_from(e, None)
    <string>:3: in raise_from
        ???
    /home/jenkins/.local/lib/python3.10/site-packages/urllib3/connectionpool.py:444: in _make_request
        httplib_response = conn.getresponse()
    /usr/lib/python3.10/http/client.py:1375: in getresponse
        response.begin()
    /usr/lib/python3.10/http/client.py:318: in begin
        version, status, reason = self._read_status()
    /usr/lib/python3.10/http/client.py:287: in _read_status
        raise RemoteDisconnected("Remote end closed connection without"
    E   http.client.RemoteDisconnected: Remote end closed connection without response
    
    During handling of the above exception, another exception occurred:
    critical/chats/test_group_chat.py:65: in prepare_devices
        self.homes[0].just_fyi('Admin creates group chat')
    ../views/base_view.py:387: in just_fyi
        self.driver.execute_script("sauce:context=STEP: %s" % some_str)
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py:405: in execute_script
        return self.execute(command, {"script": script, "args": converted_args})["value"]
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py:343: in execute
        response = self.command_executor.execute(driver_command, params)
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/remote_connection.py:291: in execute
        return self._request(command_info[0], url, body=data)
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/remote_connection.py:312: in _request
        response = self._conn.request(method, url, body=body, headers=headers)
    /home/jenkins/.local/lib/python3.10/site-packages/urllib3/request.py:78: in request
        return self.request_encode_body(
    /home/jenkins/.local/lib/python3.10/site-packages/urllib3/request.py:170: in request_encode_body
        return self.urlopen(method, url, **extra_kw)
    /home/jenkins/.local/lib/python3.10/site-packages/urllib3/poolmanager.py:376: in urlopen
        response = conn.urlopen(method, u.request_uri, **kw)
    /home/jenkins/.local/lib/python3.10/site-packages/urllib3/connectionpool.py:787: in urlopen
        retries = retries.increment(
    /home/jenkins/.local/lib/python3.10/site-packages/urllib3/util/retry.py:550: in increment
        raise six.reraise(type(error), error, _stacktrace)
    /home/jenkins/.local/lib/python3.10/site-packages/urllib3/packages/six.py:769: in reraise
        raise value.with_traceback(tb)
    /home/jenkins/.local/lib/python3.10/site-packages/urllib3/connectionpool.py:703: in urlopen
        httplib_response = self._make_request(
    /home/jenkins/.local/lib/python3.10/site-packages/urllib3/connectionpool.py:449: in _make_request
        six.raise_from(e, None)
    <string>:3: in raise_from
        ???
    /home/jenkins/.local/lib/python3.10/site-packages/urllib3/connectionpool.py:444: in _make_request
        httplib_response = conn.getresponse()
    /usr/lib/python3.10/http/client.py:1375: in getresponse
        response.begin()
    /usr/lib/python3.10/http/client.py:318: in begin
        version, status, reason = self._read_status()
    /usr/lib/python3.10/http/client.py:287: in _read_status
        raise RemoteDisconnected("Remote end closed connection without"
     ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))
    



    3. test_group_chat_reactions, id: 703202

    Test setup failed: /home/jenkins/.local/lib/python3.10/site-packages/urllib3/connectionpool.py:703: in urlopen
        httplib_response = self._make_request(
    /home/jenkins/.local/lib/python3.10/site-packages/urllib3/connectionpool.py:449: in _make_request
        six.raise_from(e, None)
    <string>:3: in raise_from
        ???
    /home/jenkins/.local/lib/python3.10/site-packages/urllib3/connectionpool.py:444: in _make_request
        httplib_response = conn.getresponse()
    /usr/lib/python3.10/http/client.py:1375: in getresponse
        response.begin()
    /usr/lib/python3.10/http/client.py:318: in begin
        version, status, reason = self._read_status()
    /usr/lib/python3.10/http/client.py:287: in _read_status
        raise RemoteDisconnected("Remote end closed connection without"
    E   http.client.RemoteDisconnected: Remote end closed connection without response
    
    During handling of the above exception, another exception occurred:
    critical/chats/test_group_chat.py:65: in prepare_devices
        self.homes[0].just_fyi('Admin creates group chat')
    ../views/base_view.py:387: in just_fyi
        self.driver.execute_script("sauce:context=STEP: %s" % some_str)
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py:405: in execute_script
        return self.execute(command, {"script": script, "args": converted_args})["value"]
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py:343: in execute
        response = self.command_executor.execute(driver_command, params)
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/remote_connection.py:291: in execute
        return self._request(command_info[0], url, body=data)
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/remote_connection.py:312: in _request
        response = self._conn.request(method, url, body=body, headers=headers)
    /home/jenkins/.local/lib/python3.10/site-packages/urllib3/request.py:78: in request
        return self.request_encode_body(
    /home/jenkins/.local/lib/python3.10/site-packages/urllib3/request.py:170: in request_encode_body
        return self.urlopen(method, url, **extra_kw)
    /home/jenkins/.local/lib/python3.10/site-packages/urllib3/poolmanager.py:376: in urlopen
        response = conn.urlopen(method, u.request_uri, **kw)
    /home/jenkins/.local/lib/python3.10/site-packages/urllib3/connectionpool.py:787: in urlopen
        retries = retries.increment(
    /home/jenkins/.local/lib/python3.10/site-packages/urllib3/util/retry.py:550: in increment
        raise six.reraise(type(error), error, _stacktrace)
    /home/jenkins/.local/lib/python3.10/site-packages/urllib3/packages/six.py:769: in reraise
        raise value.with_traceback(tb)
    /home/jenkins/.local/lib/python3.10/site-packages/urllib3/connectionpool.py:703: in urlopen
        httplib_response = self._make_request(
    /home/jenkins/.local/lib/python3.10/site-packages/urllib3/connectionpool.py:449: in _make_request
        six.raise_from(e, None)
    <string>:3: in raise_from
        ???
    /home/jenkins/.local/lib/python3.10/site-packages/urllib3/connectionpool.py:444: in _make_request
        httplib_response = conn.getresponse()
    /usr/lib/python3.10/http/client.py:1375: in getresponse
        response.begin()
    /usr/lib/python3.10/http/client.py:318: in begin
        version, status, reason = self._read_status()
    /usr/lib/python3.10/http/client.py:287: in _read_status
        raise RemoteDisconnected("Remote end closed connection without"
     ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))
    



    4. test_group_chat_join_send_text_messages_push, id: 702807

    Device 3: Could not reach home view by pressing system back button
    # STEP: Admin creates group chat

    Test setup failed: /home/jenkins/.local/lib/python3.10/site-packages/urllib3/connectionpool.py:703: in urlopen
        httplib_response = self._make_request(
    /home/jenkins/.local/lib/python3.10/site-packages/urllib3/connectionpool.py:449: in _make_request
        six.raise_from(e, None)
    <string>:3: in raise_from
        ???
    /home/jenkins/.local/lib/python3.10/site-packages/urllib3/connectionpool.py:444: in _make_request
        httplib_response = conn.getresponse()
    /usr/lib/python3.10/http/client.py:1375: in getresponse
        response.begin()
    /usr/lib/python3.10/http/client.py:318: in begin
        version, status, reason = self._read_status()
    /usr/lib/python3.10/http/client.py:287: in _read_status
        raise RemoteDisconnected("Remote end closed connection without"
    E   http.client.RemoteDisconnected: Remote end closed connection without response
    
    During handling of the above exception, another exception occurred:
    critical/chats/test_group_chat.py:65: in prepare_devices
        self.homes[0].just_fyi('Admin creates group chat')
    ../views/base_view.py:387: in just_fyi
        self.driver.execute_script("sauce:context=STEP: %s" % some_str)
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py:405: in execute_script
        return self.execute(command, {"script": script, "args": converted_args})["value"]
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py:343: in execute
        response = self.command_executor.execute(driver_command, params)
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/remote_connection.py:291: in execute
        return self._request(command_info[0], url, body=data)
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/remote_connection.py:312: in _request
        response = self._conn.request(method, url, body=body, headers=headers)
    /home/jenkins/.local/lib/python3.10/site-packages/urllib3/request.py:78: in request
        return self.request_encode_body(
    /home/jenkins/.local/lib/python3.10/site-packages/urllib3/request.py:170: in request_encode_body
        return self.urlopen(method, url, **extra_kw)
    /home/jenkins/.local/lib/python3.10/site-packages/urllib3/poolmanager.py:376: in urlopen
        response = conn.urlopen(method, u.request_uri, **kw)
    /home/jenkins/.local/lib/python3.10/site-packages/urllib3/connectionpool.py:787: in urlopen
        retries = retries.increment(
    /home/jenkins/.local/lib/python3.10/site-packages/urllib3/util/retry.py:550: in increment
        raise six.reraise(type(error), error, _stacktrace)
    /home/jenkins/.local/lib/python3.10/site-packages/urllib3/packages/six.py:769: in reraise
        raise value.with_traceback(tb)
    /home/jenkins/.local/lib/python3.10/site-packages/urllib3/connectionpool.py:703: in urlopen
        httplib_response = self._make_request(
    /home/jenkins/.local/lib/python3.10/site-packages/urllib3/connectionpool.py:449: in _make_request
        six.raise_from(e, None)
    <string>:3: in raise_from
        ???
    /home/jenkins/.local/lib/python3.10/site-packages/urllib3/connectionpool.py:444: in _make_request
        httplib_response = conn.getresponse()
    /usr/lib/python3.10/http/client.py:1375: in getresponse
        response.begin()
    /usr/lib/python3.10/http/client.py:318: in begin
        version, status, reason = self._read_status()
    /usr/lib/python3.10/http/client.py:287: in _read_status
        raise RemoteDisconnected("Remote end closed connection without"
     ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))
    



    Device sessions

    5. test_group_chat_offline_pn, id: 702808

    Test setup failed: /home/jenkins/.local/lib/python3.10/site-packages/urllib3/connectionpool.py:703: in urlopen
        httplib_response = self._make_request(
    /home/jenkins/.local/lib/python3.10/site-packages/urllib3/connectionpool.py:449: in _make_request
        six.raise_from(e, None)
    <string>:3: in raise_from
        ???
    /home/jenkins/.local/lib/python3.10/site-packages/urllib3/connectionpool.py:444: in _make_request
        httplib_response = conn.getresponse()
    /usr/lib/python3.10/http/client.py:1375: in getresponse
        response.begin()
    /usr/lib/python3.10/http/client.py:318: in begin
        version, status, reason = self._read_status()
    /usr/lib/python3.10/http/client.py:287: in _read_status
        raise RemoteDisconnected("Remote end closed connection without"
    E   http.client.RemoteDisconnected: Remote end closed connection without response
    
    During handling of the above exception, another exception occurred:
    critical/chats/test_group_chat.py:65: in prepare_devices
        self.homes[0].just_fyi('Admin creates group chat')
    ../views/base_view.py:387: in just_fyi
        self.driver.execute_script("sauce:context=STEP: %s" % some_str)
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py:405: in execute_script
        return self.execute(command, {"script": script, "args": converted_args})["value"]
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py:343: in execute
        response = self.command_executor.execute(driver_command, params)
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/remote_connection.py:291: in execute
        return self._request(command_info[0], url, body=data)
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/remote_connection.py:312: in _request
        response = self._conn.request(method, url, body=body, headers=headers)
    /home/jenkins/.local/lib/python3.10/site-packages/urllib3/request.py:78: in request
        return self.request_encode_body(
    /home/jenkins/.local/lib/python3.10/site-packages/urllib3/request.py:170: in request_encode_body
        return self.urlopen(method, url, **extra_kw)
    /home/jenkins/.local/lib/python3.10/site-packages/urllib3/poolmanager.py:376: in urlopen
        response = conn.urlopen(method, u.request_uri, **kw)
    /home/jenkins/.local/lib/python3.10/site-packages/urllib3/connectionpool.py:787: in urlopen
        retries = retries.increment(
    /home/jenkins/.local/lib/python3.10/site-packages/urllib3/util/retry.py:550: in increment
        raise six.reraise(type(error), error, _stacktrace)
    /home/jenkins/.local/lib/python3.10/site-packages/urllib3/packages/six.py:769: in reraise
        raise value.with_traceback(tb)
    /home/jenkins/.local/lib/python3.10/site-packages/urllib3/connectionpool.py:703: in urlopen
        httplib_response = self._make_request(
    /home/jenkins/.local/lib/python3.10/site-packages/urllib3/connectionpool.py:449: in _make_request
        six.raise_from(e, None)
    <string>:3: in raise_from
        ???
    /home/jenkins/.local/lib/python3.10/site-packages/urllib3/connectionpool.py:444: in _make_request
        httplib_response = conn.getresponse()
    /usr/lib/python3.10/http/client.py:1375: in getresponse
        response.begin()
    /usr/lib/python3.10/http/client.py:318: in begin
        version, status, reason = self._read_status()
    /usr/lib/python3.10/http/client.py:287: in _read_status
        raise RemoteDisconnected("Remote end closed connection without"
     ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response')) 
    

    [[Data delivery issue]]

    Class TestOneToOneChatMultipleSharedDevicesNewUi:

    1. test_1_1_chat_emoji_send_reply_and_open_link, id: 702782

    Test setup failed: critical/chats/test_1_1_public_chats.py:42: in prepare_devices
        self.chat_1.send_message('hey')
    ../views/chat_view.py:1004: in send_message
        self.chat_message_input.wait_for_element(wait_chat_input_sec)
    ../views/base_element.py:121: in wait_for_element
        raise TimeoutException(
     Device `1`: `ChatMessageInput` by` accessibility id`: `chat-message-input` is not found on the screen after wait_for_element
    



    2. test_1_1_chat_text_message_delete_push_disappear, id: 702733

    Test setup failed: critical/chats/test_1_1_public_chats.py:42: in prepare_devices
        self.chat_1.send_message('hey')
    ../views/chat_view.py:1004: in send_message
        self.chat_message_input.wait_for_element(wait_chat_input_sec)
    ../views/base_element.py:121: in wait_for_element
        raise TimeoutException(
     Device `1`: `ChatMessageInput` by` accessibility id`: `chat-message-input` is not found on the screen after wait_for_element
    



    3. test_1_1_chat_push_emoji, id: 702813

    Test setup failed: critical/chats/test_1_1_public_chats.py:42: in prepare_devices
        self.chat_1.send_message('hey')
    ../views/chat_view.py:1004: in send_message
        self.chat_message_input.wait_for_element(wait_chat_input_sec)
    ../views/base_element.py:121: in wait_for_element
        raise TimeoutException(
     Device `1`: `ChatMessageInput` by` accessibility id`: `chat-message-input` is not found on the screen after wait_for_element
    



    4. test_1_1_chat_non_latin_messages_stack_update_profile_photo, id: 702745

    Test setup failed: critical/chats/test_1_1_public_chats.py:42: in prepare_devices
        self.chat_1.send_message('hey')
    ../views/chat_view.py:1004: in send_message
        self.chat_message_input.wait_for_element(wait_chat_input_sec)
    ../views/base_element.py:121: in wait_for_element
        raise TimeoutException(
     Device `1`: `ChatMessageInput` by` accessibility id`: `chat-message-input` is not found on the screen after wait_for_element
    



    5. test_1_1_chat_edit_message, id: 702855

    Test setup failed: critical/chats/test_1_1_public_chats.py:42: in prepare_devices
        self.chat_1.send_message('hey')
    ../views/chat_view.py:1004: in send_message
        self.chat_message_input.wait_for_element(wait_chat_input_sec)
    ../views/base_element.py:121: in wait_for_element
        raise TimeoutException(
     Device `1`: `ChatMessageInput` by` accessibility id`: `chat-message-input` is not found on the screen after wait_for_element
    



    6. test_1_1_chat_send_image_save_and_share, id: 703391

    Test setup failed: critical/chats/test_1_1_public_chats.py:42: in prepare_devices
        self.chat_1.send_message('hey')
    ../views/chat_view.py:1004: in send_message
        self.chat_message_input.wait_for_element(wait_chat_input_sec)
    ../views/base_element.py:121: in wait_for_element
        raise TimeoutException(
     Device `1`: `ChatMessageInput` by` accessibility id`: `chat-message-input` is not found on the screen after wait_for_element
    



    7. test_1_1_chat_message_reaction, id: 702730

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

    Test setup failed: critical/chats/test_1_1_public_chats.py:42: in prepare_devices
        self.chat_1.send_message('hey')
    ../views/chat_view.py:1004: in send_message
        self.chat_message_input.wait_for_element(wait_chat_input_sec)
    ../views/base_element.py:121: in wait_for_element
        raise TimeoutException(
     Device `1`: `ChatMessageInput` by` accessibility id`: `chat-message-input` is not found on the screen after wait_for_element
    



    Device sessions

    Class TestActivityCenterContactRequestMultipleDevicePR:

    1. test_add_contact_field_validation, id: 702777

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

    activity_center/test_activity_center.py:143: in test_add_contact_field_validation
        self.profile_2.logout()
    ../views/profile_view.py:470: in logout
        self.logout_button.click()
    ../views/profile_view.py:28: in click
        self.scroll_to_element().click()
    ../views/base_element.py:197: in scroll_to_element
        raise NoSuchElementException(
     Device 2: LogoutButton by accessibility id: `log-out-button` is not found on the screen; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors#no-such-element-exception
    



    Device sessions

    2. test_activity_center_contact_request_decline, id: 702850

    Device 2: Find Button by accessibility id: close-activity-center
    Device 2: Tap on found: Button

    None; 
     RemoteDisconnected
    



    Device sessions

    Class TestCommunityOneDeviceMerged:

    1. test_restore_multiaccount_with_waku_backup_remove_switch, id: 703133

    Device 1: Find Button by accessibility id: show-profiles
    Device 1: Tap on found: Button

    critical/chats/test_public_chat_browsing.py:274: in test_restore_multiaccount_with_waku_backup_remove_switch
        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))]))
     zQ3...pJN5P was not restored as a contact from waku backup!
    



    Device sessions

    Expected to fail tests (5)

    Click to expand

    Class TestOneToOneChatMultipleSharedDevicesNewUi:

    1. test_1_1_chat_pin_messages, id: 702731

    Test is not run, e2e blocker  
    

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

    Class TestGroupChatMultipleDeviceMergedNewUI:

    1. test_group_chat_pin_messages, id: 702732

    Test is not run, e2e blocker  
    

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

    Class TestCommunityMultipleDeviceMergedTwo:

    1. test_community_hashtag_links_to_community_channels, id: 702948

    Device 2: Find Text by xpath: //android.view.ViewGroup[@content-desc='chat-item']//android.widget.TextView[contains(@text,'#cats')]
    Device 2: Looking for a message by text: it is just a message text

    critical/chats/test_public_chat_browsing.py:1078: in test_community_hashtag_links_to_community_channels
        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))]))
     Receiver was not navigated to the cats channel
    E    Sender was not navigated to the cats channel 
    

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

    Device sessions

    Class TestCommunityMultipleDeviceMerged:

    1. test_community_contact_block_unblock_offline, id: 702894

    Device 1: Find ProfileSendMessageButton by accessibility id: Chat-item-button
    Device 1: Sending message 'piy'

    critical/chats/test_public_chat_browsing.py:741: in test_community_contact_block_unblock_offline
        self.errors.verify_no_errors()
    base_test_case.py:191: in verify_no_errors
        pytest.fail('\n '.join([self.errors.pop(0) for _ in range(len(self.errors))]))
     Chat with unblocked user was not enabled after 1 minute 
    

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

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

    Click to expand

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

    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 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_edit_delete_message_when_offline, id: 704615
    Device sessions

    6. test_community_message_delete, id: 702839
    Device sessions

    7. test_community_message_send_check_timestamps_sender_username, id: 702838
    Device sessions

    8. test_community_links_with_previews_github_youtube_twitter_gif_send_enable, id: 702844
    Device sessions

    9. test_community_message_edit, id: 702843
    Device sessions

    10. test_community_unread_messages_badge, id: 702841
    Device sessions

    Class TestCommunityMultipleDeviceMergedTwo:

    1. test_community_markdown_support, id: 702809
    Device sessions

    2. test_community_mentions_push_notification, id: 702786
    Device sessions

    3. test_community_leave, id: 702845
    Device sessions

    4. test_community_join_when_node_owner_offline, id: 703629
    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_community_copy_and_paste_message_in_chat_input, id: 702742
    Device sessions

    2. test_community_undo_delete_message, id: 702869
    Device sessions

    3. test_community_navigate_to_channel_when_relaunch, id: 702846
    Device sessions

    4. test_community_mute_community_and_channel, id: 703382
    Device sessions

    @status-im-auto
    Copy link
    Member

    75% of end-end tests have passed

    Total executed tests: 48
    Failed tests: 5
    Expected to fail tests: 7
    Passed tests: 36
    
    IDs of failed tests: 702957,702869,702936,702947,702958 
    
    IDs of expected to fail tests: 702732,702948,702894,702783,703503,702731,702808 
    

    Failed tests (5)

    Click to expand
  • Rerun failed tests

  • Class TestCommunityOneDeviceMerged:

    1. test_community_undo_delete_message, id: 702869

    Device 1: Tap on found: Button
    Device 1: Looking for a message by text: message to delete and undo

    critical/chats/test_public_chat_browsing.py:113: in test_community_undo_delete_message
        self.channel.chat_element_by_text(message_to_delete).wait_for_visibility_of_element()
    ../views/base_element.py:139: in wait_for_visibility_of_element
        raise TimeoutException(
     Device 1: ChatElementByText by xpath:`//*[starts-with(@text,'message to delete and undo')]/ancestor::android.view.ViewGroup[@content-desc='chat-item']` is not found on the screen after wait_for_visibility_of_element
    
    During handling of the above exception, another exception occurred:
    critical/chats/test_public_chat_browsing.py:115: in test_community_undo_delete_message
        pytest.fail("Message was not restored by clicking 'Undo' button")
    E   Failed: Message was not restored by clicking 'Undo' button
    



    Device sessions

    Class TestActivityMultipleDevicePRTwo:

    1. test_activity_center_mentions, id: 702957

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

    Test setup failed: activity_center/test_activity_center.py:386: in prepare_devices
        self.community_1.share_community(self.community_name, self.username_2)
    ../views/chat_view.py:513: in share_community
        user_contact.scroll_and_click()
    ../views/base_element.py:202: in scroll_and_click
        self.scroll_to_element(direction=direction)
    ../views/base_element.py:197: in scroll_to_element
        raise NoSuchElementException(
     Device 1: Button by xpath: `//*[contains(@text, "user2")]` is not found on the screen; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors#no-such-element-exception
    



    Device sessions

    2. test_activity_center_admin_notification_accept_swipe, id: 702958

    Test setup failed: activity_center/test_activity_center.py:386: in prepare_devices
        self.community_1.share_community(self.community_name, self.username_2)
    ../views/chat_view.py:513: in share_community
        user_contact.scroll_and_click()
    ../views/base_element.py:202: in scroll_and_click
        self.scroll_to_element(direction=direction)
    ../views/base_element.py:197: in scroll_to_element
        raise NoSuchElementException(
     Device 1: Button by xpath: `//*[contains(@text, "user2")]` is not found on the screen; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors#no-such-element-exception
    



    Class TestActivityMultipleDevicePR:

    1. test_navigation_jump_to, id: 702936

    Test setup failed: base_test_case.py:316: in create_shared_drivers
        test_suite_data.current_test.testruns[-1].jobs[drivers[i].session_id] = i + 1
     '_asyncio.Future' object has no attribute 'session_id'
    
    During handling of the above exception, another exception occurred:
    activity_center/test_activity_center.py:211: in prepare_devices
        self.drivers, self.loop = create_shared_drivers(2)
    base_test_case.py:322: in create_shared_drivers
        test_suite_data.current_test.testruns[-1].error += str(e)
    E   TypeError: unsupported operand type(s) for +=: 'NoneType' and 'str'
    



    Device sessions

    2. test_activity_center_reply_read_unread_delete_filter_swipe, id: 702947

    Test setup failed: base_test_case.py:316: in create_shared_drivers
        test_suite_data.current_test.testruns[-1].jobs[drivers[i].session_id] = i + 1
     '_asyncio.Future' object has no attribute 'session_id'
    
    During handling of the above exception, another exception occurred:
    activity_center/test_activity_center.py:211: in prepare_devices
        self.drivers, self.loop = create_shared_drivers(2)
    base_test_case.py:322: in create_shared_drivers
        test_suite_data.current_test.testruns[-1].error += str(e)
    E   TypeError: unsupported operand type(s) for +=: 'NoneType' and 'str'
    



    Expected to fail tests (7)

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

    Class TestOneToOneChatMultipleSharedDevicesNewUi:

    1. test_1_1_chat_pin_messages, id: 702731

    Test is not run, e2e blocker  
    

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

    Class TestCommunityMultipleDeviceMergedTwo:

    1. test_community_hashtag_links_to_community_channels, id: 702948

    Device 2: Find Text by xpath: //android.view.ViewGroup[@content-desc='chat-item']//android.widget.TextView[contains(@text,'#cats')]
    Device 2: Looking for a message by text: it is just a message text

    critical/chats/test_public_chat_browsing.py:1078: in test_community_hashtag_links_to_community_channels
        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))]))
     Receiver was not navigated to the cats channel
    E    Sender was not navigated to the cats channel 
    

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

    Device sessions

    Class TestGroupChatMultipleDeviceMergedNewUI:

    1. test_group_chat_pin_messages, id: 702732

    Test is not run, e2e blocker  
    

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

    2. test_group_chat_offline_pn, id: 702808

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

    critical/chats/test_group_chat.py:323: in test_group_chat_offline_pn
        self.errors.verify_no_errors()
    base_test_case.py:191: in verify_no_errors
        pytest.fail('\n '.join([self.errors.pop(0) for _ in range(len(self.errors))]))
     Messages PN was not fetched from offline 
    

    [[Data delivery issue]]

    Device sessions

    Class TestOneToOneChatMultipleSharedDevicesNewUiTwo:

    1. test_1_1_chat_is_shown_message_sent_delivered_from_offline, id: 702783

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

    critical/chats/test_1_1_public_chats.py:620: in test_1_1_chat_is_shown_message_sent_delivered_from_offline
        self.errors.verify_no_errors()
    base_test_case.py:191: in verify_no_errors
        pytest.fail('\n '.join([self.errors.pop(0) for _ in range(len(self.errors))]))
     Message status was not changed to Delivered, it's Sent after back up online! 
    

    [[Data delivery issue]]

    Device sessions

    Class TestCommunityMultipleDeviceMerged:

    1. test_community_contact_block_unblock_offline, id: 702894

    Device 1: Find ProfileSendMessageButton by accessibility id: Chat-item-button
    Device 1: Sending message 'piy'

    critical/chats/test_public_chat_browsing.py:741: in test_community_contact_block_unblock_offline
        self.errors.verify_no_errors()
    base_test_case.py:191: in verify_no_errors
        pytest.fail('\n '.join([self.errors.pop(0) for _ in range(len(self.errors))]))
     Chat with unblocked user was not enabled after 1 minute 
    

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

    Device sessions

    Passed tests (36)

    Click to expand

    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_navigate_to_channel_when_relaunch, id: 702846
    Device sessions

    4. test_community_mute_community_and_channel, id: 703382
    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 TestCommunityMultipleDeviceMergedTwo:

    1. test_community_markdown_support, id: 702809
    Device sessions

    2. test_community_mentions_push_notification, id: 702786
    Device sessions

    3. test_community_leave, id: 702845
    Device sessions

    4. test_community_join_when_node_owner_offline, id: 703629
    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 TestGroupChatMultipleDeviceMergedNewUI:

    1. test_group_chat_mute_chat, id: 703495
    Device sessions

    2. test_group_chat_send_image_save_and_share, id: 703297
    Device sessions

    3. test_group_chat_reactions, id: 703202
    Device sessions

    4. test_group_chat_join_send_text_messages_push, id: 702807
    Device sessions

    Class TestOneToOneChatMultipleSharedDevicesNewUiTwo:

    1. test_1_1_chat_delete_via_long_press_relogin, id: 702784
    Device sessions

    2. test_1_1_chat_mute_chat, id: 703496
    Device sessions

    Class 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_edit_delete_message_when_offline, id: 704615
    Device sessions

    6. test_community_message_delete, id: 702839
    Device sessions

    7. test_community_message_send_check_timestamps_sender_username, id: 702838
    Device sessions

    8. test_community_links_with_previews_github_youtube_twitter_gif_send_enable, id: 702844
    Device sessions

    9. test_community_message_edit, id: 702843
    Device sessions

    10. test_community_unread_messages_badge, id: 702841
    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
    Copy link
    Member

    100% of end-end tests have passed

    Total executed tests: 5
    Failed tests: 0
    Expected to fail tests: 0
    Passed tests: 5
    

    Passed tests (5)

    Click to expand

    Class TestActivityMultipleDevicePRTwo:

    1. test_activity_center_admin_notification_accept_swipe, id: 702958
    Device sessions

    2. test_activity_center_mentions, id: 702957
    Device sessions

    Class TestCommunityOneDeviceMerged:

    1. test_community_undo_delete_message, id: 702869
    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

    @J-Son89 J-Son89 self-assigned this Dec 18, 2023
    @J-Son89 J-Son89 force-pushed the feat/suggested-routes branch from dc3bf43 to 05fd97e Compare December 19, 2023 00:08
    @VolodLytvynenko
    Copy link
    Contributor

    Hey. @briansztamfater the routes are not found in my cases. But I have some real tokens on mainnet, optimizm, arbitrium networks. What I am doing wrong?

    Actual result:

    route.mp4

    Expected result:

    Route is found

    Logs:

    Status-debug-logs.zip

    @VolodLytvynenko
    Copy link
    Contributor

    VolodLytvynenko commented Dec 19, 2023

    Question 1: Should this feature work in case of founding the route for testnet tokens? For now it does not work

    Steps:

    1. Recover user with Goerli tokens
    2. Enable testnet mode
    3. Go to 'send to' page
    4. Enter an available amount of tokens for transfer

    Actual result:

    The route is not found

    goerli.mp4

    Expected result:

    Should the rout be found?

    @J-Son89
    Copy link
    Contributor

    J-Son89 commented Dec 19, 2023

    Hi @VolodLytvynenko, that should at least work. This is the happy path for finding the best route for a transaction. I tested yesterday evening and it was working okay for me. Is it working on mainnet?

    @VolodLytvynenko
    Copy link
    Contributor

    Hi @VolodLytvynenko, that should at least work. This is the happy path for finding the best route for a transaction. I tested yesterday evening and it was working okay for me. Is it working on mainnet?

    @J-Son89 Yes, I tried it on the Mainnet network without any success to get the route, even when entering the minimum amount.
    Here's the balance from my account that I used:

    image

    @VolodLytvynenko
    Copy link
    Contributor

    @J-Son89 Have I understood the requirements correctly regarding route finding within the scope of this PR?

    The route should always be found if the user has enough assets on all networks. For instance:
    Given a user has the following assets:
    1 ETH on the Optimism network
    2 ETH on the Mainnet network
    When the user goes to the 'send to' page and enters 3 ETH
    Then the route should always be found.

    However, in the case of entering an amount higher than available, for example, '3.0001 ETH,' the route should not be found.

    Is there a minimum amount for a particular asset that determines whether a route should or should not be found?

    Or in the scope of this PR would be enough to see the route is found at least once to achieve the happy path?

    @J-Son89
    Copy link
    Contributor

    J-Son89 commented Dec 19, 2023

    @J-Son89 Have I understood the requirements correctly regarding route finding within the scope of this PR?

    The route should always be found if the user has enough assets on all networks. For instance: Given a user has the following assets: 1 ETH on the Optimism network 2 ETH on the Mainnet network When the user goes to the 'send to' page and enters 3 ETH Then the route should always be found.

    However, in the case of entering an amount higher than available, for example, '3.0001 ETH,' the route should not be found.

    Is there a minimum amount for a particular asset that determines whether a route should or should not be found?

    Or in the scope of this PR would be enough to see the route is found at least once to achieve the happy path?

    Hey @VolodLytvynenko -
    this pr adds the most basic support for route finding and at that it is the happy path for this.

    i.e It is mostly just for Ethereum tokens (other tokens should work too), It is only a single token transaction, i.e you are sending eth so you will then pay gas in eth and not in other tokens.
    In this case it is just a happy path to find that a route has been found.

    The amount entered is in crypto, we will handle the fiat conversion in another issue too.

    @VolodLytvynenko
    Copy link
    Contributor

    @briansztamfater @J-Son89 No issues from my side. The happy flow works. Follow ups I will add separately Ready to be merged

    Signed-off-by: Brian Sztamfater <brian@status.im>
    @J-Son89 J-Son89 force-pushed the feat/suggested-routes branch from 05fd97e to e541a2a Compare December 19, 2023 10:47
    @J-Son89 J-Son89 merged commit a4f99de into develop Dec 19, 2023
    6 checks passed
    @J-Son89 J-Son89 deleted the feat/suggested-routes branch December 19, 2023 11:00
    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.

    Load suggested routes on the Send flow
    8 participants