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

Persist in-app feature flags (dev-only feature) #19619

Merged
merged 3 commits into from
May 9, 2024

Conversation

ilmotta
Copy link
Contributor

@ilmotta ilmotta commented Apr 12, 2024

Summary

This PR improves in-app feature flags to persist what is currently only stored in a Reagent atom. This should make them more convenient to use, which is a good thing overall for developers.

Additionally, there's now a top-right button in screen Settings > Feature Flags that will reset the flags to the initial values obtained from environment variables. Just a handy little addition.

These in-app feature flags are exclusively available in debug builds in Settings > Feature Flags, and only visible when flag ENABLE_QUO_PREVIEW is enabled. There's no impact whatsoever in prod builds. A reminder that they are not meant to be used by users.

That's why I think the simple solution presented in this PR is good enough. The developer will now be able to close and reopen the app, and the flags will be recovered using RN Async Storage during app initialization.

It's worth noting that RN has deprecated Async Storage and now recommends other community solutions, but for a dev-only feature, I think it's fine. Regarding this, I don't know if the mobile team has an official recommendation to replace Async Storage.

This PR is kind of a natural progression from the original work done in PR #18602 Add a UI for toggling developer feature flags. We knew from the start it would be useful to persist, but that we could do it later.

Areas that may be impacted

None.

Steps to test

Toggle in-app feature flags, then close and reopen the app. Check if the values were persisted in Settings > Feature Flags.

status: ready

@status-im-auto
Copy link
Member

status-im-auto commented Apr 12, 2024

Jenkins Builds

Click to see older builds (34)
Commit #️⃣ Finished (UTC) Duration Platform Result
7d711e3 #2 2024-04-12 15:22:30 ~2 min tests 📄log
✔️ 7d711e3 #2 2024-04-12 15:26:29 ~6 min android 🤖apk 📲
✔️ 7d711e3 #2 2024-04-12 15:26:31 ~6 min android-e2e 🤖apk 📲
✔️ 7d711e3 #2 2024-04-12 15:30:01 ~10 min ios 📱ipa 📲
✔️ c67e044 #3 2024-04-12 16:40:53 ~5 min android 🤖apk 📲
✔️ c67e044 #3 2024-04-12 16:41:12 ~6 min android-e2e 🤖apk 📲
✔️ c67e044 #3 2024-04-12 16:44:25 ~9 min ios 📱ipa 📲
✔️ fc1a18d #4 2024-04-12 23:42:51 ~6 min android-e2e 🤖apk 📲
✔️ fc1a18d #4 2024-04-12 23:42:57 ~6 min android 🤖apk 📲
✔️ fc1a18d #4 2024-04-12 23:45:35 ~9 min ios 📱ipa 📲
✔️ 60bd42f #5 2024-04-15 13:41:30 ~4 min tests 📄log
✔️ 60bd42f #5 2024-04-15 13:43:10 ~6 min android-e2e 🤖apk 📲
✔️ 60bd42f #5 2024-04-15 13:44:22 ~7 min android 🤖apk 📲
✔️ 60bd42f #5 2024-04-15 13:49:20 ~12 min ios 📱ipa 📲
✔️ 6b70b38 #6 2024-04-16 18:27:40 ~3 min tests 📄log
✔️ 6b70b38 #6 2024-04-16 18:31:27 ~7 min android 🤖apk 📲
✔️ 6b70b38 #6 2024-04-16 18:31:27 ~7 min android-e2e 🤖apk 📲
✔️ 6b70b38 #6 2024-04-16 18:33:35 ~9 min ios 📱ipa 📲
9a78efe #7 2024-04-19 14:56:16 ~2 min tests 📄log
✔️ 9a78efe #7 2024-04-19 15:00:03 ~6 min android 🤖apk 📲
✔️ 9a78efe #7 2024-04-19 15:00:49 ~7 min android-e2e 🤖apk 📲
✔️ 9a78efe #7 2024-04-19 15:03:15 ~9 min ios 📱ipa 📲
✔️ 6402c37 #8 2024-04-19 15:13:58 ~4 min tests 📄log
✔️ 6402c37 #8 2024-04-19 15:16:55 ~7 min android-e2e 🤖apk 📲
✔️ 6402c37 #8 2024-04-19 15:16:58 ~7 min android 🤖apk 📲
✔️ 6402c37 #8 2024-04-19 15:19:08 ~9 min ios 📱ipa 📲
✔️ 27a9133 #9 2024-04-19 17:31:37 ~4 min tests 📄log
✔️ 27a9133 #9 2024-04-19 17:33:09 ~5 min android 🤖apk 📲
✔️ 27a9133 #9 2024-04-19 17:34:23 ~7 min android-e2e 🤖apk 📲
✔️ 27a9133 #9 2024-04-19 17:36:43 ~9 min ios 📱ipa 📲
✔️ 268e49d #10 2024-04-19 17:45:49 ~3 min tests 📄log
✔️ 268e49d #10 2024-04-19 17:49:09 ~7 min android-e2e 🤖apk 📲
✔️ 268e49d #10 2024-04-19 17:50:08 ~8 min android 🤖apk 📲
✔️ 268e49d #10 2024-04-19 17:52:30 ~10 min ios 📱ipa 📲
Commit #️⃣ Finished (UTC) Duration Platform Result
✔️ 3474b42 #11 2024-05-07 17:40:27 ~3 min tests 📄log
✔️ 3474b42 #11 2024-05-07 17:43:11 ~6 min android-e2e 🤖apk 📲
✔️ 3474b42 #11 2024-05-07 17:43:19 ~6 min android 🤖apk 📲
✔️ 3474b42 #11 2024-05-07 17:45:00 ~8 min ios 📱ipa 📲
✔️ f65c050 #12 2024-05-09 12:36:11 ~3 min tests 📄log
✔️ f65c050 #12 2024-05-09 12:39:11 ~6 min android-e2e 🤖apk 📲
✔️ f65c050 #12 2024-05-09 12:39:12 ~6 min android 🤖apk 📲
✔️ f65c050 #12 2024-05-09 12:41:39 ~9 min ios 📱ipa 📲

