Repository: status-im/status-desktop
Pull request #17936: tests(@qml): add tests for OwnerTokenWelcomeView page
Author: login: anastasiyaig
Created: 2025-05-14T11:11:19Z | Merged: 2025-05-21T07:39:21Z

add tests for OwnerTokenWelcomeView page


Diff:
diff --git a/storybook/qmlTests/tests/tst_OwnerTokenWelcomeView.qml b/storybook/qmlTests/tests/tst_OwnerTokenWelcomeView.qml
new file mode 100644
index 00000000000..01706bde905
--- /dev/null
+++ b/storybook/qmlTests/tests/tst_OwnerTokenWelcomeView.qml
@@ -0,0 +1,86 @@
+import QtQuick 2.15
+import QtQuick.Controls 2.15
+
+import QtTest 1.15
+
+import StatusQ 0.1
+
+import SortFilterProxyModel 0.2
+import AppLayouts.Communities.views 1.0
+
+import Models 1.0
+
+Item {
+
+    id: root
+    width: 600
+    height: controlUnderTest ? controlUnderTest.implicitHeight : 800
+
+    Component {
+        id: componentUnderTest
+
+        OwnerTokenWelcomeView {
+
+            anchors.fill: parent
+
+            communityLogo: ModelsData.icons.superRare
+            communityColor: "pink"
+            communityName: "SuperRare"
+        }
+    }
+
+    property OwnerTokenWelcomeView name: OwnerTokenWelcomeView
+    property var controlUnderTest
+
+    SignalSpy {
+        id: nextClickSpy
+        target: controlUnderTest
+        signalName: "nextClicked"
+    }
+
+    TestCase {
+        name: "OwnerTokenWelcomeView"
+        when: windowShown
+
+        function init() {
+            nextClickSpy.clear()
+            controlUnderTest = createTemporaryObject(componentUnderTest, root)
+        }
+
+        function htmlToPlainText(html) {
+            return html.replace(/<[^>]+>/g, "")
+        }
+
+        function test_ui_elements() {
+            waitForRendering(controlUnderTest)
+
+            const introText = findChild(controlUnderTest, "introPanelText")
+            const ownerInfoPanel = findChild(controlUnderTest,
+                                             "infoPanel_owner")
+            const masterInfoPanel = findChild(controlUnderTest,
+                                              "infoPanel_master")
+
+            verify(introText !== null, "Intro text is missing")
+            verify(ownerInfoPanel !== null, "Owner info panel is missing")
+            verify(masterInfoPanel !== null, "Master info panel is missing")
+
+            compare(htmlToPlainText(introText.text.trim().split(/\s+/).slice(
+                                        0, 5).join(" ")),
+                    "Your Owner token will give")
+            compare(findChild(ownerInfoPanel, "Checklist").count, 4)
+            compare(findChild(masterInfoPanel, "Checklist").count, 5)
+        }
+
+        function test_next_button() {
+
+            const nextButton = findChild(controlUnderTest,
+                                         "welcomeViewNextButton")
+
+            verify(nextButton !== null, "Next button should be present")
+            compare(nextButton.text, "Next")
+
+            mouseClick(nextButton, Qt.LeftButton)
+            tryCompare(nextClickSpy, "count", 1)
+        }
+    }
+}
diff --git a/ui/StatusQ/src/StatusQ/Components/StatusInfoBoxPanel.qml b/ui/StatusQ/src/StatusQ/Components/StatusInfoBoxPanel.qml
index 8c7c791bd01..99ac5a7e529 100644
--- a/ui/StatusQ/src/StatusQ/Components/StatusInfoBoxPanel.qml
+++ b/ui/StatusQ/src/StatusQ/Components/StatusInfoBoxPanel.qml
@@ -104,6 +104,8 @@ Control {
         StatusButton {
             id: button
 
+            objectName: "statusInfoBoxPanelButton"
+            
             Layout.alignment: Qt.AlignHCenter
 
             visible: root.buttonVisible
diff --git a/ui/app/AppLayouts/Communities/controls/CommunityInfoPanel.qml b/ui/app/AppLayouts/Communities/controls/CommunityInfoPanel.qml
index aeb4259213f..be1e367753a 100644
--- a/ui/app/AppLayouts/Communities/controls/CommunityInfoPanel.qml
+++ b/ui/app/AppLayouts/Communities/controls/CommunityInfoPanel.qml
@@ -97,6 +97,8 @@ Control {
                 Repeater {
                     id: checkersItems
 
+                    objectName: "Checklist"
+
                     RowLayout {
                         StatusIcon {
                             icon: "tiny/checkmark"
diff --git a/ui/app/AppLayouts/Communities/panels/MintTokensSettingsPanel.qml b/ui/app/AppLayouts/Communities/panels/MintTokensSettingsPanel.qml
index 5af6633773a..2b009724091 100644
--- a/ui/app/AppLayouts/Communities/panels/MintTokensSettingsPanel.qml
+++ b/ui/app/AppLayouts/Communities/panels/MintTokensSettingsPanel.qml
@@ -213,6 +213,8 @@ StackView {
         SettingsPage {
             id: ownerTokenPage
 
+            objectName: "ownerTokenPage"
+
             title: qsTr("Mint Owner token")
 
             contentItem: OwnerTokenWelcomeView {
diff --git a/ui/app/AppLayouts/Communities/views/MintedTokensView.qml b/ui/app/AppLayouts/Communities/views/MintedTokensView.qml
index 4384bb823aa..512b5257513 100644
--- a/ui/app/AppLayouts/Communities/views/MintedTokensView.qml
+++ b/ui/app/AppLayouts/Communities/views/MintedTokensView.qml
@@ -115,6 +115,8 @@ StatusScrollView {
             IntroPanel {
                 Layout.fillWidth: true
 
+                objectName: "introPanel"
+
                 image: Theme.png("community/mint2_1")
                 title: qsTr("Community tokens")
                 subtitle: qsTr("You can mint custom tokens and import tokens for your community")
@@ -127,6 +129,8 @@ StatusScrollView {
 
             StatusInfoBoxPanel {
 
+                objectName: "infoBoxPanel"
+                
                 readonly property bool isAdminOnly: root.isAdmin && !root.isOwner
 
                 Layout.fillWidth: true
diff --git a/ui/app/AppLayouts/Communities/views/OwnerTokenWelcomeView.qml b/ui/app/AppLayouts/Communities/views/OwnerTokenWelcomeView.qml
index f63ba1f82e1..68b5b03fc07 100644
--- a/ui/app/AppLayouts/Communities/views/OwnerTokenWelcomeView.qml
+++ b/ui/app/AppLayouts/Communities/views/OwnerTokenWelcomeView.qml
@@ -29,12 +29,16 @@ StatusScrollView {
     ColumnLayout {
         id: mainLayout
 
+        objectName: "welcomeView"
+
         width: root.viewWidth
         spacing: 20
 
         StatusBaseText {
             id: introPanel
 
+            objectName: "introPanelText"
+
             Layout.fillWidth: true
 
             wrapMode: Text.WordWrap
@@ -46,6 +50,9 @@ StatusScrollView {
         }
 
         CommunityInfoPanel {
+            
+            objectName: "infoPanel_owner"
+
             Layout.fillWidth:  true
 
             communityLogo: root.communityLogo
@@ -61,6 +68,9 @@ StatusScrollView {
         }
 
         CommunityInfoPanel {
+
+            objectName: "infoPanel_master"
+
             Layout.fillWidth:  true
 
             communityLogo: root.communityLogo
@@ -77,6 +87,8 @@ StatusScrollView {
         }
 
         StatusButton {
+
+            objectName: "welcomeViewNextButton"
             Layout.alignment: Qt.AlignHCenter
             Layout.bottomMargin: Theme.bigPadding
 


Reviews:
user: login: Khushboo-dev-cpp
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-14T12:07:48Z
user: login: alexjba
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-15T15:04:20Z
user: login: caybro
body: Looks good in general! Pls just fix the indentation in the test file :)
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-05-16T08:06:34Z
user: login: anastasiyaig
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-19T09:36:48Z
user: login: anastasiyaig
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-19T09:37:38Z
user: login: anastasiyaig
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-19T09:42:04Z
user: login: alexjba
body: LGTM in general.

I'd remove the parsing done in these functions. `getModelLength` is easy - see the comment below. But not sure is we can remove `htmlToPlainText ` as well. I guess we can keep it if it's difficult to remove

```
         function htmlToPlainText(html) {
             return html.replace(/<[^>]+>/g, "")
         }

         function getModelLength(model) {
             return JSON.parse(JSON.stringify(model)).length
         }
```
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-20T07:05:42Z
user: login: anastasiyaig
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-20T09:00:49Z
user: login: anastasiyaig
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-20T10:35:23Z
user: login: Khushboo-dev-cpp
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-20T12:14:01Z
user: login: anastasiyaig
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-20T12:15:12Z
user: login: alexjba
state: APPROVED
author_association: CONTRIBUTOR
submitted_at: 2025-05-20T18:12:27Z
user: login: alaibe
state: APPROVED
author_association: COLLABORATOR
submitted_at: 2025-05-21T06:31:13Z

Review comments:
diff_hunk: @@ -0,0 +1,87 @@
+import QtQuick 2.15
+import QtQuick.Controls 2.15
+
+import QtTest 1.15
+
+import StatusQ 0.1
+
+import SortFilterProxyModel 0.2
+import AppLayouts.Communities.panels 1.0
+import AppLayouts.Communities.views 1.0
+
+import Models 1.0
+
+import StatusQ.Core.Utils 0.1 as StatusQUtils
+
+Item {
+
+    id: root
+    width: 600
+    height: 800
+
+    Component {
+        id: componentUnderTest
+
+        OwnerTokenWelcomeView {
+
+            anchors.fill: parent
+
+            communityLogo: ModelsData.icons.superRare
+            communityColor: "Light pink"
+            communityName: "SuperRare"
+
+            }
+        }
+
+    property OwnerTokenWelcomeView name: OwnerTokenWelcomeView
+
+    SignalSpy {
+        id: nextClickSpy
+        target: componentUnderTest
path: storybook/qmlTests/tests/tst_OwnerTokenWelcomeView.qml
user: login: Khushboo-dev-cpp
body: here can you please use controlUnderTest instead of componentUnderTest, and move it within the Testcase? else all looks okay
created_at: 2025-05-14T12:07:48Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,82 @@
+import QtQuick 2.15
+import QtQuick.Controls 2.15
+
+import QtTest 1.15
+
+import StatusQ 0.1
+
+import SortFilterProxyModel 0.2
+import AppLayouts.Communities.views 1.0
+
+import Models 1.0
+
+Item {
+
+    id: root
+    width: 600
+    height: 800
+
+    Component {
+        id: componentUnderTest
+
+        OwnerTokenWelcomeView {
+
+            anchors.fill: parent
+
+            communityLogo: ModelsData.icons.superRare
+            communityColor: "Light pink"
+            communityName: "SuperRare"
+
+            }
+        }
+
+    property OwnerTokenWelcomeView name: OwnerTokenWelcomeView
+    property var controlUnderTest
+
+    SignalSpy {
+        id: nextClickSpy
+        target: controlUnderTest
+        signalName: "nextClicked"
+    }
+
+    TestCase {
+        name: "OwnerTokenWelcomeView"
+        when: windowShown
+
+        function init() {
+            nextClickSpy.clear()
+            controlUnderTest = createTemporaryObject(componentUnderTest, root)
+        }
+
+        function htmlToPlainText(html) {
+                    return html.replace(/<[^>]+>/g, "")
+                }
+
+        function getModelLength(model) {
+            return JSON.parse(JSON.stringify(model)).length;
+        }
+
+
+
+        function test_ui_elements() {
+            waitForRendering(controlUnderTest)
+
+            const introText = findChild(controlUnderTest, "introPanelText")
+            const ownerInfoPanel = findChild(controlUnderTest, "infoPanel_owner")
+            const masterInfoPanel = findChild(controlUnderTest, "infoPanel_master")
+            const nextButton = findChild(controlUnderTest, "welcomeViewNextButton")
path: storybook/qmlTests/tests/tst_OwnerTokenWelcomeView.qml
user: login: alexjba
body: Please verify if all these components exist.
created_at: 2025-05-15T13:33:46Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,82 @@
+import QtQuick 2.15
+import QtQuick.Controls 2.15
+
+import QtTest 1.15
+
+import StatusQ 0.1
+
+import SortFilterProxyModel 0.2
+import AppLayouts.Communities.views 1.0
+
+import Models 1.0
+
+Item {
+
+    id: root
+    width: 600
+    height: 800
path: storybook/qmlTests/tests/tst_OwnerTokenWelcomeView.qml
user: login: alexjba
body: This fixed the test case. Clicking next isn't working because it's out of the screen

```suggestion
    height: controlUnderTest ? controlUnderTest.implicitHeight : 800
```
created_at: 2025-05-15T15:04:07Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,82 @@
+import QtQuick 2.15
+import QtQuick.Controls 2.15
+
+import QtTest 1.15
+
+import StatusQ 0.1
+
+import SortFilterProxyModel 0.2
+import AppLayouts.Communities.views 1.0
+
+import Models 1.0
+
+Item {
+
+    id: root
+    width: 600
+    height: 800
+
+    Component {
+        id: componentUnderTest
+
+        OwnerTokenWelcomeView {
+
+            anchors.fill: parent
+
+            communityLogo: ModelsData.icons.superRare
+            communityColor: "Light pink"
+            communityName: "SuperRare"
+
+            }
+        }
+
+    property OwnerTokenWelcomeView name: OwnerTokenWelcomeView
+    property var controlUnderTest
+
+    SignalSpy {
+        id: nextClickSpy
+        target: controlUnderTest
+        signalName: "nextClicked"
+    }
+
+    TestCase {
+        name: "OwnerTokenWelcomeView"
+        when: windowShown
+
+        function init() {
+            nextClickSpy.clear()
+            controlUnderTest = createTemporaryObject(componentUnderTest, root)
+        }
+
+        function htmlToPlainText(html) {
+                    return html.replace(/<[^>]+>/g, "")
+                }
+
+        function getModelLength(model) {
+            return JSON.parse(JSON.stringify(model)).length;
+        }
+
+
+
+        function test_ui_elements() {
+            waitForRendering(controlUnderTest)
+
+            const introText = findChild(controlUnderTest, "introPanelText")
+            const ownerInfoPanel = findChild(controlUnderTest, "infoPanel_owner")
+            const masterInfoPanel = findChild(controlUnderTest, "infoPanel_master")
+            const nextButton = findChild(controlUnderTest, "welcomeViewNextButton")
path: storybook/qmlTests/tests/tst_OwnerTokenWelcomeView.qml
user: login: caybro
body: And, if you're just interested in `nextButton`, you can omit all the others
created_at: 2025-05-16T08:03:14Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,82 @@
+import QtQuick 2.15
+import QtQuick.Controls 2.15
+
+import QtTest 1.15
+
+import StatusQ 0.1
+
+import SortFilterProxyModel 0.2
+import AppLayouts.Communities.views 1.0
+
+import Models 1.0
+
+Item {
+
+    id: root
+    width: 600
+    height: 800
+
+    Component {
+        id: componentUnderTest
+
+        OwnerTokenWelcomeView {
+
+            anchors.fill: parent
+
+            communityLogo: ModelsData.icons.superRare
+            communityColor: "Light pink"
+            communityName: "SuperRare"
+
+            }
+        }
+
+    property OwnerTokenWelcomeView name: OwnerTokenWelcomeView
+    property var controlUnderTest
+
+    SignalSpy {
+        id: nextClickSpy
+        target: controlUnderTest
+        signalName: "nextClicked"
+    }
+
+    TestCase {
+        name: "OwnerTokenWelcomeView"
+        when: windowShown
+
+        function init() {
+            nextClickSpy.clear()
+            controlUnderTest = createTemporaryObject(componentUnderTest, root)
+        }
+
+        function htmlToPlainText(html) {
+                    return html.replace(/<[^>]+>/g, "")
+                }
+
+        function getModelLength(model) {
+            return JSON.parse(JSON.stringify(model)).length;
path: storybook/qmlTests/tests/tst_OwnerTokenWelcomeView.qml
user: login: caybro
body: You can `import StatusQ 0.1` and then:
```suggestion
            return model.ModelCount.count;
```
created_at: 2025-05-16T08:04:15Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,82 @@
+import QtQuick 2.15
+import QtQuick.Controls 2.15
+
+import QtTest 1.15
+
+import StatusQ 0.1
+
+import SortFilterProxyModel 0.2
+import AppLayouts.Communities.views 1.0
+
+import Models 1.0
+
+Item {
+
+    id: root
+    width: 600
+    height: 800
+
+    Component {
+        id: componentUnderTest
+
+        OwnerTokenWelcomeView {
+
+            anchors.fill: parent
+
+            communityLogo: ModelsData.icons.superRare
+            communityColor: "Light pink"
path: storybook/qmlTests/tests/tst_OwnerTokenWelcomeView.qml
user: login: caybro
body: This should be some valid color, so e.g. `pink` will do :)

See https://doc.qt.io/qt-5/qml-color.html#svg-color-reference
created_at: 2025-05-16T08:05:34Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,82 @@
+import QtQuick 2.15
+import QtQuick.Controls 2.15
+
+import QtTest 1.15
+
+import StatusQ 0.1
+
+import SortFilterProxyModel 0.2
+import AppLayouts.Communities.views 1.0
+
+import Models 1.0
+
+Item {
+
+    id: root
+    width: 600
+    height: 800
path: storybook/qmlTests/tests/tst_OwnerTokenWelcomeView.qml
user: login: anastasiyaig
body: indeed, thanks for hint !
created_at: 2025-05-19T09:36:48Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,82 @@
+import QtQuick 2.15
+import QtQuick.Controls 2.15
+
+import QtTest 1.15
+
+import StatusQ 0.1
+
+import SortFilterProxyModel 0.2
+import AppLayouts.Communities.views 1.0
+
+import Models 1.0
+
+Item {
+
+    id: root
+    width: 600
+    height: 800
+
+    Component {
+        id: componentUnderTest
+
+        OwnerTokenWelcomeView {
+
+            anchors.fill: parent
+
+            communityLogo: ModelsData.icons.superRare
+            communityColor: "Light pink"
path: storybook/qmlTests/tests/tst_OwnerTokenWelcomeView.qml
user: login: anastasiyaig
body: ah got it , i think i just blindly took this property from some other test 
created_at: 2025-05-19T09:37:38Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,82 @@
+import QtQuick 2.15
+import QtQuick.Controls 2.15
+
+import QtTest 1.15
+
+import StatusQ 0.1
+
+import SortFilterProxyModel 0.2
+import AppLayouts.Communities.views 1.0
+
+import Models 1.0
+
+Item {
+
+    id: root
+    width: 600
+    height: 800
+
+    Component {
+        id: componentUnderTest
+
+        OwnerTokenWelcomeView {
+
+            anchors.fill: parent
+
+            communityLogo: ModelsData.icons.superRare
+            communityColor: "Light pink"
+            communityName: "SuperRare"
+
+            }
+        }
+
+    property OwnerTokenWelcomeView name: OwnerTokenWelcomeView
+    property var controlUnderTest
+
+    SignalSpy {
+        id: nextClickSpy
+        target: controlUnderTest
+        signalName: "nextClicked"
+    }
+
+    TestCase {
+        name: "OwnerTokenWelcomeView"
+        when: windowShown
+
+        function init() {
+            nextClickSpy.clear()
+            controlUnderTest = createTemporaryObject(componentUnderTest, root)
+        }
+
+        function htmlToPlainText(html) {
+                    return html.replace(/<[^>]+>/g, "")
+                }
+
+        function getModelLength(model) {
+            return JSON.parse(JSON.stringify(model)).length;
path: storybook/qmlTests/tests/tst_OwnerTokenWelcomeView.qml
user: login: anastasiyaig
body: it complaints then that model is undefined

```
QmlTests::OwnerTokenWelcomeView::test_ui_elements
Uncaught exception: Cannot read property 'count' of undefined
```
created_at: 2025-05-19T09:42:04Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,90 @@
+import QtQuick 2.15
+import QtQuick.Controls 2.15
+
+import QtTest 1.15
+
+import StatusQ 0.1
+
+import SortFilterProxyModel 0.2
+import AppLayouts.Communities.views 1.0
+
+import Models 1.0
+
+Item {
+
+    id: root
+    width: 600
+    height: controlUnderTest ? controlUnderTest.implicitHeight : 800
+
+    Component {
+        id: componentUnderTest
+
+        OwnerTokenWelcomeView {
+
+            anchors.fill: parent
+
+            communityLogo: ModelsData.icons.superRare
+            communityColor: "pink"
+            communityName: "SuperRare"
+        }
+    }
+
+    property OwnerTokenWelcomeView name: OwnerTokenWelcomeView
+    property var controlUnderTest
+
+    SignalSpy {
+        id: nextClickSpy
+        target: controlUnderTest
+        signalName: "nextClicked"
+    }
+
+    TestCase {
+        name: "OwnerTokenWelcomeView"
+        when: windowShown
+
+        function init() {
+            nextClickSpy.clear()
+            controlUnderTest = createTemporaryObject(componentUnderTest, root)
+        }
+
+        function htmlToPlainText(html) {
+            return html.replace(/<[^>]+>/g, "")
+        }
+
+        function getModelLength(model) {
+            return JSON.parse(JSON.stringify(model)).length
+        }
+
+        function test_ui_elements() {
+            waitForRendering(controlUnderTest)
+
+            const introText = findChild(controlUnderTest, "introPanelText")
+            const ownerInfoPanel = findChild(controlUnderTest,
+                                             "infoPanel_owner")
+            const masterInfoPanel = findChild(controlUnderTest,
+                                              "infoPanel_master")
+
+            verify(introText !== null, "Intro text is missing")
+            verify(ownerInfoPanel !== null, "Owner info panel is missing")
+            verify(masterInfoPanel !== null, "Master infor panel is missing")
+
+            compare(htmlToPlainText(introText.text.trim().split(/\s+/).slice(
+                                        0, 5).join(" ")),
+                    "Your Owner token will give")
+            compare(getModelLength(ownerInfoPanel.checkersModel), 4)
path: storybook/qmlTests/tests/tst_OwnerTokenWelcomeView.qml
user: login: alexjba
body: we're interested of what's displayed on the screen. Ideally, in these UI components the models are an input and the output is what we see on the screen. Validating the input isn't as valuable in this case.

My suggestion would be to add an object name here and validate what the repeater shows on the screen.

https://github.com/status-im/status-desktop/blob/master/ui/app/AppLayouts/Communities/controls/CommunityInfoPanel.qml#L98
created_at: 2025-05-20T06:57:46Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,90 @@
+import QtQuick 2.15
+import QtQuick.Controls 2.15
+
+import QtTest 1.15
+
+import StatusQ 0.1
+
+import SortFilterProxyModel 0.2
+import AppLayouts.Communities.views 1.0
+
+import Models 1.0
+
+Item {
+
+    id: root
+    width: 600
+    height: controlUnderTest ? controlUnderTest.implicitHeight : 800
+
+    Component {
+        id: componentUnderTest
+
+        OwnerTokenWelcomeView {
+
+            anchors.fill: parent
+
+            communityLogo: ModelsData.icons.superRare
+            communityColor: "pink"
+            communityName: "SuperRare"
+        }
+    }
+
+    property OwnerTokenWelcomeView name: OwnerTokenWelcomeView
+    property var controlUnderTest
+
+    SignalSpy {
+        id: nextClickSpy
+        target: controlUnderTest
+        signalName: "nextClicked"
+    }
+
+    TestCase {
+        name: "OwnerTokenWelcomeView"
+        when: windowShown
+
+        function init() {
+            nextClickSpy.clear()
+            controlUnderTest = createTemporaryObject(componentUnderTest, root)
+        }
+
+        function htmlToPlainText(html) {
+            return html.replace(/<[^>]+>/g, "")
+        }
+
+        function getModelLength(model) {
+            return JSON.parse(JSON.stringify(model)).length
+        }
+
+        function test_ui_elements() {
+            waitForRendering(controlUnderTest)
+
+            const introText = findChild(controlUnderTest, "introPanelText")
+            const ownerInfoPanel = findChild(controlUnderTest,
+                                             "infoPanel_owner")
+            const masterInfoPanel = findChild(controlUnderTest,
+                                              "infoPanel_master")
+
+            verify(introText !== null, "Intro text is missing")
+            verify(ownerInfoPanel !== null, "Owner info panel is missing")
+            verify(masterInfoPanel !== null, "Master infor panel is missing")
+
+            compare(htmlToPlainText(introText.text.trim().split(/\s+/).slice(
+                                        0, 5).join(" ")),
+                    "Your Owner token will give")
+            compare(getModelLength(ownerInfoPanel.checkersModel), 4)
path: storybook/qmlTests/tests/tst_OwnerTokenWelcomeView.qml
user: login: anastasiyaig
body: thank you @alexjba , i committed the change 
created_at: 2025-05-20T09:00:49Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,82 @@
+import QtQuick 2.15
+import QtQuick.Controls 2.15
+
+import QtTest 1.15
+
+import StatusQ 0.1
+
+import SortFilterProxyModel 0.2
+import AppLayouts.Communities.views 1.0
+
+import Models 1.0
+
+Item {
+
+    id: root
+    width: 600
+    height: 800
+
+    Component {
+        id: componentUnderTest
+
+        OwnerTokenWelcomeView {
+
+            anchors.fill: parent
+
+            communityLogo: ModelsData.icons.superRare
+            communityColor: "Light pink"
+            communityName: "SuperRare"
+
+            }
+        }
+
+    property OwnerTokenWelcomeView name: OwnerTokenWelcomeView
+    property var controlUnderTest
+
+    SignalSpy {
+        id: nextClickSpy
+        target: controlUnderTest
+        signalName: "nextClicked"
+    }
+
+    TestCase {
+        name: "OwnerTokenWelcomeView"
+        when: windowShown
+
+        function init() {
+            nextClickSpy.clear()
+            controlUnderTest = createTemporaryObject(componentUnderTest, root)
+        }
+
+        function htmlToPlainText(html) {
+                    return html.replace(/<[^>]+>/g, "")
+                }
+
+        function getModelLength(model) {
+            return JSON.parse(JSON.stringify(model)).length;
path: storybook/qmlTests/tests/tst_OwnerTokenWelcomeView.qml
user: login: anastasiyaig
body: applied what Alex suggested
created_at: 2025-05-20T10:35:23Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,86 @@
+import QtQuick 2.15
+import QtQuick.Controls 2.15
+
+import QtTest 1.15
+
+import StatusQ 0.1
+
+import SortFilterProxyModel 0.2
+import AppLayouts.Communities.views 1.0
+
+import Models 1.0
+
+Item {
+
+    id: root
+    width: 600
+    height: controlUnderTest ? controlUnderTest.implicitHeight : 800
+
+    Component {
+        id: componentUnderTest
+
+        OwnerTokenWelcomeView {
+
+            anchors.fill: parent
+
+            communityLogo: ModelsData.icons.superRare
+            communityColor: "pink"
+            communityName: "SuperRare"
+        }
+    }
+
+    property OwnerTokenWelcomeView name: OwnerTokenWelcomeView
+    property var controlUnderTest
+
+    SignalSpy {
+        id: nextClickSpy
+        target: controlUnderTest
+        signalName: "nextClicked"
+    }
+
+    TestCase {
+        name: "OwnerTokenWelcomeView"
+        when: windowShown
+
+        function init() {
+            nextClickSpy.clear()
+            controlUnderTest = createTemporaryObject(componentUnderTest, root)
+        }
+
+        function htmlToPlainText(html) {
+            return html.replace(/<[^>]+>/g, "")
+        }
+
+        function test_ui_elements() {
+            waitForRendering(controlUnderTest)
+
+            const introText = findChild(controlUnderTest, "introPanelText")
+            const ownerInfoPanel = findChild(controlUnderTest,
+                                             "infoPanel_owner")
+            const masterInfoPanel = findChild(controlUnderTest,
+                                              "infoPanel_master")
+
+            verify(introText !== null, "Intro text is missing")
+            verify(ownerInfoPanel !== null, "Owner info panel is missing")
+            verify(masterInfoPanel !== null, "Master infor panel is missing")
path: storybook/qmlTests/tests/tst_OwnerTokenWelcomeView.qml
user: login: Khushboo-dev-cpp
body: there seems to be a type also `infor`, maybe you want is `compare` ?
created_at: 2025-05-20T12:14:01Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,86 @@
+import QtQuick 2.15
+import QtQuick.Controls 2.15
+
+import QtTest 1.15
+
+import StatusQ 0.1
+
+import SortFilterProxyModel 0.2
+import AppLayouts.Communities.views 1.0
+
+import Models 1.0
+
+Item {
+
+    id: root
+    width: 600
+    height: controlUnderTest ? controlUnderTest.implicitHeight : 800
+
+    Component {
+        id: componentUnderTest
+
+        OwnerTokenWelcomeView {
+
+            anchors.fill: parent
+
+            communityLogo: ModelsData.icons.superRare
+            communityColor: "pink"
+            communityName: "SuperRare"
+        }
+    }
+
+    property OwnerTokenWelcomeView name: OwnerTokenWelcomeView
+    property var controlUnderTest
+
+    SignalSpy {
+        id: nextClickSpy
+        target: controlUnderTest
+        signalName: "nextClicked"
+    }
+
+    TestCase {
+        name: "OwnerTokenWelcomeView"
+        when: windowShown
+
+        function init() {
+            nextClickSpy.clear()
+            controlUnderTest = createTemporaryObject(componentUnderTest, root)
+        }
+
+        function htmlToPlainText(html) {
+            return html.replace(/<[^>]+>/g, "")
+        }
+
+        function test_ui_elements() {
+            waitForRendering(controlUnderTest)
+
+            const introText = findChild(controlUnderTest, "introPanelText")
+            const ownerInfoPanel = findChild(controlUnderTest,
+                                             "infoPanel_owner")
+            const masterInfoPanel = findChild(controlUnderTest,
+                                              "infoPanel_master")
+
+            verify(introText !== null, "Intro text is missing")
+            verify(ownerInfoPanel !== null, "Owner info panel is missing")
+            verify(masterInfoPanel !== null, "Master infor panel is missing")
path: storybook/qmlTests/tests/tst_OwnerTokenWelcomeView.qml
user: login: anastasiyaig
body: ah right! sorey its a typo, will fix!
created_at: 2025-05-20T12:15:12Z
author_association: CONTRIBUTOR

PR comments:
user: login: status-im-auto
created_at: 2025-05-14T11:20:31Z
body: 
### Jenkins Builds
<details>
<summary>Click to see older builds (35)</summary>

| :grey_question: | Commit | :hash: | Finished (UTC) | Duration | Platform | Result |
|-|-|-|-|-|-|-|
| :heavy_check_mark: | 0c349e3e | [#1](https://ci.status.im/job/status-desktop/job/prs/job/linux/job/x86_64/job/tests-nim/job/PR-17936/1/) | 2025-05-14 11:20:31 | ~8 min | `tests/nim` | [:page_facing_up:`log`](https://ci.status.im/job/status-desktop/job/prs/job/linux/job/x86_64/job/tests-nim/job/PR-17936/1//consoleText) |
| :heavy_check_mark: | 0c349e3e | [#1](https://ci.status.im/job/status-desktop/job/prs/job/macos/job/aarch64/job/package/job/PR-17936/1/) | 2025-05-14 11:21:18 | ~9 min | `macos/aarch64` | [:apple:`dmg`](https://status-im-desktop-prs.ams3.cdn.digitaloceanspaces.com/StatusIm-Desktop-250514-111138-0c349e-pr17936-aarch64.dmg) |
| :x: | 0c349e3e | [#1](https://ci.status.im/job/status-desktop/job/prs/job/linux/job/x86_64/job/tests-ui/job/PR-17936/1/) | 2025-05-14 11:24:58 | ~13 min | `tests/ui` | [:page_facing_up:`log`](https://ci.status.im/job/status-desktop/job/prs/job/linux/job/x86_64/job/tests-ui/job/PR-17936/1/consoleText) |
| :heavy_check_mark: | 0c349e3e | [#1](https://ci.status.im/job/status-desktop/job/prs/job/macos/job/x86_64/job/package/job/PR-17936/1/) | 2025-05-14 11:26:57 | ~15 min | `macos/x86_64` | [:apple:`dmg`](https://status-im-desktop-prs.ams3.cdn.digitaloceanspaces.com/StatusIm-Desktop-250514-111140-0c349e-pr17936-x86_64.dmg) |
| :heavy_check_mark: | 0c349e3e | [#1](https://ci.status.im/job/status-desktop/job/prs/job/windows/job/x86_64/job/package/job/PR-17936/1/) | 2025-05-14 11:32:40 | ~20 min | `windows/x86_64` | [:cd:`exe`](https://status-im-desktop-prs.ams3.cdn.digitaloceanspaces.com/StatusIm-Desktop-250514-111141-0c349e-pr17936-x86_64.exe) |
| :heavy_check_mark: | 0c349e3e | [#1](https://ci.status.im/job/status-desktop/job/prs/job/linux/job/x86_64/job/package/job/PR-17936/1/) | 2025-05-14 11:35:52 | ~24 min | `linux/x86_64` | [:package:`tgz`](https://status-im-desktop-prs.ams3.cdn.digitaloceanspaces.com/StatusIm-Desktop-250514-111135-0c349e-pr17936-x86_64.tar.gz) |
| :heavy_check_mark: | 0c349e3e | [#1](https://ci.status.im/job/status-desktop/job/prs/job/linux/job/x86_64/job/package-nix/job/PR-17936/1/) | 2025-05-14 11:37:18 | ~25 min | `linux-nix/x86_64` | [:package:`tgz`](https://status-im-desktop-prs.ams3.cdn.digitaloceanspaces.com/StatusIm-Desktop-250514-111133-0c349e-pr17936-x86_64.nix.tar.gz) |
| | | | | | | |
| :heavy_check_mark: | af3551ae | [#2](https://ci.status.im/job/status-desktop/job/prs/job/macos/job/aarch64/job/package/job/PR-17936/2/) | 2025-05-14 12:51:49 | ~8 min | `macos/aarch64` | [:apple:`dmg`](https://status-im-desktop-prs.ams3.cdn.digitaloceanspaces.com/StatusIm-Desktop-250514-124340-af3551-pr17936-aarch64.dmg) |
| :heavy_check_mark: | af3551ae | [#2](https://ci.status.im/job/status-desktop/job/prs/job/linux/job/x86_64/job/tests-nim/job/PR-17936/2/) | 2025-05-14 12:53:07 | ~9 min | `tests/nim` | [:page_facing_up:`log`](https://ci.status.im/job/status-desktop/job/prs/job/linux/job/x86_64/job/tests-nim/job/PR-17936/2//consoleText) |
| :heavy_check_mark: | af3551ae | [#2](https://ci.status.im/job/status-desktop/job/prs/job/macos/job/x86_64/job/package/job/PR-17936/2/) | 2025-05-14 12:55:10 | ~11 min | `macos/x86_64` | [:apple:`dmg`](https://status-im-desktop-prs.ams3.cdn.digitaloceanspaces.com/StatusIm-Desktop-250514-124342-af3551-pr17936-x86_64.dmg) |
| :heavy_check_mark: | af3551ae | [#2](https://ci.status.im/job/status-desktop/job/prs/job/linux/job/x86_64/job/tests-ui/job/PR-17936/2/) | 2025-05-14 12:57:49 | ~14 min | `tests/ui` | [:page_facing_up:`log`](https://ci.status.im/job/status-desktop/job/prs/job/linux/job/x86_64/job/tests-ui/job/PR-17936/2//consoleText) |
| :heavy_check_mark: | af3551ae | [#2](https://ci.status.im/job/status-desktop/job/prs/job/windows/job/x86_64/job/package/job/PR-17936/2/) | 2025-05-14 13:01:14 | ~17 min | `windows/x86_64` | [:cd:`exe`](https://status-im-desktop-prs.ams3.cdn.digitaloceanspaces.com/StatusIm-Desktop-250514-124344-af3551-pr17936-x86_64.exe) |
| :heavy_check_mark: | af3551ae | [#2](https://ci.status.im/job/status-desktop/job/prs/job/linux/job/x86_64/job/package-nix/job/PR-17936/2/) | 2025-05-14 13:06:28 | ~22 min | `linux-nix/x86_64` | [:package:`tgz`](https://status-im-desktop-prs.ams3.cdn.digitaloceanspaces.com/StatusIm-Desktop-250514-124335-af3551-pr17936-x86_64.nix.tar.gz) |
| :heavy_check_mark: | af3551ae | [#2](https://ci.status.im/job/status-desktop/job/prs/job/linux/job/x86_64/job/package/job/PR-17936/2/) | 2025-05-14 13:09:44 | ~26 min | `linux/x86_64` | [:package:`tgz`](https://status-im-desktop-prs.ams3.cdn.digitaloceanspaces.com/StatusIm-Desktop-250514-124337-af3551-pr17936-x86_64.tar.gz) |
| | | | | | | |
| :heavy_check_mark: | b961479f | [#3](https://ci.status.im/job/status-desktop/job/prs/job/macos/job/aarch64/job/package/job/PR-17936/3/) | 2025-05-14 13:54:16 | ~6 min | `macos/aarch64` | [:apple:`dmg`](https://status-im-desktop-prs.ams3.cdn.digitaloceanspaces.com/StatusIm-Desktop-250514-134726-b96147-pr17936-aarch64.dmg) |
| :heavy_check_mark: | b961479f | [#3](https://ci.status.im/job/status-desktop/job/prs/job/linux/job/x86_64/job/tests-nim/job/PR-17936/3/) | 2025-05-14 13:57:12 | ~9 min | `tests/nim` | [:page_facing_up:`log`](https://ci.status.im/job/status-desktop/job/prs/job/linux/job/x86_64/job/tests-nim/job/PR-17936/3//consoleText) |
| :heavy_check_mark: | b961479f | [#3](https://ci.status.im/job/status-desktop/job/prs/job/linux/job/x86_64/job/tests-ui/job/PR-17936/3/) | 2025-05-14 14:00:32 | ~13 min | `tests/ui` | [:page_facing_up:`log`](https://ci.status.im/job/status-desktop/job/prs/job/linux/job/x86_64/job/tests-ui/job/PR-17936/3//consoleText) |
| :heavy_check_mark: | b961479f | [#3](https://ci.status.im/job/status-desktop/job/prs/job/windows/job/x86_64/job/package/job/PR-17936/3/) | 2025-05-14 14:07:28 | ~19 min | `windows/x86_64` | [:cd:`exe`](https://status-im-desktop-prs.ams3.cdn.digitaloceanspaces.com/StatusIm-Desktop-250514-134728-b96147-pr17936-x86_64.exe) |
| :heavy_check_mark: | b961479f | [#3](https://ci.status.im/job/status-desktop/job/prs/job/macos/job/x86_64/job/package/job/PR-17936/3/) | 2025-05-14 14:08:00 | ~20 min | `macos/x86_64` | [:apple:`dmg`](https://status-im-desktop-prs.ams3.cdn.digitaloceanspaces.com/StatusIm-Desktop-250514-134727-b96147-pr17936-x86_64.dmg) |
| :heavy_check_mark: | b961479f | [#3](https://ci.status.im/job/status-desktop/job/prs/job/linux/job/x86_64/job/package/job/PR-17936/3/) | 2025-05-14 14:09:23 | ~22 min | `linux/x86_64` | [:package:`tgz`](https://status-im-desktop-prs.ams3.cdn.digitaloceanspaces.com/StatusIm-Desktop-250514-134721-b96147-pr17936-x86_64.tar.gz) |
| :heavy_check_mark: | b961479f | [#3](https://ci.status.im/job/status-desktop/job/prs/job/linux/job/x86_64/job/package-nix/job/PR-17936/3/) | 2025-05-14 14:10:28 | ~23 min | `linux-nix/x86_64` | [:package:`tgz`](https://status-im-desktop-prs.ams3.cdn.digitaloceanspaces.com/StatusIm-Desktop-250514-134720-b96147-pr17936-x86_64.nix.tar.gz) |
| | | | | | | |
| :heavy_check_mark: | 8932b3ab | [#4](https://ci.status.im/job/status-desktop/job/prs/job/macos/job/aarch64/job/package/job/PR-17936/4/) | 2025-05-19 09:55:51 | ~7 min | `macos/aarch64` | [:apple:`dmg`](https://status-im-desktop-prs.ams3.cdn.digitaloceanspaces.com/StatusIm-Desktop-250519-094819-8932b3-pr17936-aarch64.dmg) |
| :heavy_check_mark: | 8932b3ab | [#4](https://ci.status.im/job/status-desktop/job/prs/job/linux/job/x86_64/job/tests-nim/job/PR-17936/4/) | 2025-05-19 09:56:58 | ~8 min | `tests/nim` | [:page_facing_up:`log`](https://ci.status.im/job/status-desktop/job/prs/job/linux/job/x86_64/job/tests-nim/job/PR-17936/4//consoleText) |
| :heavy_check_mark: | 8932b3ab | [#4](https://ci.status.im/job/status-desktop/job/prs/job/macos/job/x86_64/job/package/job/PR-17936/4/) | 2025-05-19 10:01:24 | ~13 min | `macos/x86_64` | [:apple:`dmg`](https://status-im-desktop-prs.ams3.cdn.digitaloceanspaces.com/StatusIm-Desktop-250519-094819-8932b3-pr17936-x86_64.dmg) |
| :heavy_check_mark: | 8932b3ab | [#4](https://ci.status.im/job/status-desktop/job/prs/job/linux/job/x86_64/job/tests-ui/job/PR-17936/4/) | 2025-05-19 10:02:03 | ~13 min | `tests/ui` | [:page_facing_up:`log`](https://ci.status.im/job/status-desktop/job/prs/job/linux/job/x86_64/job/tests-ui/job/PR-17936/4//consoleText) |
| :heavy_check_mark: | 8932b3ab | [#4](https://ci.status.im/job/status-desktop/job/prs/job/windows/job/x86_64/job/package/job/PR-17936/4/) | 2025-05-19 10:08:22 | ~19 min | `windows/x86_64` | [:cd:`exe`](https://status-im-desktop-prs.ams3.cdn.digitaloceanspaces.com/StatusIm-Desktop-250519-094823-8932b3-pr17936-x86_64.exe) |
| :heavy_check_mark: | 8932b3ab | [#4](https://ci.status.im/job/status-desktop/job/prs/job/linux/job/x86_64/job/package/job/PR-17936/4/) | 2025-05-19 10:10:15 | ~22 min | `linux/x86_64` | [:package:`tgz`](https://status-im-desktop-prs.ams3.cdn.digitaloceanspaces.com/StatusIm-Desktop-250519-094814-8932b3-pr17936-x86_64.tar.gz) |
| :heavy_check_mark: | 8932b3ab | [#4](https://ci.status.im/job/status-desktop/job/prs/job/linux/job/x86_64/job/package-nix/job/PR-17936/4/) | 2025-05-19 10:11:14 | ~23 min | `linux-nix/x86_64` | [:package:`tgz`](https://status-im-desktop-prs.ams3.cdn.digitaloceanspaces.com/StatusIm-Desktop-250519-094813-8932b3-pr17936-x86_64.nix.tar.gz) |
| | | | | | | |
| :heavy_check_mark: | f3b93964 | [#5](https://ci.status.im/job/status-desktop/job/prs/job/macos/job/aarch64/job/package/job/PR-17936/5/) | 2025-05-19 14:21:09 | ~8 min | `macos/aarch64` | [:apple:`dmg`](https://status-im-desktop-prs.ams3.cdn.digitaloceanspaces.com/StatusIm-Desktop-250519-141304-f3b939-pr17936-aarch64.dmg) |
| :heavy_check_mark: | f3b93964 | [#5](https://ci.status.im/job/status-desktop/job/prs/job/linux/job/x86_64/job/tests-nim/job/PR-17936/5/) | 2025-05-19 14:22:21 | ~9 min | `tests/nim` | [:page_facing_up:`log`](https://ci.status.im/job/status-desktop/job/prs/job/linux/job/x86_64/job/tests-nim/job/PR-17936/5//consoleText) |
| :heavy_check_mark: | f3b93964 | [#5](https://ci.status.im/job/status-desktop/job/prs/job/macos/job/x86_64/job/package/job/PR-17936/5/) | 2025-05-19 14:25:55 | ~12 min | `macos/x86_64` | [:apple:`dmg`](https://status-im-desktop-prs.ams3.cdn.digitaloceanspaces.com/StatusIm-Desktop-250519-141305-f3b939-pr17936-x86_64.dmg) |
| :heavy_check_mark: | f3b93964 | [#5](https://ci.status.im/job/status-desktop/job/prs/job/linux/job/x86_64/job/tests-ui/job/PR-17936/5/) | 2025-05-19 14:27:09 | ~14 min | `tests/ui` | [:page_facing_up:`log`](https://ci.status.im/job/status-desktop/job/prs/job/linux/job/x86_64/job/tests-ui/job/PR-17936/5//consoleText) |
| :heavy_check_mark: | f3b93964 | [#5](https://ci.status.im/job/status-desktop/job/prs/job/windows/job/x86_64/job/package/job/PR-17936/5/) | 2025-05-19 14:30:34 | ~17 min | `windows/x86_64` | [:cd:`exe`](https://status-im-desktop-prs.ams3.cdn.digitaloceanspaces.com/StatusIm-Desktop-250519-141308-f3b939-pr17936-x86_64.exe) |
| :heavy_check_mark: | f3b93964 | [#5](https://ci.status.im/job/status-desktop/job/prs/job/linux/job/x86_64/job/package-nix/job/PR-17936/5/) | 2025-05-19 14:35:10 | ~22 min | `linux-nix/x86_64` | [:package:`tgz`](https://status-im-desktop-prs.ams3.cdn.digitaloceanspaces.com/StatusIm-Desktop-250519-141259-f3b939-pr17936-x86_64.nix.tar.gz) |
| :heavy_check_mark: | f3b93964 | [#5](https://ci.status.im/job/status-desktop/job/prs/job/linux/job/x86_64/job/package/job/PR-17936/5/) | 2025-05-19 14:38:23 | ~25 min | `linux/x86_64` | [:package:`tgz`](https://status-im-desktop-prs.ams3.cdn.digitaloceanspaces.com/StatusIm-Desktop-250519-141300-f3b939-pr17936-x86_64.tar.gz) |
</details>

| :grey_question: | Commit | :hash: | Finished (UTC) | Duration | Platform | Result |
|-|-|-|-|-|-|-|
| :heavy_check_mark: | 53890a42 | [#6](https://ci.status.im/job/status-desktop/job/prs/job/linux/job/x86_64/job/tests-nim/job/PR-17936/6/) | 2025-05-20 09:05:56 | ~9 min | `tests/nim` | [:page_facing_up:`log`](https://ci.status.im/job/status-desktop/job/prs/job/linux/job/x86_64/job/tests-nim/job/PR-17936/6//consoleText) |
| :heavy_check_mark: | 53890a42 | [#6](https://ci.status.im/job/status-desktop/job/prs/job/macos/job/aarch64/job/package/job/PR-17936/6/) | 2025-05-20 09:09:42 | ~13 min | `macos/aarch64` | [:apple:`dmg`](https://status-im-desktop-prs.ams3.cdn.digitaloceanspaces.com/StatusIm-Desktop-250520-085635-53890a-pr17936-aarch64.dmg) |
| :heavy_check_mark: | 53890a42 | [#6](https://ci.status.im/job/status-desktop/job/prs/job/macos/job/x86_64/job/package/job/PR-17936/6/) | 2025-05-20 09:09:49 | ~13 min | `macos/x86_64` | [:apple:`dmg`](https://status-im-desktop-prs.ams3.cdn.digitaloceanspaces.com/StatusIm-Desktop-250520-085635-53890a-pr17936-x86_64.dmg) |
| :heavy_check_mark: | 53890a42 | [#6](https://ci.status.im/job/status-desktop/job/prs/job/linux/job/x86_64/job/tests-ui/job/PR-17936/6/) | 2025-05-20 09:10:26 | ~13 min | `tests/ui` | [:page_facing_up:`log`](https://ci.status.im/job/status-desktop/job/prs/job/linux/job/x86_64/job/tests-ui/job/PR-17936/6//consoleText) |
| :heavy_check_mark: | 53890a42 | [#6](https://ci.status.im/job/status-desktop/job/prs/job/windows/job/x86_64/job/package/job/PR-17936/6/) | 2025-05-20 09:16:04 | ~19 min | `windows/x86_64` | [:cd:`exe`](https://status-im-desktop-prs.ams3.cdn.digitaloceanspaces.com/StatusIm-Desktop-250520-085639-53890a-pr17936-x86_64.exe) |
| :heavy_check_mark: | 53890a42 | [#6](https://ci.status.im/job/status-desktop/job/prs/job/linux/job/x86_64/job/package-nix/job/PR-17936/6/) | 2025-05-20 09:20:40 | ~24 min | `linux-nix/x86_64` | [:package:`tgz`](https://status-im-desktop-prs.ams3.cdn.digitaloceanspaces.com/StatusIm-Desktop-250520-085630-53890a-pr17936-x86_64.nix.tar.gz) |
| :heavy_check_mark: | 53890a42 | [#6](https://ci.status.im/job/status-desktop/job/prs/job/linux/job/x86_64/job/package/job/PR-17936/6/) | 2025-05-20 09:21:37 | ~25 min | `linux/x86_64` | [:package:`tgz`](https://status-im-desktop-prs.ams3.cdn.digitaloceanspaces.com/StatusIm-Desktop-250520-085630-53890a-pr17936-x86_64.tar.gz) |
| | | | | | | |
| :heavy_check_mark: | dc8a8234 | [#7](https://ci.status.im/job/status-desktop/job/prs/job/macos/job/aarch64/job/package/job/PR-17936/7/) | 2025-05-20 12:24:29 | ~7 min | `macos/aarch64` | [:apple:`dmg`](https://status-im-desktop-prs.ams3.cdn.digitaloceanspaces.com/StatusIm-Desktop-250520-121721-dc8a82-pr17936-aarch64.dmg) |
| :heavy_check_mark: | dc8a8234 | [#7](https://ci.status.im/job/status-desktop/job/prs/job/linux/job/x86_64/job/tests-nim/job/PR-17936/7/) | 2025-05-20 12:26:06 | ~8 min | `tests/nim` | [:page_facing_up:`log`](https://ci.status.im/job/status-desktop/job/prs/job/linux/job/x86_64/job/tests-nim/job/PR-17936/7//consoleText) |
| :heavy_check_mark: | dc8a8234 | [#7](https://ci.status.im/job/status-desktop/job/prs/job/macos/job/x86_64/job/package/job/PR-17936/7/) | 2025-05-20 12:28:48 | ~11 min | `macos/x86_64` | [:apple:`dmg`](https://status-im-desktop-prs.ams3.cdn.digitaloceanspaces.com/StatusIm-Desktop-250520-121723-dc8a82-pr17936-x86_64.dmg) |
| :heavy_check_mark: | dc8a8234 | [#7](https://ci.status.im/job/status-desktop/job/prs/job/linux/job/x86_64/job/tests-ui/job/PR-17936/7/) | 2025-05-20 12:30:57 | ~13 min | `tests/ui` | [:page_facing_up:`log`](https://ci.status.im/job/status-desktop/job/prs/job/linux/job/x86_64/job/tests-ui/job/PR-17936/7//consoleText) |
| :heavy_check_mark: | dc8a8234 | [#7](https://ci.status.im/job/status-desktop/job/prs/job/windows/job/x86_64/job/package/job/PR-17936/7/) | 2025-05-20 12:37:09 | ~19 min | `windows/x86_64` | [:cd:`exe`](https://status-im-desktop-prs.ams3.cdn.digitaloceanspaces.com/StatusIm-Desktop-250520-121725-dc8a82-pr17936-x86_64.exe) |
| :heavy_check_mark: | dc8a8234 | [#7](https://ci.status.im/job/status-desktop/job/prs/job/linux/job/x86_64/job/package-nix/job/PR-17936/7/) | 2025-05-20 12:39:16 | ~21 min | `linux-nix/x86_64` | [:package:`tgz`](https://status-im-desktop-prs.ams3.cdn.digitaloceanspaces.com/StatusIm-Desktop-250520-121716-dc8a82-pr17936-x86_64.nix.tar.gz) |
| :heavy_check_mark: | dc8a8234 | [#7](https://ci.status.im/job/status-desktop/job/prs/job/linux/job/x86_64/job/package/job/PR-17936/7/) | 2025-05-20 12:39:40 | ~22 min | `linux/x86_64` | [:package:`tgz`](https://status-im-desktop-prs.ams3.cdn.digitaloceanspaces.com/StatusIm-Desktop-250520-121717-dc8a82-pr17936-x86_64.tar.gz) |

author_association: MEMBER
user: login: Khushboo-dev-cpp
created_at: 2025-05-14T14:06:46Z
body: A generic comment for this PR, would be is if we would want to test font size or color here as well. For the CommunityInfoPanel maybe we should write separate test for its behaviour. But I think something important can be that the icon is loaded as expected, etc.

We perhaps need a `strategy` to understand what is scopr for qml Tests, only behaviour or some other things like pixelSize etc..
author_association: CONTRIBUTOR
user: login: anastasiyaig
created_at: 2025-05-14T14:52:39Z
body: @caybro @micieslak @alexjba wdyt? 
author_association: CONTRIBUTOR