diff --git a/.changeset/young-trains-glow.md b/.changeset/young-trains-glow.md
new file mode 100644
index 0000000000000..77f50812143f6
--- /dev/null
+++ b/.changeset/young-trains-glow.md
@@ -0,0 +1,5 @@
+---
+'@rocket.chat/meteor': minor
+---
+
+Fixed the issue of apps icon uneven alignment in case of missing icons inside message composer toolbar & message toolbar menu.
diff --git a/apps/meteor/client/components/message/toolbox/MessageActionMenu.tsx b/apps/meteor/client/components/message/toolbox/MessageActionMenu.tsx
index 4c5d442652f21..54a320ebf3d79 100644
--- a/apps/meteor/client/components/message/toolbox/MessageActionMenu.tsx
+++ b/apps/meteor/client/components/message/toolbox/MessageActionMenu.tsx
@@ -101,6 +101,7 @@ const MessageActionMenu = ({ options, onChangeMenuVisibility, ...props }: Messag
data-qa-type='message-action'
data-qa-id={option.id}
role={option.role ? option.role : 'button'}
+ gap={!option.icon && option.type === 'apps'}
/>
))}
{index !== arr.length - 1 && }
diff --git a/apps/meteor/client/views/room/composer/messageBox/MessageBoxActionsToolbar/ActionsToolbarDropdown.tsx b/apps/meteor/client/views/room/composer/messageBox/MessageBoxActionsToolbar/ActionsToolbarDropdown.tsx
index 021f6518021a7..5066ecb192e1a 100644
--- a/apps/meteor/client/views/room/composer/messageBox/MessageBoxActionsToolbar/ActionsToolbarDropdown.tsx
+++ b/apps/meteor/client/views/room/composer/messageBox/MessageBoxActionsToolbar/ActionsToolbarDropdown.tsx
@@ -93,6 +93,7 @@ const ActionsToolbarDropdown = ({ isRecording, rid, tmid, actions, ...props }: A
chat: chatContext,
})
}
+ gap={!item.icon}
>
{item.icon && ['name']} />}
{item.name}
diff --git a/apps/meteor/tests/e2e/homepage.spec.ts b/apps/meteor/tests/e2e/homepage.spec.ts
index 380fa54d2af3e..4f8f9d09a2f3a 100644
--- a/apps/meteor/tests/e2e/homepage.spec.ts
+++ b/apps/meteor/tests/e2e/homepage.spec.ts
@@ -32,7 +32,7 @@ test.describe.serial('homepage', () => {
await adminPage.close();
});
- test('layout', async () => {
+ test('expect customize button and all cards to be visible', async () => {
await test.step('expect show customize button', async () => {
await expect(adminPage.locator('role=button[name="Customize"]')).toBeVisible();
});
@@ -47,7 +47,7 @@ test.describe.serial('homepage', () => {
await expect((await api.post('/settings/Layout_Home_Body', { value: '' })).status()).toBe(200);
});
- test('layout', async () => {
+ test('visibility and button functionality in custom body with empty custom content', async () => {
await test.step('expect default value in custom body', async () => {
await expect(
adminPage.locator('role=status[name="Admins may insert content html to be rendered in this white space."]'),
@@ -70,7 +70,7 @@ test.describe.serial('homepage', () => {
await expect((await api.post('/settings/Layout_Home_Body', { value: 'Hello admin' })).status()).toBe(200);
});
- test('layout', async () => {
+ test('visibility and button functionality in custom body with custom content', async () => {
await test.step('expect custom body to be visible', async () => {
await expect(adminPage.locator('role=status[name="Hello admin"]')).toBeVisible();
});
@@ -122,7 +122,7 @@ test.describe.serial('homepage', () => {
await regularUserPage.close();
});
- test('layout', async () => {
+ test('the option customize is not be active', async () => {
await test.step('expect to not show customize button', async () => {
await expect(regularUserPage.locator('role=button[name="Customize"]')).not.toBeVisible();
});
@@ -162,7 +162,7 @@ test.describe.serial('homepage', () => {
expect((await api.post('/settings/Layout_Home_Title', { value: 'Home' })).status()).toBe(200);
});
- test('layout', async () => {
+ test('expect welcome text and header text to be correct', async () => {
await test.step('expect welcome text to be NewSiteName', async () => {
await expect(regularUserPage.locator('role=heading[name="Welcome to NewSiteName"]')).toBeVisible();
});
@@ -202,7 +202,7 @@ test.describe.serial('homepage', () => {
expect((await api.post('/settings/Layout_Custom_Body_Only', { value: false })).status()).toBe(200);
});
- test('layout', async () => {
+ test('expect default layout not be visible and custom body visible', async () => {
await test.step('expect default layout to not be visible', async () => {
await expect(regularUserPage.locator('[data-qa-id="homepage-welcome-text"]')).not.toBeVisible();
});