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

Onboarding - New opt-in usage data screen #21655

Open
wants to merge 1 commit into
base: develop
Choose a base branch
from

Conversation

Parveshdhull
Copy link
Member

@Parveshdhull Parveshdhull commented Nov 20, 2024

fixes #21563

Testing Note

  • Please ignore illustration, it will be replaced once new illustration is ready for this screen.

status: ready for review (please postpone testing the PR until approved)

@status-im-auto
Copy link
Member

status-im-auto commented Nov 20, 2024

Jenkins Builds

Click to see older builds (28)
Commit #️⃣ Finished (UTC) Duration Platform Result
e39b878 #1 2024-11-20 16:02:34 ~3 min tests 📄log
✔️ e39b878 #1 2024-11-20 16:07:11 ~8 min android 🤖apk 📲
✔️ e39b878 #1 2024-11-20 16:07:49 ~8 min android-e2e 🤖apk 📲
✔️ e39b878 #1 2024-11-20 16:11:23 ~12 min ios 📱ipa 📲
5343fd6 #2 2024-11-23 10:36:57 ~2 min tests 📄log
✔️ 5343fd6 #2 2024-11-23 10:40:54 ~6 min android-e2e 🤖apk 📲
✔️ 5343fd6 #2 2024-11-23 10:42:09 ~8 min android 🤖apk 📲
✔️ 5343fd6 #2 2024-11-23 10:43:22 ~9 min ios 📱ipa 📲
cbee168 #3 2024-11-23 11:54:04 ~2 min tests 📄log
✔️ cbee168 #3 2024-11-23 11:58:12 ~6 min android-e2e 🤖apk 📲
✔️ cbee168 #3 2024-11-23 11:59:24 ~7 min android 🤖apk 📲
✔️ cbee168 #3 2024-11-23 12:00:30 ~8 min ios 📱ipa 📲
✔️ 63abdf8 #4 2024-11-23 12:39:06 ~4 min tests 📄log
✔️ 63abdf8 #4 2024-11-23 12:41:21 ~6 min android-e2e 🤖apk 📲
✔️ 63abdf8 #4 2024-11-23 12:42:30 ~8 min android 🤖apk 📲
✔️ 63abdf8 #4 2024-11-23 12:43:14 ~8 min ios 📱ipa 📲
9583f91 #5 2024-11-24 07:07:53 ~2 min tests 📄log
✔️ 9583f91 #5 2024-11-24 07:11:45 ~6 min android-e2e 🤖apk 📲
✔️ 9583f91 #5 2024-11-24 07:12:54 ~8 min android 🤖apk 📲
✔️ 9583f91 #5 2024-11-24 07:14:16 ~9 min ios 📱ipa 📲
f8ccd62 #6 2024-11-24 07:21:56 ~2 min tests 📄log
✔️ f8ccd62 #6 2024-11-24 07:26:12 ~6 min android-e2e 🤖apk 📲
✔️ f8ccd62 #6 2024-11-24 07:27:25 ~7 min android 🤖apk 📲
✔️ f8ccd62 #6 2024-11-24 07:28:21 ~8 min ios 📱ipa 📲
✔️ 3c49d9a #7 2024-11-25 08:47:12 ~4 min tests 📄log
✔️ 3c49d9a #7 2024-11-25 08:49:33 ~6 min android-e2e 🤖apk 📲
✔️ 3c49d9a #7 2024-11-25 08:50:48 ~8 min android 🤖apk 📲
✔️ 3c49d9a #7 2024-11-25 08:51:50 ~9 min ios 📱ipa 📲
Commit #️⃣ Finished (UTC) Duration Platform Result
✔️ d62975f #8 2024-11-25 09:25:01 ~4 min tests 📄log
✔️ d62975f #8 2024-11-25 09:28:34 ~8 min android-e2e 🤖apk 📲
✔️ d62975f #8 2024-11-25 09:28:41 ~8 min android 🤖apk 📲
✔️ d62975f #8 2024-11-25 09:29:08 ~8 min ios 📱ipa 📲
✔️ 7f754a1 #9 2024-11-25 10:14:37 ~4 min tests 📄log
✔️ 7f754a1 #9 2024-11-25 10:17:22 ~7 min android-e2e 🤖apk 📲
✔️ 7f754a1 #9 2024-11-25 10:17:55 ~7 min android 🤖apk 📲
✔️ 7f754a1 #9 2024-11-25 10:18:53 ~8 min ios 📱ipa 📲

