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

Wallet - Add malli spec to Quo Wallet components (batch 1) #18354 #18707

Merged
merged 24 commits into from
Feb 8, 2024

Conversation

mmilad75
Copy link
Contributor

@mmilad75 mmilad75 commented Feb 2, 2024

fixes #18354

The following components are updated:

Quo / Wallet

  • account-card
  • account-origin
  • account-overview
  • account-permissions
  • address-text
  • confirmation-progress

[:metrics? {:optional true} [:maybe :boolean]]
[:on-press {:optional true} [:maybe fn?]]])

(def ?amount
Copy link
Contributor

Choose a reason for hiding this comment

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

I think we should mark internal schemas private

Copy link
Contributor

@J-Son89 J-Son89 Feb 2, 2024

Choose a reason for hiding this comment

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

I like how you split up the schemas 🙌

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Done

@status-im-auto
Copy link
Member

status-im-auto commented Feb 2, 2024

Jenkins Builds

Click to see older builds (40)
Commit #️⃣ Finished (UTC) Duration Platform Result
✔️ f7920b6 #1 2024-02-02 12:02:48 ~5 min ios 📱ipa 📲
f7920b6 #1 2024-02-02 12:02:58 ~5 min tests 📄log
✔️ f7920b6 #1 2024-02-02 12:04:04 ~7 min android-e2e 🤖apk 📲
✔️ f7920b6 #1 2024-02-02 12:04:33 ~7 min android 🤖apk 📲
3aee3d5 #3 2024-02-02 15:33:59 ~6 min tests 📄log
✔️ 3aee3d5 #3 2024-02-02 15:35:06 ~7 min android-e2e 🤖apk 📲
✔️ 3aee3d5 #3 2024-02-02 15:36:14 ~8 min ios 📱ipa 📲
✔️ 3aee3d5 #3 2024-02-02 15:37:45 ~9 min android 🤖apk 📲
c034172 #4 2024-02-02 15:54:24 ~6 min tests 📄log
✔️ c034172 #4 2024-02-02 15:54:40 ~6 min ios 📱ipa 📲
✔️ c034172 #4 2024-02-02 15:55:24 ~7 min android 🤖apk 📲
✔️ c034172 #4 2024-02-02 15:56:37 ~8 min android-e2e 🤖apk 📲
✔️ c70c4d5 #6 2024-02-06 10:46:55 ~5 min tests 📄log
✔️ c70c4d5 #6 2024-02-06 10:47:05 ~5 min ios 📱ipa 📲
✔️ c70c4d5 #6 2024-02-06 10:49:02 ~7 min android-e2e 🤖apk 📲
✔️ c70c4d5 #6 2024-02-06 10:49:04 ~7 min android 🤖apk 📲
✔️ d7bf46c #7 2024-02-06 11:29:09 ~5 min tests 📄log
✔️ d7bf46c #7 2024-02-06 11:29:36 ~5 min ios 📱ipa 📲
✔️ d7bf46c #7 2024-02-06 11:30:55 ~6 min android 🤖apk 📲
✔️ d7bf46c #7 2024-02-06 11:32:24 ~8 min android-e2e 🤖apk 📲
✔️ b787506 #8 2024-02-06 12:20:58 ~6 min tests 📄log
✔️ b787506 #8 2024-02-06 12:21:20 ~6 min ios 📱ipa 📲
✔️ b787506 #8 2024-02-06 12:23:44 ~8 min android 🤖apk 📲
✔️ b787506 #8 2024-02-06 12:23:48 ~8 min android-e2e 🤖apk 📲
✔️ 4f95343 #9 2024-02-06 21:02:00 ~5 min tests 📄log
✔️ 4f95343 #9 2024-02-06 21:02:10 ~5 min ios 📱ipa 📲
✔️ 4f95343 #9 2024-02-06 21:04:25 ~7 min android-e2e 🤖apk 📲
✔️ 4f95343 #9 2024-02-06 21:04:29 ~7 min android 🤖apk 📲
✔️ cda571c #10 2024-02-07 11:07:24 ~7 min ios 📱ipa 📲
✔️ cda571c #10 2024-02-07 11:11:08 ~10 min android-e2e 🤖apk 📲
✔️ cda571c #10 2024-02-07 11:11:47 ~11 min tests 📄log
✔️ cda571c #10 2024-02-07 11:13:17 ~13 min android 🤖apk 📲
✔️ bf4673b #11 2024-02-07 14:00:15 ~5 min tests 📄log
✔️ bf4673b #11 2024-02-07 14:01:09 ~6 min ios 📱ipa 📲
✔️ bf4673b #11 2024-02-07 14:02:40 ~7 min android-e2e 🤖apk 📲
✔️ bf4673b #11 2024-02-07 14:02:44 ~7 min android 🤖apk 📲
✔️ 7a5f6cc #12 2024-02-07 15:23:38 ~9 min ios 📱ipa 📲
✔️ 7a5f6cc #12 2024-02-07 15:26:10 ~12 min tests 📄log
✔️ 7a5f6cc #12 2024-02-07 15:26:44 ~12 min android-e2e 🤖apk 📲
✔️ 7a5f6cc #12 2024-02-07 15:27:13 ~13 min android 🤖apk 📲
Commit #️⃣ Finished (UTC) Duration Platform Result
✔️ cc52ed4 #13 2024-02-08 13:26:48 ~6 min ios 📱ipa 📲
✔️ cc52ed4 #13 2024-02-08 13:30:21 ~10 min android-e2e 🤖apk 📲
✔️ cc52ed4 #13 2024-02-08 13:36:16 ~16 min tests 📄log
✔️ cc52ed4 #13 2024-02-08 13:36:31 ~16 min android 🤖apk 📲
✔️ 9735f08 #14 2024-02-08 16:05:55 ~5 min tests 📄log
✔️ 9735f08 #14 2024-02-08 16:07:09 ~6 min android 🤖apk 📲
✔️ 9735f08 #14 2024-02-08 16:08:08 ~7 min android-e2e 🤖apk 📲
✔️ 9735f08 #14 2024-02-08 16:11:12 ~11 min ios 📱ipa 📲

[quo.components.wallet.account-overview.style :as style]
[quo.foundations.colors :as colors]
[quo.theme :as quo.theme]
[react-native.core :as rn]
[schema.core :as schema]
Copy link
Contributor

Choose a reason for hiding this comment

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

imo we should move this schema.core stuff to schema files and create the wrapper in there. We should only need one import into a view file related to schemas.
wdyt @ilmotta, @clauxx ?

Copy link
Member

Choose a reason for hiding this comment

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

It could be a function that would wrap instrumentation, but it feels boilerplate-ish to have in each. Would be easier if we used schema/=>, then from the component-schema file we could just require the view and instrument it, but there was an issue with that that I don't remember now from our initial conversations.

Copy link
Contributor

Choose a reason for hiding this comment

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

I don't quite understand the problem of requiring schema.core, since that's the namespace exposing instrument.

Copy link
Contributor

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.

hauahahaha any small time make big time!

@@ -142,8 +142,8 @@
:epoch-number-mainnet "181,329"
:epoch-number-optimism "181,329"
:epoch-number-arbitrum "181,329"
:optimism-progress-percentage "10"
Copy link
Contributor

Choose a reason for hiding this comment

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

curious, is this a result of adding the schema? :)

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Yes, some use cases were wrong and I fixed them

