diff --git a/libs/components/src/lib/components/ChannelTopbar/TopBarComponents/PinnedMessages/ItemPinMessage.tsx b/libs/components/src/lib/components/ChannelTopbar/TopBarComponents/PinnedMessages/ItemPinMessage.tsx
index 35d97147d8..ce9ebacbbf 100644
--- a/libs/components/src/lib/components/ChannelTopbar/TopBarComponents/PinnedMessages/ItemPinMessage.tsx
+++ b/libs/components/src/lib/components/ChannelTopbar/TopBarComponents/PinnedMessages/ItemPinMessage.tsx
@@ -71,8 +71,8 @@ const ItemPinMessage = (props: ItemPinMessageProps) => {
return (
@@ -118,12 +118,17 @@ const ItemPinMessage = (props: ItemPinMessageProps) => {
-
)}
diff --git a/libs/components/src/lib/components/MessageWithSystem/index.tsx b/libs/components/src/lib/components/MessageWithSystem/index.tsx
index ea7a523d68..7c4c91faa1 100644
--- a/libs/components/src/lib/components/MessageWithSystem/index.tsx
+++ b/libs/components/src/lib/components/MessageWithSystem/index.tsx
@@ -1,7 +1,7 @@
/* eslint-disable @typescript-eslint/no-empty-function */
import type { MessagesEntity } from '@mezon/store';
import { Icons } from '@mezon/ui';
-import { TypeMessage, addMention, convertDateStringI18n } from '@mezon/utils';
+import { TypeMessage, addMention, convertDateStringI18n, generateE2eId } from '@mezon/utils';
import type { ReactNode } from 'react';
import React, { useRef, useState } from 'react';
import { useTranslation } from 'react-i18next';
@@ -46,7 +46,10 @@ function MessageWithSystem({
messageId={message?.id}
className={'fullBoxText relative group'}
>
-
+
{message?.code === TypeMessage.Welcome && }
{message?.code === TypeMessage.UpcomingEvent && }
{message?.code === TypeMessage.CreateThread && }
@@ -122,6 +125,7 @@ const HoverStateWrapper: React.FC = ({
onMouseLeave={handleMouseLeave}
onContextMenu={onContextMenu}
id={`msg-${messageId}`}
+ data-e2e={generateE2eId('chat.system_message')}
>
{children}
{isHover && popup && popup()}
diff --git a/libs/components/src/lib/components/MessageWithUser/MessageLineSystem.tsx b/libs/components/src/lib/components/MessageWithUser/MessageLineSystem.tsx
index 87553ae4fc..51f9c1bc4d 100644
--- a/libs/components/src/lib/components/MessageWithUser/MessageLineSystem.tsx
+++ b/libs/components/src/lib/components/MessageWithUser/MessageLineSystem.tsx
@@ -1,5 +1,6 @@
import { channelsActions, messagesActions, pinMessageActions, threadsActions, useAppDispatch } from '@mezon/store';
-import { ETokenMessage, IExtendedMessage, IMessageWithUser, TypeMessage, convertTimeStringI18n, parseThreadInfo } from '@mezon/utils';
+import type { IExtendedMessage, IMessageWithUser } from '@mezon/utils';
+import { ETokenMessage, TypeMessage, convertTimeStringI18n, generateE2eId, parseThreadInfo } from '@mezon/utils';
import { ChannelStreamMode } from 'mezon-js';
import { useCallback } from 'react';
import { useTranslation } from 'react-i18next';
@@ -148,11 +149,19 @@ const RenderContentSystem = ({ message, data, mode, isSearchMessage, isJumMessag
{message.code === TypeMessage.CreatePin && (
<>
{translateMessage('systemMessages.pinned')}{' '}
-
+
{translateMessage('systemMessages.aMessage')}
{' '}
{translateMessage('systemMessages.toThisChannel')}{' '}
-
+
{translateMessage('systemMessages.allPinned')}
{' '}
{translateMessage('systemMessages.messages')}
diff --git a/libs/utils/src/lib/e2e-testing/constants.ts b/libs/utils/src/lib/e2e-testing/constants.ts
index 9859d097f6..c5d9c0f4f9 100644
--- a/libs/utils/src/lib/e2e-testing/constants.ts
+++ b/libs/utils/src/lib/e2e-testing/constants.ts
@@ -297,7 +297,9 @@ export const DATA_E2E_IDENTIFIER = {
file: '',
mute: '',
inbox: '',
- pin: '',
+ pin: {
+ pin_badge: ''
+ },
canvas: '',
thread: {
modal: {
@@ -352,7 +354,15 @@ export const DATA_E2E_IDENTIFIER = {
}
}
},
- suggest_item: ''
+ suggest_item: '',
+ system_message: {
+ pin_message: {
+ button: {
+ jump_to_message: '',
+ see_all_pinned: ''
+ }
+ }
+ }
},
onboarding: {
chat: {
@@ -405,7 +415,12 @@ export const DATA_E2E_IDENTIFIER = {
item_pin_message: {
username: ''
},
- pin_message: ''
+ pin_message: {
+ button: {
+ jump: '',
+ remove_pin: ''
+ }
+ }
},
modal: {
too_many_upload: '',