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

Fix component tests, upgrade Jest & friends, and a few other goodies #18276

Merged
merged 3 commits into from
Dec 26, 2023

Conversation

ilmotta
Copy link
Contributor

@ilmotta ilmotta commented Dec 21, 2023

Fixes #18157
Closes #18235

Summary

The main motivation for this PR was to fix all component tests after the latest RN upgrade. But this PR also brings a few Christmas gifts 🎅

Dependency changes

  • Upgraded Jest: from 26.6.3 to latest 29.7.0.
  • Upgraded @testing-library/jest-native: from 5.3.0 to latest 5.4.3
  • Upgraded @testing-library/react-native: from 11.5.4 to 12.4.2
  • Removed explicit dependency on jest-circus, this is now the default test runner.
  • Removed explicit dependency on jest-environment-node. This is handled by the package manager.
  • Added jest-silent-reporter at version 0.5.0.

Why component tests were failing?

Many tests were failing because we were using RN Testing Library (RNTL) in an unreliable fashion (we still do, I haven't rewritten all of the tests, nor do I intend to). With the recent library upgrades, the unreliability was excerbated. Other times, the tests were incorrectly arranging data.

But to be fair, some degree of unreliability will always exist with RTL/RNTL, it's the nature of the beast. Next time you need to comment out a component test, consider first if the test can be rewritten in a more reliable way, even if you have your suspicions an external factor could be the cause.

with-redefs does not work with async code

This one may trip you up. Generally speaking, with-redefs should not be used with async code, assume the worst. The scope of the macro will cease to exist by the time the async code runs. In many tests we were using with-redefs, then calling render, but for some components that use use-effect, JS timers, animations, etc it's unreliable and were the reason for failures.

I have not rewritten all usages of with-redefs in this PR. Some tests still pass with with-redefs, but that's by chance, it's not what you think.

Don't take my word! It's easy to reproduce:

(defn foo []
  :foo)

(foo)
;; => :foo

(with-redefs [foo (constantly :bar)]
  (foo))
;; => :bar

(js/setTimeout
 (fn []
   (tap> [:calling-foo (foo)]))
 100)
;; Taps [:calling-foo :foo]
;; As you would expect, when running without with-redefs, it prints :foo.

;; So far so good, but whatch what happens with async code:

(with-redefs [foo (constantly :bar)]
  (js/setTimeout
   (fn []
     (tap> [:calling-foo (foo)]))
   100))
;; Taps [:calling-foo :foo]
;; ====> PROBLEM: Taps :foo, not :bar as one might expect

Not waiting on wait-for

When test-helpers.component/wait-for is used, subsequent assertions/etc should be done after the promise returned by wait-for is resolved. But remember to not perform side-effects inside the wait-for callback (check out the docs https://callstack.github.io/react-native-testing-library/docs/api#waitfor). Most, if not all of our usages of wait-for were not waiting. I get the impression ClojureScript confuses JS devs, because in Javascript it's more common for devs to remember to use await.

Many tests do work without waiting, but I've seen time and time again tests behaving erratically while working on this PR.

We should strive for correctness over convenience if we want to minimize this class of problem, so await (use .then) after wait-for.

🎁 1 - Silence Jest on demand

If you need to re-run component tests frequently, like me, you may want to reduce the output verbosity. By passing JEST_USE_SILENT_REPORTER=true to make component-test or make component-test-watch you will see a lot less noise and be able to focus on what really matters to you.

🎁 2 - Selectively focus/disable tests

I know this is a given when using Jest outside CLJS, but because of our need to first compile CLJS to JS before running tests via Jest, we couldn't easily skip or focus on specific tests. This changes now!

From this PR onwards, we should never again have to change the list of requires in files core_spec.cljs. Commenting out required namespaces gives a bad DX because it causes constant rebasing issues.

This is the screenshot for skipping the only test I couldn't fix yet. I'll do it in a follow-up, or at least try 🤷

🎁 3 - Translations now work as in prod code (but only English)

Translations performed by *-by-translation-text can be done now without any workaround under the hood. The query functions are now linted just like i18n/label, which means static translation keywords must be qualified with :t/, which is good for consistency.

Steps to test

There's nothing to manually test from a QA perspective. Changes were made almost exclusively in test code. I believe my manual smoke checks and e2e tests are sufficient.

status: ready

@ilmotta ilmotta added the Fixes After React Native Upgrade a set of fixes possible after upgrade React Native version label Dec 21, 2023
@ilmotta ilmotta self-assigned this Dec 21, 2023
@ilmotta ilmotta force-pushed the upgrade-jest-and-fix-component-tests branch from 7d8844c to 73c61a7 Compare December 21, 2023 21:46
@status-im-auto
Copy link
Member

status-im-auto commented Dec 21, 2023

Jenkins Builds

Click to see older builds (13)
Commit #️⃣ Finished (UTC) Duration Platform Result
✔️ 73c61a7 #2 2023-12-21 21:51:02 ~4 min tests 📄log
✔️ 73c61a7 #2 2023-12-21 21:53:15 ~6 min android-e2e 🤖apk 📲
73c61a7 #2 2023-12-21 21:53:40 ~7 min ios 📄log
✔️ 73c61a7 #2 2023-12-21 21:54:29 ~7 min android 🤖apk 📲
✔️ 884266b #3 2023-12-22 17:03:36 ~5 min tests 📄log
884266b #3 2023-12-22 17:03:55 ~5 min ios 📄log
✔️ 884266b #3 2023-12-22 17:04:36 ~6 min android-e2e 🤖apk 📲
✔️ 884266b #3 2023-12-22 17:04:54 ~6 min android 🤖apk 📲
✔️ 711a3fb #4 2023-12-25 12:19:56 ~4 min tests 📄log
711a3fb #4 2023-12-25 12:21:03 ~5 min ios 📄log
✔️ 711a3fb #4 2023-12-25 12:22:08 ~7 min android-e2e 🤖apk 📲
✔️ 711a3fb #4 2023-12-25 12:23:07 ~7 min android 🤖apk 📲
711a3fb #6 2023-12-25 13:10:40 ~5 min ios 📄log
Commit #️⃣ Finished (UTC) Duration Platform Result
✔️ fee498e #6 2023-12-26 10:57:52 ~5 min tests 📄log
✔️ fee498e #6 2023-12-26 11:00:32 ~7 min android 🤖apk 📲
✔️ fee498e #6 2023-12-26 11:00:36 ~7 min android-e2e 🤖apk 📲
✔️ fee498e #8 2023-12-26 11:06:04 ~13 min ios 📱ipa 📲
✔️ d949257 #7 2023-12-26 12:35:39 ~3 min tests 📄log
✔️ d949257 #7 2023-12-26 12:38:13 ~6 min android-e2e 🤖apk 📲
✔️ d949257 #7 2023-12-26 12:38:29 ~6 min android 🤖apk 📲
✔️ d949257 #9 2023-12-26 12:43:22 ~11 min ios 📱ipa 📲

@ilmotta ilmotta changed the title [WIP] Fixing component tests Fix component tests, upgrade Jest & friends, and a few other goodies Dec 22, 2023
(fn []
(let [index (.indexOf colors/account-colors default-selected)]
(when (and @ref (>= index 0))
(some-> ^js @ref
Copy link
Contributor Author

Choose a reason for hiding this comment

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

FYI: The component test caught two potential bugs here, 1st that the index could be -1 and then scrollToIndex would throw an exception, and 2nd @ref could be nil and then an exception would be thrown as well.

(fn []
(h/clear-all-timers)
(h/use-real-timers)))
(h/setup-fake-timers)
Copy link
Contributor Author

Choose a reason for hiding this comment

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

FYI: Fake timers are a nice feature. When I tried to enable them in more places, sometimes they could help make the tests more deterministic due to the elimination of some timing issues, but tests ended up failing for other reasons. It's a tool, and as such should be used only when needed.

;; NOTE: Throws error:
;; _reactNative.Animated.timing(widthValue2, {
;; Cannot read properties of undefined (reading 'timing')
(h/test-skip "render 1 week wallet graph"
Copy link
Contributor Author

Choose a reason for hiding this comment

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

FYI: Using h/test-skip here shows how we can skip tests without commenting them out. This is important, for instance, if you comment all the tests in a test file, Jest will throw an error and the test suite will fail saying at least one test should exist per file.

For this particular test, as mentioned in the PR description, I couldn't fix it yet, but it's just one among so many fixed. We will find a way.

Copy link
Contributor

Choose a reason for hiding this comment

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

yep it's the way to go 👍

(h/fire-event :on-focus (h/get-by-label-text :address-text-input))
(h/fire-event :on-blur (h/get-by-label-text :address-text-input))
(h/has-prop (h/get-by-label-text :address-text-input) :placeholder-text-color colors/neutral-30)))
(-> (h/wait-for #(h/get-by-label-text :clear-button))
Copy link
Contributor Author

@ilmotta ilmotta Dec 22, 2023

Choose a reason for hiding this comment

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

FYI: Notice how it's unnecessary to surround get-by-* with h/is-truthy when used as a matcher for h/wait-for. The spec for RNTL waitForclearly says the predicate should throw an exception when not found and everyget-by-*` function does that. Since this is a common need, it's nice to be able to write less.

(-> (h/wait-for #(h/is-falsy (h/query-by-label-text :clear-button)))
(.then (fn []
(h/wait-for #(h/get-by-label-text :loading-button-container))))
(.then #(h/was-called on-detect-ens))))))
Copy link
Contributor Author

Choose a reason for hiding this comment

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

FYI: Notice how the next assertion must go after the promise returned by the second wait-for is fulfilled.

I think adding the library https://github.com/funcool/promesa to the project is starting to make even more sense to keep the syntax more clean, but I also think these few .then calls look just fine.

Copy link
Contributor

Choose a reason for hiding this comment

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

+1 for promesa, I guess this discussion shiould be handled outside of the pr. It would be good to get a clearer understanding for the pros/cons of using that library in the project.
cc @clauxx

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Sure, outside this PR. It's like the 5th or so time I remember we kind of wish promesa was in the project. Also even an external contributor mentioned this. I used it a lot in the past, it's kind of a no-brainer.

(take 19
(interleave (repeat [rn/view {:style (style/dashed-line-line network-name)}])
(repeat [rn/view {:style style/dashed-line-space}])))])
(into [rn/view {:style style/dashed-line}]
Copy link
Contributor Author

Choose a reason for hiding this comment

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

FYI: I resolved almost all or all (can't remember now) of the React warnings about non-unique keys. This is one example.

[react-native.audio-toolkit :as audio]
[status-im.contexts.chat.messages.content.audio.view :as audio-message]
[test-helpers.component :as h]))

;; We can't rely on `with-redefs` with async code.
(set! audio/destroy-player #())
Copy link
Contributor Author

Choose a reason for hiding this comment

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

FYI: Using set! is only safe because Jest isolates tests between files, so the audio/destroy-player var is modified only within the scope of the tests in this file.

(h/describe "community options for bottom sheets"
(h/setup-restorable-re-frame)
Copy link
Contributor Author

Choose a reason for hiding this comment

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

FYI: This setup function makes the dozens of warnings about subscriptions being redefined go away. Now each test starts with a blank canvas.

@@ -48,7 +48,6 @@

(rf/reg-event-fx :wallet/send-select-amount
(fn [{:keys [db]} [{:keys [amount]}]]
(js/alert "Not implemented yet")
Copy link
Contributor Author

Choose a reason for hiding this comment

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

FYI: re-frame events shouldn't have side-effects, though we have one famous exception in the project: we call log functions :)

@@ -1,25 +1,71 @@
const transformIgnorePatterns = () => {
Copy link
Contributor

Choose a reason for hiding this comment

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

beautiful

(defmacro test
[description & body]
`(js/global.test
~description
(fn [] ~@body)))

(defmacro test-skip
Copy link
Contributor

Choose a reason for hiding this comment

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

much needed!
Thank you

@@ -56,13 +55,6 @@ stdenv.mkDerivation {
'-Wl,--build-id=none'
'';

# Remove when we upgrade jest to 29
Copy link
Contributor

Choose a reason for hiding this comment

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

Less patches! YAY!

Copy link
Contributor

@siddarthkay siddarthkay left a comment

Choose a reason for hiding this comment

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

This is commendable work @ilmotta
Thanks for taking care of this 🚀

Copy link
Contributor

@OmarBasem OmarBasem left a comment

Choose a reason for hiding this comment

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

Thank you for fixing this @ilmotta !

Comment on lines 8 to 9
[status-im.contexts.wallet.create-account.edit-derivation-path.component-spec]
[status-im.contexts.wallet.send.input-amount.component-spec]))

;; [status-im.contexts.wallet.create-account.edit-derivation-path.component-spec]
Copy link
Contributor

Choose a reason for hiding this comment

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

Btw there is one more test here (after rebasing)

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Oh thanks for catching that @OmarBasem.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

@OmarBasem, @J-Son89, when possible, please have a look at this commit I made to fix failing tests 884266b. The problem appeared after I rebased, I guess from the recently merged commit 5eb0baa

The root cause was because in quo.components.wallet.network-bridge.view/view we were calling name on a nil value, but this throws exceptions in the tests for status-im.contexts.wallet.send.input-amount.component-spec. I don't know if this could be a problem in production later on, but it's safer anyway to guard against calling name in a possibly nil value.

Copy link
Contributor

Choose a reason for hiding this comment

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

LGTM @ilmotta 👍

@@ -364,6 +364,7 @@ android-test:
component-test-watch: export TARGET := clojure
component-test-watch: export COMPONENT_TEST := true
component-test-watch: export BABEL_ENV := test
component-test-watch: export JEST_USE_SILENT_REPORTER := false
Copy link
Contributor

@J-Son89 J-Son89 Dec 22, 2023

Choose a reason for hiding this comment

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

would be nice if we can call these with a shorthand arg, e.g
make component-test-watch --silent or something to that effect.
Also this pr already does so much, so not to worry about that here 👌

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Good idea @J-Son89, but to achieve this DX is impossible I think with make. The argument must be passed with a variable, like make component-test-watch ARG1=--silent. Maybe we should start to consider scripts instead to create a better CLI, we could even write some with babashka, something to consider cc @yqrashawn

Copy link
Contributor

@mohsen-ghafouri mohsen-ghafouri left a comment

Choose a reason for hiding this comment

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

Impressive improvement 🚀

@vkjr
Copy link
Contributor

vkjr commented Dec 22, 2023

Amazing PR, thanks @ilmotta! 🚀
Would it be convenient for you to extract the knowledge from this PR to some document?

@ilmotta
Copy link
Contributor Author

ilmotta commented Dec 22, 2023

Amazing PR, thanks @ilmotta! 🚀 Would it be convenient for you to extract the knowledge from this PR to some document?

Hey @vkjr, @siddarthkay said something similar, so that's two already :) I'll try then to capture some good practices in a separate document. Will create an issue to track this progress.

Edit: Issue created #18287

yarn.lock Show resolved Hide resolved
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.

🎉

Copy link
Contributor

Choose a reason for hiding this comment

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

@ilmotta This file has some commented-out require at the top, could you please remove it

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Thanks @ajayesivan, this was due to a rebase. It's fixed now.

@siddarthkay siddarthkay force-pushed the upgrade-jest-and-fix-component-tests branch from 711a3fb to 884266b Compare December 26, 2023 10:50
@siddarthkay siddarthkay force-pushed the upgrade-jest-and-fix-component-tests branch from 884266b to fee498e Compare December 26, 2023 10:52
@status-im-auto
Copy link
Member

75% of end-end tests have passed

Total executed tests: 48
Failed tests: 6
Expected to fail tests: 6
Passed tests: 36
IDs of failed tests: 702777,703133,703086,704615,702855,703629 
IDs of expected to fail tests: 702732,702894,702783,703503,702731,702808 

Failed tests (6)

Click to expand
  • Rerun failed tests

  • Class TestCommunityMultipleDeviceMerged:

    1. test_community_mark_all_messages_as_read, id: 703086

    Device 1: Looking for chat: 'general'
    Device 1: Click system back button

    critical/chats/test_public_chat_browsing.py:753: in test_community_mark_all_messages_as_read
        community_1_element.long_press_until_element_is_shown(mark_as_read_button)
    ../views/base_element.py:318: in long_press_until_element_is_shown
        element = self.find_element()
    ../views/home_view.py:74: in find_element
        self.wait_for_visibility_of_element(20)
    ../views/base_element.py:139: in wait_for_visibility_of_element
        raise TimeoutException(
     Device 1: ChatElement by xpath:`//*[@content-desc='chat-name-text'][starts-with(@text,'open community')]/..` is not found on the screen after wait_for_visibility_of_element; also Unexpected Alert is shown: 'Feature not implemented.'
    



    Device sessions

    2. test_community_edit_delete_message_when_offline, id: 704615

    Device 1: Could not reach home view by pressing system back button
    Device 1: Find CommunitiesTab by accessibility id: communities-stack-tab

    critical/chats/test_public_chat_browsing.py:771: in test_community_edit_delete_message_when_offline
        self.home_1.communities_tab.click()
    ../views/base_element.py:90: in click
        self.find_element().click()
    ../views/base_element.py:79: in find_element
        raise NoSuchElementException(
     Device 1: CommunitiesTab by accessibility id: `communities-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; also Unexpected Alert is shown: 'Feature not implemented.'
    



    Device sessions

    Class TestOneToOneChatMultipleSharedDevicesNewUi:

    1. test_1_1_chat_edit_message, id: 702855

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

    critical/chats/test_1_1_public_chats.py:380: in test_1_1_chat_edit_message
        self.chat_2.chat_element_by_text(message_before_edit_1_1).wait_for_status_to_be("Delivered")
    ../views/chat_view.py:243: 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 TestActivityCenterContactRequestMultipleDevicePR:

    1. test_add_contact_field_validation, id: 702777

    Device 2: Tap on found: Button
    Device 2: Attempt 0 is successful clicking close-activity-center

    activity_center/test_activity_center.py:180: in test_add_contact_field_validation
        self.home_2.handle_contact_request(new_username_1)
    ../views/home_view.py:382: in handle_contact_request
        chat_element.accept_contact_request()
    ../views/home_view.py:150: in accept_contact_request
        self.handle_cr("accept-contact-request")
    ../views/home_view.py:147: in handle_cr
        ).wait_for_rendering_ended_and_click()
    ../views/base_element.py:155: in wait_for_rendering_ended_and_click
        self.wait_for_visibility_of_element(20)
    ../views/base_element.py:139: in wait_for_visibility_of_element
        raise TimeoutException(
     Device 2: Button by xpath:`//*[contains(@text, 'test user 123')]/ancestor::*[@content-desc='activity']/*[@content-desc="accept-contact-request"]` is not found on the screen after wait_for_visibility_of_element
    



    Device sessions

    Class TestCommunityMultipleDeviceMergedTwo:

    1. test_community_join_when_node_owner_offline, id: 703629

    Device 2: Tap on found: Button
    Device 2: Looking for community: 'open community'

    critical/chats/test_public_chat_browsing.py:1134: in test_community_join_when_node_owner_offline
        self.errors.verify_no_errors()
    base_test_case.py:191: in verify_no_errors
        pytest.fail('\n '.join([self.errors.pop(0) for _ in range(len(self.errors))]))
     Joined status is not displayed
    E    open community is not listed inside Joined communities tab
    



    Device sessions

    Class TestCommunityOneDeviceMerged:

    1. test_restore_multiaccount_with_waku_backup_remove_switch, id: 703133

    Device 1: Find Button by accessibility id: show-profiles
    Device 1: Tap on found: Button

    critical/chats/test_public_chat_browsing.py:273: in test_restore_multiaccount_with_waku_backup_remove_switch
        self.errors.verify_no_errors()
    base_test_case.py:191: in verify_no_errors
        pytest.fail('\n '.join([self.errors.pop(0) for _ in range(len(self.errors))]))
     zQ3...pJN5P was not restored as a contact from waku backup!
    E    zQ3...UxXqE was not restored as a contact from waku backup!
    E    admin_open was not restored from waku-backup!!
    E    member_open was not restored from waku-backup!!
    E    admin_closed was not restored from waku-backup!!
    E    member_closed was not restored from waku-backup!!
    



    Device sessions

    Expected to fail tests (6)

    Click to expand

    Class TestOneToOneChatMultipleSharedDevicesNewUiTwo:

    1. test_1_1_chat_is_shown_message_sent_delivered_from_offline, id: 702783

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

    critical/chats/test_1_1_public_chats.py:612: in test_1_1_chat_is_shown_message_sent_delivered_from_offline
        self.errors.verify_no_errors()
    base_test_case.py:191: in verify_no_errors
        pytest.fail('\n '.join([self.errors.pop(0) for _ in range(len(self.errors))]))
     Message status was not changed to Delivered, it's Sent after back up online! 
    

    [[Data delivery issue]]

    Device sessions

    Class TestCommunityMultipleDeviceMerged:

    1. test_community_contact_block_unblock_offline, id: 702894

    Device 1: Find ProfileButton by accessibility id: open-profile
    Device 1: Wait for element Button for max 30s and click when it is available

    critical/chats/test_public_chat_browsing.py:685: in test_community_contact_block_unblock_offline
        profile_1.contacts_button.wait_and_click()
    ../views/base_element.py:96: in wait_and_click
        self.wait_for_visibility_of_element(sec)
    ../views/base_element.py:139: in wait_for_visibility_of_element
        raise TimeoutException(
     Device 1: Button by accessibility id:`contacts-button` is not found on the screen after wait_for_visibility_of_element 
    

    [[Message can be missed after unblock: https://github.com//issues/16873]]

    Device sessions

    Class TestOneToOneChatMultipleSharedDevicesNewUi:

    1. test_1_1_chat_pin_messages, id: 702731

    Test is not run, e2e blocker  
    

    [[reason: [NOTRUN] Pin feature is in development]]

    Class TestGroupChatMultipleDeviceMergedNewUI:

    1. test_group_chat_pin_messages, id: 702732

    Test is not run, e2e blocker  
    

    [[reason: [NOTRUN] Pin feature is in development]]

    2. test_group_chat_offline_pn, id: 702808

    Device 3: Looking for a message by text: message from old member
    Device 3: Looking for a message by text: message from new member

    critical/chats/test_group_chat.py:324: in test_group_chat_offline_pn
        self.errors.verify_no_errors()
    base_test_case.py:191: in verify_no_errors
        pytest.fail('\n '.join([self.errors.pop(0) for _ in range(len(self.errors))]))
     Messages PN was not fetched from offline 
    

    [[Data delivery issue]]

    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 (36)

    Click to expand

    Class TestOneToOneChatMultipleSharedDevicesNewUiTwo:

    1. test_1_1_chat_delete_via_long_press_relogin, id: 702784
    Device sessions

    2. test_1_1_chat_mute_chat, id: 703496
    Device sessions

    Class TestCommunityMultipleDeviceMerged:

    1. test_community_several_images_send_reply, id: 703194
    Device sessions

    2. test_community_one_image_send_reply, id: 702859
    Device sessions

    3. test_community_emoji_send_copy_paste_reply, id: 702840
    Device sessions

    4. test_community_message_delete, id: 702839
    Device sessions

    5. test_community_message_send_check_timestamps_sender_username, id: 702838
    Device sessions

    6. test_community_links_with_previews_github_youtube_twitter_gif_send_enable, id: 702844
    Device sessions

    7. test_community_message_edit, id: 702843
    Device sessions

    8. test_community_unread_messages_badge, id: 702841
    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_send_image_save_and_share, id: 703391
    Device sessions

    6. test_1_1_chat_message_reaction, id: 702730
    Device sessions

    Class TestActivityCenterContactRequestMultipleDevicePR:

    1. test_activity_center_contact_request_accept_swipe_mark_all_as_read, id: 702851
    Device sessions

    2. test_activity_center_contact_request_decline, id: 702850
    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 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

    Class TestGroupChatMultipleDeviceMergedNewUI:

    1. test_group_chat_mute_chat, id: 703495
    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_join_send_text_messages_push, id: 702807
    Device sessions

    Class TestDeepLinksOneDevice:

    1. test_links_open_universal_links_from_chat, id: 704613
    Device sessions

    2. test_links_deep_links, id: 702775
    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

    Class TestCommunityOneDeviceMerged:

    1. test_community_copy_and_paste_message_in_chat_input, id: 702742
    Device sessions

    2. test_community_undo_delete_message, id: 702869
    Device sessions

    3. test_community_navigate_to_channel_when_relaunch, id: 702846
    Device sessions

    4. test_community_mute_community_and_channel, id: 703382
    Device sessions

    @ilmotta ilmotta merged commit 0b4a154 into develop Dec 26, 2023
    6 checks passed
    @ilmotta ilmotta deleted the upgrade-jest-and-fix-component-tests branch December 26, 2023 14:58
    Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
    Labels
    Fixes After React Native Upgrade a set of fixes possible after upgrade React Native version
    Projects
    Archived in project
    Archived in project
    Development

    Successfully merging this pull request may close these issues.

    Take a look at flaky component test
    9 participants