status-mobile
status-mobile copied to clipboard
chore: qualify screen keywords
This pr is more of a proposal at this point, so please leave your thoughts whether you are happy with this change or not and if it's an approach we wish to take.
I only made these changes for the wallet as it is safer to make this refactor in multiple stages and I wanted to be sure the team is happy with making this adjustment.
The change here is simple, to qualify screen keywords with :screen/ and then further qualify the ns with ., e,g :screen/wallet.some-screen or :screen/chat.some-other-screen
Let me know your thoughts 🧠 ✏️
Jenkins Builds
Click to see older builds (48)
| :grey_question: | Commit | :hash: | Finished (UTC) | Duration | Platform | Result |
|---|---|---|---|---|---|---|
| :heavy_check_mark: | 88aaff79 | #1 | 2024-02-09 15:42:42 | ~6 min | ios |
:iphone:ipa :calling: |
| :heavy_check_mark: | 88aaff79 | #1 | 2024-02-09 15:42:49 | ~6 min | tests |
:page_facing_up:log |
| :heavy_check_mark: | 41bb2975 | #2 | 2024-02-09 15:51:23 | ~5 min | ios |
:iphone:ipa :calling: |
| :heavy_check_mark: | 41bb2975 | #2 | 2024-02-09 15:51:36 | ~5 min | tests |
:page_facing_up:log |
| :heavy_check_mark: | 41bb2975 | #2 | 2024-02-09 15:53:57 | ~8 min | android-e2e |
:robot:apk :calling: |
| :heavy_check_mark: | 41bb2975 | #2 | 2024-02-09 15:54:22 | ~8 min | android |
:robot:apk :calling: |
| :x: | adf573a8 | #3 | 2024-02-09 16:26:53 | ~1 min | tests |
:page_facing_up:log |
| :heavy_check_mark: | adf573a8 | #3 | 2024-02-09 16:32:31 | ~7 min | android-e2e |
:robot:apk :calling: |
| :heavy_check_mark: | adf573a8 | #3 | 2024-02-09 16:32:33 | ~7 min | android |
:robot:apk :calling: |
| :heavy_check_mark: | adf573a8 | #3 | 2024-02-09 16:33:37 | ~8 min | ios |
:iphone:ipa :calling: |
| :x: | ca89d1a5 | #5 | 2024-02-09 18:04:44 | ~1 min | tests |
:page_facing_up:log |
| :heavy_check_mark: | ca89d1a5 | #5 | 2024-02-09 18:08:48 | ~5 min | ios |
:iphone:ipa :calling: |
| :heavy_check_mark: | ca89d1a5 | #5 | 2024-02-09 18:09:27 | ~6 min | android |
:robot:apk :calling: |
| :heavy_check_mark: | ca89d1a5 | #5 | 2024-02-09 18:09:46 | ~6 min | android-e2e |
:robot:apk :calling: |
| :heavy_check_mark: | 4a12e4fa | #6 | 2024-02-14 14:19:32 | ~5 min | ios |
:iphone:ipa :calling: |
| :heavy_check_mark: | 4a12e4fa | #6 | 2024-02-14 14:19:33 | ~5 min | tests |
:page_facing_up:log |
| :heavy_check_mark: | 4a12e4fa | #6 | 2024-02-14 14:22:18 | ~8 min | android-e2e |
:robot:apk :calling: |
| :heavy_check_mark: | 4a12e4fa | #6 | 2024-02-14 14:22:25 | ~8 min | android |
:robot:apk :calling: |
| :heavy_check_mark: | eb176e80 | #7 | 2024-02-16 14:39:01 | ~5 min | tests |
:page_facing_up:log |
| :heavy_check_mark: | eb176e80 | #7 | 2024-02-16 14:39:27 | ~5 min | ios |
:iphone:ipa :calling: |
| :heavy_check_mark: | eb176e80 | #7 | 2024-02-16 14:41:24 | ~7 min | android |
:robot:apk :calling: |
| :heavy_check_mark: | eb176e80 | #7 | 2024-02-16 14:41:31 | ~7 min | android-e2e |
:robot:apk :calling: |
| :x: | 7a8f23c4 | #8 | 2024-02-26 22:39:11 | ~1 min | tests |
:page_facing_up:log |
| :heavy_check_mark: | 7a8f23c4 | #8 | 2024-02-26 22:44:50 | ~7 min | android-e2e |
:robot:apk :calling: |
| :heavy_check_mark: | 7a8f23c4 | #8 | 2024-02-26 22:44:56 | ~7 min | android |
:robot:apk :calling: |
| :heavy_check_mark: | 7a8f23c4 | #8 | 2024-02-26 22:46:05 | ~8 min | ios |
:iphone:ipa :calling: |
| :heavy_check_mark: | 3976e189 | #9 | 2024-02-27 15:48:10 | ~33 min | android-e2e |
:robot:apk :calling: |
| :heavy_check_mark: | 3976e189 | #9 | 2024-02-27 15:48:16 | ~33 min | android |
:robot:apk :calling: |
| :heavy_check_mark: | 3976e189 | #9 | 2024-02-27 15:49:50 | ~34 min | tests |
:page_facing_up:log |
| :heavy_check_mark: | 3976e189 | #10 | 2024-02-27 17:17:32 | ~1 hr 22 min | ios |
:iphone:ipa :calling: |
| :heavy_check_mark: | 6cdb0125 | #10 | 2024-02-29 18:31:28 | ~7 min | tests |
:page_facing_up:log |
| :heavy_check_mark: | 6cdb0125 | #10 | 2024-02-29 18:32:38 | ~8 min | android-e2e |
:robot:apk :calling: |
| :heavy_check_mark: | 6cdb0125 | #10 | 2024-02-29 18:32:42 | ~8 min | android |
:robot:apk :calling: |
| :heavy_check_mark: | 6cdb0125 | #11 | 2024-02-29 18:34:03 | ~9 min | ios |
:iphone:ipa :calling: |
| :heavy_check_mark: | ec168017 | #11 | 2024-03-05 10:35:08 | ~6 min | tests |
:page_facing_up:log |
| :heavy_check_mark: | ec168017 | #11 | 2024-03-05 10:35:47 | ~7 min | android-e2e |
:robot:apk :calling: |
| :heavy_check_mark: | ec168017 | #12 | 2024-03-05 10:36:07 | ~7 min | ios |
:iphone:ipa :calling: |
| :heavy_check_mark: | ec168017 | #11 | 2024-03-05 10:36:19 | ~8 min | android |
:robot:apk :calling: |
| :heavy_check_mark: | ce2308fe | #12 | 2024-03-07 11:14:36 | ~9 min | android-e2e |
:robot:apk :calling: |
| :heavy_check_mark: | ce2308fe | #12 | 2024-03-07 11:16:05 | ~10 min | tests |
:page_facing_up:log |
| :heavy_check_mark: | ce2308fe | #12 | 2024-03-07 11:17:23 | ~12 min | android |
:robot:apk :calling: |
| :heavy_check_mark: | ce2308fe | #13 | 2024-03-07 11:17:38 | ~12 min | ios |
:iphone:ipa :calling: |
| :heavy_check_mark: | 9cdbc044 | #13 | 2024-03-07 22:07:47 | ~7 min | tests |
:page_facing_up:log |
| :heavy_check_mark: | 9cdbc044 | #13 | 2024-03-07 22:08:04 | ~7 min | android-e2e |
:robot:apk :calling: |
| :heavy_check_mark: | 3e269f24 | #14 | 2024-03-07 22:14:33 | ~5 min | tests |
:page_facing_up:log |
| :heavy_check_mark: | 3e269f24 | #14 | 2024-03-07 22:15:23 | ~6 min | android |
:robot:apk :calling: |
| :heavy_check_mark: | 3e269f24 | #14 | 2024-03-07 22:16:18 | ~7 min | android-e2e |
:robot:apk :calling: |
| :heavy_check_mark: | 3e269f24 | #15 | 2024-03-07 22:16:26 | ~7 min | ios |
:iphone:ipa :calling: |
| :grey_question: | Commit | :hash: | Finished (UTC) | Duration | Platform | Result |
|---|---|---|---|---|---|---|
| :heavy_check_mark: | 0a81e449 | #15 | 2024-03-12 08:30:26 | ~5 min | tests |
:page_facing_up:log |
| :heavy_check_mark: | 0a81e449 | #15 | 2024-03-12 08:32:03 | ~7 min | android-e2e |
:robot:apk :calling: |
| :heavy_check_mark: | 0a81e449 | #15 | 2024-03-12 08:32:06 | ~7 min | android |
:robot:apk :calling: |
| :heavy_check_mark: | 0a81e449 | #16 | 2024-03-12 08:33:19 | ~8 min | ios |
:iphone:ipa :calling: |
| :heavy_check_mark: | d952ed5f | #16 | 2024-03-12 10:52:42 | ~6 min | tests |
:page_facing_up:log |
| :heavy_check_mark: | d952ed5f | #16 | 2024-03-12 10:53:28 | ~7 min | android-e2e |
:robot:apk :calling: |
| :heavy_check_mark: | d952ed5f | #16 | 2024-03-12 10:54:08 | ~7 min | android |
:robot:apk :calling: |
| :heavy_check_mark: | d952ed5f | #17 | 2024-03-12 10:54:08 | ~7 min | ios |
:iphone:ipa :calling: |
:heavy_check_mark: status-mobile/prs/android/PR-18778#1 :small_blue_diamond: ~9 min 1 sec :small_blue_diamond: 88aaff79 :small_blue_diamond: :package: android package
Appreciate you raising this point and for your work in improving the flow.
While I see the intention behind adding the :screen keyword for clarity, I'm wondering if it might be a bit redundant, considering the context of navigation. Typically, when we navigate, it's already implied that we're moving to a screen.
However, I'm open to exploring scenarios where this extra qualification could be helpful or prevent any confusion
Appreciate you raising this point and for your work in improving the flow.
While I see the intention behind adding the
:screenkeyword for clarity, I'm wondering if it might be a bit redundant, considering the context of navigation. Typically, when we navigate, it's already implied that we're moving to a screen.However, I'm open to exploring scenarios where this extra qualification could be helpful or prevent any confusion
yeah when using a keyword we are pretty much always aware of the use case and so that is not what I am trying to improve here. (well in my experience so far) The most valuable reason I see for this is that when doing later refactors of screen keywords (or any other keywords) that we can safely update the keywords without affecting other unintended domains/ aspects of the codebase. Without qualification we have to look quite precisely at what each keywords purpose is and that is both tedious and error prone.
There might be further use cases (or drawbacks) @ulisesmac, @ilmotta or our other more experienced Clojurists might be aware of.
The most valuable reason I see for this is that when doing later refactors of screen keywords (or any other keywords) that we can safely update the keywords without affecting other unintended domains/ aspects of the codebase. Without qualification we have to look quite precisely at what each keywords purpose is and that is both tedious and error prone.
I don't understand this. If we want a refactor related to screens, we can easily look up for contexts, or do a project with search for navigate.
Not able to understand what value this brings (maybe I'm wrong re: refactoring? please correct me if that's the case).
I do see a downside. Having arbitrary keywords will pollute the codebase. I know with :screen, your intent is very clear. But there could be a case where navigation opens a bottom-sheet. It will be very enticing to have a :bottom-sheet keyword in that case. There is no end to this.
Appreciate you raising this point and for your work in improving the flow. While I see the intention behind adding the
:screenkeyword for clarity, I'm wondering if it might be a bit redundant, considering the context of navigation. Typically, when we navigate, it's already implied that we're moving to a screen. However, I'm open to exploring scenarios where this extra qualification could be helpful or prevent any confusionyeah when using a keyword we are pretty much always aware of the use case and so that is not what I am trying to improve here. (well in my experience so far) The most valuable reason I see for this is that when doing later refactors of screen keywords (or any other keywords) that we can safely update the keywords without affecting other unintended domains/ aspects of the codebase. Without qualification we have to look quite precisely at what each keywords purpose is and that is both tedious and error prone.
There might be further use cases (or drawbacks) @ulisesmac, @ilmotta or our other more experienced Clojurists might be aware of.
@mohsen-ghafouri Some other aspects improved are the code organization and the dev experience while writing keywords. It's less error-prone to write because the editor suggest the keys:
Currently with icons:
Currently with translations:
Appreciate you raising this point and for your work in improving the flow. While I see the intention behind adding the
:screenkeyword for clarity, I'm wondering if it might be a bit redundant, considering the context of navigation. Typically, when we navigate, it's already implied that we're moving to a screen. However, I'm open to exploring scenarios where this extra qualification could be helpful or prevent any confusionyeah when using a keyword we are pretty much always aware of the use case and so that is not what I am trying to improve here. (well in my experience so far) The most valuable reason I see for this is that when doing later refactors of screen keywords (or any other keywords) that we can safely update the keywords without affecting other unintended domains/ aspects of the codebase. Without qualification we have to look quite precisely at what each keywords purpose is and that is both tedious and error prone. There might be further use cases (or drawbacks) @ulisesmac, @ilmotta or our other more experienced Clojurists might be aware of.
@mohsen-ghafouri Some other aspects improved are the code organization and the dev experience while writing keywords. It's less error-prone to write because the editor suggest the keys:
Currently with icons:
Currently with translations:
If we use :i/ for icons and :t/ for translations, maybe use :s/ instead of :screen/?
Appreciate you raising this point and for your work in improving the flow. While I see the intention behind adding the
:screenkeyword for clarity, I'm wondering if it might be a bit redundant, considering the context of navigation. Typically, when we navigate, it's already implied that we're moving to a screen. However, I'm open to exploring scenarios where this extra qualification could be helpful or prevent any confusionyeah when using a keyword we are pretty much always aware of the use case and so that is not what I am trying to improve here. (well in my experience so far) The most valuable reason I see for this is that when doing later refactors of screen keywords (or any other keywords) that we can safely update the keywords without affecting other unintended domains/ aspects of the codebase. Without qualification we have to look quite precisely at what each keywords purpose is and that is both tedious and error prone. There might be further use cases (or drawbacks) @ulisesmac, @ilmotta or our other more experienced Clojurists might be aware of.
@mohsen-ghafouri Some other aspects improved are the code organization and the dev experience while writing keywords. It's less error-prone to write because the editor suggest the keys: Currently with icons:
Currently with translations:
If we use
:i/for icons and:t/for translations, maybe use:s/instead of:screen/?
We do have some other keywords that are more verbose too.
for example :social/, :token/.
I think the decision we were basing it off for when we want to use the abbreviated form vs more verbose is how frequently we use these. right @ilmotta? 🤔
and I guess something else to consider is there any other qualified keyword that would benefit more from having :s/ instead? 🤔 - although once it place it would be a very quick refactor to adjust this most likely
I don't understand this. If we want a refactor related to screens, we can easily look up for contexts, or do a project with search for
navigate.Not able to understand what value this brings (maybe I'm wrong re: refactoring? please correct me if that's the case).
I do see a downside. Having arbitrary keywords will pollute the codebase. I know with
:screen, your intent is very clear. But there could be a case where navigation opens abottom-sheet. It will be very enticing to have a:bottom-sheetkeyword in that case. There is no end to this.
We have many qualified keywords like this used for different cases, e.g icons are using :/i, translations are using :/t. it's helps categorise certain aspects of the codebase.
In the case of translation keywords the intent is obvious because it's basically always using an i18n/label.
however, consider for example if we are refactoring and we want to change all uses of the :password translation, it is clearly much easier and safer to find the relevant keywords using :t/password then a generic search for :password and take the context from it's usage - this in turn simplifies the pr review process too.
We have for example some generic screen names here, such as :shell - "Shell" is a concept we use all throughout the designs to suggest the overlay pages that are dark theme, regardless of the users theme.
Some other very generic screen names :settings, :new-contact, :airdrop-addresses, :shell-stack - there are many more (and I'm sure more will be added), all which can be used in several other contexts within our project.
Of course, this can go further as shown in your bottom-sheet example, but I think in this case we need specificity of what :screen/ qualification is used for. In this case, I think it can be simply any screen we have registered in the screens.cljs file. Nothing outside of that. If something else should be used as :screen/ and is outside the screens.cljs file then it should be moved there imo 👍
Whether a qualified keyword is then needed for bottom-sheets is another question and so I guess with qualified keywords we can take them on a case by case basis as we are already doing this a lot in the codebase 👌
That's just my view on this anyway, @ulisesmac also pointed out some good points too 👍
@J-Son89, I didn't read all the comments in this PR, but I am absolutely in favor of qualifying certain keywords to make them unique in the system. I lost count of the amount of times I had to find the view definition of a screen, but the keyword had too many hits while grepping (e.g. :photo-selector, settings, intro, and many others).
@J-Son89, I didn't read all the comments in this PR, but I am absolutely in favor of qualifying certain keywords to make them unique in the system. I lost count of the amount of times I had to find the
viewdefinition of a screen, but the keyword had too many hits while grepping (e.g.:photo-selector,settings,intro, and many others).
@ilmotta - I believe it is currently just @shivekkhurana with some concerns here. https://github.com/status-im/status-mobile/pull/18778#issuecomment-1938880350
I have responded - https://github.com/status-im/status-mobile/pull/18778#issuecomment-1948207052
and @ulisesmac contributed some insights on why he is in preference of this approach - https://github.com/status-im/status-mobile/pull/18778#issuecomment-1939277284
@shivekkhurana have your concerns been somewhat satisfied?
I think the decision we were basing it off for when we want to use the abbreviated form vs more verbose is how frequently we use these. right @ilmotta? 🤔
Correct @J-Son89, we decided on the short form of :i for :icon based on frequency, and also because [quo/icon :icon/foo] felt too redundant.
I'm not a fan of abbreviating :screen to :s, but that would work fore sure.
But here's my take on this subject.
These discussions about non-namespaced keyword names are more difficult as well because we are creating categories (qualifications) for things that already have a proper place. With namespaced keywords, we still get keyword auto-complete, jump to source (depending on your editor and settings), and we can alias the namespace as short as we desire (such as s). Ah, we also get compile-time protection against typos in the namespace part of a keyword like ::screens/settings. Namespaced keywords shouldn't always be used though. But if the problem is to uniquely refer to some keyword and differentiate them in the whole system, it's really handy.
It feels a bit like we're skipping this very core feature of Clojure.
One of the reasons I so wanted to upgrade shadow-cljs in PR https://github.com/status-im/status-mobile/pull/15417 was to get the :as-alias feature from Clojure 1.11+, which we can use now. as-alias eliminates the problem of circular dependencies to refer to keywords.
The code below does not even compile pre Clojure 1.11 if you use :as (circular dependency error), but I checked this in our repo with :as-alias and it works beautifully.
;; Anywhere we want to refer to a screen name:
(require '[status-im.navigation.screens :as-alias screens])
;; Then on that same namespace (note the double colon):
(rf/dispatch [:open-modal ::screens/settings])
;; And in the screens namespace `status-im.navigation.screens` (note the double colon)
{:name ::settings
:options options/transparent-screen-options
:component settings/view}
Clojure gives us a way to differentiate values based on their context. Currently, the keyword :settings can be a screen, but also a list type in the quo component settings.category. We can refer to different keywords (semantically speaking) by using their namespaces.
Edit: I approved the PR. Above, I just shared my personal best choice and tried to explain why.
92% of end-end tests have passed
Total executed tests: 48
Failed tests: 3
Expected to fail tests: 1
Passed tests: 44
IDs of failed tests: 702809,703194,703629
IDs of expected to fail tests: 703503
Failed tests (3)
Click to expand
Class TestCommunityMultipleDeviceMerged:
| 1. test_community_several_images_send_reply, id: 703194 |
Device 1: Device 2: |
Class TestCommunityMultipleDeviceMergedTwo:
| 1. test_community_markdown_support, id: 702809 |
Device 1: Device 2: |
| 2. test_community_join_when_node_owner_offline, id: 703629 |
Device 1: Device 2: |
Expected to fail tests (1)
Click to expand
Class TestCommunityOneDeviceMerged:
| 1. test_community_discovery, id: 703503 |
[[reason: [NOTRUN] Curated communities not loading, https://github.com/status-im/status-mobile/issues/17852]] |
Passed tests (44)
Click to expand
Class TestActivityMultipleDevicePR:
| 1. test_navigation_jump_to, id: 702936 |
| Device sessions Device 1: Device 2: |
| 2. test_activity_center_reply_read_unread_delete_filter_swipe, id: 702947 |
| Device sessions Device 1: Device 2: |
Class TestCommunityMultipleDeviceMerged:
| 1. test_community_one_image_send_reply, id: 702859 |
| Device sessions Device 1: Device 2: |
| 2. test_community_emoji_send_copy_paste_reply, id: 702840 |
| Device sessions Device 1: Device 2: |
| 3. test_community_mark_all_messages_as_read, id: 703086 |
| Device sessions Device 1: Device 2: |
| 4. test_community_contact_block_unblock_offline, id: 702894 |
| Device sessions Device 1: Device 2: |
| 5. test_community_edit_delete_message_when_offline, id: 704615 |
| Device sessions Device 1: Device 2: |
| 6. test_community_message_delete, id: 702839 |
| Device sessions Device 1: Device 2: |
| 7. test_community_message_send_check_timestamps_sender_username, id: 702838 |
| Device sessions Device 1: Device 2: |
| 8. test_community_links_with_previews_github_youtube_twitter_gif_send_enable, id: 702844 |
| Device sessions Device 1: Device 2: |
| 9. test_community_message_edit, id: 702843 |
| Device sessions Device 1: Device 2: |
| 10. test_community_unread_messages_badge, id: 702841 |
| Device sessions Device 1: Device 2: |
Class TestOneToOneChatMultipleSharedDevicesNewUiTwo:
| 1. test_1_1_chat_delete_via_long_press_relogin, id: 702784 |
| Device sessions Device 1: Device 2: |
| 2. test_1_1_chat_is_shown_message_sent_delivered_from_offline, id: 702783 |
| Device sessions Device 1: Device 2: |
| 3. test_1_1_chat_mute_chat, id: 703496 |
| Device sessions Device 1: Device 2: |
Class TestOneToOneChatMultipleSharedDevicesNewUi:
| 1. test_1_1_chat_emoji_send_reply_and_open_link, id: 702782 |
| Device sessions Device 1: Device 2: |
| 2. test_1_1_chat_text_message_delete_push_disappear, id: 702733 |
| Device sessions Device 1: Device 2: |
| 3. test_1_1_chat_push_emoji, id: 702813 |
| Device sessions Device 1: Device 2: |
| 4. test_1_1_chat_non_latin_messages_stack_update_profile_photo, id: 702745 |
| Device sessions Device 1: Device 2: |
| 5. test_1_1_chat_edit_message, id: 702855 |
| Device sessions Device 1: Device 2: |
| 6. test_1_1_chat_send_image_save_and_share, id: 703391 |
| Device sessions Device 1: Device 2: |
| 7. test_1_1_chat_pin_messages, id: 702731 |
| Device sessions Device 1: Device 2: |
| 8. test_1_1_chat_message_reaction, id: 702730 |
| Device sessions Device 1: Device 2: |
Class TestActivityMultipleDevicePRTwo:
| 1. test_activity_center_mentions, id: 702957 |
| Device sessions Device 1: Device 2: |
| 2. test_activity_center_admin_notification_accept_swipe, id: 702958 |
| Device sessions Device 1: Device 2: |
Class TestCommunityMultipleDeviceMergedTwo:
| 1. test_community_hashtag_links_to_community_channels, id: 702948 |
| Device sessions Device 1: Device 2: |
| 2. test_community_mentions_push_notification, id: 702786 |
| Device sessions Device 1: Device 2: |
| 3. test_community_leave, id: 702845 |
| Device sessions Device 1: Device 2: |
Class TestCommunityOneDeviceMerged:
| 1. test_restore_multiaccount_with_waku_backup_remove_switch, id: 703133 |
| Device sessions Device 1: |
| 2. test_community_copy_and_paste_message_in_chat_input, id: 702742 |
| Device sessions Device 1: |
| 3. test_community_undo_delete_message, id: 702869 |
| Device sessions Device 1: |
| 4. test_community_navigate_to_channel_when_relaunch, id: 702846 |
| Device sessions Device 1: |
| 5. test_community_mute_community_and_channel, id: 703382 |
| Device sessions Device 1: |
Class TestDeepLinksOneDevice:
| 1. test_links_open_universal_links_from_chat, id: 704613 |
| Device sessions Device 1: |
| 2. test_links_deep_links, id: 702775 |
| Device sessions Device 1: |
Class TestActivityCenterContactRequestMultipleDevicePR:
| 1. test_add_contact_field_validation, id: 702777 |
| Device sessions Device 1: Device 2: |
| 2. test_activity_center_contact_request_accept_swipe_mark_all_as_read, id: 702851 |
| Device sessions Device 1: Device 2: |
| 3. test_activity_center_contact_request_decline, id: 702850 |
| Device sessions Device 1: Device 2: |
Class TestGroupChatMultipleDeviceMergedNewUI:
| 1. test_group_chat_pin_messages, id: 702732 |
| Device sessions Device 1: Device 2: Device 3: |
| 2. test_group_chat_mute_chat, id: 703495 |
| Device sessions Device 1: Device 2: Device 3: |
| 3. test_group_chat_send_image_save_and_share, id: 703297 |
| Device sessions Device 1: Device 2: Device 3: |
| 4. test_group_chat_reactions, id: 703202 |
| Device sessions Device 1: Device 2: Device 3: |
| 5. test_group_chat_join_send_text_messages_push, id: 702807 |
| Device sessions Device 1: Device 2: Device 3: |
| 6. test_group_chat_offline_pn, id: 702808 |
| Device sessions Device 1: Device 2: Device 3: |
88% of end-end tests have passed
Total executed tests: 48
Failed tests: 5
Expected to fail tests: 1
Passed tests: 42
IDs of failed tests: 702948,702859,702869,702777,704615
IDs of expected to fail tests: 703503
Failed tests (5)
Click to expand
Class TestCommunityMultipleDeviceMergedTwo:
| 1. test_community_hashtag_links_to_community_channels, id: 702948 |
Device 1: Device 2: |
Class TestCommunityOneDeviceMerged:
| 1. test_community_undo_delete_message, id: 702869 |
Device 1: |
Class TestActivityCenterContactRequestMultipleDevicePR:
| 1. test_add_contact_field_validation, id: 702777 |
Device 1: Device 2: |
Class TestCommunityMultipleDeviceMerged:
| 1. test_community_one_image_send_reply, id: 702859 |
Device 1: Device 2: |
| 2. test_community_edit_delete_message_when_offline, id: 704615 |
Device 1: Device 2: |
Expected to fail tests (1)
Click to expand
Class TestCommunityOneDeviceMerged:
| 1. test_community_discovery, id: 703503 |
[[reason: [NOTRUN] Curated communities not loading, https://github.com/status-im/status-mobile/issues/17852]] |
Passed tests (42)
Click to expand
Class TestActivityMultipleDevicePRTwo:
| 1. test_activity_center_admin_notification_accept_swipe, id: 702958 |
| Device sessions Device 1: Device 2: |
| 2. test_activity_center_mentions, id: 702957 |
| Device sessions Device 1: Device 2: |
Class TestCommunityMultipleDeviceMergedTwo:
| 1. test_community_mentions_push_notification, id: 702786 |
| Device sessions Device 1: Device 2: |
| 2. test_community_join_when_node_owner_offline, id: 703629 |
| Device sessions Device 1: Device 2: |
| 3. test_community_markdown_support, id: 702809 |
| Device sessions Device 1: Device 2: |
| 4. test_community_leave, id: 702845 |
| Device sessions Device 1: Device 2: |
Class TestCommunityMultipleDeviceMerged:
| 1. test_community_mark_all_messages_as_read, id: 703086 |
| Device sessions Device 1: Device 2: |
| 2. test_community_message_send_check_timestamps_sender_username, id: 702838 |
| Device sessions Device 1: Device 2: |
| 3. test_community_message_edit, id: 702843 |
| Device sessions Device 1: Device 2: |
| 4. test_community_several_images_send_reply, id: 703194 |
| Device sessions Device 1: Device 2: |
| 5. test_community_links_with_previews_github_youtube_twitter_gif_send_enable, id: 702844 |
| Device sessions Device 1: Device 2: |
| 6. test_community_message_delete, id: 702839 |
| Device sessions Device 1: Device 2: |
| 7. test_community_contact_block_unblock_offline, id: 702894 |
| Device sessions Device 1: Device 2: |
| 8. test_community_unread_messages_badge, id: 702841 |
| Device sessions Device 1: Device 2: |
| 9. test_community_emoji_send_copy_paste_reply, id: 702840 |
| Device sessions Device 1: Device 2: |
Class TestOneToOneChatMultipleSharedDevicesNewUi:
| 1. test_1_1_chat_emoji_send_reply_and_open_link, id: 702782 |
| Device sessions Device 1: Device 2: |
| 2. test_1_1_chat_non_latin_messages_stack_update_profile_photo, id: 702745 |
| Device sessions Device 1: Device 2: |
| 3. test_1_1_chat_push_emoji, id: 702813 |
| Device sessions Device 1: Device 2: |
| 4. test_1_1_chat_message_reaction, id: 702730 |
| Device sessions Device 1: Device 2: |
| 5. test_1_1_chat_text_message_delete_push_disappear, id: 702733 |
| Device sessions Device 1: Device 2: |
| 6. test_1_1_chat_edit_message, id: 702855 |
| Device sessions Device 1: Device 2: |
| 7. test_1_1_chat_pin_messages, id: 702731 |
| Device sessions Device 1: Device 2: |
| 8. test_1_1_chat_send_image_save_and_share, id: 703391 |
| Device sessions Device 1: Device 2: |
Class TestCommunityOneDeviceMerged:
| 1. test_community_copy_and_paste_message_in_chat_input, id: 702742 |
| Device sessions Device 1: |
| 2. test_community_mute_community_and_channel, id: 703382 |
| Device sessions Device 1: |
| 3. test_community_navigate_to_channel_when_relaunch, id: 702846 |
| Device sessions Device 1: |
| 4. test_restore_multiaccount_with_waku_backup_remove_switch, id: 703133 |
| Device sessions Device 1: |
Class TestOneToOneChatMultipleSharedDevicesNewUiTwo:
| 1. test_1_1_chat_mute_chat, id: 703496 |
| Device sessions Device 1: Device 2: |
| 2. test_1_1_chat_is_shown_message_sent_delivered_from_offline, id: 702783 |
| Device sessions Device 1: Device 2: |
| 3. test_1_1_chat_delete_via_long_press_relogin, id: 702784 |
| Device sessions Device 1: Device 2: |
Class TestActivityMultipleDevicePR:
| 1. test_navigation_jump_to, id: 702936 |
| Device sessions Device 1: Device 2: |
| 2. test_activity_center_reply_read_unread_delete_filter_swipe, id: 702947 |
| Device sessions Device 1: Device 2: |
Class TestGroupChatMultipleDeviceMergedNewUI:
| 1. test_group_chat_join_send_text_messages_push, id: 702807 |
| Device sessions Device 1: Device 2: Device 3: |
| 2. test_group_chat_mute_chat, id: 703495 |
| Device sessions Device 1: Device 2: Device 3: |
| 3. test_group_chat_pin_messages, id: 702732 |
| Device sessions Device 1: Device 2: Device 3: |
| 4. test_group_chat_reactions, id: 703202 |
| Device sessions Device 1: Device 2: Device 3: |
| 5. test_group_chat_offline_pn, id: 702808 |
| Device sessions Device 1: Device 2: Device 3: |
| 6. test_group_chat_send_image_save_and_share, id: 703297 |
| Device sessions Device 1: Device 2: Device 3: |
Class TestDeepLinksOneDevice:
| 1. test_links_deep_links, id: 702775 |
| Device sessions Device 1: |
| 2. test_links_open_universal_links_from_chat, id: 704613 |
| Device sessions Device 1: |
Class TestActivityCenterContactRequestMultipleDevicePR:
| 1. test_activity_center_contact_request_decline, id: 702850 |
| Device sessions Device 1: Device 2: |
| 2. test_activity_center_contact_request_accept_swipe_mark_all_as_read, id: 702851 |
| Device sessions Device 1: Device 2: |
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 TestActivityCenterContactRequestMultipleDevicePR:
| 1. test_add_contact_field_validation, id: 702777 |
| Device sessions Device 1: Device 2: |
Class TestCommunityOneDeviceMerged:
| 1. test_community_undo_delete_message, id: 702869 |
| Device sessions Device 1: |
Class TestCommunityMultipleDeviceMergedTwo:
| 1. test_community_hashtag_links_to_community_channels, id: 702948 |
| Device sessions Device 1: Device 2: |
Class TestCommunityMultipleDeviceMerged:
| 1. test_community_edit_delete_message_when_offline, id: 704615 |
| Device sessions Device 1: Device 2: |
| 2. test_community_one_image_send_reply, id: 702859 |
| Device sessions Device 1: Device 2: |
@J-Son89 thanks for the PR! Take a look at the issues please:
ISSUE 1: Cannot set property 'reagent-compiler2' of null when opening a collectible
STR:
- Open
Collectibles - Press any collectible
https://github.com/status-im/status-mobile/assets/67952253/effba0b7-b558-4152-ae13-3aed39b082e4
ISSUE 2: Enter amount page issues
There are two issues on this page:
- Routs/fees are not shown on the screen. But it seems this is something different from https://github.com/status-im/status-mobile/issues/19099, in the video below you can see that this is just a blank page under the amount entry field
- You cannot go back from this page. When you press the
backbutton, the token icon disappears, as well as theMaxamount below
PR:
https://github.com/status-im/status-mobile/assets/67952253/6c9ce84b-e6e7-4948-8894-46711a2b6df6
Nightly:
https://github.com/status-im/status-mobile/assets/67952253/2b5d8247-f499-481a-a5e0-0011659e2760
STR:
- Go to the
Sendflow - Enter a valid amount, wait for routs and fees
- Tap the
backbutton
@qoqobolo - Apologies about that, I think it was a rebasing issue that they snook in. I addressed all those issues now as they were straightforward problems to fix with the info you gave me 🙏
@qoqobolo - Apologies about that, I think it was a rebasing issue that they snook in. I addressed all those issues now as they were straightforward problems to fix with the info you gave me 🙏
No worries, the main thing is that we didn’t let them sneak into develop! 🙂 And thanks for the fix! Could you rebase the branch and resolve the conflict, please? I'll re-check it
Thanks @J-Son89! LGTM PR can be merged.