Copy link
Member

@clauxx clauxx left a comment

Choose a reason for hiding this comment

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

Great work with malli 💯! Looks good aside from some small comments

Comment on lines 11 to 14
[:name [:maybe :string]]
[:address [:maybe :string]]
[:emoji [:maybe :string]]
[:customization-color [:maybe [:or :string :keyword]]]]]
Copy link
Member

Choose a reason for hiding this comment

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

Are these keys always going to be passed and sometimes may be (explicitly) nil or are they optional? If so, should add {:optional true}

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Done.

@@ -60,7 +60,7 @@
:data cards
:horizontal true
:separator [rn/view {:style style/separator}]
:render-fn quo/account-card
:render-fn (fn [item] [quo/account-card item])
Copy link
Member

Choose a reason for hiding this comment

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

why is this needed?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

It was throwing malli errors before this. I don't know why 🤔

Copy link
Contributor

Choose a reason for hiding this comment

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

We should probably understand why because we should be able to just pass quo/account-card without wrapping.

Copy link
Contributor

Choose a reason for hiding this comment

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

@ilmotta The original flat-list implementation expects a function to be passed.

Just saying again that we should revisit our wrapper 👁️

Copy link
Contributor

Choose a reason for hiding this comment

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

But quo/account-card is a function, so it surprises me that we need to wrap it in a dummy closure.

Copy link
Contributor

Choose a reason for hiding this comment

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

Just saying again that we should revisit our wrapper 👁️

Just saying... I see you! Yes, that wrapper function seems very inefficient with the creation of anonymous functions over and over.

