status-im / status-mobile

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

Implement Onboarding - New intro screen #21607

Closed Parveshdhull closed 1 week ago

Parveshdhull commented 2 weeks ago

fixes https://github.com/status-im/status-mobile/issues/21562 fixes https://github.com/status-im/status-mobile/issues/21561

https://github.com/user-attachments/assets/2776f640-bbc9-4b9f-beb2-e33a1da58880

status: ready

status-im-auto commented 2 weeks ago

Jenkins Builds

Click to see older builds (13) | :grey_question: | Commit | :hash: | Finished (UTC) | Duration | Platform | Result | |-|-|-|-|-|-|-| | :x: | a17ba215 | [#1](https://ci.status.im/job/status-mobile/job/prs/job/ios/job/PR-21607/1/) | 2024-11-08 09:21:00 | ~3 min | `ios` | [:page_facing_up:`log`](https://ci.status.im/job/status-mobile/job/prs/job/ios/job/PR-21607/1/consoleText) | | :heavy_check_mark: | a17ba215 | [#1](https://ci.status.im/job/status-mobile/job/prs/job/tests/job/PR-21607/1/) | 2024-11-08 09:23:25 | ~5 min | `tests` | [:page_facing_up:`log`](https://status-im-mobile-prs.ams3.cdn.digitaloceanspaces.com/StatusIm-Mobile-241108-091757-a17ba2-pr21607-tests.log) | | :heavy_check_mark: | a17ba215 | [#1](https://ci.status.im/job/status-mobile/job/prs/job/android-e2e/job/PR-21607/1/) | 2024-11-08 09:27:26 | ~9 min | `android-e2e` | [:robot:`apk`](https://status-im-mobile-prs.ams3.cdn.digitaloceanspaces.com/StatusIm-Mobile-241108-091752-a17ba2-pr21607-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-241108-091752-a17ba2-pr21607-x86_64.apk)| | :heavy_check_mark: | a17ba215 | [#1](https://ci.status.im/job/status-mobile/job/prs/job/android/job/PR-21607/1/) | 2024-11-08 09:27:37 | ~9 min | `android` | [:robot:`apk`](https://status-im-mobile-prs.ams3.cdn.digitaloceanspaces.com/StatusIm-Mobile-241108-091752-a17ba2-pr21607-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-241108-091752-a17ba2-pr21607-arm64-v8a.apk)| | | | | | | | | | :x: | acc50d3b | [#2](https://ci.status.im/job/status-mobile/job/prs/job/ios/job/PR-21607/2/) | 2024-11-08 17:16:38 | ~2 min | `ios` | [:page_facing_up:`log`](https://ci.status.im/job/status-mobile/job/prs/job/ios/job/PR-21607/2/consoleText) | | :heavy_check_mark: | acc50d3b | [#2](https://ci.status.im/job/status-mobile/job/prs/job/tests/job/PR-21607/2/) | 2024-11-08 17:18:53 | ~4 min | `tests` | [:page_facing_up:`log`](https://status-im-mobile-prs.ams3.cdn.digitaloceanspaces.com/StatusIm-Mobile-241108-171355-acc50d-pr21607-tests.log) | | :heavy_check_mark: | acc50d3b | [#2](https://ci.status.im/job/status-mobile/job/prs/job/android-e2e/job/PR-21607/2/) | 2024-11-08 17:23:06 | ~9 min | `android-e2e` | [:robot:`apk`](https://status-im-mobile-prs.ams3.cdn.digitaloceanspaces.com/StatusIm-Mobile-241108-171350-acc50d-pr21607-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-241108-171350-acc50d-pr21607-x86_64.apk)| | :heavy_check_mark: | acc50d3b | [#2](https://ci.status.im/job/status-mobile/job/prs/job/android/job/PR-21607/2/) | 2024-11-08 17:23:36 | ~9 min | `android` | [:robot:`apk`](https://status-im-mobile-prs.ams3.cdn.digitaloceanspaces.com/StatusIm-Mobile-241108-171355-acc50d-pr21607-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-241108-171355-acc50d-pr21607-arm64-v8a.apk)| | | | | | | | | | :x: | cc50a758 | [#3](https://ci.status.im/job/status-mobile/job/prs/job/ios/job/PR-21607/3/) | 2024-11-08 18:40:32 | ~2 min | `ios` | [:page_facing_up:`log`](https://ci.status.im/job/status-mobile/job/prs/job/ios/job/PR-21607/3/consoleText) | | :heavy_check_mark: | cc50a758 | [#3](https://ci.status.im/job/status-mobile/job/prs/job/tests/job/PR-21607/3/) | 2024-11-08 18:43:02 | ~5 min | `tests` | [:page_facing_up:`log`](https://status-im-mobile-prs.ams3.cdn.digitaloceanspaces.com/StatusIm-Mobile-241108-183758-cc50a7-pr21607-tests.log) | | :heavy_check_mark: | cc50a758 | [#3](https://ci.status.im/job/status-mobile/job/prs/job/android-e2e/job/PR-21607/3/) | 2024-11-08 18:46:58 | ~9 min | `android-e2e` | [:robot:`apk`](https://status-im-mobile-prs.ams3.cdn.digitaloceanspaces.com/StatusIm-Mobile-241108-183753-cc50a7-pr21607-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-241108-183753-cc50a7-pr21607-x86_64.apk)| | :heavy_check_mark: | cc50a758 | [#3](https://ci.status.im/job/status-mobile/job/prs/job/android/job/PR-21607/3/) | 2024-11-08 18:47:36 | ~9 min | `android` | [:robot:`apk`](https://status-im-mobile-prs.ams3.cdn.digitaloceanspaces.com/StatusIm-Mobile-241108-183758-cc50a7-pr21607-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-241108-183758-cc50a7-pr21607-arm64-v8a.apk)| | | | | | | | | | :heavy_check_mark: | a23171fb | [#4](https://ci.status.im/job/status-mobile/job/prs/job/tests/job/PR-21607/4/) | 2024-11-11 06:00:02 | ~4 min | `tests` | [:page_facing_up:`log`](https://status-im-mobile-prs.ams3.cdn.digitaloceanspaces.com/StatusIm-Mobile-241111-055504-a23171-pr21607-tests.log) |
:grey_question: Commit :hash: Finished (UTC) Duration Platform Result
:heavy_check_mark: 5deae470 #5 2024-11-11 06:05:44 ~4 min tests :page_facing_up:log
:heavy_check_mark: 5deae470 #5 2024-11-11 06:08:52 ~7 min android :robot:apk :calling:
:heavy_check_mark: 5deae470 #5 2024-11-11 06:09:02 ~8 min android-e2e :robot:apk :calling:
:heavy_check_mark: 5deae470 #5 2024-11-11 06:11:14 ~10 min ios :iphone:ipa :calling:
:heavy_check_mark: 028f959b #6 2024-11-12 09:41:57 ~5 min tests :page_facing_up:log
:heavy_check_mark: 028f959b #6 2024-11-12 09:46:01 ~9 min android-e2e :robot:apk :calling:
:heavy_check_mark: 028f959b #6 2024-11-12 09:46:34 ~9 min android :robot:apk :calling:
:heavy_check_mark: 028f959b #6 2024-11-12 09:46:53 ~9 min ios :iphone:ipa :calling:
status-im-auto commented 2 weeks ago

0% of end-end tests have passed

Total executed tests: 8
Failed tests: 7
Expected to fail tests: 1
Passed tests: 0
IDs of failed tests: 727230,727231,702745,702742,740490,727229,703133 
IDs of expected to fail tests: 702843 

Failed tests (7)

Click to expand
  • Rerun failed tests

  • Class TestOneToOneChatMultipleSharedDevicesNewUi:

    1. test_1_1_chat_non_latin_messages_stack_update_profile_photo, id: 702745

    ## Creating new multiaccount (password:'qwerty1234', keycard:'False', enable_notification: 'True')
    Device 2: Find `Button` by `xpath`: `//*[@content-desc='terms-privacy-checkbox-container']/*[@content-desc='checkbox-off']`

    ``` Test setup failed: critical/chats/test_1_1_public_chats.py:24: in prepare_devices self.loop.run_until_complete(run_in_parallel(((self.device_1.create_user, {'enable_notifications': True, /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/sign_in_view.py:247: in create_user self.terms_and_privacy_checkbox.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: `//*[@content-desc='terms-privacy-checkbox-container']/*[@content-desc='checkbox-off']` 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

    Class TestWalletOneDevice:

    1. test_wallet_add_remove_regular_account, id: 727231
    ``` Test setup failed: critical/test_wallet.py:210: in prepare_devices self.sign_in_view.recover_access(passphrase=self.sender['passphrase'], username=self.sender_username) ../views/sign_in_view.py:295: in recover_access self.terms_and_privacy_checkbox.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: `//*[@content-desc='terms-privacy-checkbox-container']/*[@content-desc='checkbox-off']` 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

    ## Recover access(password:qwerty1234, keycard:False)
    Device 1: Find `Button` by `xpath`: `//*[@content-desc='terms-privacy-checkbox-container']/*[@content-desc='checkbox-off']`

    ``` Test setup failed: critical/test_wallet.py:210: in prepare_devices self.sign_in_view.recover_access(passphrase=self.sender['passphrase'], username=self.sender_username) ../views/sign_in_view.py:295: in recover_access self.terms_and_privacy_checkbox.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: `//*[@content-desc='terms-privacy-checkbox-container']/*[@content-desc='checkbox-off']` 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 TestCommunityOneDeviceMerged:

    1. test_community_copy_and_paste_message_in_chat_input, id: 702742

    ## Creating new multiaccount (password:'qwerty1234', keycard:'False', enable_notification: 'False')
    Device 1: Find `Button` by `xpath`: `//*[@content-desc='terms-privacy-checkbox-container']/*[@content-desc='checkbox-off']`

    ``` Test setup failed: critical/chats/test_public_chat_browsing.py:26: in prepare_devices self.home = self.sign_in.create_user(username=self.username) ../views/sign_in_view.py:247: in create_user self.terms_and_privacy_checkbox.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: `//*[@content-desc='terms-privacy-checkbox-container']/*[@content-desc='checkbox-off']` 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_restore_multiaccount_with_waku_backup_remove_profile_switch, id: 703133
    ``` Test setup failed: critical/chats/test_public_chat_browsing.py:26: in prepare_devices self.home = self.sign_in.create_user(username=self.username) ../views/sign_in_view.py:247: in create_user self.terms_and_privacy_checkbox.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: `//*[@content-desc='terms-privacy-checkbox-container']/*[@content-desc='checkbox-off']` 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 TestWalletMultipleDevice:

    1. test_wallet_send_asset_from_drawer, id: 727230
    ``` Test setup failed: critical/test_wallet.py:28: in prepare_devices 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/sign_in_view.py:295: in recover_access self.terms_and_privacy_checkbox.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: `//*[@content-desc='terms-privacy-checkbox-container']/*[@content-desc='checkbox-off']` 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

    ## Recover access(password:qwerty1234, keycard:False)
    Device 2: Find `Button` by `xpath`: `//*[@content-desc='terms-privacy-checkbox-container']/*[@content-desc='checkbox-off']`

    ``` Test setup failed: critical/test_wallet.py:28: in prepare_devices 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/sign_in_view.py:295: in recover_access self.terms_and_privacy_checkbox.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: `//*[@content-desc='terms-privacy-checkbox-container']/*[@content-desc='checkbox-off']` 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 ```

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

    Parveshdhull commented 2 weeks ago

    It seems that we also need to update the end-to-end tests to align with the new onboarding changes. cc: @status-im/mobile-qa

    pavloburykh commented 2 weeks ago

    It seems that we also need to update the end-to-end tests to align with the new onboarding changes. cc: @status-im/mobile-qa

    Thanks for the PR and pinging @Parveshdhull

    @yevh-berdnyk could you please take a look?

    Parveshdhull commented 2 weeks ago

    have you looked if it's possible to simplify improve performance of this screen?

    Hi, For now, I’m primarily focused on UI changes to prepare the onboarding migration for 2.32.0. (Removal of code/features should give at least some performance improvement)

    Regarding the intro screen, I believe the heaviest component is the background carousel. I think In trying to make it reusable, we ended up complicating it with tangled logic and an unusual blur overlay state management. I can revisit this once the migration is complete.

    Please let me know if you have any suggestions.

    status-im-auto commented 2 weeks 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 removed user is not shown in the list anymore
    Device 1: Wait for element `Button` for max 30s and click when it is available

    ``` critical/chats/test_public_chat_browsing.py:243: 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 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

    Class TestCommunityOneDeviceMerged:

    1. test_community_copy_and_paste_message_in_chat_input, id: 702742
    Device sessions

    yevh-berdnyk commented 2 weeks ago

    UPD: not relevant

    Hi @Parveshdhull, thanks for the PR! I've updated e2e tests and now I see that one of the tests fails because of the next issue: Having 2 profiles on the device we remove one of them. After that we terminate the app, restart it and got the next screen:

    Screenshot 2024-05-23 at 19 44 04

    But we expect the remaining profile to be shown on this step. Please look at the video:

    https://github.com/user-attachments/assets/c37792b5-2b4b-4c7e-a9f0-91794d27b691

    yevh-berdnyk commented 2 weeks ago

    Hi @Parveshdhull, thanks for the PR! I've updated e2e tests and now I see that one of the tests fails because of the next issue: Having 2 profiles on the device we remove one of them. After that we terminate the app, restart it and got the next screen: Screenshot 2024-05-23 at 19 44 04 But we expect the remaining profile to be shown on this step. Please look at the video:

    2024-11-08.19.51.52.mp4

    @Parveshdhull sorry, I've missed that this screen was added in other PR and it's expected :( I'll finish with updating the tests right now

    status-im-auto commented 2 weeks 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_community_copy_and_paste_message_in_chat_input, id: 702742
    Device sessions

    2. test_restore_multiaccount_with_waku_backup_remove_profile_switch, id: 703133
    Device sessions

    Class TestWalletOneDevice:

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

    Class TestOneToOneChatMultipleSharedDevicesNewUi:

    1. test_1_1_chat_non_latin_messages_stack_update_profile_photo, id: 702745
    Device sessions

    Class TestWalletMultipleDevice:

    1. test_wallet_send_asset_from_drawer, id: 727230
    2. test_wallet_send_eth, id: 727229
    Parveshdhull commented 2 weeks ago

    hi, @Francesca-G PR is ready for design review, thank you

    Francesca-G commented 2 weeks ago

    hi, @Francesca-G PR is ready for design review, thank you

    Hello! Design isn't locked yet for this, the Figma file of the simplified onboarding is still a WIP. Please refer to Pedro for any question :)

    Parveshdhull commented 1 week ago

    We agreed that onboarding simplification PRs will be merged without a design review. Once the designs are finalized, we can review these screens and give them the final touch.

    Skipping manual QA as the PR is simple, minor, and self-tested.