@ilmotta ilmotta force-pushed the ilmotta/persist-feature-flags branch 4 times, most recently from 60bd42f to 6b70b38 Compare April 16, 2024 18:23
@ajayesivan
Copy link
Contributor

@ilmotta This will be a very useful thing to have. Thanks for the initiative.

I tested both the iOS & Android PR builds and it doesn't seem to be working.

@ilmotta
Copy link
Contributor Author

ilmotta commented Apr 19, 2024

@ilmotta This will be a very useful thing to have. Thanks for the initiative.

I tested both the iOS & Android PR builds and it doesn't seem to be working.

Indeed, it only works for me in the emulator, which was the only build I tested. Let's see if I can find the culprit. Thanks!

@ilmotta ilmotta force-pushed the ilmotta/persist-feature-flags branch 3 times, most recently from 27a9133 to 268e49d Compare April 19, 2024 17:41
@ilmotta
Copy link
Contributor Author

ilmotta commented Apr 19, 2024

@ajayesivan, issue fixed. I had a misconception that js/goog.DEBUG was enabled in PR builds, but it's not. Currently, the namespace status-im.feature-flags is displayed only when status-im.config/quo-preview-enabled? is enabled, which is a workaround, but I went with the same solution for the time being. This way, we successfully load what's persisted using Async Storage in PR builds, but not in production ones.

Copy link
Contributor

@ajayesivan ajayesivan left a comment

Choose a reason for hiding this comment

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

🎉

@ilmotta
Copy link
Contributor Author

ilmotta commented May 7, 2024

Hi reviewers @cammellos, @seanstrom, @vkjr, @J-Son89, @BalogunofAfrica. This PR is rotting a little bit waiting for more reviews/approvals. It would be great if we could get this PR merged soon, that is, if you agree it's valuable. Thank you!

@ilmotta ilmotta force-pushed the ilmotta/persist-feature-flags branch from 268e49d to 3474b42 Compare May 7, 2024 17:36
Copy link
Member

@seanstrom seanstrom left a comment

Choose a reason for hiding this comment

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

Looks good! Thanks for doing this 🙏

@seanstrom
Copy link
Member

@ilmotta what do you think about re-rendering the app when changing the feature flags? I was noticing the other day that I couldn’t immediately see feature-flags affect UI until I forced a re-render. Do you see the same behavior?