[:=>
[:catn
[:props
[:map
Copy link
Member

Choose a reason for hiding this comment

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

Since we didn't yet arrive at a decision on open/close maps this is not critical, but since this component's props are simpler I'd suggest we close the map to keep it consistent with the rest of the schemas.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

This one is used in some places that receives data directly from backend, so a lot of extra props are passed to it. It's better to let it be open for now

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 open.

  1. Backend passes props that the component might not need
  2. Quo preview passes @state while calling the component, which may contain extra kv pairs.

Copy link
Contributor

@shivekkhurana shivekkhurana 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 overall, marked some lines with my doubts.

[:catn
[:props
[:map
[:account
Copy link
Contributor

Choose a reason for hiding this comment

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

Do you see value in extracting account to schema.common ?

Copy link
Contributor

Choose a reason for hiding this comment

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

Where to put schemas is always difficult to decide. From one angle, I prefer to think schema.common is the place for schemas more decoupled from domains. Something where we would describe a big integer, a public key, a theme, a style map, and so on. But an account schema could live outside schema.common. This would help us separate things based on bounded contexts. Otherwise there's a tendency common stuff can absorb anything.

An account can mean other things besides a wallet account. Maybe if we want to define a schema in the global registry, it should be in a different namespace, so the keyword in the registry would be :schema.wallet/account.

Or maybe we shouldn't couple quo components with domain concepts, even though they look like they depend on them. This would lead to a bit of duplication of schemas, but then we would be able to evolve schemas independently from quo. Just a tradeoff.

Long train of thought, just ideas on the table @shivekkhurana.

Copy link
Contributor

Choose a reason for hiding this comment

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

There are two schools of typings that I have observed:

  1. Move all types to their own ns
    This helps avoid circular deps. that may arise in future

  2. Keep types close to implementation
    Better docs, easier to implement as no extra files are needed, available at the point of execution.

I personally prefer 2 (ie local types), but there are some domain models that will be repeated. Account being one of them maybe?

So in my head, I assumed schema.common to absorb any type that appears more than once.

Copy link
Contributor

Choose a reason for hiding this comment

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

to absorb any type that appears more than once.

I also prefer option 2 @shivekkhurana whenever possible and only use the global registry if really necessary.

Maybe the word common is not the best word when I picked it up, because it implies any schema common to two or more namespaces can already live up there. We're already starting to have discussions about having schemas for data crossing the status-go <-> mobile barrier (e.g. in contract tests and events), which means it won't take long until we have lots of common schemas (complicated ones, not like quo schemas) that are all representing entities that are not tied to any particular part of the app.

Putting them all under the keyword :schema.common/* can work for a while, but something tells me we'll refactor later on and break them apart by domains, so instead of :schema.common/wallet-account we would have :schema.wallet/account. Of course, I'm guessing about this supposed future, we may never get there and so using the :schema.common/ qualification is totally fine now.

[:map
[:account-name {:optional true} [:maybe :string]]
[:currency-change {:optional true} [:maybe :string]]
[:current-value {:optional true} [:maybe :string]]
Copy link
Contributor

Choose a reason for hiding this comment

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

Shouldn't this be :number ?

Copy link
Contributor

@ilmotta ilmotta Feb 2, 2024

Choose a reason for hiding this comment

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

Good point. :string is too loose to represent numbers. For instance, if the value is a string because it's an encoded big integer, then it would be better to at least create an alias to represent this, e.g. :schema.common/raw-bigint. I'm not sure if that's the case here, but the :string schema is also a good example of a type that doesn't help me figure out how to deal with it.

In the future, we could also consider only passing actual numbers throughout the app, even if some of them are representations of big numbers and need to be decoded as such. I did this in the past and it can bring sanity to the whole system. But we would need to make sure all numbers are decoded (from status-go responses) when written to the app-db.

[:currency-change {:optional true} [:maybe :string]]
[:current-value {:optional true} [:maybe :string]]
[:percentage-change {:optional true} [:maybe :string]]
[:time-frame-string {:optional true} [:maybe :string]]
Copy link
Contributor

Choose a reason for hiding this comment

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

Folks, I've been thinking, it would be good if we arrived at a guideline for predicates in schemas sooner rather than later.

Malli accepts all predicates to be functions or keywords (if they've been added to the registry). The benefit of predicates as functions is that we get compile time errors from the CLJS compiler. Many times, I made typos like :sting instead of :string, but this will cause a runtime error later on or no error at all if there's no test code exercising the schema (which would lead to merging invalid schemas sometimes).

It's nice to be able to represent schemas as data. They could be easily serialized, but we don't use this feature.

Therefore, I'm inclined to prefer functions as predicates, not keywords. Instead of :string, it would be string?. It's just as terse, but with compile-time protection.

Do you have another perspective? Or does this sound reasonable for a guideline in schema/README?

cc @J-Son89, @clauxx, @shivekkhurana

Copy link
Contributor

Choose a reason for hiding this comment

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

sounds good to me 👍

@@ -60,7 +60,7 @@
:data cards
:horizontal true
:separator [rn/view {:style style/separator}]
:render-fn quo/account-card
:render-fn (fn [item] [quo/account-card item])
Copy link
Contributor

Choose a reason for hiding this comment

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

We should probably understand why because we should be able to just pass quo/account-card without wrapping.

[quo.components.wallet.account-overview.style :as style]
[quo.foundations.colors :as colors]
[quo.theme :as quo.theme]
[react-native.core :as rn]
[schema.core :as schema]
Copy link
Contributor

Choose a reason for hiding this comment

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

I don't quite understand the problem of requiring schema.core, since that's the namespace exposing instrument.


(def ?schema
[:=>
[:catn
Copy link
Contributor

Choose a reason for hiding this comment

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

Not a suggestion for change @mmilad75, but rather a perception to incite possible guidelines.

Maybe we should prefer cat (not catn) for function schemas with just one argument, as is the case for most components. It adds an extra indentation and when these schemas fail it will be just as clear why. One might say it's nice for consistency because catn leads to more readable errors, but to me it seems superfluous to use it.

Maybe the best is to just keep the option so the developer use whatever they prefer, but we shouldn't feel forced to use catn all the time IMO.

[:catn
[:props
[:map
[:account
Copy link
Contributor

Choose a reason for hiding this comment

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

Where to put schemas is always difficult to decide. From one angle, I prefer to think schema.common is the place for schemas more decoupled from domains. Something where we would describe a big integer, a public key, a theme, a style map, and so on. But an account schema could live outside schema.common. This would help us separate things based on bounded contexts. Otherwise there's a tendency common stuff can absorb anything.

An account can mean other things besides a wallet account. Maybe if we want to define a schema in the global registry, it should be in a different namespace, so the keyword in the registry would be :schema.wallet/account.

Or maybe we shouldn't couple quo components with domain concepts, even though they look like they depend on them. This would lead to a bit of duplication of schemas, but then we would be able to evolve schemas independently from quo. Just a tradeoff.

Long train of thought, just ideas on the table @shivekkhurana.

[:map
[:account-name {:optional true} [:maybe :string]]
[:currency-change {:optional true} [:maybe :string]]
[:current-value {:optional true} [:maybe :string]]
Copy link
Contributor

@ilmotta ilmotta Feb 2, 2024

Choose a reason for hiding this comment

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

Good point. :string is too loose to represent numbers. For instance, if the value is a string because it's an encoded big integer, then it would be better to at least create an alias to represent this, e.g. :schema.common/raw-bigint. I'm not sure if that's the case here, but the :string schema is also a good example of a type that doesn't help me figure out how to deal with it.

In the future, we could also consider only passing actual numbers throughout the app, even if some of them are representations of big numbers and need to be decoded as such. I did this in the past and it can bring sanity to the whole system. But we would need to make sure all numbers are decoded (from status-go responses) when written to the app-db.

| `:currency-change` | A value representing the change of the value of the selected account in the selected currency. (default `nil`)
| `:percentage-change` | A value representing the change of the value of the selected account in percentage relative to it's previous value. (default `nil`)"
(quo.theme/with-theme view-internal))
(quo.theme/with-theme
Copy link
Contributor

Choose a reason for hiding this comment

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

🙌

@ilmotta ilmotta added the malli Malli schemas label Feb 5, 2024
@status-im-auto
Copy link
Member

46% of end-end tests have passed

Total executed tests: 48
Failed tests: 25
Expected to fail tests: 1
Passed tests: 22
IDs of failed tests: 702809,702782,702733,702784,703194,702859,702732,702948,702894,702745,702783,704615,703496,702855,703202,702786,702838,702844,702843,702731,702808,702730,702845,703629,702841 
IDs of expected to fail tests: 703503 

Failed tests (25)

Click to expand
  • Rerun failed tests

  • Class TestGroupChatMultipleDeviceMergedNewUI:

    1. test_group_chat_pin_messages, id: 702732

    Device 2: Find `Text` by `xpath`: `//*[@content-desc='pinned-messages-menu']//*[starts-with(@text,'Message 4')]/../../*[@content-desc='pinned-by']/android.widget.TextView`
    Device 2: `Text` is `user admin`

    critical/chats/test_group_chat.py:404: in test_group_chat_pin_messages
        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 1 is not pinned in group chat!
    



    Device sessions

    2. test_group_chat_reactions, id: 703202

    Device 3: Adding one more 'thumbs-up' reaction or removing an added one
    Device 3: Wait for element Button for max 30s and click when it is available

    critical/chats/test_group_chat.py:113: in test_group_chat_reactions
        self.chats[2].add_remove_same_reaction(message=message, emoji="thumbs-up")
    ../views/chat_view.py:1094: in add_remove_same_reaction
        element.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 3: Button by accessibility id:`emoji-reaction-2` is not found on the screen after wait_for_visibility_of_element
    



    Device sessions

    3. 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
    



    Device sessions

    Class TestCommunityMultipleDeviceMerged:

    1. test_community_several_images_send_reply, id: 703194

    Device 2: Trying to access images (image container) inside message with text 'gallery'
    Device 2: Find ImageContainer by xpath: //*[starts-with(@text,'gallery')]/ancestor::android.view.ViewGroup[@content-desc='chat-item']//*[@content-desc="image-container"]

    critical/chats/test_public_chat_browsing.py:399: in test_community_several_images_send_reply
        if chat_element.image_container_in_message.is_element_differs_from_template(file_name, 5):
    ../views/base_element.py:271: in is_element_differs_from_template
        difference = ImageChops.difference(self.image, self.template)
    ../views/base_element.py:244: in image
        return Image.open(BytesIO(base64.b64decode(self.find_element().screenshot_as_base64)))
    ../views/base_element.py:79: in find_element
        raise NoSuchElementException(
     Device 2: ImageContainer by xpath: `//*[starts-with(@text,'gallery')]/ancestor::android.view.ViewGroup[@content-desc='chat-item']//*[@content-desc="image-container"]` is not found on the screen; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors#no-such-element-exception
    



    Device sessions

    2. test_community_one_image_send_reply, id: 702859

    Device 2: Looking for a message by text: description
    Device 2: Looking for a message by text: description

    critical/chats/test_public_chat_browsing.py:439: in test_community_one_image_send_reply
        self.channel_2.chat_element_by_text(image_description).wait_for_visibility_of_element(10)
    ../views/base_element.py:139: in wait_for_visibility_of_element
        raise TimeoutException(
     Device 2: ChatElementByText by xpath:`//*[starts-with(@text,'description')]/ancestor::android.view.ViewGroup[@content-desc='chat-item']` is not found on the screen after wait_for_visibility_of_element
    



    Device sessions

    3. test_community_contact_block_unblock_offline, id: 702894

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

    critical/chats/test_public_chat_browsing.py:737: in test_community_contact_block_unblock_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 was not delivered after back up online.
    



    Device sessions

    4. test_community_edit_delete_message_when_offline, id: 704615

    Device 1: Looking for a message by text: text after edit
    Device 1: Looking for a message by text: message to delete

    critical/chats/test_public_chat_browsing.py:796: in test_community_edit_delete_message_when_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))]))
     Updated message 'text after edit' is not delivered to the receiver
    



    Device sessions

    5. test_community_message_send_check_timestamps_sender_username, id: 702838

    Device 2: Verifying that 'new message' is under today
    Device 2: Looking for a message by text: new message

    critical/chats/test_public_chat_browsing.py:339: in test_community_message_send_check_timestamps_sender_username
        self.channel_2.verify_message_is_under_today_text(new_message, self.errors, 60)
    ../views/chat_view.py:1002: in verify_message_is_under_today_text
        message_element.wait_for_visibility_of_element(timeout)
    ../views/base_element.py:139: in wait_for_visibility_of_element
        raise TimeoutException(
     Device 2: ChatElementByText by xpath:`//*[starts-with(@text,'new message')]/ancestor::android.view.ViewGroup[@content-desc='chat-item']` is not found on the screen after wait_for_visibility_of_element
    



    Device sessions

    6. test_community_links_with_previews_github_youtube_twitter_gif_send_enable, id: 702844

    Device 2: Wait for text element EmojisNumber to be equal to 1
    Device 2: Find EmojisNumber by xpath: //*[starts-with(@text,'https://m.youtube.com/watch?v=Je7yErjEVt4')]/ancestor::android.view.ViewGroup[@content-desc='chat-item']/../..//*[@content-desc='emoji-reaction-4']/android.widget.TextView[2]

    critical/chats/test_public_chat_browsing.py:610: in test_community_links_with_previews_github_youtube_twitter_gif_send_enable
        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))]))
     Link message reaction is not shown for the sender
    



    Device sessions

    7. test_community_message_edit, id: 702843

    Device 2: Looking for a message by text: Message AFTER edit 2 (Edited)
    Device 2: Find ChatElementByText by xpath: //*[starts-with(@text,'Message AFTER edit 2 (Edited)')]/ancestor::android.view.ViewGroup[@content-desc='chat-item']

    critical/chats/test_public_chat_browsing.py:353: in test_community_message_edit
        self.channel_2.set_reaction(message_text_after_edit)
    ../views/chat_view.py:1082: in set_reaction
        self.chat_element_by_text(message).long_press_until_element_is_shown(element)
    ../views/base_element.py:318: in long_press_until_element_is_shown
        element = self.find_element()
    ../views/chat_view.py:134: in find_element
        self.wait_for_visibility_of_element(20)
    ../views/base_element.py:139: in wait_for_visibility_of_element
        raise TimeoutException(
     Device 2: ChatElementByText by xpath:`//*[starts-with(@text,'Message AFTER edit 2 (Edited)')]/ancestor::android.view.ViewGroup[@content-desc='chat-item']` is not found on the screen after wait_for_visibility_of_element
    



    Device sessions

    8. test_community_unread_messages_badge, id: 702841

    # STEP: Check new messages badge is shown for community
    Device 1: Click until ChatMessageInput by accessibility id: chat-message-input will be presented

    critical/chats/test_public_chat_browsing.py:634: in test_community_unread_messages_badge
        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))]))
     New message community badge is not shown
    E    New messages channel badge is not shown on channel
    



    Device sessions

    Class TestCommunityMultipleDeviceMergedTwo:

    1. test_community_markdown_support, id: 702809

    Test setup failed: critical/chats/test_public_chat_browsing.py:837: in prepare_devices
        self.community_2.join_community()
    ../views/chat_view.py:442: in join_community
        self.community_status_joined.wait_for_visibility_of_element(60)
    ../views/base_element.py:139: 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_hashtag_links_to_community_channels, id: 702948

    Test setup failed: critical/chats/test_public_chat_browsing.py:837: in prepare_devices
        self.community_2.join_community()
    ../views/chat_view.py:442: in join_community
        self.community_status_joined.wait_for_visibility_of_element(60)
    ../views/base_element.py:139: 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_mentions_push_notification, id: 702786

    Device 2: Find Button by xpath: //*[@content-desc='password-input']/../following-sibling::*//*[@text='Join Community']
    Device 2: Tap on found: Button

    Test setup failed: critical/chats/test_public_chat_browsing.py:837: in prepare_devices
        self.community_2.join_community()
    ../views/chat_view.py:442: in join_community
        self.community_status_joined.wait_for_visibility_of_element(60)
    ../views/base_element.py:139: 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

    4. test_community_leave, id: 702845

    Test setup failed: critical/chats/test_public_chat_browsing.py:837: in prepare_devices
        self.community_2.join_community()
    ../views/chat_view.py:442: in join_community
        self.community_status_joined.wait_for_visibility_of_element(60)
    ../views/base_element.py:139: 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_join_when_node_owner_offline, id: 703629

    Test setup failed: critical/chats/test_public_chat_browsing.py:837: in prepare_devices
        self.community_2.join_community()
    ../views/chat_view.py:442: in join_community
        self.community_status_joined.wait_for_visibility_of_element(60)
    ../views/base_element.py:139: 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 TestOneToOneChatMultipleSharedDevicesNewUi:

    1. test_1_1_chat_emoji_send_reply_and_open_link, id: 702782

    Device 1: Long press on BaseElement until expected element is shown
    Device 1: Find Button by xpath: //*[@text="Reply"]

    critical/chats/test_1_1_public_chats.py:117: in test_1_1_chat_emoji_send_reply_and_open_link
        self.chat_1.quote_message(emoji_unicode)
    ../views/chat_view.py:1071: in quote_message
        self.reply_message_button.click()
    ../views/base_element.py:90: in click
        self.find_element().click()
    ../views/base_element.py:79: in find_element
        raise NoSuchElementException(
     Device 1: Button by xpath: `//*[@text="Reply"]` is not found on the screen; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors#no-such-element-exception
    



    Device sessions

    2. test_1_1_chat_text_message_delete_push_disappear, id: 702733

    Device 2: Find Text by xpath: //*[starts-with(@text,'smth I should edit')]/ancestor::android.view.ViewGroup[@content-desc='chat-item']
    Device 2: Tap on found: Text

    critical/chats/test_1_1_public_chats.py:470: in test_1_1_chat_text_message_delete_push_disappear
        self.chat_2.chat_element_by_text(message_after_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 Sending
    



    Device sessions

    3. test_1_1_chat_non_latin_messages_stack_update_profile_photo, id: 702745

    Device 2: Find MemberPhoto by xpath: //*[starts-with(@text,'profile_photo')]/ancestor::android.view.ViewGroup[@content-desc='chat-item']//*[@content-desc='user-avatar']
    Device 2: Image differs from template to 7.529727711397059 percents

    critical/chats/test_1_1_public_chats.py:314: in test_1_1_chat_non_latin_messages_stack_update_profile_photo
        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 with text 'hello' was not received
    E    Image of user in 1-1 chat is too different from template!
    



    Device sessions

    4. 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']
    Device 2: Tap on found: Text

    critical/chats/test_1_1_public_chats.py:381: 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 Sending
    



    Device sessions

    5. test_1_1_chat_pin_messages, id: 702731

    Device 1: Waiting for message to be sent for 30 sec
    Device 1: Find Text by xpath: //*[starts-with(@text,'Message 1')]/ancestor::android.view.ViewGroup[@content-desc='chat-item']

    critical/chats/test_1_1_public_chats.py:186: in test_1_1_chat_pin_messages
        self.chat_1.chat_element_by_text(self.message_1).wait_for_status_to_be("Delivered")
    ../views/chat_view.py:239: in wait_for_status_to_be
        current_status = self.status
    ../views/chat_view.py:211: in status
        Text(self.driver, xpath=self.locator).click()
    ../views/base_element.py:90: in click
        self.find_element().click()
    ../views/base_element.py:79: in find_element
        raise NoSuchElementException(
     Device 1: Text by xpath: `//*[starts-with(@text,'Message 1')]/ancestor::android.view.ViewGroup[@content-desc='chat-item']` is not found on the screen; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors#no-such-element-exception
    



    Device sessions

    6. test_1_1_chat_message_reaction, id: 702730

    Device 2: Find EmojisNumber by xpath: //*[starts-with(@text,'Message sender')]/ancestor::android.view.ViewGroup[@content-desc='chat-item']/../..//*[@content-desc='emoji-reaction-1']/android.widget.TextView[2]
    Device 2: Find EmojisNumber by xpath: //*[starts-with(@text,'Message sender')]/ancestor::android.view.ViewGroup[@content-desc='chat-item']/../..//*[@content-desc='emoji-reaction-1']/android.widget.TextView[2]

    critical/chats/test_1_1_public_chats.py:86: in test_1_1_chat_message_reaction
        message_receiver.emojis_below_message(emoji="love").wait_for_element_text(2, 90)
    ../views/base_element.py:182: in wait_for_element_text
        self.driver.fail(message if message else "`%s` is not equal to expected `%s` in %s sec" % (
    base_test_case.py:179: in fail
        pytest.fail('Device %s: %s' % (self.number, text))
     Device 2: `1` is not equal to expected `2` in 90 sec
    



    Device sessions

    Class TestOneToOneChatMultipleSharedDevicesNewUiTwo:

    1. test_1_1_chat_delete_via_long_press_relogin, id: 702784

    Test setup failed: critical/chats/test_1_1_public_chats.py:546: in prepare_devices
        self.home_2.handle_contact_request(self.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, 'sender')]/ancestor::*[@content-desc='activity']/*[@content-desc="accept-contact-request"]` is not found on the screen after wait_for_visibility_of_element
    



    2. test_1_1_chat_is_shown_message_sent_delivered_from_offline, id: 702783

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

    Test setup failed: critical/chats/test_1_1_public_chats.py:546: in prepare_devices
        self.home_2.handle_contact_request(self.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, 'sender')]/ancestor::*[@content-desc='activity']/*[@content-desc="accept-contact-request"]` is not found on the screen after wait_for_visibility_of_element
    



    Device sessions

    3. test_1_1_chat_mute_chat, id: 703496

    Test setup failed: critical/chats/test_1_1_public_chats.py:546: in prepare_devices
        self.home_2.handle_contact_request(self.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, 'sender')]/ancestor::*[@content-desc='activity']/*[@content-desc="accept-contact-request"]` is not found on the screen after wait_for_visibility_of_element
    



    Expected to fail tests (1)

    Click to expand

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

    Click to expand

    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_join_send_text_messages_push, id: 702807
    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 TestCommunityMultipleDeviceMerged:

    1. test_community_emoji_send_copy_paste_reply, id: 702840
    Device sessions

    2. test_community_mark_all_messages_as_read, id: 703086
    Device sessions

    3. test_community_message_delete, id: 702839
    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 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 TestOneToOneChatMultipleSharedDevicesNewUi:

    1. test_1_1_chat_push_emoji, id: 702813
    Device sessions

    2. test_1_1_chat_send_image_save_and_share, id: 703391
    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

    @mmilad75
    Copy link
    Contributor Author

    mmilad75 commented Feb 7, 2024

    @status-im/mobile-qa Please check the e2e result

    @status-im-auto
    Copy link
    Member

    48% of end-end tests have passed

    Total executed tests: 25
    Failed tests: 13
    Expected to fail tests: 0
    Passed tests: 12
    
    IDs of failed tests: 703629,702732,702948,702782,702783,702859,702809,703202,702844,702733,702894,702841,704615 
    

    Failed tests (13)

    Click to expand
  • Rerun failed tests

  • Class TestCommunityMultipleDeviceMergedTwo:

    1. test_community_join_when_node_owner_offline, id: 703629

    Device 2: Looking for community: 'open community'
    Device 2: Click until `Text` by `accessibility id`: `community-description-text` will be presented

    critical/chats/test_public_chat_browsing.py:1177: 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))]))
     Text "You joined “closed community”" in shown toast element doesn't match expected "You joined “open community”"
    



    Device sessions

    2. test_community_hashtag_links_to_community_channels, id: 702948

    Device 2: Find Text by xpath: //android.view.ViewGroup[@content-desc='chat-item']//android.widget.TextView[contains(@text,'#cats')]
    Device 2: Looking for a message by text: it is just a message text

    critical/chats/test_public_chat_browsing.py:1090: in test_community_hashtag_links_to_community_channels
        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 in community channel is not visible for user before join
    



    Device sessions

    3. test_community_markdown_support, id: 702809

    Device 1: Looking for a message by text: quote reply (one row)
    Device 2: Looking for a message by text: quote reply (one row)

    critical/chats/test_public_chat_browsing.py:979: in test_community_markdown_support
        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))]))
     italic text in asteric is not displayed with markdown in community channel for the recipient (device 1) 
    E   
    E    quote reply (one row) is not displayed with markdown in community channel for the recipient (device 1) 
    E   
    E    bold text in asterics is not displayed with markdown in 1-1 chat for the recipient (device 2) 
    E   
    E    quote reply (one row) is not displayed with markdown in 1-1 chat for the recipient (device 2)
    



    Device sessions

    Class TestOneToOneChatMultipleSharedDevicesNewUi:

    1. test_1_1_chat_emoji_send_reply_and_open_link, id: 702782

    Device 2: Find OpenInStatusButton by xpath: //*[@text="Open in Status"]
    Device 2: Tap on found: OpenInStatusButton

    critical/chats/test_1_1_public_chats.py:178: in test_1_1_chat_emoji_send_reply_and_open_link
        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 with emoji was not sent or received in 1-1 chat
    E    No reply received in 1-1 chat
    



    Device sessions

    2. test_1_1_chat_text_message_delete_push_disappear, id: 702733

    Device 2: Find Text by xpath: //*[starts-with(@text,'smth I should edit')]/ancestor::android.view.ViewGroup[@content-desc='chat-item']
    Device 2: Tap on found: Text

    critical/chats/test_1_1_public_chats.py:470: in test_1_1_chat_text_message_delete_push_disappear
        self.chat_2.chat_element_by_text(message_after_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 Sending
    



    Device sessions

    Class TestCommunityMultipleDeviceMerged:

    1. test_community_one_image_send_reply, id: 702859

    Device 2: Long press on ChatElementByText until expected element is shown
    Device 2: Find Button by accessibility id: reaction-thumbs-up

    critical/chats/test_public_chat_browsing.py:488: in test_community_one_image_send_reply
        self.channel_2.set_reaction(message=image_description)
    ../views/chat_view.py:1087: in set_reaction
        element.click()
    ../views/base_element.py:90: in click
        self.find_element().click()
    ../views/base_element.py:79: in find_element
        raise NoSuchElementException(
     Device 2: Button by accessibility id: `reaction-thumbs-up` is not found on the screen; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors#no-such-element-exception
    



    Device sessions

    2. test_community_links_with_previews_github_youtube_twitter_gif_send_enable, id: 702844

    Device 2: Tap on found: SendMessageButton
    Device 1: Getting preview message for link: #11707

    critical/chats/test_public_chat_browsing.py:584: in test_community_links_with_previews_github_youtube_twitter_gif_send_enable
        message.wait_for_element(60)
    ../views/base_element.py:121: in wait_for_element
        raise TimeoutException(
     Device `1`: `PreviewMessage` by` xpath`: `//*[starts-with(@text,'https://github.com/status-im/status-mobile/pull/11707')]/ancestor::android.view.ViewGroup[@content-desc='chat-item']` is not found on the screen after wait_for_element
    



    Device sessions

    3. test_community_contact_block_unblock_offline, id: 702894

    Device 1: Find ProfileSendMessageButton by accessibility id: Chat-item-button
    Device 1: Sending message 'piy'

    critical/chats/test_public_chat_browsing.py:737: in test_community_contact_block_unblock_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))]))
     Chat with unblocked user was not enabled after 1 minute
    



    Device sessions

    4. test_community_unread_messages_badge, id: 702841

    # STEP: Check new messages badge is shown for community
    Device 1: Click until ChatMessageInput by accessibility id: chat-message-input will be presented

    critical/chats/test_public_chat_browsing.py:634: in test_community_unread_messages_badge
        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))]))
     New message community badge is not shown
    E    New messages channel badge is not shown on channel
    



    Device sessions

    5. test_community_edit_delete_message_when_offline, id: 704615

    # STEP: Sending messages for edit and delete
    Device 2: Sending message 'message to edit'

    critical/chats/test_public_chat_browsing.py:772: in test_community_edit_delete_message_when_offline
        self.channel_2.send_message(message_to_edit)
    ../views/chat_view.py:1012: in send_message
        self.chat_message_input.wait_for_element(wait_chat_input_sec)
    ../views/base_element.py:121: in wait_for_element
        raise TimeoutException(
     Device `2`: `ChatMessageInput` by` accessibility id`: `chat-message-input` is not found on the screen after wait_for_element
    



    Device sessions

    Class TestGroupChatMultipleDeviceMergedNewUI:

    1. test_group_chat_pin_messages, id: 702732

    Device 2: Find Text by xpath: //*[@content-desc='pinned-messages-menu']//*[starts-with(@text,'Message 4')]/../../*[@content-desc='pinned-by']/android.widget.TextView
    Device 2: Text is user admin

    critical/chats/test_group_chat.py:404: in test_group_chat_pin_messages
        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 1 is not pinned in group chat!
    E    Message 2 is not pinned in group chat!
    E    Message 3 is not pinned in group chat!
    E    Pinned messages count 1 doesn't match expected 3 for user 2
    E    Message 'Message 1' is missed on Pinned messages list for user 2
    E    Message 'Message 3' is missed on Pinned messages list for user 2
    



    Device sessions

    2. test_group_chat_reactions, id: 703202

    Device 1: Find EmojisNumber by xpath: //*[starts-with(@text,'This is a test message to check some reactions.')]/ancestor::android.view.ViewGroup[@content-desc='chat-item']/../..//*[@content-desc='emoji-reaction-2']/android.widget.TextView[2]
    Device 1: Find EmojisNumber by xpath: //*[starts-with(@text,'This is a test message to check some reactions.')]/ancestor::android.view.ViewGroup[@content-desc='chat-item']/../..//*[@content-desc='emoji-reaction-2']/android.widget.TextView[2]

    critical/chats/test_group_chat.py:119: in test_group_chat_reactions
        message_element.emojis_below_message(emoji="thumbs-up").wait_for_element_text(2)
    ../views/base_element.py:182: in wait_for_element_text
        self.driver.fail(message if message else "`%s` is not equal to expected `%s` in %s sec" % (
    base_test_case.py:179: in fail
        pytest.fail('Device %s: %s' % (self.number, text))
     Device 1: `1` is not equal to expected `2` in 30 sec
    



    Device sessions

    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!
    



    Device sessions

    Passed tests (12)

    Click to expand

    Class TestCommunityMultipleDeviceMergedTwo:

    1. test_community_mentions_push_notification, id: 702786
    Device sessions

    2. test_community_leave, id: 702845
    Device sessions

    Class TestOneToOneChatMultipleSharedDevicesNewUi:

    1. test_1_1_chat_non_latin_messages_stack_update_profile_photo, id: 702745
    Device sessions

    2. test_1_1_chat_message_reaction, id: 702730
    Device sessions

    3. test_1_1_chat_edit_message, id: 702855
    Device sessions

    4. test_1_1_chat_pin_messages, id: 702731
    Device sessions

    Class TestCommunityMultipleDeviceMerged:

    1. test_community_message_send_check_timestamps_sender_username, id: 702838
    Device sessions

    2. test_community_message_edit, id: 702843
    Device sessions

    3. test_community_several_images_send_reply, id: 703194
    Device sessions

    Class TestGroupChatMultipleDeviceMergedNewUI:

    1. test_group_chat_offline_pn, id: 702808
    Device sessions

    Class TestOneToOneChatMultipleSharedDevicesNewUiTwo:

    1. test_1_1_chat_mute_chat, id: 703496
    Device sessions

    2. test_1_1_chat_delete_via_long_press_relogin, id: 702784
    Device sessions

    @qoqobolo
    Copy link
    Contributor

    qoqobolo commented Feb 8, 2024

    @status-im/mobile-qa Please check the e2e result

    Hey @mmilad75, thanks for the PR! We are experiencing the data delivery issue, which is the reason for most of the e2e failures. They are not related to the PR.

    @mmilad75 mmilad75 merged commit 523a580 into develop Feb 8, 2024
    6 checks passed
    @mmilad75 mmilad75 deleted the milad/18354-add-malli-batch-1 branch February 8, 2024 17:01
    Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
    Labels
    malli Malli schemas
    Projects
    Archived in project
    Archived in project
    Development

    Successfully merging this pull request may close these issues.

    Wallet - Add malli spec to Quo Wallet components (batch 1)
    8 participants