@Parveshdhull Parveshdhull self-assigned this Nov 20, 2024
@Parveshdhull Parveshdhull force-pushed the fix/onboarding-usage-data-screen branch 6 times, most recently from f8ccd62 to 3c49d9a Compare November 25, 2024 08:42
@Parveshdhull Parveshdhull marked this pull request as ready for review November 25, 2024 08:46
@Parveshdhull Parveshdhull changed the title [WIP]: Onboarding - New opt-in usage data screen Onboarding - New opt-in usage data screen Nov 25, 2024
@Parveshdhull Parveshdhull force-pushed the fix/onboarding-usage-data-screen branch from 3c49d9a to d62975f Compare November 25, 2024 09:20
Comment on lines +81 to +83
parent (or (first @state/modals) @state/root-id)]
(navigation/push
(name @state/root-id)
(name parent)
Copy link
Member Author

@Parveshdhull Parveshdhull Nov 25, 2024

Choose a reason for hiding this comment

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

Onboarding navigation is very confusing because:

  • We use the same screens across different flows (e.g., create an account, sign in, profiles → create an account).
  • Since we use the base screen as a modal for transparency, and then push screens using navigate-to-within-stack, we have to track where we are coming from. Additionally, because we also use navigate-to-within-stack in events, we end up polluting the app-db with flow-related data to keep track of this.

Solution: In onboarding, we push stacks inside the base modal. Wallet likely does something similar, with different logic for where to pop up (though I'm not sure — I need to check).

  • We continue using navigate-to also for these flows, as we do in other areas. Navigation will push into the modal if it exists; otherwise, it will push into the base stack.
  • Do not change navigate-to; instead, create a new event, navigate-within-base-modal.

In both cases, we will eliminate confusion and reduce noisy code, as seen in 336f1cb. (still WIP)

What do you think? Which solution sounds better, or do you have any suggestions?

@@ -43,4 +43,4 @@
:stickers/packs-pending #{}
:settings/change-password {}
:keycard {}
:theme :light})
:theme :dark})
Copy link
Member Author

Choose a reason for hiding this comment

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

App opens in on-boarding/profiles, where default theme is :dark

@Parveshdhull Parveshdhull force-pushed the fix/onboarding-usage-data-screen branch from d62975f to 7f754a1 Compare November 25, 2024 10:09
@@ -277,7 +276,6 @@

(defn view
[]
(rn/use-mount #(rf/dispatch [:centralized-metrics/check-modal metrics-modal/view]))
Copy link
Member Author

Choose a reason for hiding this comment

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

For existing users who have not confirmed their choice, we will likely show the usage data screen after login. (Needs to discuss, cc @ilmotta)

@Parveshdhull Parveshdhull requested review from ilmotta and flexsurfer and removed request for ilmotta November 25, 2024 10:13
(defn- share-usage-data-fn
[enabled? next-screen]
(rf/dispatch [:centralized-metrics/toggle-centralized-metrics enabled? true])
(rf/dispatch [:navigate-to next-screen]))
Copy link
Member Author

Choose a reason for hiding this comment

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

Used navigate-to instead of navigate-to-within-stack - https://github.com/status-im/status-mobile/pull/21655/files#r1856286497

@VolodLytvynenko VolodLytvynenko self-assigned this Nov 25, 2024
@status-im-auto
Copy link
Member

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

    1. test_community_copy_and_paste_message_in_chat_input, id: 702742

    Device 1: Find `Button` by `accessibility id`: `new-to-status-button`
    Device 1: Wait for element `Button` for max 30s and click when it is available

    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:245: in create_user
        self.not_now_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 xpath:`//*[@text='Not now']` is not found on the screen after wait_for_visibility_of_element
    



    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:245: in create_user
        self.not_now_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 xpath:`//*[@text='Not now']` is not found on the screen after wait_for_visibility_of_element
    



    Class TestOneToOneChatMultipleSharedDevicesNewUi:

    1. test_1_1_chat_non_latin_messages_stack_update_profile_photo, id: 702745

    Device 2: Wait for element Button for max 30s and click when it is available
    Device 1: Wait for element Button for max 30s and click when it is available

    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:245: in create_user
        self.not_now_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 xpath:`//*[@text='Not now']` 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

    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:270: in recover_access
        self.not_now_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 xpath:`//*[@text='Not now']` is not found on the screen after wait_for_visibility_of_element
    



    2. test_wallet_send_eth, id: 727229

    Device 2: Wait for element Button for max 30s and click when it is available
    Device 1: Wait for element Button for max 30s and click when it is available

    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:270: in recover_access
        self.not_now_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 xpath:`//*[@text='Not now']` is not found on the screen after wait_for_visibility_of_element
    



    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:270: in recover_access
        self.not_now_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 xpath:`//*[@text='Not now']` is not found on the screen after wait_for_visibility_of_element
    



    2. test_wallet_balance_mainnet, id: 740490

    Device 1: Find Button by accessibility id: new-to-status-button
    Device 1: Wait for element Button for max 30s and click when it is available

    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:270: in recover_access
        self.not_now_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 xpath:`//*[@text='Not now']` 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]]

    Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
    Projects
    Status: IN TESTING
    Development

    Successfully merging this pull request may close these issues.

    Onboarding - New opt-in usage data screen
    3 participants