status-im / status-mobile

a free (libre) open source, mobile OS for Ethereum
https://status.app
Mozilla Public License 2.0
3.91k stars 984 forks source link

[#21476] Rework login and logout flow to always use biometrics #21628

Closed ulisesmac closed 1 day ago

ulisesmac commented 1 week ago

fixes #21476

Summary

This PR implements the new flow defined in figma

Important changes

Moved the ns legacy.status-im.multiaccounts.logout.core to status-im.contexts.profile.logout.events and renamed its events consistently and analogous to our login events, additionally, it doesn't use rf/defn since it's deprecated.

This PR uses dispatch-sync to properly trigger updates on the react state when a user presses a profile to log-in. Here are videos showing the difference, look at the profile card:

https://github.com/user-attachments/assets/2dc17f23-44ef-42c3-8a7a-1d78d19afd19

https://github.com/user-attachments/assets/d92599f0-1092-4677-a570-ab8c9aeb0543

Additional fixes

To make the review easier, the changes not fully related to the feature had been split into two PRs:

  1. Code style improvements found while solving this issue:
  1. Partially solves

    • 21241

    in:

Testing notes

Please test the authentication flows, mainly logging in and logging out, but also changing the password and enabling/disabling biometrics on both Android and iOS.

Platforms

status: ready

status-im-auto commented 1 week ago

Jenkins Builds

Click to see older builds (36) | :grey_question: | Commit | :hash: | Finished (UTC) | Duration | Platform | Result | |-|-|-|-|-|-|-| | :heavy_check_mark: | 9c44fd63 | [#1](https://ci.status.im/job/status-mobile/job/prs/job/tests/job/PR-21628/1/) | 2024-11-14 17:52:07 | ~4 min | `tests` | [:page_facing_up:`log`](https://status-im-mobile-prs.ams3.cdn.digitaloceanspaces.com/StatusIm-Mobile-241114-174724-9c44fd-pr21628-tests.log) | | :heavy_check_mark: | 9c44fd63 | [#1](https://ci.status.im/job/status-mobile/job/prs/job/android-e2e/job/PR-21628/1/) | 2024-11-14 17:55:39 | ~8 min | `android-e2e` | [:robot:`apk`](https://status-im-mobile-prs.ams3.cdn.digitaloceanspaces.com/StatusIm-Mobile-241114-174719-9c44fd-pr21628-x86_64.apk) [:calling:](https://chart.apis.google.com/chart?cht=qr&chs=400x400&chld=L%7C%0A1&chl=https%3A%2F%2Fstatus-im-mobile-prs.ams3.cdn.digitaloceanspaces.com%2FStatusIm-Mobile-241114-174719-9c44fd-pr21628-x86_64.apk)| | :heavy_check_mark: | 9c44fd63 | [#1](https://ci.status.im/job/status-mobile/job/prs/job/android/job/PR-21628/1/) | 2024-11-14 17:55:53 | ~8 min | `android` | [:robot:`apk`](https://status-im-mobile-prs.ams3.cdn.digitaloceanspaces.com/StatusIm-Mobile-241114-174719-9c44fd-pr21628-arm64-v8a.apk) [:calling:](https://chart.apis.google.com/chart?cht=qr&chs=400x400&chld=L%7C%0A1&chl=https%3A%2F%2Fstatus-im-mobile-prs.ams3.cdn.digitaloceanspaces.com%2FStatusIm-Mobile-241114-174719-9c44fd-pr21628-arm64-v8a.apk)| | :heavy_check_mark: | 9c44fd63 | [#1](https://ci.status.im/job/status-mobile/job/prs/job/ios/job/PR-21628/1/) | 2024-11-14 17:57:05 | ~9 min | `ios` | [:iphone:`ipa`](https://i.diawi.com/KeWCj7) [:calling:](https://chart.apis.google.com/chart?cht=qr&chs=400x400&chld=L%7C%0A1&chl=https%3A%2F%2Fi.diawi.com%2FKeWCj7)| | | | | | | | | | :heavy_check_mark: | 7be1be9b | [#2](https://ci.status.im/job/status-mobile/job/prs/job/tests/job/PR-21628/2/) | 2024-11-18 10:42:29 | ~4 min | `tests` | [:page_facing_up:`log`](https://status-im-mobile-prs.ams3.cdn.digitaloceanspaces.com/StatusIm-Mobile-241118-103806-7be1be-pr21628-tests.log) | | :heavy_check_mark: | 7be1be9b | [#2](https://ci.status.im/job/status-mobile/job/prs/job/android-e2e/job/PR-21628/2/) | 2024-11-18 10:46:44 | ~8 min | `android-e2e` | [:robot:`apk`](https://status-im-mobile-prs.ams3.cdn.digitaloceanspaces.com/StatusIm-Mobile-241118-103801-7be1be-pr21628-x86_64.apk) [:calling:](https://chart.apis.google.com/chart?cht=qr&chs=400x400&chld=L%7C%0A1&chl=https%3A%2F%2Fstatus-im-mobile-prs.ams3.cdn.digitaloceanspaces.com%2FStatusIm-Mobile-241118-103801-7be1be-pr21628-x86_64.apk)| | :heavy_check_mark: | 7be1be9b | [#2](https://ci.status.im/job/status-mobile/job/prs/job/android/job/PR-21628/2/) | 2024-11-18 10:47:05 | ~9 min | `android` | [:robot:`apk`](https://status-im-mobile-prs.ams3.cdn.digitaloceanspaces.com/StatusIm-Mobile-241118-103801-7be1be-pr21628-arm64-v8a.apk) [:calling:](https://chart.apis.google.com/chart?cht=qr&chs=400x400&chld=L%7C%0A1&chl=https%3A%2F%2Fstatus-im-mobile-prs.ams3.cdn.digitaloceanspaces.com%2FStatusIm-Mobile-241118-103801-7be1be-pr21628-arm64-v8a.apk)| | :heavy_check_mark: | 7be1be9b | [#2](https://ci.status.im/job/status-mobile/job/prs/job/ios/job/PR-21628/2/) | 2024-11-18 10:47:24 | ~9 min | `ios` | [:iphone:`ipa`](https://i.diawi.com/4PmvRs) [:calling:](https://chart.apis.google.com/chart?cht=qr&chs=400x400&chld=L%7C%0A1&chl=https%3A%2F%2Fi.diawi.com%2F4PmvRs)| | | | | | | | | | :heavy_check_mark: | 70f7f64d | [#3](https://ci.status.im/job/status-mobile/job/prs/job/tests/job/PR-21628/3/) | 2024-11-19 01:56:04 | ~4 min | `tests` | [:page_facing_up:`log`](https://status-im-mobile-prs.ams3.cdn.digitaloceanspaces.com/StatusIm-Mobile-241119-015139-70f7f6-pr21628-tests.log) | | :heavy_check_mark: | 70f7f64d | [#3](https://ci.status.im/job/status-mobile/job/prs/job/android-e2e/job/PR-21628/3/) | 2024-11-19 01:59:33 | ~7 min | `android-e2e` | [:robot:`apk`](https://status-im-mobile-prs.ams3.cdn.digitaloceanspaces.com/StatusIm-Mobile-241119-015134-70f7f6-pr21628-x86_64.apk) [:calling:](https://chart.apis.google.com/chart?cht=qr&chs=400x400&chld=L%7C%0A1&chl=https%3A%2F%2Fstatus-im-mobile-prs.ams3.cdn.digitaloceanspaces.com%2FStatusIm-Mobile-241119-015134-70f7f6-pr21628-x86_64.apk)| | :heavy_check_mark: | 70f7f64d | [#3](https://ci.status.im/job/status-mobile/job/prs/job/android/job/PR-21628/3/) | 2024-11-19 02:00:09 | ~8 min | `android` | [:robot:`apk`](https://status-im-mobile-prs.ams3.cdn.digitaloceanspaces.com/StatusIm-Mobile-241119-015134-70f7f6-pr21628-arm64-v8a.apk) [:calling:](https://chart.apis.google.com/chart?cht=qr&chs=400x400&chld=L%7C%0A1&chl=https%3A%2F%2Fstatus-im-mobile-prs.ams3.cdn.digitaloceanspaces.com%2FStatusIm-Mobile-241119-015134-70f7f6-pr21628-arm64-v8a.apk)| | :heavy_check_mark: | 70f7f64d | [#3](https://ci.status.im/job/status-mobile/job/prs/job/ios/job/PR-21628/3/) | 2024-11-19 02:00:27 | ~8 min | `ios` | [:iphone:`ipa`](https://i.diawi.com/CzL6ph) [:calling:](https://chart.apis.google.com/chart?cht=qr&chs=400x400&chld=L%7C%0A1&chl=https%3A%2F%2Fi.diawi.com%2FCzL6ph)| | | | | | | | | | :heavy_check_mark: | ca3973bf | [#4](https://ci.status.im/job/status-mobile/job/prs/job/tests/job/PR-21628/4/) | 2024-11-19 02:20:54 | ~4 min | `tests` | [:page_facing_up:`log`](https://status-im-mobile-prs.ams3.cdn.digitaloceanspaces.com/StatusIm-Mobile-241119-021629-ca3973-pr21628-tests.log) | | :heavy_check_mark: | ca3973bf | [#4](https://ci.status.im/job/status-mobile/job/prs/job/android-e2e/job/PR-21628/4/) | 2024-11-19 02:24:26 | ~8 min | `android-e2e` | [:robot:`apk`](https://status-im-mobile-prs.ams3.cdn.digitaloceanspaces.com/StatusIm-Mobile-241119-021625-ca3973-pr21628-x86_64.apk) [:calling:](https://chart.apis.google.com/chart?cht=qr&chs=400x400&chld=L%7C%0A1&chl=https%3A%2F%2Fstatus-im-mobile-prs.ams3.cdn.digitaloceanspaces.com%2FStatusIm-Mobile-241119-021625-ca3973-pr21628-x86_64.apk)| | :heavy_check_mark: | ca3973bf | [#4](https://ci.status.im/job/status-mobile/job/prs/job/android/job/PR-21628/4/) | 2024-11-19 02:24:58 | ~8 min | `android` | [:robot:`apk`](https://status-im-mobile-prs.ams3.cdn.digitaloceanspaces.com/StatusIm-Mobile-241119-021627-ca3973-pr21628-arm64-v8a.apk) [:calling:](https://chart.apis.google.com/chart?cht=qr&chs=400x400&chld=L%7C%0A1&chl=https%3A%2F%2Fstatus-im-mobile-prs.ams3.cdn.digitaloceanspaces.com%2FStatusIm-Mobile-241119-021627-ca3973-pr21628-arm64-v8a.apk)| | :heavy_check_mark: | ca3973bf | [#4](https://ci.status.im/job/status-mobile/job/prs/job/ios/job/PR-21628/4/) | 2024-11-19 02:25:20 | ~8 min | `ios` | [:iphone:`ipa`](https://i.diawi.com/sn3arM) [:calling:](https://chart.apis.google.com/chart?cht=qr&chs=400x400&chld=L%7C%0A1&chl=https%3A%2F%2Fi.diawi.com%2Fsn3arM)| | | | | | | | | | :heavy_check_mark: | b3da606b | [#5](https://ci.status.im/job/status-mobile/job/prs/job/tests/job/PR-21628/5/) | 2024-11-19 03:19:52 | ~4 min | `tests` | [:page_facing_up:`log`](https://status-im-mobile-prs.ams3.cdn.digitaloceanspaces.com/StatusIm-Mobile-241119-031539-b3da60-pr21628-tests.log) | | :heavy_check_mark: | b3da606b | [#5](https://ci.status.im/job/status-mobile/job/prs/job/android-e2e/job/PR-21628/5/) | 2024-11-19 03:22:36 | ~7 min | `android-e2e` | [:robot:`apk`](https://status-im-mobile-prs.ams3.cdn.digitaloceanspaces.com/StatusIm-Mobile-241119-031535-b3da60-pr21628-x86_64.apk) [:calling:](https://chart.apis.google.com/chart?cht=qr&chs=400x400&chld=L%7C%0A1&chl=https%3A%2F%2Fstatus-im-mobile-prs.ams3.cdn.digitaloceanspaces.com%2FStatusIm-Mobile-241119-031535-b3da60-pr21628-x86_64.apk)| | :heavy_check_mark: | b3da606b | [#5](https://ci.status.im/job/status-mobile/job/prs/job/ios/job/PR-21628/5/) | 2024-11-19 03:24:23 | ~8 min | `ios` | [:iphone:`ipa`](https://i.diawi.com/QFfhfz) [:calling:](https://chart.apis.google.com/chart?cht=qr&chs=400x400&chld=L%7C%0A1&chl=https%3A%2F%2Fi.diawi.com%2FQFfhfz)| | :heavy_check_mark: | b3da606b | [#5](https://ci.status.im/job/status-mobile/job/prs/job/android/job/PR-21628/5/) | 2024-11-19 03:30:15 | ~14 min | `android` | [:robot:`apk`](https://status-im-mobile-prs.ams3.cdn.digitaloceanspaces.com/StatusIm-Mobile-241119-031535-b3da60-pr21628-arm64-v8a.apk) [:calling:](https://chart.apis.google.com/chart?cht=qr&chs=400x400&chld=L%7C%0A1&chl=https%3A%2F%2Fstatus-im-mobile-prs.ams3.cdn.digitaloceanspaces.com%2FStatusIm-Mobile-241119-031535-b3da60-pr21628-arm64-v8a.apk)| | | | | | | | | | :heavy_check_mark: | 04b10bf4 | [#6](https://ci.status.im/job/status-mobile/job/prs/job/tests/job/PR-21628/6/) | 2024-11-19 14:42:49 | ~5 min | `tests` | [:page_facing_up:`log`](https://status-im-mobile-prs.ams3.cdn.digitaloceanspaces.com/StatusIm-Mobile-241119-143739-04b10b-pr21628-tests.log) | | :heavy_check_mark: | 04b10bf4 | [#6](https://ci.status.im/job/status-mobile/job/prs/job/android/job/PR-21628/6/) | 2024-11-19 14:44:54 | ~7 min | `android` | [:robot:`apk`](https://status-im-mobile-prs.ams3.cdn.digitaloceanspaces.com/StatusIm-Mobile-241119-143739-04b10b-pr21628-arm64-v8a.apk) [:calling:](https://chart.apis.google.com/chart?cht=qr&chs=400x400&chld=L%7C%0A1&chl=https%3A%2F%2Fstatus-im-mobile-prs.ams3.cdn.digitaloceanspaces.com%2FStatusIm-Mobile-241119-143739-04b10b-pr21628-arm64-v8a.apk)| | :heavy_check_mark: | 04b10bf4 | [#6](https://ci.status.im/job/status-mobile/job/prs/job/android-e2e/job/PR-21628/6/) | 2024-11-19 14:45:40 | ~8 min | `android-e2e` | [:robot:`apk`](https://status-im-mobile-prs.ams3.cdn.digitaloceanspaces.com/StatusIm-Mobile-241119-143739-04b10b-pr21628-x86_64.apk) [:calling:](https://chart.apis.google.com/chart?cht=qr&chs=400x400&chld=L%7C%0A1&chl=https%3A%2F%2Fstatus-im-mobile-prs.ams3.cdn.digitaloceanspaces.com%2FStatusIm-Mobile-241119-143739-04b10b-pr21628-x86_64.apk)| | :heavy_check_mark: | 04b10bf4 | [#6](https://ci.status.im/job/status-mobile/job/prs/job/ios/job/PR-21628/6/) | 2024-11-19 14:46:51 | ~9 min | `ios` | [:iphone:`ipa`](https://i.diawi.com/KgbtYB) [:calling:](https://chart.apis.google.com/chart?cht=qr&chs=400x400&chld=L%7C%0A1&chl=https%3A%2F%2Fi.diawi.com%2FKgbtYB)| | | | | | | | | | :x: | d9b5ae7f | [#7](https://ci.status.im/job/status-mobile/job/prs/job/tests/job/PR-21628/7/) | 2024-11-19 17:27:10 | ~2 min | `tests` | [:page_facing_up:`log`](https://ci.status.im/job/status-mobile/job/prs/job/tests/job/PR-21628/7/consoleText) | | :heavy_check_mark: | d9b5ae7f | [#7](https://ci.status.im/job/status-mobile/job/prs/job/android-e2e/job/PR-21628/7/) | 2024-11-19 17:32:38 | ~7 min | `android-e2e` | [:robot:`apk`](https://status-im-mobile-prs.ams3.cdn.digitaloceanspaces.com/StatusIm-Mobile-241119-172439-d9b5ae-pr21628-x86_64.apk) [:calling:](https://chart.apis.google.com/chart?cht=qr&chs=400x400&chld=L%7C%0A1&chl=https%3A%2F%2Fstatus-im-mobile-prs.ams3.cdn.digitaloceanspaces.com%2FStatusIm-Mobile-241119-172439-d9b5ae-pr21628-x86_64.apk)| | :heavy_check_mark: | d9b5ae7f | [#7](https://ci.status.im/job/status-mobile/job/prs/job/android/job/PR-21628/7/) | 2024-11-19 17:33:10 | ~8 min | `android` | [:robot:`apk`](https://status-im-mobile-prs.ams3.cdn.digitaloceanspaces.com/StatusIm-Mobile-241119-172439-d9b5ae-pr21628-arm64-v8a.apk) [:calling:](https://chart.apis.google.com/chart?cht=qr&chs=400x400&chld=L%7C%0A1&chl=https%3A%2F%2Fstatus-im-mobile-prs.ams3.cdn.digitaloceanspaces.com%2FStatusIm-Mobile-241119-172439-d9b5ae-pr21628-arm64-v8a.apk)| | :heavy_check_mark: | d9b5ae7f | [#7](https://ci.status.im/job/status-mobile/job/prs/job/ios/job/PR-21628/7/) | 2024-11-19 17:34:01 | ~9 min | `ios` | [:iphone:`ipa`](https://i.diawi.com/SpHyUr) [:calling:](https://chart.apis.google.com/chart?cht=qr&chs=400x400&chld=L%7C%0A1&chl=https%3A%2F%2Fi.diawi.com%2FSpHyUr)| | | | | | | | | | :x: | ca664474 | [#11](https://ci.status.im/job/status-mobile/job/prs/job/tests/job/PR-21628/11/) | 2024-11-19 19:27:24 | ~2 min | `tests` | [:page_facing_up:`log`](https://ci.status.im/job/status-mobile/job/prs/job/tests/job/PR-21628/11/consoleText) | | :heavy_check_mark: | ca664474 | [#11](https://ci.status.im/job/status-mobile/job/prs/job/android-e2e/job/PR-21628/11/) | 2024-11-19 19:31:18 | ~6 min | `android-e2e` | [:robot:`apk`](https://status-im-mobile-prs.ams3.cdn.digitaloceanspaces.com/StatusIm-Mobile-241119-192430-ca6644-pr21628-x86_64.apk) [:calling:](https://chart.apis.google.com/chart?cht=qr&chs=400x400&chld=L%7C%0A1&chl=https%3A%2F%2Fstatus-im-mobile-prs.ams3.cdn.digitaloceanspaces.com%2FStatusIm-Mobile-241119-192430-ca6644-pr21628-x86_64.apk)| | :heavy_check_mark: | ca664474 | [#11](https://ci.status.im/job/status-mobile/job/prs/job/android/job/PR-21628/11/) | 2024-11-19 19:31:44 | ~7 min | `android` | [:robot:`apk`](https://status-im-mobile-prs.ams3.cdn.digitaloceanspaces.com/StatusIm-Mobile-241119-192434-ca6644-pr21628-arm64-v8a.apk) [:calling:](https://chart.apis.google.com/chart?cht=qr&chs=400x400&chld=L%7C%0A1&chl=https%3A%2F%2Fstatus-im-mobile-prs.ams3.cdn.digitaloceanspaces.com%2FStatusIm-Mobile-241119-192434-ca6644-pr21628-arm64-v8a.apk)| | :heavy_check_mark: | ca664474 | [#11](https://ci.status.im/job/status-mobile/job/prs/job/ios/job/PR-21628/11/) | 2024-11-19 19:33:21 | ~8 min | `ios` | [:iphone:`ipa`](https://i.diawi.com/GaefPA) [:calling:](https://chart.apis.google.com/chart?cht=qr&chs=400x400&chld=L%7C%0A1&chl=https%3A%2F%2Fi.diawi.com%2FGaefPA)| | | | | | | | | | :heavy_check_mark: | 6080cefb | [#13](https://ci.status.im/job/status-mobile/job/prs/job/tests/job/PR-21628/13/) | 2024-11-19 20:05:41 | ~4 min | `tests` | [:page_facing_up:`log`](https://status-im-mobile-prs.ams3.cdn.digitaloceanspaces.com/StatusIm-Mobile-241119-200059-6080ce-pr21628-tests.log) | | :heavy_check_mark: | 6080cefb | [#13](https://ci.status.im/job/status-mobile/job/prs/job/android/job/PR-21628/13/) | 2024-11-19 20:08:25 | ~7 min | `android` | [:robot:`apk`](https://status-im-mobile-prs.ams3.cdn.digitaloceanspaces.com/StatusIm-Mobile-241119-200059-6080ce-pr21628-arm64-v8a.apk) [:calling:](https://chart.apis.google.com/chart?cht=qr&chs=400x400&chld=L%7C%0A1&chl=https%3A%2F%2Fstatus-im-mobile-prs.ams3.cdn.digitaloceanspaces.com%2FStatusIm-Mobile-241119-200059-6080ce-pr21628-arm64-v8a.apk)| | :heavy_check_mark: | 6080cefb | [#13](https://ci.status.im/job/status-mobile/job/prs/job/android-e2e/job/PR-21628/13/) | 2024-11-19 20:08:39 | ~7 min | `android-e2e` | [:robot:`apk`](https://status-im-mobile-prs.ams3.cdn.digitaloceanspaces.com/StatusIm-Mobile-241119-200055-6080ce-pr21628-x86_64.apk) [:calling:](https://chart.apis.google.com/chart?cht=qr&chs=400x400&chld=L%7C%0A1&chl=https%3A%2F%2Fstatus-im-mobile-prs.ams3.cdn.digitaloceanspaces.com%2FStatusIm-Mobile-241119-200055-6080ce-pr21628-x86_64.apk)| | | | | | | | | | :x: | 7009e1ec | [#14](https://ci.status.im/job/status-mobile/job/prs/job/tests/job/PR-21628/14/) | 2024-11-19 20:13:02 | ~3 min | `tests` | [:page_facing_up:`log`](https://ci.status.im/job/status-mobile/job/prs/job/tests/job/PR-21628/14/consoleText) |
:grey_question: Commit :hash: Finished (UTC) Duration Platform Result
:heavy_check_mark: 037af86c #15 2024-11-19 20:19:58 ~4 min tests :page_facing_up:log
:heavy_check_mark: 037af86c #15 2024-11-19 20:21:37 ~6 min android-e2e :robot:apk :calling:
:heavy_check_mark: 037af86c #15 2024-11-19 20:23:28 ~8 min android :robot:apk :calling:
:heavy_check_mark: 037af86c #15 2024-11-19 20:24:21 ~9 min ios :iphone:ipa :calling:
:heavy_check_mark: 368bfbea #16 2024-11-20 18:49:52 ~4 min tests :page_facing_up:log
:heavy_check_mark: 368bfbea #16 2024-11-20 18:52:37 ~7 min android :robot:apk :calling:
:heavy_check_mark: 368bfbea #16 2024-11-20 18:53:05 ~8 min android-e2e :robot:apk :calling:
:heavy_check_mark: 368bfbea #16 2024-11-20 18:54:55 ~9 min ios :iphone:ipa :calling:
status-im-auto commented 1 week ago

25% of end-end tests have passed

Total executed tests: 8
Failed tests: 5
Expected to fail tests: 1
Passed tests: 2
IDs of failed tests: 727230,727231,740490,727229,703133 
IDs of expected to fail tests: 702843 

Failed tests (5)

Click to expand
  • Rerun failed tests

  • Class TestWalletOneDevice:

    1. test_wallet_add_remove_regular_account, id: 727231

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

    ``` critical/test_wallet.py:255: in test_wallet_add_remove_regular_account self.wallet_view.add_regular_account(account_name=new_account_name) ../views/wallet_view.py:161: in add_regular_account self.add_account_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: `add-account` is not found on the screen; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors#no-such-element-exception ```

    2. test_wallet_balance_mainnet, id: 740490

    Device 1: Tap on found: Button
    ## Sign in (password: qwerty1234)

    ``` critical/test_wallet.py:219: in test_wallet_balance_mainnet self.sign_in_view.sign_in() ../views/sign_in_view.py:342: in sign_in self.password_input.wait_for_visibility_of_element(10) ../views/base_element.py:147: in wait_for_visibility_of_element raise TimeoutException( Device 1: EditBox by accessibility id:`password-input` is not found on the screen after wait_for_visibility_of_element ```

    Class TestCommunityOneDeviceMerged:

    1. test_restore_multiaccount_with_waku_backup_remove_profile_switch, id: 703133

    ## Recover access(password:qwerty1234, keycard:False)
    Device 1: Wait for element `Button` for max 20s and click when it is available

    ``` critical/chats/test_public_chat_browsing.py:161: in test_restore_multiaccount_with_waku_backup_remove_profile_switch self.sign_in.recover_access(passphrase=waku_user.seed, second_user=True) ../views/sign_in_view.py:298: in recover_access self.show_profiles_button.wait_and_click(20) ../views/base_element.py:100: in wait_and_click self.wait_for_visibility_of_element(sec) ../views/base_element.py:147: in wait_for_visibility_of_element raise TimeoutException( Device 1: Button by accessibility id:`show-profiles` is not found on the screen after wait_for_visibility_of_element ```

    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 `Button` by `xpath`: `//android.view.ViewGroup[contains(@content-desc,'Account 1')]`

    ``` critical/test_wallet.py:163: 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:42: in _get_balances_before_tx self.wallet_1.get_account_element().click() ../views/base_element.py:90: in click element = self.find_element() ../views/base_element.py:79: in find_element raise NoSuchElementException( Device 1: Button by xpath: `//android.view.ViewGroup[contains(@content-desc,'Account 1')]` is not found on the screen; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors#no-such-element-exception ```

    2. test_wallet_send_eth, id: 727229

    ## Sign in (password: qwerty1234)
    ## Sign in (password: qwerty1234)

    ``` critical/test_wallet.py:146: in test_wallet_send_eth self._check_balances_after_tx(amount_to_send, sender_balance, receiver_balance, eth_amount_sender, critical/test_wallet.py:85: in _check_balances_after_tx self.loop.run_until_complete( /usr/lib/python3.10/asyncio/base_events.py:649: in run_until_complete return future.result() __init__.py:52: 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) ../views/base_view.py:713: in reopen_app sign_in_view.sign_in(password) ../views/sign_in_view.py:342: in sign_in self.password_input.wait_for_visibility_of_element(10) ../views/base_element.py:147: in wait_for_visibility_of_element raise TimeoutException( Device 1: EditBox by accessibility id:`password-input` is not found on the screen after wait_for_visibility_of_element ```

    Expected to fail tests (1)

    Click to expand

    Class TestCommunityMultipleDeviceMerged:

    1. test_community_message_edit, id: 702843
    ``` Test is not run, e2e blocker ``` [[reason: [NOTRUN] Skipped due to waku issue on staging fleet]]

    Passed tests (2)

    Click to expand

    Class TestCommunityOneDeviceMerged:

    1. test_community_copy_and_paste_message_in_chat_input, id: 702742
    Device sessions

    Class TestOneToOneChatMultipleSharedDevicesNewUi:

    1. test_1_1_chat_non_latin_messages_stack_update_profile_photo, id: 702745
    Device sessions

    VolodLytvynenko commented 1 week ago

    Hi @yevh-berdnyk, could you take a look at the E2E tests in this PR? The flow has changed, which seems to have broken our E2E runs.

    VolodLytvynenko commented 1 week ago

    unassigning myself from this PR. Face id has broken on my ios :(

    status-im-auto commented 1 week ago

    25% of end-end tests have passed

    Total executed tests: 8
    Failed tests: 5
    Expected to fail tests: 1
    Passed tests: 2
    IDs of failed tests: 727230,727231,740490,727229,703133 
    IDs of expected to fail tests: 702843 

    Failed tests (5)

    Click to expand
  • Rerun failed tests

  • Class TestWalletMultipleDevice:

    1. test_wallet_send_asset_from_drawer, id: 727230

    # STEP: Getting ETH amount in the wallet of the sender before transaction
    Device 1: Find `Button` by `xpath`: `//android.view.ViewGroup[contains(@content-desc,'Account 1')]`

    ``` critical/test_wallet.py:163: 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:42: in _get_balances_before_tx self.wallet_1.get_account_element().click() ../views/base_element.py:90: in click element = self.find_element() ../views/base_element.py:79: in find_element raise NoSuchElementException( Device 1: Button by xpath: `//android.view.ViewGroup[contains(@content-desc,'Account 1')]` is not found on the screen; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors#no-such-element-exception ```

    2. test_wallet_send_eth, id: 727229

    ## Sign in (password: qwerty1234)
    ## Sign in (password: qwerty1234)

    ``` critical/test_wallet.py:146: in test_wallet_send_eth self._check_balances_after_tx(amount_to_send, sender_balance, receiver_balance, eth_amount_sender, critical/test_wallet.py:85: in _check_balances_after_tx self.loop.run_until_complete( /usr/lib/python3.10/asyncio/base_events.py:649: in run_until_complete return future.result() __init__.py:52: 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) ../views/base_view.py:713: in reopen_app sign_in_view.sign_in(password) ../views/sign_in_view.py:342: in sign_in self.password_input.wait_for_visibility_of_element(10) ../views/base_element.py:147: in wait_for_visibility_of_element raise TimeoutException( Device 1: EditBox by accessibility id:`password-input` is not found on the screen after wait_for_visibility_of_element ```

    Class TestCommunityOneDeviceMerged:

    1. test_restore_multiaccount_with_waku_backup_remove_profile_switch, id: 703133

    ## Recover access(password:qwerty1234, keycard:False)
    Device 1: Wait for element `Button` for max 20s and click when it is available

    ``` critical/chats/test_public_chat_browsing.py:161: in test_restore_multiaccount_with_waku_backup_remove_profile_switch self.sign_in.recover_access(passphrase=waku_user.seed, second_user=True) ../views/sign_in_view.py:298: in recover_access self.show_profiles_button.wait_and_click(20) ../views/base_element.py:100: in wait_and_click self.wait_for_visibility_of_element(sec) ../views/base_element.py:147: in wait_for_visibility_of_element raise TimeoutException( Device 1: Button by accessibility id:`show-profiles` is not found on the screen after wait_for_visibility_of_element ```

    Device sessions

    Class TestWalletOneDevice:

    1. test_wallet_add_remove_regular_account, id: 727231

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

    ``` critical/test_wallet.py:255: in test_wallet_add_remove_regular_account self.wallet_view.add_regular_account(account_name=new_account_name) ../views/wallet_view.py:161: in add_regular_account self.add_account_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: `add-account` is not found on the screen; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors#no-such-element-exception ```

    2. test_wallet_balance_mainnet, id: 740490

    Device 1: Tap on found: Button
    ## Sign in (password: qwerty1234)

    ``` critical/test_wallet.py:219: in test_wallet_balance_mainnet self.sign_in_view.sign_in() ../views/sign_in_view.py:342: in sign_in self.password_input.wait_for_visibility_of_element(10) ../views/base_element.py:147: in wait_for_visibility_of_element raise TimeoutException( Device 1: EditBox by accessibility id:`password-input` is not found on the screen after wait_for_visibility_of_element ```

    Expected to fail tests (1)

    Click to expand

    Class TestCommunityMultipleDeviceMerged:

    1. test_community_message_edit, id: 702843
    ``` Test is not run, e2e blocker ``` [[reason: [NOTRUN] Skipped due to waku issue on staging fleet]]

    Passed tests (2)

    Click to expand

    Class TestOneToOneChatMultipleSharedDevicesNewUi:

    1. test_1_1_chat_non_latin_messages_stack_update_profile_photo, id: 702745
    Device sessions

    Class TestCommunityOneDeviceMerged:

    1. test_community_copy_and_paste_message_in_chat_input, id: 702742
    Device sessions

    status-im-auto commented 3 days ago

    50% of end-end tests have passed

    Total executed tests: 8
    Failed tests: 3
    Expected to fail tests: 1
    Passed tests: 4
    IDs of failed tests: 727230,703133,727229 
    IDs of expected to fail tests: 702843 

    Failed tests (3)

    Click to expand
  • Rerun failed tests

  • Class TestWalletMultipleDevice:

    1. test_wallet_send_asset_from_drawer, id: 727230

    # STEP: Getting ETH amount in the wallet of the sender before transaction
    Device 1: Find `Button` by `xpath`: `//android.view.ViewGroup[contains(@content-desc,'Account 1')]`

    ``` critical/test_wallet.py:163: 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:42: in _get_balances_before_tx self.wallet_1.get_account_element().click() ../views/base_element.py:90: in click element = self.find_element() ../views/base_element.py:79: in find_element raise NoSuchElementException( Device 1: Button by xpath: `//android.view.ViewGroup[contains(@content-desc,'Account 1')]` is not found on the screen; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors#no-such-element-exception ```

    2. test_wallet_send_eth, id: 727229

    ## Sign in (password: qwerty1234)
    Device 2: Getting username card by 'qwerty1234'

    ``` critical/test_wallet.py:146: in test_wallet_send_eth self._check_balances_after_tx(amount_to_send, sender_balance, receiver_balance, eth_amount_sender, critical/test_wallet.py:85: in _check_balances_after_tx self.loop.run_until_complete( /usr/lib/python3.10/asyncio/base_events.py:649: in run_until_complete return future.result() __init__.py:52: 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) ../views/base_view.py:713: in reopen_app sign_in_view.sign_in(password) ../views/sign_in_view.py:342: in sign_in self.get_user_profile_by_name(user_name).click() ../views/sign_in_view.py:406: in get_user_profile_by_name return expected_element if expected_element.is_element_displayed(10) else self.driver.fail( base_test_case.py:180: in fail pytest.fail('Device %s: %s' % (self.number, text)) Device 1: User qwerty1234 is not found! ```

    Class TestCommunityOneDeviceMerged:

    1. test_restore_multiaccount_with_waku_backup_remove_profile_switch, id: 703133

    ## Recover access(password:qwerty1234, keycard:False)
    Device 1: Wait for element `Button` for max 20s and click when it is available

    ``` critical/chats/test_public_chat_browsing.py:161: in test_restore_multiaccount_with_waku_backup_remove_profile_switch self.sign_in.recover_access(passphrase=waku_user.seed, second_user=True) ../views/sign_in_view.py:298: in recover_access self.show_profiles_button.wait_and_click(20) ../views/base_element.py:100: in wait_and_click self.wait_for_visibility_of_element(sec) ../views/base_element.py:147: in wait_for_visibility_of_element raise TimeoutException( Device 1: Button by accessibility id:`show-profiles` is not found on the screen after wait_for_visibility_of_element ```

    Device sessions

    Expected to fail tests (1)

    Click to expand

    Class TestCommunityMultipleDeviceMerged:

    1. test_community_message_edit, id: 702843
    ``` Test is not run, e2e blocker ``` [[reason: [NOTRUN] Skipped due to waku issue on staging fleet]]

    Passed tests (4)

    Click to expand

    Class TestOneToOneChatMultipleSharedDevicesNewUi:

    1. test_1_1_chat_non_latin_messages_stack_update_profile_photo, id: 702745
    Device sessions

    Class TestWalletOneDevice:

    1. test_wallet_add_remove_regular_account, id: 727231
    2. test_wallet_balance_mainnet, id: 740490

    Class TestCommunityOneDeviceMerged:

    1. test_community_copy_and_paste_message_in_chat_input, id: 702742
    Device sessions

    status-im-auto commented 3 days ago

    75% of end-end tests have passed

    Total executed tests: 8
    Failed tests: 1
    Expected to fail tests: 1
    Passed tests: 6
    IDs of failed tests: 703133 
    IDs of expected to fail tests: 702843 

    Failed tests (1)

    Click to expand
  • Rerun failed tests

  • Class TestCommunityOneDeviceMerged:

    1. test_restore_multiaccount_with_waku_backup_remove_profile_switch, id: 703133

    # STEP: Check that can login with different user
    Device 1: Wait for element `Button` for max 30s and click when it is available

    ``` critical/chats/test_public_chat_browsing.py:220: in test_restore_multiaccount_with_waku_backup_remove_profile_switch self.sign_in.show_profiles_button.wait_and_click() ../views/base_element.py:100: in wait_and_click self.wait_for_visibility_of_element(sec) ../views/base_element.py:147: in wait_for_visibility_of_element raise TimeoutException( Device 1: Button by accessibility id:`show-profiles` is not found on the screen after wait_for_visibility_of_element ```

    Device sessions

    Expected to fail tests (1)

    Click to expand

    Class TestCommunityMultipleDeviceMerged:

    1. test_community_message_edit, id: 702843
    ``` Test is not run, e2e blocker ``` [[reason: [NOTRUN] Skipped due to waku issue on staging fleet]]

    Passed tests (6)

    Click to expand

    Class TestCommunityOneDeviceMerged:

    1. test_community_copy_and_paste_message_in_chat_input, id: 702742
    Device sessions

    Class TestWalletMultipleDevice:

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

    Class TestOneToOneChatMultipleSharedDevicesNewUi:

    1. test_1_1_chat_non_latin_messages_stack_update_profile_photo, id: 702745
    Device sessions

    Class TestWalletOneDevice:

    1. test_wallet_add_remove_regular_account, id: 727231
    2. test_wallet_balance_mainnet, id: 740490
    status-im-auto commented 3 days ago

    88% of end-end tests have passed

    Total executed tests: 8
    Failed tests: 0
    Expected to fail tests: 1
    Passed tests: 7
    IDs of expected to fail tests: 702843 

    Expected to fail tests (1)

    Click to expand

    Class TestCommunityMultipleDeviceMerged:

    1. test_community_message_edit, id: 702843
    ``` Test is not run, e2e blocker ``` [[reason: [NOTRUN] Skipped due to waku issue on staging fleet]]

    Passed tests (7)

    Click to expand

    Class TestCommunityOneDeviceMerged:

    1. test_restore_multiaccount_with_waku_backup_remove_profile_switch, id: 703133
    Device sessions

    2. test_community_copy_and_paste_message_in_chat_input, id: 702742
    Device sessions

    Class TestWalletOneDevice:

    1. test_wallet_add_remove_regular_account, id: 727231
    2. test_wallet_balance_mainnet, id: 740490

    Class TestWalletMultipleDevice:

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

    Class TestOneToOneChatMultipleSharedDevicesNewUi:

    1. test_1_1_chat_non_latin_messages_stack_update_profile_photo, id: 702745
    Device sessions

    Horupa-Olena commented 3 days ago

    Switching profiles with biometrics is much better now with this PR.

    But I did notice one problem and I'm sharing the iOS screencasts @ulisesmac. The first video is 2.31 from the production build, the second video is the PR's build. In the PR build I sometimes see a loading spinner after logout, something I've never seen before after logout. When the spinner doesn't appear, I also get the impression the initial animation showing the list of profiles is clunky, unlike what's in the production build.

    Prod build https://github.com/user-attachments/assets/f9e02fdf-49ec-408f-8807-f6a54fd5bb79

    PR build https://github.com/user-attachments/assets/23fec410-55d8-4488-b9f0-2b68d9bbfc91

    @ulisesmac Thank you for your PR. The PR is ready to be merged, but this comment is still unresolved. I need to understand whether a re-test will be required or not.

    Will there be any changes to this?

    ulisesmac commented 3 days ago

    Switching profiles with biometrics is much better now with this PR. But I did notice one problem and I'm sharing the iOS screencasts @ulisesmac. The first video is 2.31 from the production build, the second video is the PR's build. In the PR build I sometimes see a loading spinner after logout, something I've never seen before after logout. When the spinner doesn't appear, I also get the impression the initial animation showing the list of profiles is clunky, unlike what's in the production build. Prod build https://github.com/user-attachments/assets/f9e02fdf-49ec-408f-8807-f6a54fd5bb79 PR build https://github.com/user-attachments/assets/23fec410-55d8-4488-b9f0-2b68d9bbfc91

    @ulisesmac Thank you for your PR. The PR is ready to be merged, but this comment is still unresolved. I need to understand whether a re-test will be required or not.

    Will there be any changes to this?

    Hi @ilmotta @Horupa-Olena

    I'm investigating this issue now. Thank you so much @ilmotta for paying attention to this detail. I'll check how to improve it, btw on Android the logout process is faster. I'll post a follow up comment with the results.

    ulisesmac commented 2 days ago

    @ilmotta @Horupa-Olena

    The implementation has been fixed and the comments solved, here's the final result of logging out.

    iOS:

    https://github.com/user-attachments/assets/d31cf5d5-21a5-487c-97c0-6aa48d061115

    Android:

    https://github.com/user-attachments/assets/00e7cf88-0146-4d09-be54-1e11c77a477e

    Horupa-Olena commented 2 days ago

    @ulisesmac Thank you for your fix! Everything looks good on my side; you can go ahead and merge this PR.