@ilmotta
Copy link
Contributor Author

ilmotta commented May 7, 2024

@ilmotta what do you think about re-rendering the app when changing the feature flags? I was noticing the other day that I couldn’t immediately see feature-flags affect UI until I forced a re-render. Do you see the same behavior?

Hey @seanstrom, do you believe this problem is happening in all places? The flags are stored in a Reagent atom, so in theory, if we code views correctly, they should react to changes to this global state.

My intuition tells me we should see why it's not re-rendering for each buggy view instead of forcing a full re-render. Wdyt?

@seanstrom
Copy link
Member

@ilmotta yup yup I agree with your approach, the specific screen I’ll debug is related to the settings screen.

I’ll try figuring out why it’s not re-rendering properly and ping about what I find n chat. Thanks for your thoughts 🙏

@ilmotta
Copy link
Contributor Author

ilmotta commented May 7, 2024

@ilmotta yup yup I agree with your approach, the specific screen I’ll debug is related to the settings screen.

I’ll try figuring out why it’s not re-rendering properly and ping about what I find n chat. Thanks for your thoughts 🙏

I'm curious to see why it's failing to re-render. Let's hope that we find the root cause. Thanks!

@J-Son89
Copy link
Contributor

J-Son89 commented May 7, 2024

I like the initiative @ilmotta 🚀

@ilmotta ilmotta force-pushed the ilmotta/persist-feature-flags branch from 3474b42 to f65c050 Compare May 9, 2024 12:32
@ilmotta ilmotta merged commit 8ad58bb into develop May 9, 2024
6 checks passed
@ilmotta ilmotta deleted the ilmotta/persist-feature-flags branch May 9, 2024 12:42
@status-im-auto
Copy link
Member

63% of end-end tests have passed

Total executed tests: 52
Failed tests: 17
Expected to fail tests: 2
Passed tests: 33
IDs of failed tests: 727230,703194,702859,704613,702840,703086,702894,704615,727229,702839,702838,702844,702843,702807,727232,702775,702841 
IDs of expected to fail tests: 703495,703503 

Failed tests (17)

