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

chore: add floating button page component #17737

Merged
merged 5 commits into from
Nov 17, 2023
Merged

Conversation

J-Son89
Copy link
Contributor

@J-Son89 J-Son89 commented Oct 25, 2023

fixes: #17747

This pr adds a common page component that is consistently used in the designs. It is for pages that have scrolling content and a button at the bottom to call some action. when the keyboard is visible on these pages the button should sit on top of the keyboard and if the button is over the content of the page then a blur background will sit behind the button. The button can be a slide button or a regular button.

Additionally this pr starts adding a preview space for Status IM common components to be displayed. More work around this will be created, for now I added the minimum required to get this started.

A video of it working on ios

Screen.Recording.2023-10-30.at.22.55.56.mov

Checked with Figma and everything is aligning nicely 👍

No test needed as this is only a new component not touching production code

Design review will be nice to verify the behaviour is working as expected, however it will be easier to check on a nicer page then the preview screen I created :)

@status-im-auto
Copy link
Member

status-im-auto commented Oct 25, 2023

Jenkins Builds

Click to see older builds (81)
Commit #️⃣ Finished (UTC) Duration Platform Result
3ceb914 #1 2023-10-25 23:53:07 ~3 min tests 📄log
✔️ 3ceb914 #1 2023-10-25 23:55:57 ~5 min android 🤖apk 📲
✔️ 3ceb914 #1 2023-10-25 23:56:03 ~5 min ios 📱ipa 📲
✔️ 3ceb914 #1 2023-10-25 23:56:08 ~6 min android-e2e 🤖apk 📲
67339ee #2 2023-10-26 09:54:37 ~4 min tests 📄log
✔️ 67339ee #2 2023-10-26 09:56:00 ~5 min android-e2e 🤖apk 📲
✔️ 67339ee #2 2023-10-26 09:56:05 ~5 min ios 📱ipa 📲
✔️ 67339ee #2 2023-10-26 09:56:15 ~5 min android 🤖apk 📲
✔️ 1080aee #4 2023-10-26 13:31:22 ~9 min android-e2e 🤖apk 📲
✔️ 1080aee #4 2023-10-26 13:31:43 ~9 min android 🤖apk 📲
✔️ 1080aee #4 2023-10-26 13:32:56 ~10 min ios 📱ipa 📲
✔️ 1080aee #4 2023-10-26 13:33:10 ~11 min tests 📄log
8ed0a6a #5 2023-10-30 18:23:16 ~2 min tests 📄log
✔️ 8ed0a6a #5 2023-10-30 18:26:10 ~5 min android-e2e 🤖apk 📲
✔️ 8ed0a6a #5 2023-10-30 18:26:42 ~6 min android 🤖apk 📲
✔️ 8ed0a6a #5 2023-10-30 18:31:14 ~10 min ios 📱ipa 📲
f21d49f #6 2023-10-30 22:39:16 ~2 min tests 📄log
✔️ f21d49f #6 2023-10-30 22:42:27 ~5 min android-e2e 🤖apk 📲
✔️ f21d49f #6 2023-10-30 22:42:28 ~5 min android 🤖apk 📲
✔️ f21d49f #6 2023-10-30 22:48:59 ~12 min ios 📱ipa 📲
ee860aa #7 2023-10-31 11:11:36 ~2 min tests 📄log
✔️ ee860aa #7 2023-10-31 11:14:46 ~5 min android-e2e 🤖apk 📲
✔️ ee860aa #7 2023-10-31 11:14:55 ~5 min android 🤖apk 📲
✔️ ee860aa #7 2023-10-31 11:15:07 ~6 min ios 📱ipa 📲
f3c8413 #8 2023-10-31 20:25:02 ~2 min tests 📄log
✔️ f3c8413 #8 2023-10-31 20:28:52 ~6 min android-e2e 🤖apk 📲
✔️ f3c8413 #8 2023-10-31 20:28:52 ~6 min android 🤖apk 📲
✔️ f3c8413 #8 2023-10-31 20:33:24 ~10 min ios 📱ipa 📲
fa6787d #10 2023-10-31 20:47:38 ~2 min tests 📄log
✔️ fa6787d #10 2023-10-31 20:51:18 ~6 min android-e2e 🤖apk 📲
✔️ fa6787d #10 2023-10-31 20:51:36 ~6 min android 🤖apk 📲
✔️ fa6787d #10 2023-10-31 21:01:18 ~16 min ios 📱ipa 📲
6839ffd #12 2023-10-31 21:18:22 ~2 min tests 📄log
✔️ 6839ffd #12 2023-10-31 21:21:01 ~5 min android 🤖apk 📲
✔️ 6839ffd #12 2023-10-31 21:21:08 ~5 min android-e2e 🤖apk 📲
659abb4 #13 2023-10-31 21:24:39 ~2 min tests 📄log
✔️ 659abb4 #13 2023-10-31 21:28:30 ~6 min android-e2e 🤖apk 📲
✔️ 659abb4 #13 2023-10-31 21:28:34 ~6 min android 🤖apk 📲
✔️ 659abb4 #13 2023-10-31 21:33:33 ~11 min ios 📱ipa 📲
fb8ff8f #14 2023-10-31 23:22:28 ~2 min tests 📄log
✔️ fb8ff8f #14 2023-10-31 23:26:02 ~6 min android-e2e 🤖apk 📲
✔️ fb8ff8f #14 2023-10-31 23:26:06 ~6 min android 🤖apk 📲
✔️ fb8ff8f #14 2023-10-31 23:32:00 ~12 min ios 📱ipa 📲
1519256 #15 2023-11-06 19:04:09 ~3 min tests 📄log
✔️ 1519256 #15 2023-11-06 19:07:19 ~6 min android 🤖apk 📲
✔️ 1519256 #15 2023-11-06 19:07:23 ~6 min android-e2e 🤖apk 📲
✔️ 1519256 #15 2023-11-06 19:12:13 ~11 min ios 📱ipa 📲
9d3f17e #16 2023-11-06 19:51:29 ~2 min tests 📄log
✔️ 9d3f17e #16 2023-11-06 19:53:38 ~5 min ios 📱ipa 📲
✔️ 9d3f17e #16 2023-11-06 19:55:02 ~6 min android 🤖apk 📲
✔️ 9d3f17e #16 2023-11-06 19:55:04 ~6 min android-e2e 🤖apk 📲
d0890af #17 2023-11-06 20:15:23 ~3 min tests 📄log
✔️ d0890af #17 2023-11-06 20:18:57 ~6 min android-e2e 🤖apk 📲
✔️ d0890af #17 2023-11-06 20:18:59 ~6 min android 🤖apk 📲
✔️ d0890af #17 2023-11-06 20:24:35 ~12 min ios 📱ipa 📲
7197996 #18 2023-11-06 23:12:41 ~2 min tests 📄log
✔️ 7197996 #18 2023-11-06 23:15:08 ~5 min ios 📱ipa 📲
✔️ 7197996 #18 2023-11-06 23:15:49 ~5 min android 🤖apk 📲
✔️ 7197996 #18 2023-11-06 23:16:09 ~6 min android-e2e 🤖apk 📲
8ae7846 #19 2023-11-07 03:23:04 ~2 min tests 📄log
✔️ 8ae7846 #19 2023-11-07 03:25:26 ~5 min ios 📱ipa 📲
✔️ 8ae7846 #19 2023-11-07 03:26:42 ~6 min android 🤖apk 📲
✔️ 8ae7846 #19 2023-11-07 03:26:42 ~6 min android-e2e 🤖apk 📲
016f4d1 #20 2023-11-07 03:41:41 ~2 min tests 📄log
✔️ 016f4d1 #20 2023-11-07 03:45:30 ~6 min android-e2e 🤖apk 📲
✔️ 016f4d1 #20 2023-11-07 03:45:34 ~6 min android 🤖apk 📲
✔️ 016f4d1 #20 2023-11-07 03:51:22 ~12 min ios 📱ipa 📲
b0b3ff2 #21 2023-11-10 18:21:45 ~1 min tests 📄log
bf042f8 #22 2023-11-10 18:23:50 ~1 min tests 📄log
57ef411 #23 2023-11-10 18:26:30 ~2 min tests 📄log
✔️ 57ef411 #23 2023-11-10 18:30:58 ~6 min android-e2e 🤖apk 📲
✔️ 57ef411 #23 2023-11-10 18:31:04 ~6 min android 🤖apk 📲
✔️ 57ef411 #23 2023-11-10 18:34:49 ~10 min ios 📱ipa 📲
394145a #24 2023-11-17 12:48:36 ~3 min tests 📄log
✔️ 394145a #24 2023-11-17 12:51:16 ~5 min ios 📱ipa 📲
✔️ 394145a #24 2023-11-17 12:52:02 ~6 min android-e2e 🤖apk 📲
✔️ 394145a #24 2023-11-17 12:52:12 ~6 min android 🤖apk 📲
✔️ 5058804 #25 2023-11-17 13:16:09 ~5 min android 🤖apk 📲
✔️ 5058804 #25 2023-11-17 13:18:31 ~8 min android-e2e 🤖apk 📲
✔️ 5058804 #25 2023-11-17 13:20:25 ~9 min tests 📄log
✔️ 5058804 #25 2023-11-17 13:22:14 ~11 min ios 📱ipa 📲
Commit #️⃣ Finished (UTC) Duration Platform Result
✔️ 3072e8c #26 2023-11-17 16:58:20 ~9 min android-e2e 🤖apk 📲
✔️ 3072e8c #26 2023-11-17 16:58:35 ~10 min android 🤖apk 📲
✔️ 3072e8c #26 2023-11-17 16:59:12 ~10 min tests 📄log
✔️ 3072e8c #26 2023-11-17 16:59:13 ~10 min ios 📱ipa 📲
✔️ da09c54 #27 2023-11-17 17:12:49 ~5 min ios 📱ipa 📲
✔️ da09c54 #27 2023-11-17 17:13:54 ~6 min android-e2e 🤖apk 📲
✔️ da09c54 #27 2023-11-17 17:14:02 ~6 min android 🤖apk 📲
✔️ da09c54 #27 2023-11-17 17:16:29 ~8 min tests 📄log