Click to expand
  • Rerun failed tests

  • Class TestWalletOneDevice:

    1. test_wallet_add_remove_watch_only_account, id: 727232

    Device 1: Find `EditBox` by `accessibility id`: `add-address-to-watch`
    Device 1: Type `0x8d2413447ff297d30bdc475f6d5cb00254685aae` to `EditBox`

    critical/test_wallet.py:190: in test_wallet_add_remove_watch_only_account
        self.wallet_view.add_watch_only_account(address=address_to_watch, account_name=new_account_name)
    ../views/wallet_view.py:120: in add_watch_only_account
        self.account_has_activity_label.wait_for_visibility_of_element()
    ../views/base_element.py:147: in wait_for_visibility_of_element
        raise TimeoutException(
     Device 1: Text by accessibility id:`account-has-activity` is not found on the screen after wait_for_visibility_of_element
    



    Device sessions

    Class TestGroupChatMultipleDeviceMergedNewUI:

    1. test_group_chat_join_send_text_messages_push, id: 702807

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

    critical/chats/test_group_chat.py:95: in test_group_chat_join_send_text_messages_push
        self.chats[1].chat_element_by_text(message_to_admin).wait_for_status_to_be('Delivered', timeout=120)
    ../views/chat_view.py:225: in wait_for_status_to_be
        raise TimeoutException("Message status was not changed to %s, it's %s" % (expected_status, current_status))
     Message status was not changed to Delivered, it's Sent
    



    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 WalletTab by accessibility id: wallet-stack-tab

    critical/test_wallet.py:117: 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:39: in _get_balances_before_tx
        self.wallet_1.wallet_tab.click()
    ../views/base_element.py:90: in click
        element = self.find_element()
    ../views/base_element.py:79: in find_element
        raise NoSuchElementException(
     Device 1: WalletTab by accessibility id: `wallet-stack-tab` 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

    Device 1: Swiping right on element SlideButton
    Device 1: Find SlideButton by xpath: //*[@resource-id='slide-button-track']

    critical/test_wallet.py:109: in test_wallet_send_eth
        self.wallet_1.send_asset(address=self.receiver['address'], asset_name='Ether', amount=amount_to_send)
    ../views/wallet_view.py:99: in send_asset
        self.confirm_transaction()
    ../views/wallet_view.py:86: in confirm_transaction
        self.slide_and_confirm_with_password()
    ../views/wallet_view.py:80: in slide_and_confirm_with_password
        self.slide_button_track.slide()
    ../views/base_view.py:257: in slide
        self.swipe_right_on_element(width_percentage=1.3, start_x=100)
    ../views/base_element.py:308: in swipe_right_on_element
        location, size = self.get_element_coordinates()
    ../views/base_element.py:294: in get_element_coordinates
        element = self.find_element()
    ../views/base_element.py:79: in find_element
        raise NoSuchElementException(
     Device 1: SlideButton by xpath: `//*[@resource-id='slide-button-track']` 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 TestCommunityMultipleDeviceMerged:

    1. test_community_several_images_send_reply, id: 703194

    Test setup failed: critical/chats/test_public_chat_browsing.py:323: in prepare_devices
        self.community_2.join_community()
    ../views/chat_view.py:425: in join_community
        self.community_status_joined.wait_for_visibility_of_element(60)
    ../views/base_element.py:147: in wait_for_visibility_of_element
        raise TimeoutException(
     Device 2: Text by accessibility id:`status-tag-positive` is not found on the screen after wait_for_visibility_of_element
    



    2. test_community_one_image_send_reply, id: 702859

    Test setup failed: critical/chats/test_public_chat_browsing.py:323: in prepare_devices
        self.community_2.join_community()
    ../views/chat_view.py:425: in join_community
        self.community_status_joined.wait_for_visibility_of_element(60)
    ../views/base_element.py:147: in wait_for_visibility_of_element
        raise TimeoutException(
     Device 2: Text by accessibility id:`status-tag-positive` is not found on the screen after wait_for_visibility_of_element
    



    3. test_community_emoji_send_copy_paste_reply, id: 702840

    Test setup failed: critical/chats/test_public_chat_browsing.py:323: in prepare_devices
        self.community_2.join_community()
    ../views/chat_view.py:425: in join_community
        self.community_status_joined.wait_for_visibility_of_element(60)
    ../views/base_element.py:147: in wait_for_visibility_of_element
        raise TimeoutException(
     Device 2: Text by accessibility id:`status-tag-positive` is not found on the screen after wait_for_visibility_of_element
    



    4. test_community_mark_all_messages_as_read, id: 703086

    Test setup failed: critical/chats/test_public_chat_browsing.py:323: in prepare_devices
        self.community_2.join_community()
    ../views/chat_view.py:425: in join_community
        self.community_status_joined.wait_for_visibility_of_element(60)
    ../views/base_element.py:147: in wait_for_visibility_of_element
        raise TimeoutException(
     Device 2: Text by accessibility id:`status-tag-positive` is not found on the screen after wait_for_visibility_of_element
    



    5. test_community_contact_block_unblock_offline, id: 702894

    Test setup failed: critical/chats/test_public_chat_browsing.py:323: in prepare_devices
        self.community_2.join_community()
    ../views/chat_view.py:425: in join_community
        self.community_status_joined.wait_for_visibility_of_element(60)
    ../views/base_element.py:147: in wait_for_visibility_of_element
        raise TimeoutException(
     Device 2: Text by accessibility id:`status-tag-positive` is not found on the screen after wait_for_visibility_of_element
    



    6. test_community_edit_delete_message_when_offline, id: 704615

    Test setup failed: critical/chats/test_public_chat_browsing.py:323: in prepare_devices
        self.community_2.join_community()
    ../views/chat_view.py:425: in join_community
        self.community_status_joined.wait_for_visibility_of_element(60)
    ../views/base_element.py:147: in wait_for_visibility_of_element
        raise TimeoutException(
     Device 2: Text by accessibility id:`status-tag-positive` is not found on the screen after wait_for_visibility_of_element
    



    7. test_community_message_delete, id: 702839

    Test setup failed: critical/chats/test_public_chat_browsing.py:323: in prepare_devices
        self.community_2.join_community()
    ../views/chat_view.py:425: in join_community
        self.community_status_joined.wait_for_visibility_of_element(60)
    ../views/base_element.py:147: in wait_for_visibility_of_element
        raise TimeoutException(
     Device 2: Text by accessibility id:`status-tag-positive` is not found on the screen after wait_for_visibility_of_element
    



    8. test_community_message_send_check_timestamps_sender_username, id: 702838

    Device 2: Find LogInButton by accessibility id: login-button
    Device 2: Tap on found: LogInButton

    Test setup failed: critical/chats/test_public_chat_browsing.py:323: in prepare_devices
        self.community_2.join_community()
    ../views/chat_view.py:425: in join_community
        self.community_status_joined.wait_for_visibility_of_element(60)
    ../views/base_element.py:147: in wait_for_visibility_of_element
        raise TimeoutException(
     Device 2: Text by accessibility id:`status-tag-positive` is not found on the screen after wait_for_visibility_of_element
    



    Device sessions

    9. test_community_links_with_previews_github_youtube_twitter_gif_send_enable, id: 702844

    Test setup failed: critical/chats/test_public_chat_browsing.py:323: in prepare_devices
        self.community_2.join_community()
    ../views/chat_view.py:425: in join_community
        self.community_status_joined.wait_for_visibility_of_element(60)
    ../views/base_element.py:147: in wait_for_visibility_of_element
        raise TimeoutException(
     Device 2: Text by accessibility id:`status-tag-positive` is not found on the screen after wait_for_visibility_of_element
    



    10. test_community_message_edit, id: 702843

    Test setup failed: critical/chats/test_public_chat_browsing.py:323: in prepare_devices
        self.community_2.join_community()
    ../views/chat_view.py:425: in join_community
        self.community_status_joined.wait_for_visibility_of_element(60)
    ../views/base_element.py:147: in wait_for_visibility_of_element
        raise TimeoutException(
     Device 2: Text by accessibility id:`status-tag-positive` is not found on the screen after wait_for_visibility_of_element
    



    11. test_community_unread_messages_badge, id: 702841

    Test setup failed: critical/chats/test_public_chat_browsing.py:323: in prepare_devices
        self.community_2.join_community()
    ../views/chat_view.py:425: in join_community
        self.community_status_joined.wait_for_visibility_of_element(60)
    ../views/base_element.py:147: in wait_for_visibility_of_element
        raise TimeoutException(
     Device 2: Text by accessibility id:`status-tag-positive` is not found on the screen after wait_for_visibility_of_element
    



    Class TestDeepLinksOneDevice:

    1. test_links_open_universal_links_from_chat, id: 704613

    Device 1: Find Button by xpath: //*[@text="open community"]
    Device 1: Tap on found: Button

    critical/test_deep_and_universal_links.py:70: in test_links_open_universal_links_from_chat
        self.errors.verify_no_errors()
    base_test_case.py:190: in verify_no_errors
        pytest.fail('\n '.join([self.errors.pop(0) for _ in range(len(self.errors))]))
     Community 'Open community for e2e' was not requested to join by the url https://status.app/c/G1AAAGR0G-IRb2YJD4lRXwLusAFnGrDHGNl6Wt55MIARwVYvarnO873011-fdVSz1kHSan-qq0G96vOaMqyTRhJnQV74KCUr#zQ3shb9irJR66rhG1E8sQZX8pDU3dpGm4daYSmPVDd2e73ewE
    



    Device sessions

    2. test_links_deep_links, id: 702775

    Device 1: Find BrowserTab by accessibility id: browser-stack-tab
    Device 1: Tap on found: BrowserTab

    critical/test_deep_and_universal_links.py:114: in test_links_deep_links
        self.errors.verify_no_errors()
    base_test_case.py:190: in verify_no_errors
        pytest.fail('\n '.join([self.errors.pop(0) for _ in range(len(self.errors))]))
     Community 'Open community for e2e' was not requested to join by the deep link status.app://c/G1AAAGR0G-IRb2YJD4lRXwLusAFnGrDHGNl6Wt55MIARwVYvarnO873011-fdVSz1kHSan-qq0G96vOaMqyTRhJnQV74KCUr#zQ3shb9irJR66rhG1E8sQZX8pDU3dpGm4daYSmPVDd2e73ewE
    



    Device sessions

    Expected to fail tests (2)

    Click to expand

    Class TestGroupChatMultipleDeviceMergedNewUI:

    1. test_group_chat_mute_chat, id: 703495

    # STEP: Change device time so chat will be unmuted by timer
    Device 2: Long press on ChatElement

    critical/chats/test_group_chat.py:464: in test_group_chat_mute_chat
        self.errors.verify_no_errors()
    base_test_case.py:190: in verify_no_errors
        pytest.fail('\n '.join([self.errors.pop(0) for _ in range(len(self.errors))]))
     Chat is still muted after timeout 
    

    [[Chat is not unmuted after expected time: https://github.com//issues/19627]]

    Device sessions

    Class TestCommunityOneDeviceMerged:

    1. test_community_discovery, id: 703503

    Test is not run, e2e blocker  
    

    [[reason: [NOTRUN] Curated communities not loading, https://github.com//issues/17852]]

    Passed tests (33)

    Click to expand

    Class TestOneToOneChatMultipleSharedDevicesNewUiTwo:

    1. test_1_1_chat_delete_via_long_press_relogin, id: 702784
    Device sessions

    2. test_1_1_chat_is_shown_message_sent_delivered_from_offline, id: 702783
    Device sessions

    3. test_1_1_chat_mute_chat, id: 703496
    Device sessions

    Class TestWalletOneDevice:

    1. test_wallet_add_remove_regular_account, id: 727231
    Device sessions

    Class TestCommunityMultipleDeviceMergedTwo:

    1. test_community_markdown_support, id: 702809
    Device sessions

    2. test_community_hashtag_links_to_community_channels, id: 702948
    Device sessions

    3. test_community_mentions_push_notification, id: 702786
    Device sessions

    4. test_community_leave, id: 702845
    Device sessions

    5. test_community_join_when_node_owner_offline, id: 703629
    Device sessions

    Class TestActivityCenterContactRequestMultipleDevicePR:

    1. test_add_contact_field_validation, id: 702777
    Device sessions

    2. test_activity_center_contact_request_accept_swipe_mark_all_as_read, id: 702851
    Device sessions

    3. test_activity_center_contact_request_decline, id: 702850
    Device sessions

    Class TestOneToOneChatMultipleSharedDevicesNewUi:

    1. test_1_1_chat_emoji_send_reply_and_open_link, id: 702782
    Device sessions

    2. test_1_1_chat_text_message_delete_push_disappear, id: 702733
    Device sessions

    3. test_1_1_chat_push_emoji, id: 702813
    Device sessions

    4. test_1_1_chat_non_latin_messages_stack_update_profile_photo, id: 702745
    Device sessions

    5. test_1_1_chat_edit_message, id: 702855
    Device sessions

    6. test_1_1_chat_send_image_save_and_share, id: 703391
    Device sessions

    7. test_1_1_chat_pin_messages, id: 702731
    Device sessions

    8. test_1_1_chat_message_reaction, id: 702730
    Device sessions

    Class TestGroupChatMultipleDeviceMergedNewUI:

    1. test_group_chat_pin_messages, id: 702732
    Device sessions

    2. test_group_chat_send_image_save_and_share, id: 703297
    Device sessions

    3. test_group_chat_reactions, id: 703202
    Device sessions

    4. test_group_chat_offline_pn, id: 702808
    Device sessions

    Class TestCommunityOneDeviceMerged:

    1. test_restore_multiaccount_with_waku_backup_remove_switch, id: 703133
    Device sessions

    2. test_community_copy_and_paste_message_in_chat_input, id: 702742
    Device sessions

    3. test_community_undo_delete_message, id: 702869
    Device sessions

    4. test_community_navigate_to_channel_when_relaunch, id: 702846
    Device sessions

    5. test_community_mute_community_and_channel, id: 703382
    Device sessions

    Class TestActivityMultipleDevicePRTwo:

    1. test_activity_center_mentions, id: 702957
    Device sessions

    2. test_activity_center_admin_notification_accept_swipe, id: 702958
    Device sessions

    Class TestActivityMultipleDevicePR:

    1. test_navigation_jump_to, id: 702936
    Device sessions

    2. test_activity_center_reply_read_unread_delete_filter_swipe, id: 702947
    Device sessions

    Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
    Projects
    Archived in project
    Archived in project
    Development

    Successfully merging this pull request may close these issues.

    5 participants