@J-Son89 J-Son89 force-pushed the jc/floating-button-page branch 3 times, most recently from 4c20718 to 1080aee Compare October 26, 2023 13:21
@J-Son89 J-Son89 force-pushed the jc/floating-button-page branch 2 times, most recently from 8ed0a6a to f21d49f Compare October 30, 2023 22:36
@J-Son89 J-Son89 marked this pull request as ready for review October 30, 2023 22:37
@@ -66,7 +66,7 @@
:background :blur
:on-press #(rf/dispatch [:navigate-back])
:right-side [{:icon-left :i/info
:label (i18n/label :t/how-to-pair)
:label "swap button"
Copy link
Member

Choose a reason for hiding this comment

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

I guess you need to revert the changes 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.

@ulisesmac let's revert

(:require
[quo.foundations.colors :as colors]))

(defn main
Copy link
Member

Choose a reason for hiding this comment

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

As there are no arguments received by this function, we can convert this to def.

Copy link
Contributor

Choose a reason for hiding this comment

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

Here we need it as a function because when theme-colors doesn't receive the override-theme arg it fallback to (theme/get-theme).

:value ""}]
[quo/button
{:type :outline
:on-press #(swap! content-height (fn [v] (+ v 10)))}
Copy link
Member

Choose a reason for hiding this comment

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

partial is your friend here.

Suggested change
:on-press #(swap! content-height (fn [v] (+ v 10)))}
:on-press #(swap! content-height (partial + 10))}

Copy link
Contributor

Choose a reason for hiding this comment

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

Following up on @smohamedjavid suggestion, we don't need an anonymous function.

(let [a (atom 1)]
  (swap! a + 10)
  @a) ; => 11

So just #(swap! content-height + 10) is enough. Same idea for the on-press that subtracts 10 a few lines below.

src/status_im2/common/floating_button_page/view.cljs Outdated Show resolved Hide resolved
@jo-mut
Copy link
Contributor

jo-mut commented Oct 31, 2023

@J-Son89 I am curious on the Status IM components. As you mentioned there is more work around this to be done. Are these components basically the ones on common namespace within statusi-im2?

@ulisesmac
Copy link
Contributor

Hey @jo-mut @smohamedjavid @OmarBasem

@J-Son89 and I are solving some issues, I'll let you know when to continue with the review. Thanks! :)

@J-Son89
Copy link
Contributor Author

J-Son89 commented Nov 1, 2023

@J-Son89 I am curious on the Status IM components. As you mentioned there is more work around this to be done. Are these components basically the ones on common namespace within statusi-im2?

pretty much, these components can live anywhere in status-im2 ns. Basically some functionality which is in the designs but not abstracted to a design component, or we have realised the pattern ourselves and made an abstraction. However often it is difficult to develop these properly if we're working on a specific page so the preview page is an easier way to isolate these components and have a place to develop them properly where the specifics can be tested, verified and maintained 👌
How we go about this is completely open to suggestion :)

@jo-mut
Copy link
Contributor

jo-mut commented Nov 1, 2023

@J-Son89 I am curious on the Status IM components. As you mentioned there is more work around this to be done. Are these components basically the ones on common namespace within statusi-im2?

pretty much, these components can live anywhere in status-im2 ns. Basically some functionality which is in the designs but not abstracted to a design component, or we have realised the pattern ourselves and made an abstraction. However often it is difficult to develop these properly if we're working on a specific page so the preview page is an easier way to isolate these components and have a place to develop them properly where the specifics can be tested, verified and maintained 👌 How we go about this is completely open to suggestion :)

Now I understand. I think this is very useful and its definately something we should implement. Thank you.

@status-im-auto
Copy link
Member

82% of end-end tests have passed

Total executed tests: 45
Failed tests: 5
Expected to fail tests: 3
Passed tests: 37
IDs of failed tests: 702733,703133,702745,703503,703202 
IDs of expected to fail tests: 702732,702731,702808 

Failed tests (5)

Click to expand
  • Rerun failed tests

  • Class TestCommunityOneDeviceMerged:

    1. test_restore_multiaccount_with_waku_backup_remove_switch, id: 703133

    # STEP: Check that can login with different user
    Device 1: Find `Button` by `accessibility id`: `show-profiles`

    critical/chats/test_public_chat_browsing.py:251: in test_restore_multiaccount_with_waku_backup_remove_switch
        self.sign_in.show_profiles_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 accessibility id: `show-profiles` 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_discovery, id: 703503

    Device 1: Find Button by accessibility id: communities-home-discover-card
    Device 1: Tap on found: Button

    critical/chats/test_public_chat_browsing.py:40: in test_community_discovery
        self.home.community_card_item.wait_for_visibility_of_element(30)
    ../views/base_element.py:139: in wait_for_visibility_of_element
        raise TimeoutException(
     Device 1: BaseElement by accessibility id:`community-card-item` is not found on the screen after wait_for_visibility_of_element
    



    Device sessions

    Class TestOneToOneChatMultipleSharedDevicesNewUi:

    1. test_1_1_chat_text_message_delete_push_disappear, id: 702733

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

    critical/chats/test_1_1_public_chats.py:466: 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:236: in wait_for_status_to_be
        current_status = self.status
    ../views/chat_view.py:226: in status
        status = status_element.text
    ../views/base_element.py:406: in text
        text = self.find_element().text
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/webelement.py:90: in text
        return self._execute(Command.GET_ELEMENT_TEXT)["value"]
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/webelement.py:395: in _execute
        return self._parent.execute(command, params)
    /home/jenkins/.local/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py:345: in execute
        self.error_handler.check_response(response)
    /home/jenkins/.local/lib/python3.10/site-packages/appium/webdriver/errorhandler.py:122: in check_response
        raise exception_class(msg=message, stacktrace=format_stacktrace(stacktrace))
     The element 'By.xpath: //*[starts-with(@text,'smth I should edit')]/ancestor::android.view.ViewGroup[@content-desc='chat-item']//*[@content-desc='message-status']/android.widget.TextView' does not exist in DOM anymore; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors#stale-element-reference-exception
    E   Stacktrace:
    E   io.appium.uiautomator2.common.exceptions.StaleElementReferenceException: The element 'By.xpath: //*[starts-with(@text,'smth I should edit')]/ancestor::android.view.ViewGroup[@content-desc='chat-item']//*[@content-desc='message-status']/android.widget.TextView' does not exist in DOM anymore
    E   	at io.appium.uiautomator2.model.ElementsCache.restore(ElementsCache.java:117)
    E   	at io.appium.uiautomator2.model.ElementsCache.get(ElementsCache.java:153)
    E   	at io.appium.uiautomator2.handler.GetText.safeHandle(GetText.java:20)
    E   	at io.appium.uiautomator2.handler.request.SafeRequestHandler.handle(SafeRequestHandler.java:59)
    E   	at io.appium.uiautomator2.server.AppiumServlet.handleRequest(AppiumServlet.java:277)
    E   	at io.appium.uiautomator2.server.AppiumServlet.handleHttpRequest(AppiumServlet.java:271)
    E   	at io.appium.uiautomator2.http.ServerHandler.channelRead(ServerHandler.java:68)
    E   	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:366)
    E   	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:352)
    E   	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:345)
    E   	at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:102)
    E   	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:366)
    E   	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:352)
    E   	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:345)
    E   	at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:435)
    E   	at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:293)
    E   	at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:267)
    E   	at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:250)
    E   	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:366)
    E   	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:352)
    E   	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:345)
    E   	at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:266)
    E   	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:366)
    E   	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:352)
    E   	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:345)
    E   	at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1294)
    E   	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:366)
    E   	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:352)
    E   	at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:911)
    E   	at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:131)
    E   	at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:611)
    E   	at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:552)
    E   	at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:466)
    E   	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:438)
    E   	at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:140)
    E   	at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:144)
    E   	at java.lang.Thread.run(Thread.java:919)
    



    Device sessions

    2. 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.159687117034314 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))]))
     Image of user in 1-1 chat is too different from template!
    



    Device sessions

    Class TestGroupChatMultipleDeviceMergedNewUI:

    1. test_group_chat_reactions, id: 703202

    Device 3: Adding one more 'sad' reaction or removing an added one
    Device 3: Find Button by accessibility id: emoji-reaction-5

    critical/chats/test_group_chat.py:161: in test_group_chat_reactions
        self.chats[2].add_remove_same_reaction(message=message, emoji="sad")
    ../views/chat_view.py:1084: in add_remove_same_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 3: Button by accessibility id: `emoji-reaction-5` 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

    Expected to fail tests (3)

    Click to expand

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

    Passed tests (37)

    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 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 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_mark_all_messages_as_read, id: 703086
    Device sessions

    5. test_community_contact_block_unblock_offline, id: 702894
    Device sessions

    6. test_community_message_delete, id: 702839
    Device sessions

    7. test_community_message_send_check_timestamps_sender_username, id: 702838
    Device sessions

    8. test_community_links_with_previews_github_youtube_twitter_gif_send_enable, id: 702844
    Device sessions

    9. test_community_message_edit, id: 702843
    Device sessions

    10. test_community_unread_messages_badge, id: 702841
    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 TestActivityMultipleDevicePRTwo:

    1. test_activity_center_mentions, id: 702957
    Device sessions

    2. test_activity_center_admin_notification_accept_swipe, id: 702958
    Device sessions

    Class TestOneToOneChatMultipleSharedDevicesNewUi:

    1. test_1_1_chat_emoji_send_reply_and_open_link, id: 702782
    Device sessions

    2. test_1_1_chat_push_emoji, id: 702813
    Device sessions

    3. test_1_1_chat_edit_message, id: 702855
    Device sessions

    4. test_1_1_chat_send_image_save_and_share, id: 703391
    Device sessions

    5. test_1_1_chat_message_reaction, id: 702730
    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

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

    @J-Son89 J-Son89 mentioned this pull request Nov 13, 2023
    @VolodLytvynenko VolodLytvynenko self-assigned this Nov 15, 2023
    @VolodLytvynenko
    Copy link
    Contributor

    Hi @J-Son89 thank you for PR. Should in the scope of this PR be applied the current button showing on the pages described in issue 1?

    ISSUE 1: The button is not shown above the keyboard

    Steps:

    1. Enable a keyboard on the following pages

    Actual result:

    The button is not shown above the keyboard on the following pages:

    1. [IOS and Android] 'Add a contact' screen when long text is added into 'ENS' textbox
      image

    2. [IOS] 'Slide to create account' button is not shown on address creation page
      https://github.com/status-im/status-mobile/assets/52490791/785ba4a7-3318-44dd-b670-87875e98c9bf

    3. [IOS] Add address to watch screen
      image

    Expected result:

    Button should be displayed above the keyboard when keyboard is enabled

    @VolodLytvynenko
    Copy link
    Contributor

    ISSUE 2: [Android] The button is not fully shown on the 'Add address to watch' page

    Steps:

    1. Go to the 'Add address to watch' screen

    Actual result:

    The button is slightly hidden on 'Add address to watch' screen when keyboard is enabled/disabled
    image

    Expected result:

    The button is fully shown on 'Add address to watch' screen

    Last develop
    image

    Devices:

    • Pixel 7a, Android 13

    @J-Son89
    Copy link
    Contributor Author

    J-Son89 commented Nov 16, 2023

    oh this pr just adds the component to the codebase, we haven't added it to the screens yet. Those ui issues on wallet are separate to this pr and the same as develop 👍

    To check the component it is in profile -> STAtus IM Components -> Common -> Floating Button Page

    however I think in terms of testing this pr just needs a smoke check to make sure it is not breaking the app.

    @VolodLytvynenko
    Copy link
    Contributor

    oh this pr just adds the component to the codebase, we haven't added it to the screens yet. Those ui issues on wallet are separate to this pr and the same as develop 👍

    To check the component it is in profile -> STAtus IM Components -> Common -> Floating Button Page

    however I think in terms of testing this pr just needs a smoke check to make sure it is not breaking the app.

    @J-Son89 Thank you for clarification. No other issues from my side. PR is ready to be merged

    @J-Son89 J-Son89 force-pushed the jc/floating-button-page branch 3 times, most recently from 5058804 to 3072e8c Compare November 17, 2023 16:48
    @J-Son89 J-Son89 merged commit 2e2d15a into develop Nov 17, 2023
    6 checks passed
    @J-Son89 J-Son89 deleted the jc/floating-button-page branch November 17, 2023 17:16
    yevh-berdnyk pushed a commit that referenced this pull request Dec 8, 2023
    Co-authored-by: Ulises M <ulises.ssb@hotmail.com>
    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.

    Implement Floating Button Page component
    8 participants