diff --git a/apps/meteor/app/livechat-enterprise/client/components/modals/PlaceChatOnHoldModal.tsx b/apps/meteor/app/livechat-enterprise/client/components/modals/PlaceChatOnHoldModal.tsx index 04f46c31c18b4..297837a3bddf6 100644 --- a/apps/meteor/app/livechat-enterprise/client/components/modals/PlaceChatOnHoldModal.tsx +++ b/apps/meteor/app/livechat-enterprise/client/components/modals/PlaceChatOnHoldModal.tsx @@ -21,7 +21,8 @@ const PlaceChatOnHoldModal = ({ onCancel, onOnHoldChat, confirm = onOnHoldChat, const { t } = useTranslation(); return ( - + // TODO: Replace Modal with GenericModal + {t('Omnichannel_onHold_Chat')} diff --git a/apps/meteor/client/components/Omnichannel/modals/CloseChatModal.tsx b/apps/meteor/client/components/Omnichannel/modals/CloseChatModal.tsx index fe476f047bae5..a498c6a4d613b 100644 --- a/apps/meteor/client/components/Omnichannel/modals/CloseChatModal.tsx +++ b/apps/meteor/client/components/Omnichannel/modals/CloseChatModal.tsx @@ -152,7 +152,11 @@ const CloseChatModal = ({ department, visitorEmail, onCancel, onConfirm }: Close if (commentRequired || tagRequired || canSendTranscript) { return ( - }> + // TODO: Replace Modal with GenericModal + } + > {t('Wrap_up_conversation')} diff --git a/apps/meteor/client/hooks/roomActions/useAppsRoomStarActions.tsx b/apps/meteor/client/hooks/roomActions/useAppsRoomStarActions.tsx index 457d71254e9c0..e687ec901a86c 100644 --- a/apps/meteor/client/hooks/roomActions/useAppsRoomStarActions.tsx +++ b/apps/meteor/client/hooks/roomActions/useAppsRoomStarActions.tsx @@ -39,7 +39,7 @@ export const useAppsRoomStarActions = () => { order: 3, renderToolboxItem: ({ id, icon, title, disabled, className }) => ( } + button={} key={id} title={title} disabled={disabled} diff --git a/apps/meteor/client/hooks/roomActions/useThreadRoomAction.tsx b/apps/meteor/client/hooks/roomActions/useThreadRoomAction.tsx index 0f9cde4ed377d..cababed1b3582 100644 --- a/apps/meteor/client/hooks/roomActions/useThreadRoomAction.tsx +++ b/apps/meteor/client/hooks/roomActions/useThreadRoomAction.tsx @@ -45,16 +45,15 @@ export const useThreadRoomAction = () => { icon: 'thread', tabComponent: Threads, order: 2, - renderToolboxItem: ({ id, className, index, icon, title, toolbox: { tab }, action, disabled, tooltip }) => ( + renderToolboxItem: ({ id, className, icon, title, toolbox: { tab }, disabled, action, tooltip }) => ( diff --git a/apps/meteor/client/hooks/roomActions/useVideoCallRoomAction.tsx b/apps/meteor/client/hooks/roomActions/useVideoCallRoomAction.tsx index 484d8f7b9801c..c3431f6168e8b 100644 --- a/apps/meteor/client/hooks/roomActions/useVideoCallRoomAction.tsx +++ b/apps/meteor/client/hooks/roomActions/useVideoCallRoomAction.tsx @@ -51,7 +51,7 @@ export const useVideoCallRoomAction = () => { const visible = groups.length > 0; const allowed = visible && permittedToCallManagement && (!user?.username || !room.muted?.includes(user.username)) && !ownUser; const disabled = federated || (!!room.ro && !permittedToPostReadonly) || room.archived; - const tooltip = disabled ? t('core.Video_Call_unavailable_for_this_type_of_room') : ''; + const tooltip = disabled ? t('core.Video_Call_unavailable_for_this_type_of_room') : undefined; const handleOpenVideoConf = useEffectEvent(async () => { if (isCalling || isRinging) { diff --git a/apps/meteor/client/views/room/Header/Omnichannel/QuickActions/QuickActionOptions.tsx b/apps/meteor/client/views/room/Header/Omnichannel/QuickActions/QuickActionOptions.tsx index d2bf060d62915..5c498b0d7dff2 100644 --- a/apps/meteor/client/views/room/Header/Omnichannel/QuickActions/QuickActionOptions.tsx +++ b/apps/meteor/client/views/room/Header/Omnichannel/QuickActions/QuickActionOptions.tsx @@ -1,5 +1,6 @@ import type { IOmnichannelRoom } from '@rocket.chat/core-typings'; import { Box, Dropdown, Option } from '@rocket.chat/fuselage'; +import type { Keys as IconName } from '@rocket.chat/icons'; import { memo, useRef } from 'react'; import { useTranslation } from 'react-i18next'; @@ -11,9 +12,10 @@ type QuickActionOptionsProps = { options: QuickActionsActionOptions; action: (id: string) => void; room: IOmnichannelRoom; + icon: IconName; }; -const QuickActionOptions = ({ options, room, action, ...props }: QuickActionOptionsProps) => { +const QuickActionOptions = ({ options, room, action, icon, ...props }: QuickActionOptionsProps) => { const { t } = useTranslation(); const reference = useRef(null); const target = useRef(null); @@ -26,7 +28,7 @@ const QuickActionOptions = ({ options, room, action, ...props }: QuickActionOpti return ( <> - toggle()} secondary={isVisible} {...props} /> + toggle()} secondary={isVisible} {...props} /> {isVisible && ( {options.map(({ id, label, validate }) => { diff --git a/apps/meteor/client/views/room/Header/Omnichannel/QuickActions/QuickActions.tsx b/apps/meteor/client/views/room/Header/Omnichannel/QuickActions/QuickActions.tsx index 2831fa4bb9a0c..204733dac6037 100644 --- a/apps/meteor/client/views/room/Header/Omnichannel/QuickActions/QuickActions.tsx +++ b/apps/meteor/client/views/room/Header/Omnichannel/QuickActions/QuickActions.tsx @@ -28,15 +28,14 @@ const QuickActions = ({ className }: QuickActionsProps) => { className, index, primary: false, - action, room, }; if (options) { - return ; + return ; } - return ; + return action(id)} {...props} />; })} {quickActions.length > 0 && } diff --git a/apps/meteor/client/views/room/Header/RoomToolbox/RoomToolbox.tsx b/apps/meteor/client/views/room/Header/RoomToolbox/RoomToolbox.tsx index f04d3db874c37..d3825284203f6 100644 --- a/apps/meteor/client/views/room/Header/RoomToolbox/RoomToolbox.tsx +++ b/apps/meteor/client/views/room/Header/RoomToolbox/RoomToolbox.tsx @@ -23,17 +23,15 @@ const RoomToolbox = ({ className }: RoomToolboxProps) => { const showKebabMenu = hiddenActions.length > 0; const renderDefaultToolboxItem = useEffectEvent( - ({ id, className, index, icon, title, toolbox: { tab }, action, disabled, tooltip }: RenderToolboxItemParams) => { + ({ id, className, icon, title, toolbox: { tab }, action, disabled, tooltip }: RenderToolboxItemParams) => { return ( @@ -41,12 +39,11 @@ const RoomToolbox = ({ className }: RoomToolboxProps) => { }, ); - const mapToToolboxItem = (action: RoomToolboxActionConfig, index: number) => { + const mapToToolboxItem = (action: RoomToolboxActionConfig) => { return (action.renderToolboxItem ?? renderDefaultToolboxItem)?.({ ...action, action: action.action ?? (() => toolbox.openTab(action.id)), className, - index, toolbox, }); }; @@ -56,7 +53,7 @@ const RoomToolbox = ({ className }: RoomToolboxProps) => { {featuredActions.map(mapToToolboxItem)} {featuredActions.length > 0 && } {visibleActions.map(mapToToolboxItem)} - {showKebabMenu && } + {showKebabMenu && } ); }; diff --git a/apps/meteor/client/views/room/Header/RoomToolbox/RoomToolboxE2EESetup.tsx b/apps/meteor/client/views/room/Header/RoomToolbox/RoomToolboxE2EESetup.tsx index 1d87a4887084e..8bee82d8206fc 100644 --- a/apps/meteor/client/views/room/Header/RoomToolbox/RoomToolboxE2EESetup.tsx +++ b/apps/meteor/client/views/room/Header/RoomToolbox/RoomToolboxE2EESetup.tsx @@ -32,16 +32,15 @@ const RoomToolboxE2EESetup = ({ className }: RoomToolboxE2EESetupProps) => { return ( <> - {actions.map(({ id, icon, title, action, disabled, tooltip }, index) => ( + {actions.map(({ id, icon, title, action, disabled, tooltip }) => ( toolbox.openTab(id))} + onClick={action ?? (() => toolbox.openTab(id))} disabled={disabled} tooltip={tooltip} /> diff --git a/apps/meteor/client/views/room/Header/RoomToolbox/hooks/useRoomToolboxActions.spec.ts b/apps/meteor/client/views/room/Header/RoomToolbox/hooks/useRoomToolboxActions.spec.ts index 55c0ea9d65e80..45ad6bd356d77 100644 --- a/apps/meteor/client/views/room/Header/RoomToolbox/hooks/useRoomToolboxActions.spec.ts +++ b/apps/meteor/client/views/room/Header/RoomToolbox/hooks/useRoomToolboxActions.spec.ts @@ -48,12 +48,14 @@ const appsActions: RoomToolboxActionConfig[] = [ title: 'app-42212581-0966-44aa-8366-b3e92aa00df4.action_button_label_files', groups: ['group', 'channel', 'live', 'team', 'direct', 'direct_multiple'], type: 'apps', + icon: undefined as unknown as RoomToolboxActionConfig['icon'], }, { id: 'app2', title: 'app-42212581-0966-44aa-8366-b3e92aa00df4.action_button_label_files', groups: ['group', 'channel', 'live', 'team', 'direct', 'direct_multiple'], type: 'apps', + icon: undefined as unknown as RoomToolboxActionConfig['icon'], }, ]; diff --git a/apps/meteor/client/views/room/Header/RoomToolbox/hooks/useRoomToolboxActions.ts b/apps/meteor/client/views/room/Header/RoomToolbox/hooks/useRoomToolboxActions.ts index 5c4449fc044c8..d8865296c32ab 100644 --- a/apps/meteor/client/views/room/Header/RoomToolbox/hooks/useRoomToolboxActions.ts +++ b/apps/meteor/client/views/room/Header/RoomToolbox/hooks/useRoomToolboxActions.ts @@ -21,13 +21,12 @@ export const useRoomToolboxActions = ({ actions, openTab }: Pick !item.disabled && !item.featured) .map((item) => ({ - 'content': t(item.title), - 'onClick': + content: t(item.title), + onClick: item.action ?? ((): void => { openTab(item.id); }), - 'data-qa-id': `ToolBoxAction-${item.icon}`, ...item, })) .reduce((acc, item) => { diff --git a/apps/meteor/client/views/room/HeaderV2/Omnichannel/QuickActions/QuickActionOptions.tsx b/apps/meteor/client/views/room/HeaderV2/Omnichannel/QuickActions/QuickActionOptions.tsx index d2bf060d62915..5c498b0d7dff2 100644 --- a/apps/meteor/client/views/room/HeaderV2/Omnichannel/QuickActions/QuickActionOptions.tsx +++ b/apps/meteor/client/views/room/HeaderV2/Omnichannel/QuickActions/QuickActionOptions.tsx @@ -1,5 +1,6 @@ import type { IOmnichannelRoom } from '@rocket.chat/core-typings'; import { Box, Dropdown, Option } from '@rocket.chat/fuselage'; +import type { Keys as IconName } from '@rocket.chat/icons'; import { memo, useRef } from 'react'; import { useTranslation } from 'react-i18next'; @@ -11,9 +12,10 @@ type QuickActionOptionsProps = { options: QuickActionsActionOptions; action: (id: string) => void; room: IOmnichannelRoom; + icon: IconName; }; -const QuickActionOptions = ({ options, room, action, ...props }: QuickActionOptionsProps) => { +const QuickActionOptions = ({ options, room, action, icon, ...props }: QuickActionOptionsProps) => { const { t } = useTranslation(); const reference = useRef(null); const target = useRef(null); @@ -26,7 +28,7 @@ const QuickActionOptions = ({ options, room, action, ...props }: QuickActionOpti return ( <> - toggle()} secondary={isVisible} {...props} /> + toggle()} secondary={isVisible} {...props} /> {isVisible && ( {options.map(({ id, label, validate }) => { diff --git a/apps/meteor/client/views/room/HeaderV2/Omnichannel/QuickActions/QuickActions.tsx b/apps/meteor/client/views/room/HeaderV2/Omnichannel/QuickActions/QuickActions.tsx index 2831fa4bb9a0c..e50476671cd29 100644 --- a/apps/meteor/client/views/room/HeaderV2/Omnichannel/QuickActions/QuickActions.tsx +++ b/apps/meteor/client/views/room/HeaderV2/Omnichannel/QuickActions/QuickActions.tsx @@ -28,15 +28,14 @@ const QuickActions = ({ className }: QuickActionsProps) => { className, index, primary: false, - action, room, }; if (options) { - return ; + return ; } - return ; + return action(id)} {...props} />; })} {quickActions.length > 0 && } diff --git a/apps/meteor/client/views/room/HeaderV2/RoomToolbox/RoomToolbox.tsx b/apps/meteor/client/views/room/HeaderV2/RoomToolbox/RoomToolbox.tsx index f04d3db874c37..d3825284203f6 100644 --- a/apps/meteor/client/views/room/HeaderV2/RoomToolbox/RoomToolbox.tsx +++ b/apps/meteor/client/views/room/HeaderV2/RoomToolbox/RoomToolbox.tsx @@ -23,17 +23,15 @@ const RoomToolbox = ({ className }: RoomToolboxProps) => { const showKebabMenu = hiddenActions.length > 0; const renderDefaultToolboxItem = useEffectEvent( - ({ id, className, index, icon, title, toolbox: { tab }, action, disabled, tooltip }: RenderToolboxItemParams) => { + ({ id, className, icon, title, toolbox: { tab }, action, disabled, tooltip }: RenderToolboxItemParams) => { return ( @@ -41,12 +39,11 @@ const RoomToolbox = ({ className }: RoomToolboxProps) => { }, ); - const mapToToolboxItem = (action: RoomToolboxActionConfig, index: number) => { + const mapToToolboxItem = (action: RoomToolboxActionConfig) => { return (action.renderToolboxItem ?? renderDefaultToolboxItem)?.({ ...action, action: action.action ?? (() => toolbox.openTab(action.id)), className, - index, toolbox, }); }; @@ -56,7 +53,7 @@ const RoomToolbox = ({ className }: RoomToolboxProps) => { {featuredActions.map(mapToToolboxItem)} {featuredActions.length > 0 && } {visibleActions.map(mapToToolboxItem)} - {showKebabMenu && } + {showKebabMenu && } ); }; diff --git a/apps/meteor/client/views/room/HeaderV2/RoomToolbox/RoomToolboxE2EESetup.tsx b/apps/meteor/client/views/room/HeaderV2/RoomToolbox/RoomToolboxE2EESetup.tsx index 75cc0aca7c800..d7dfd7ecdb75d 100644 --- a/apps/meteor/client/views/room/HeaderV2/RoomToolbox/RoomToolboxE2EESetup.tsx +++ b/apps/meteor/client/views/room/HeaderV2/RoomToolbox/RoomToolboxE2EESetup.tsx @@ -26,16 +26,15 @@ const RoomToolboxE2EESetup = ({ className }: RoomToolboxE2EESetupProps) => { return ( <> - {actions.map(({ id, icon, title, action, disabled, tooltip }, index) => ( + {actions.map(({ id, icon, title, action, disabled, tooltip }) => ( toolbox.openTab(id))} + onClick={action ?? (() => toolbox.openTab(id))} disabled={disabled} tooltip={tooltip} /> diff --git a/apps/meteor/client/views/room/HeaderV2/RoomToolbox/hooks/useRoomToolboxActions.spec.ts b/apps/meteor/client/views/room/HeaderV2/RoomToolbox/hooks/useRoomToolboxActions.spec.ts index 55c0ea9d65e80..45ad6bd356d77 100644 --- a/apps/meteor/client/views/room/HeaderV2/RoomToolbox/hooks/useRoomToolboxActions.spec.ts +++ b/apps/meteor/client/views/room/HeaderV2/RoomToolbox/hooks/useRoomToolboxActions.spec.ts @@ -48,12 +48,14 @@ const appsActions: RoomToolboxActionConfig[] = [ title: 'app-42212581-0966-44aa-8366-b3e92aa00df4.action_button_label_files', groups: ['group', 'channel', 'live', 'team', 'direct', 'direct_multiple'], type: 'apps', + icon: undefined as unknown as RoomToolboxActionConfig['icon'], }, { id: 'app2', title: 'app-42212581-0966-44aa-8366-b3e92aa00df4.action_button_label_files', groups: ['group', 'channel', 'live', 'team', 'direct', 'direct_multiple'], type: 'apps', + icon: undefined as unknown as RoomToolboxActionConfig['icon'], }, ]; diff --git a/apps/meteor/client/views/room/HeaderV2/RoomToolbox/hooks/useRoomToolboxActions.ts b/apps/meteor/client/views/room/HeaderV2/RoomToolbox/hooks/useRoomToolboxActions.ts index 5c4449fc044c8..d8865296c32ab 100644 --- a/apps/meteor/client/views/room/HeaderV2/RoomToolbox/hooks/useRoomToolboxActions.ts +++ b/apps/meteor/client/views/room/HeaderV2/RoomToolbox/hooks/useRoomToolboxActions.ts @@ -21,13 +21,12 @@ export const useRoomToolboxActions = ({ actions, openTab }: Pick !item.disabled && !item.featured) .map((item) => ({ - 'content': t(item.title), - 'onClick': + content: t(item.title), + onClick: item.action ?? ((): void => { openTab(item.id); }), - 'data-qa-id': `ToolBoxAction-${item.icon}`, ...item, })) .reduce((acc, item) => { diff --git a/apps/meteor/client/views/room/contexts/RoomToolboxContext.ts b/apps/meteor/client/views/room/contexts/RoomToolboxContext.ts index 5c3935de408f3..fb60d516df4ce 100644 --- a/apps/meteor/client/views/room/contexts/RoomToolboxContext.ts +++ b/apps/meteor/client/views/room/contexts/RoomToolboxContext.ts @@ -2,17 +2,16 @@ import type { Box } from '@rocket.chat/fuselage'; import type { Keys as IconName } from '@rocket.chat/icons'; import type { TranslationKey } from '@rocket.chat/ui-contexts'; import { createContext, useContext } from 'react'; -import type { ReactNode, ComponentProps, ComponentType, UIEvent } from 'react'; +import type { ReactNode, ComponentProps, ComponentType } from 'react'; export type RenderToolboxItemParams = RoomToolboxActionConfig & { className?: ComponentProps['className']; - index: number; toolbox: RoomToolboxContextValue; }; export type RoomToolboxActionConfig = { id: string; - icon?: IconName; + icon: IconName; title: TranslationKey; anonymous?: boolean; tooltip?: string; @@ -21,7 +20,7 @@ export type RoomToolboxActionConfig = { order?: number; groups: Array<'group' | 'channel' | 'live' | 'direct' | 'direct_multiple' | 'team' | 'voip'>; hotkey?: string; - action?: (event?: UIEvent) => void; + action?: () => void; featured?: boolean; renderToolboxItem?: (params: RenderToolboxItemParams) => ReactNode; tabComponent?: ComponentType<{ diff --git a/apps/meteor/client/views/room/lib/quickActions.tsx b/apps/meteor/client/views/room/lib/quickActions.tsx index 5fc23f4105751..4880dbeaf78ee 100644 --- a/apps/meteor/client/views/room/lib/quickActions.tsx +++ b/apps/meteor/client/views/room/lib/quickActions.tsx @@ -11,7 +11,7 @@ export type QuickActionsActionOptions = Array<{ export type QuickActionsActionConfig = { id: string; - icon?: IconName; + icon: IconName; title: TranslationKey; order?: number; featured?: boolean; diff --git a/apps/meteor/client/views/room/providers/hooks/useAppsRoomActions.ts b/apps/meteor/client/views/room/providers/hooks/useAppsRoomActions.ts index ff9b6afb1b9cc..1d91bc179a184 100644 --- a/apps/meteor/client/views/room/providers/hooks/useAppsRoomActions.ts +++ b/apps/meteor/client/views/room/providers/hooks/useAppsRoomActions.ts @@ -23,8 +23,8 @@ export const useAppsRoomActions = () => { result.data?.filter(applyButtonFilters).map( (action): RoomToolboxActionConfig => ({ id: action.actionId, - icon: undefined, variant: action.variant, + icon: undefined as unknown as RoomToolboxActionConfig['icon'], order: 300, title: Utilities.getI18nKeyForApp(action.labelI18n, action.appId), groups: ['group', 'channel', 'live', 'team', 'direct', 'direct_multiple'], diff --git a/apps/meteor/tests/e2e/channel-management.spec.ts b/apps/meteor/tests/e2e/channel-management.spec.ts index 86ff77c857908..31bc2ac21c231 100644 --- a/apps/meteor/tests/e2e/channel-management.spec.ts +++ b/apps/meteor/tests/e2e/channel-management.spec.ts @@ -47,7 +47,7 @@ test.describe.serial('channel-management', () => { test('should add user1 to targetChannel', async () => { await poHomeChannel.sidenav.openChat(targetChannel); - await poHomeChannel.tabs.btnTabMembers.click(); + await poHomeChannel.roomToolbar.openMembersTab(); await poHomeChannel.tabs.members.showAllUsers(); await poHomeChannel.tabs.members.addUser('user1'); @@ -57,13 +57,13 @@ test.describe.serial('channel-management', () => { test('should edit topic of targetChannel', async ({ page }) => { await poHomeChannel.sidenav.openChat(targetChannel); - await poHomeChannel.tabs.btnRoomInfo.click(); + await poHomeChannel.roomToolbar.openRoomInfo(); await poHomeChannel.tabs.room.btnEdit.click(); await poHomeChannel.tabs.room.inputTopic.fill('hello-topic-edited'); await poHomeChannel.tabs.room.btnSave.click(); await poHomeChannel.dismissToast(); - await poHomeChannel.tabs.btnRoomInfo.click(); + await poHomeChannel.roomToolbar.openRoomInfo(); await expect(page.getByRole('heading', { name: 'hello-topic-edited' })).toBeVisible(); await expect(page.getByRole('dialog', { name: 'Channel info' })).toContainText('hello-topic-edited'); await expect(poHomeChannel.content.getSystemMessageByText('changed room topic to hello-topic-edited')).toBeVisible(); @@ -71,33 +71,33 @@ test.describe.serial('channel-management', () => { test('should edit announcement of targetChannel', async ({ page }) => { await poHomeChannel.sidenav.openChat(targetChannel); - await poHomeChannel.tabs.btnRoomInfo.click(); + await poHomeChannel.roomToolbar.openRoomInfo(); await poHomeChannel.tabs.room.btnEdit.click(); await poHomeChannel.tabs.room.inputAnnouncement.fill('hello-announcement-edited'); await poHomeChannel.tabs.room.btnSave.click(); await poHomeChannel.dismissToast(); - await poHomeChannel.tabs.btnRoomInfo.click(); + await poHomeChannel.roomToolbar.openRoomInfo(); await expect(page.getByRole('dialog', { name: 'Channel info' })).toContainText('hello-announcement-edited'); await expect(poHomeChannel.content.getSystemMessageByText('changed room announcement to: hello-announcement-edited')).toBeVisible(); }); test('should edit description of targetChannel', async ({ page }) => { await poHomeChannel.sidenav.openChat(targetChannel); - await poHomeChannel.tabs.btnRoomInfo.click(); + await poHomeChannel.roomToolbar.openRoomInfo(); await poHomeChannel.tabs.room.btnEdit.click(); await poHomeChannel.tabs.room.inputDescription.fill('hello-description-edited'); await poHomeChannel.tabs.room.btnSave.click(); await poHomeChannel.dismissToast(); - await poHomeChannel.tabs.btnRoomInfo.click(); + await poHomeChannel.roomToolbar.openRoomInfo(); await expect(page.getByRole('dialog', { name: 'Channel info' })).toContainText('hello-description-edited'); await expect(poHomeChannel.content.getSystemMessageByText('changed room description to: hello-description-edited')).toBeVisible(); }); test('should edit name of targetChannel', async ({ page }) => { await poHomeChannel.sidenav.openChat(targetChannel); - await poHomeChannel.tabs.btnRoomInfo.click(); + await poHomeChannel.roomToolbar.openRoomInfo(); await poHomeChannel.tabs.room.btnEdit.click(); await poHomeChannel.tabs.room.inputName.fill(`NAME-EDITED-${targetChannel}`); await poHomeChannel.tabs.room.btnSave.click(); @@ -112,7 +112,7 @@ test.describe.serial('channel-management', () => { test('should truncate the room name for small screens', async ({ page }) => { const hugeName = faker.string.alpha(200); await poHomeChannel.sidenav.openChat(targetChannel); - await poHomeChannel.tabs.btnRoomInfo.click(); + await poHomeChannel.roomToolbar.openRoomInfo(); await poHomeChannel.tabs.room.btnEdit.click(); await poHomeChannel.tabs.room.inputName.fill(hugeName); await poHomeChannel.tabs.room.btnSave.click(); @@ -186,7 +186,7 @@ test.describe.serial('channel-management', () => { test('should mute user1', async () => { await poHomeChannel.sidenav.openChat(targetChannel); - await poHomeChannel.tabs.btnTabMembers.click(); + await poHomeChannel.roomToolbar.openMembersTab(); await poHomeChannel.tabs.members.showAllUsers(); await poHomeChannel.tabs.members.muteUser('user1'); @@ -200,7 +200,7 @@ test.describe.serial('channel-management', () => { test('should unmuteUser user1', async () => { await poHomeChannel.sidenav.openChat(targetChannel); - await poHomeChannel.tabs.btnTabMembers.click(); + await poHomeChannel.roomToolbar.openMembersTab(); await poHomeChannel.tabs.members.showAllUsers(); await poHomeChannel.tabs.members.unmuteUser('user1'); @@ -214,7 +214,7 @@ test.describe.serial('channel-management', () => { test('should set user1 as moderator', async () => { await poHomeChannel.sidenav.openChat(targetChannel); - await poHomeChannel.tabs.btnTabMembers.click(); + await poHomeChannel.roomToolbar.openMembersTab(); await poHomeChannel.tabs.members.showAllUsers(); await poHomeChannel.tabs.members.setUserAsModerator('user1'); @@ -223,13 +223,13 @@ test.describe.serial('channel-management', () => { const user1Channel = new HomeChannel(user1Page); await user1Page.goto(`/channel/${targetChannel}`); await user1Channel.content.waitForChannel(); - await user1Channel.tabs.btnRoomInfo.click(); + await user1Channel.roomToolbar.openRoomInfo(); await expect(user1Channel.tabs.room.btnEdit).toBeVisible(); }); test('should set user1 as owner', async ({ browser }) => { await poHomeChannel.sidenav.openChat(targetChannel); - await poHomeChannel.tabs.btnTabMembers.click(); + await poHomeChannel.roomToolbar.openMembersTab(); await poHomeChannel.tabs.members.showAllUsers(); await poHomeChannel.tabs.members.setUserAsOwner('user1'); @@ -239,7 +239,7 @@ test.describe.serial('channel-management', () => { const user1Channel = new HomeChannel(user1Page); await user1Page.goto(`/channel/${targetChannel}`); await user1Channel.content.waitForChannel(); - await user1Channel.tabs.btnRoomInfo.click(); + await user1Channel.roomToolbar.openRoomInfo(); await user1Channel.tabs.room.btnMore.click(); @@ -250,7 +250,7 @@ test.describe.serial('channel-management', () => { test('should ignore user1 messages', async () => { await poHomeChannel.sidenav.openChat(targetChannel); - await poHomeChannel.tabs.btnTabMembers.click(); + await poHomeChannel.roomToolbar.openMembersTab(); await poHomeChannel.tabs.members.showAllUsers(); await poHomeChannel.tabs.members.ignoreUser('user1'); @@ -289,7 +289,7 @@ test.describe.serial('channel-management', () => { await poHomeChannel.sidenav.openChat(targetChannel); await expect(poHomeChannel.content.lastUserMessageBody).toContainText('This message was ignored'); - await poHomeChannel.tabs.btnTabMembers.click(); + await poHomeChannel.roomToolbar.openMembersTab(); await poHomeChannel.tabs.members.showAllUsers(); await poHomeChannel.tabs.members.unignoreUser('user1'); diff --git a/apps/meteor/tests/e2e/e2e-encryption/e2ee-passphrase-management.spec.ts b/apps/meteor/tests/e2e/e2e-encryption/e2ee-passphrase-management.spec.ts index 4ce8b687e223f..b5e55231bad05 100644 --- a/apps/meteor/tests/e2e/e2e-encryption/e2ee-passphrase-management.spec.ts +++ b/apps/meteor/tests/e2e/e2e-encryption/e2ee-passphrase-management.spec.ts @@ -193,10 +193,10 @@ test.describe.serial('E2EE Passphrase Management - Room Setup States', () => { await expect(poHomeChannel.content.encryptedRoomHeaderIcon.first()).toBeVisible(); await expect(poHomeChannel.btnRoomSaveE2EEPassword).toBeVisible(); - await poHomeChannel.tabs.btnE2EERoomSetupDisableE2E.waitFor(); - await expect(poHomeChannel.tabs.btnE2EERoomSetupDisableE2E).toBeVisible(); - await expect(poHomeChannel.tabs.btnTabMembers).toBeVisible(); - await expect(poHomeChannel.tabs.btnRoomInfo).toBeVisible(); + await poHomeChannel.roomToolbar.btnDisableE2EEncryption.waitFor(); + await expect(poHomeChannel.roomToolbar.btnDisableE2EEncryption).toBeVisible(); + await expect(poHomeChannel.roomToolbar.btnMembers).toBeVisible(); + await expect(poHomeChannel.roomToolbar.btnRoomInfo).toBeVisible(); await expect(poHomeChannel.content.inputMessage).not.toBeVisible(); @@ -238,10 +238,10 @@ test.describe.serial('E2EE Passphrase Management - Room Setup States', () => { await expect(poHomeChannel.btnRoomEnterE2EEPassword).toBeVisible(); - await poHomeChannel.tabs.btnE2EERoomSetupDisableE2E.waitFor(); - await expect(poHomeChannel.tabs.btnE2EERoomSetupDisableE2E).toBeVisible(); - await expect(poHomeChannel.tabs.btnTabMembers).toBeVisible(); - await expect(poHomeChannel.tabs.btnRoomInfo).toBeVisible(); + await poHomeChannel.roomToolbar.btnDisableE2EEncryption.waitFor(); + await expect(poHomeChannel.roomToolbar.btnDisableE2EEncryption).toBeVisible(); + await expect(poHomeChannel.roomToolbar.btnMembers).toBeVisible(); + await expect(poHomeChannel.roomToolbar.btnRoomInfo).toBeVisible(); await expect(poHomeChannel.content.inputMessage).not.toBeVisible(); @@ -308,9 +308,9 @@ test.describe.serial('E2EE Passphrase Management - Room Setup States', () => { await expect(poHomeChannel.content.inputMessage).not.toBeVisible(); await expect(page.locator('.rcx-states__title')).toContainText('Check back later'); - await poHomeChannel.tabs.btnE2EERoomSetupDisableE2E.waitFor(); - await expect(poHomeChannel.tabs.btnE2EERoomSetupDisableE2E).toBeVisible(); - await expect(poHomeChannel.tabs.btnTabMembers).toBeVisible(); - await expect(poHomeChannel.tabs.btnRoomInfo).toBeVisible(); + await poHomeChannel.roomToolbar.btnDisableE2EEncryption.waitFor(); + await expect(poHomeChannel.roomToolbar.btnDisableE2EEncryption).toBeVisible(); + await expect(poHomeChannel.roomToolbar.btnMembers).toBeVisible(); + await expect(poHomeChannel.roomToolbar.btnRoomInfo).toBeVisible(); }); }); diff --git a/apps/meteor/tests/e2e/feature-preview.spec.ts b/apps/meteor/tests/e2e/feature-preview.spec.ts index 9a1970cc57b3b..5691a840cbcdc 100644 --- a/apps/meteor/tests/e2e/feature-preview.spec.ts +++ b/apps/meteor/tests/e2e/feature-preview.spec.ts @@ -345,7 +345,7 @@ test.describe.serial('feature preview', () => { await page.goto(`/group/${sidepanelTeam}`); await poHomeChannel.content.waitForChannel(); - await poHomeChannel.tabs.btnChannels.click(); + await poHomeChannel.roomToolbar.openTeamChannels(); await poHomeChannel.tabs.channels.btnCreateNew.click(); await poHomeChannel.sidenav.inputChannelName.fill(targetChannelNameInTeam); await poHomeChannel.sidenav.checkboxPrivateChannel.click(); @@ -381,7 +381,7 @@ test.describe.serial('feature preview', () => { test('should show channel in sidepanel after adding existing one', async ({ page }) => { await page.goto(`/group/${sidepanelTeam}`); - await poHomeChannel.tabs.btnChannels.click(); + await poHomeChannel.roomToolbar.openTeamChannels(); await poHomeChannel.tabs.channels.btnAddExisting.click(); // flaky: workarround for when AutoComplete does not close the list box before trying to click `Add` await expect(async () => { @@ -403,7 +403,7 @@ test.describe.serial('feature preview', () => { await page.goto(`/group/${sidepanelTeam}`); - await poHomeChannel.tabs.btnChannels.click(); + await poHomeChannel.roomToolbar.openTeamChannels(); await poHomeChannel.tabs.channels.btnAddExisting.click(); // flaky: workarround for when AutoComplete does not close the list box before trying to click `Add` await expect(async () => { @@ -508,7 +508,7 @@ test.describe.serial('feature preview', () => { await poHomeChannel.sidebar.allTeamCollabFilter.click(); await expect(poHomeChannel.sidepanel.getItemByName(discussionName)).toBeVisible(); - await poHomeChannel.tabs.btnRoomInfo.click(); + await poHomeChannel.roomToolbar.openRoomInfo(); await poHomeChannel.tabs.room.btnMore.click(); await poHomeChannel.tabs.room.getMoreOption('Delete').click(); await poHomeChannel.tabs.room.confirmDeleteDiscussion(); diff --git a/apps/meteor/tests/e2e/federation/page-objects/channel.ts b/apps/meteor/tests/e2e/federation/page-objects/channel.ts index e224947863256..8d9e7c8f33940 100644 --- a/apps/meteor/tests/e2e/federation/page-objects/channel.ts +++ b/apps/meteor/tests/e2e/federation/page-objects/channel.ts @@ -3,6 +3,7 @@ import type { Locator, Page } from '@playwright/test'; import { FederationHomeContent } from './fragments/home-content'; import { FederationHomeFlextab } from './fragments/home-flextab'; import { FederationSidenav } from './fragments/home-sidenav'; +import { RoomToolbar } from '../../page-objects/fragments/toolbar'; export class FederationChannel { private readonly page: Page; @@ -13,11 +14,14 @@ export class FederationChannel { readonly tabs: FederationHomeFlextab; + readonly roomToolbar: RoomToolbar; + constructor(page: Page) { this.page = page; this.content = new FederationHomeContent(page); this.sidenav = new FederationSidenav(page); this.tabs = new FederationHomeFlextab(page); + this.roomToolbar = new RoomToolbar(page); } get toastSuccess(): Locator { diff --git a/apps/meteor/tests/e2e/federation/page-objects/fragments/home-content.ts b/apps/meteor/tests/e2e/federation/page-objects/fragments/home-content.ts index 7ce78d21e148b..1f93afcd9cb77 100644 --- a/apps/meteor/tests/e2e/federation/page-objects/fragments/home-content.ts +++ b/apps/meteor/tests/e2e/federation/page-objects/fragments/home-content.ts @@ -154,10 +154,6 @@ export class FederationHomeContent { return this.page.locator('[data-qa="UserCard"] a'); } - get btnContactInformation(): Locator { - return this.page.locator('[data-qa-id="ToolBoxAction-user"]'); - } - get btnContactEdit(): Locator { return this.page.locator('.rcx-vertical-bar button:has-text("Edit")'); } diff --git a/apps/meteor/tests/e2e/federation/page-objects/fragments/home-flextab.ts b/apps/meteor/tests/e2e/federation/page-objects/fragments/home-flextab.ts index ad343b5b2a56d..0bb0691af5263 100644 --- a/apps/meteor/tests/e2e/federation/page-objects/fragments/home-flextab.ts +++ b/apps/meteor/tests/e2e/federation/page-objects/fragments/home-flextab.ts @@ -28,34 +28,6 @@ export class FederationHomeFlextab { this.dmUserMember = new FederationHomeFlextabDirectMessageMember(page); } - get btnTabMembers(): Locator { - return this.page.locator('[data-qa-id=ToolBoxAction-members]'); - } - - get btnRoomInfo(): Locator { - return this.page.locator('[data-qa-id=ToolBoxAction-info-circled]'); - } - - get btnUserInfo(): Locator { - return this.page.locator('[data-qa-id="ToolBoxAction-user"]'); - } - - get btnCall(): Locator { - return this.page.locator('[data-qa-id="ToolBoxAction-phone"]'); - } - - get btnVideoCall(): Locator { - return this.page.locator('[role=toolbar][aria-label="Primary Room actions"]').getByRole('button', { name: 'Video call' }); - } - - get btnDiscussion(): Locator { - return this.page.locator('[data-qa-id="ToolBoxAction-discussion"]'); - } - - get btnTeam(): Locator { - return this.page.locator('[data-qa-id="ToolBoxAction-hash"]'); - } - get btnAddExistingChannelToTeam(): Locator { return this.page.locator('role=button[name="Add Existing"]'); } @@ -66,43 +38,7 @@ export class FederationHomeFlextab { await this.page.locator('//label[contains(text(), "Channels")]/..//input').type(channelName); } - get btnThread(): Locator { - return this.page.locator('[data-qa-id="ToolBoxAction-thread"]'); - } - - get btnChannels(): Locator { - return this.page.locator('[data-qa-id="ToolBoxAction-hash"]'); - } - - get kebab(): Locator { - return this.page.locator('[data-qa-id=ToolBox-Menu]'); - } - - get btnNotificationPreferences(): Locator { - return this.page.locator('[data-qa-id=ToolBoxAction-bell]'); - } - get userInfoUsername(): Locator { return this.page.locator('[data-qa="UserInfoUserName"]'); } - - get btnFileList(): Locator { - return this.page.locator('[data-qa-id="ToolBoxAction-clip"]'); - } - - get btnMentionedMessagesList(): Locator { - return this.page.locator('[data-qa-id="ToolBoxAction-at"]'); - } - - get btnStarredMessagesList(): Locator { - return this.page.locator('[data-qa-id="ToolBoxAction-star"]'); - } - - get btnPinnedMessagesList(): Locator { - return this.page.locator('[data-qa-id="ToolBoxAction-pin"]'); - } - - get btnPruneMessages(): Locator { - return this.page.locator('[data-qa-id="ToolBoxAction-eraser"]'); - } } diff --git a/apps/meteor/tests/e2e/federation/tests/ce-version/ce.spec.ts b/apps/meteor/tests/e2e/federation/tests/ce-version/ce.spec.ts index a6c39a6e77a89..636ef8ab9c4a0 100644 --- a/apps/meteor/tests/e2e/federation/tests/ce-version/ce.spec.ts +++ b/apps/meteor/tests/e2e/federation/tests/ce-version/ce.spec.ts @@ -76,7 +76,7 @@ test.describe.parallel('Federation - CE version', () => { ]); await poFederationChannelServer2.sidenav.openChat(channelName); - await poFederationChannelServer2.tabs.btnTabMembers.click(); + await poFederationChannelServer2.roomToolbar.openMembersTab(); await poFederationChannelServer2.tabs.members.showAllUsers(); await expect(poFederationChannelServer2.tabs.members.getUserInList(constants.RC_SERVER_2.username)).toBeVisible(); diff --git a/apps/meteor/tests/e2e/federation/tests/channel/dm.spec.ts b/apps/meteor/tests/e2e/federation/tests/channel/dm.spec.ts index 4d01e00f76435..ed59148b76ff2 100644 --- a/apps/meteor/tests/e2e/federation/tests/channel/dm.spec.ts +++ b/apps/meteor/tests/e2e/federation/tests/channel/dm.spec.ts @@ -84,11 +84,11 @@ test.describe.parallel('Federation - Direct Messages', () => { await poFederationChannelServer1.createDirectMessagesUsingModal([fullUsernameFromServer2]); await poFederationChannelServer1.sidenav.openChat(usernameWithDomainFromServer2); - await poFederationChannelServer1.tabs.btnUserInfo.click(); + await poFederationChannelServer1.roomToolbar.openUserInfo(); await poFederationChannelServer1.content.sendMessage('hello world'); await poFederationChannelServer2.sidenav.openChat(usernameWithDomainFromServer1); - await poFederationChannelServer2.tabs.btnUserInfo.click(); + await poFederationChannelServer2.roomToolbar.openUserInfo(); await expect(poFederationChannelServer1.tabs.dmUserMember.getUserInfoUsername(usernameWithDomainFromServer2)).toBeVisible(); await expect(poFederationChannelServer2.tabs.dmUserMember.getUserInfoUsername(usernameWithDomainFromServer1)).toBeVisible(); @@ -124,11 +124,11 @@ test.describe.parallel('Federation - Direct Messages', () => { await poFederationChannelServer1.createDirectMessagesUsingModal([userFromServer2UsernameOnly]); await poFederationChannelServer1.sidenav.openChat(usernameWithDomainFromServer2); - await poFederationChannelServer1.tabs.btnUserInfo.click(); + await poFederationChannelServer1.roomToolbar.openUserInfo(); await poFederationChannelServer1.content.sendMessage('hello world'); await poFederationChannelServer2.sidenav.openChat(usernameWithDomainFromServer1); - await poFederationChannelServer2.tabs.btnUserInfo.click(); + await poFederationChannelServer2.roomToolbar.openUserInfo(); await expect(poFederationChannelServer1.tabs.dmUserMember.getUserInfoUsername(usernameWithDomainFromServer2)).toBeVisible(); await expect(poFederationChannelServer2.tabs.dmUserMember.getUserInfoUsername(usernameWithDomainFromServer1)).toBeVisible(); @@ -178,11 +178,11 @@ test.describe.parallel('Federation - Direct Messages', () => { await poFederationChannelServer1.sidenav.openDMMultipleChat(usernameWithDomainFromServer2); await poFederationChannelServer1.content.sendMessage('hello world'); - await poFederationChannelServer1.tabs.btnTabMembers.click(); + await poFederationChannelServer1.roomToolbar.openMembersTab(); await poFederationChannelServer1.tabs.members.showAllUsers(); await poFederationChannelServer2.sidenav.openDMMultipleChat(userCreatedWithDomainFromServer1); - await poFederationChannelServer2.tabs.btnTabMembers.click(); + await poFederationChannelServer2.roomToolbar.openMembersTab(); await poFederationChannelServer2.tabs.members.showAllUsers(); await expect(poFederationChannelServer1.tabs.members.getUserInList(usernameWithDomainFromServer2)).toBeVisible(); @@ -217,7 +217,7 @@ test.describe.parallel('Federation - Direct Messages', () => { await page2.goto(`${constants.RC_SERVER_1.url}/home`); await poFederationChannel1ForUser2.sidenav.openDMMultipleChat(usernameWithDomainFromServer2); - await poFederationChannel1ForUser2.tabs.btnTabMembers.click(); + await poFederationChannel1ForUser2.roomToolbar.openMembersTab(); await poFederationChannel1ForUser2.tabs.members.showAllUsers(); await expect(poFederationChannel1ForUser2.tabs.members.getUserInList(usernameWithDomainFromServer2)).toBeVisible(); @@ -265,11 +265,11 @@ test.describe.parallel('Federation - Direct Messages', () => { await poFederationChannelServer1.sidenav.openDMMultipleChat(usernameWithDomainFromServer2); await poFederationChannelServer1.content.sendMessage('hello world'); - await poFederationChannelServer1.tabs.btnTabMembers.click(); + await poFederationChannelServer1.roomToolbar.openMembersTab(); await poFederationChannelServer1.tabs.members.showAllUsers(); await poFederationChannelServer2.sidenav.openDMMultipleChat(usernameOriginalFromServer1OnlyWithDomain); - await poFederationChannelServer2.tabs.btnTabMembers.click(); + await poFederationChannelServer2.roomToolbar.openMembersTab(); await poFederationChannelServer2.tabs.members.showAllUsers(); await expect(poFederationChannelServer1.tabs.members.getUserInList(usernameWithDomainFromServer2)).toBeVisible(); @@ -302,7 +302,7 @@ test.describe.parallel('Federation - Direct Messages', () => { await page2.goto(`${constants.RC_SERVER_1.url}/home`); await poFederationChannel1ForUser2.sidenav.openDMMultipleChat(usernameWithDomainFromServer2); - await poFederationChannel1ForUser2.tabs.btnTabMembers.click(); + await poFederationChannel1ForUser2.roomToolbar.openMembersTab(); await poFederationChannel1ForUser2.tabs.members.showAllUsers(); await expect(poFederationChannel1ForUser2.tabs.members.getUserInList(usernameWithDomainFromServer2)).toBeVisible(); @@ -351,11 +351,11 @@ test.describe.parallel('Federation - Direct Messages', () => { await poFederationChannelServer1.content.dispatchSlashCommand(`/federation dm ${fullUsernameFromServer2}`); await poFederationChannelServer1.sidenav.openChat(usernameWithDomainFromServer2); - await poFederationChannelServer1.tabs.btnUserInfo.click(); + await poFederationChannelServer1.roomToolbar.openUserInfo(); await poFederationChannelServer1.content.sendMessage('hello world'); await poFederationChannelServer2.sidenav.openChat(usernameWithDomainFromServer1); - await poFederationChannelServer2.tabs.btnUserInfo.click(); + await poFederationChannelServer2.roomToolbar.openUserInfo(); await expect(poFederationChannelServer1.tabs.dmUserMember.getUserInfoUsername(usernameWithDomainFromServer2)).toBeVisible(); await expect(poFederationChannelServer2.tabs.dmUserMember.getUserInfoUsername(usernameWithDomainFromServer1)).toBeVisible(); @@ -407,11 +407,11 @@ test.describe.parallel('Federation - Direct Messages', () => { await poFederationChannelServer1.content.dispatchSlashCommand(`/federation dm @${usernameWithDomainFromServer2}`); await poFederationChannelServer1.sidenav.openChat(usernameWithDomainFromServer2); - await poFederationChannelServer1.tabs.btnUserInfo.click(); + await poFederationChannelServer1.roomToolbar.openUserInfo(); await poFederationChannelServer1.content.sendMessage('hello world'); await poFederationChannelServer2.sidenav.openChat(adminUsernameWithDomainFromServer1); - await poFederationChannelServer2.tabs.btnUserInfo.click(); + await poFederationChannelServer2.roomToolbar.openUserInfo(); await expect(poFederationChannelServer1.tabs.dmUserMember.getUserInfoUsername(usernameWithDomainFromServer2)).toBeVisible(); await expect(poFederationChannelServer2.tabs.dmUserMember.getUserInfoUsername(adminUsernameWithDomainFromServer1)).toBeVisible(); @@ -455,7 +455,7 @@ test.describe.parallel('Federation - Direct Messages', () => { await poFederationChannelServer2.content.dispatchSlashCommand(`/federation dm ${fullUsernameFromServer1}`); await poFederationChannelServer2.sidenav.openChat(usernameWithDomainFromServer1); - await poFederationChannelServer2.tabs.btnUserInfo.click(); + await poFederationChannelServer2.roomToolbar.openUserInfo(); await poFederationChannelServer2.content.sendMessage('hello world'); await poFederationChannelServer1.sidenav.logout(); @@ -470,7 +470,7 @@ test.describe.parallel('Federation - Direct Messages', () => { }); await poFederationChannelServer1.sidenav.openChat(usernameWithDomainFromServer2); - await poFederationChannelServer1.tabs.btnUserInfo.click(); + await poFederationChannelServer1.roomToolbar.openUserInfo(); await expect(poFederationChannelServer2.tabs.dmUserMember.getUserInfoUsername(usernameWithDomainFromServer1)).toBeVisible(); await expect(poFederationChannelServer1.tabs.dmUserMember.getUserInfoUsername(usernameWithDomainFromServer2)).toBeVisible(); @@ -521,11 +521,11 @@ test.describe.parallel('Federation - Direct Messages', () => { await poFederationChannelServer2.content.dispatchSlashCommand(`/federation dm @${adminUsernameWithDomainFromServer1}`); await page.waitForTimeout(2000); await poFederationChannelServer2.sidenav.openChat(adminUsernameWithDomainFromServer1); - await poFederationChannelServer2.tabs.btnUserInfo.click(); + await poFederationChannelServer2.roomToolbar.openUserInfo(); await poFederationChannelServer2.content.sendMessage('hello world'); await poFederationChannelServer1.sidenav.openChat(usernameWithDomainFromServer2); - await poFederationChannelServer1.tabs.btnUserInfo.click(); + await poFederationChannelServer1.roomToolbar.openUserInfo(); await expect(poFederationChannelServer2.tabs.dmUserMember.getUserInfoUsername(adminUsernameWithDomainFromServer1)).toBeVisible(); await expect(poFederationChannelServer1.tabs.dmUserMember.getUserInfoUsername(usernameWithDomainFromServer2)).toBeVisible(); @@ -578,11 +578,11 @@ test.describe.parallel('Federation - Direct Messages', () => { await poFederationChannelServer1.sidenav.openDMMultipleChat(userFromServer1UsernameOnly); await poFederationChannelServer1.content.sendMessage('hello world'); - await poFederationChannelServer1.tabs.btnTabMembers.click(); + await poFederationChannelServer1.roomToolbar.openMembersTab(); await poFederationChannelServer1.tabs.members.showAllUsers(); await poFederationChannelServer2.sidenav.openDMMultipleChat(usernameOriginalFromServer1OnlyWithDomain); - await poFederationChannelServer2.tabs.btnTabMembers.click(); + await poFederationChannelServer2.roomToolbar.openMembersTab(); await poFederationChannelServer2.tabs.members.showAllUsers(); await expect(poFederationChannelServer1.tabs.members.getUserInList(usernameWithDomainFromServer2)).toBeVisible(); @@ -616,7 +616,7 @@ test.describe.parallel('Federation - Direct Messages', () => { ); await poFederationChannel1ForUser2.sidenav.openDMMultipleChat(usernameWithDomainFromServer2); - await poFederationChannel1ForUser2.tabs.btnTabMembers.click(); + await poFederationChannel1ForUser2.roomToolbar.openMembersTab(); await poFederationChannel1ForUser2.tabs.members.showAllUsers(); await expect(poFederationChannel1ForUser2.tabs.members.getUserInList(usernameWithDomainFromServer2)).toBeVisible(); @@ -668,11 +668,11 @@ test.describe.parallel('Federation - Direct Messages', () => { await poFederationChannelServer1.sidenav.openDMMultipleChat(usernameWithDomainFromServer2); await poFederationChannelServer1.content.sendMessage('hello world'); - await poFederationChannelServer1.tabs.btnTabMembers.click(); + await poFederationChannelServer1.roomToolbar.openMembersTab(); await poFederationChannelServer1.tabs.members.showAllUsers(); await poFederationChannelServer2.sidenav.openDMMultipleChat(usernameOriginalFromServer1OnlyWithDomain); - await poFederationChannelServer2.tabs.btnTabMembers.click(); + await poFederationChannelServer2.roomToolbar.openMembersTab(); await poFederationChannelServer2.tabs.members.showAllUsers(); await expect(poFederationChannelServer1.tabs.members.getUserInList(usernameWithDomainFromServer2)).toBeVisible(); @@ -706,7 +706,7 @@ test.describe.parallel('Federation - Direct Messages', () => { ); await poFederationChannel1ForUser2.sidenav.openDMMultipleChat(usernameWithDomainFromServer2); - await poFederationChannel1ForUser2.tabs.btnTabMembers.click(); + await poFederationChannel1ForUser2.roomToolbar.openMembersTab(); await poFederationChannel1ForUser2.tabs.members.showAllUsers(); await expect(poFederationChannel1ForUser2.tabs.members.getUserInList(usernameWithDomainFromServer2)).toBeVisible(); @@ -769,12 +769,12 @@ test.describe.parallel('Federation - Direct Messages', () => { await poFederationChannelServer1.sidenav.openChat(usernameWithDomainFromServer2); await poFederationChannelServer1.content.sendMessage('hello world'); - await expect(poFederationChannelServer1.tabs.btnCall).toBeDisabled(); - await expect(poFederationChannelServer1.tabs.btnVideoCall).toBeDisabled(); + await expect(poFederationChannelServer1.roomToolbar.btnVoiceCall).toBeDisabled(); + await expect(poFederationChannelServer1.roomToolbar.btnVideoCall).toBeDisabled(); await poFederationChannelServer2.sidenav.openChat(usernameWithDomainFromServer1); - await expect(poFederationChannelServer2.tabs.btnCall).toBeDisabled(); - await expect(poFederationChannelServer1.tabs.btnVideoCall).toBeDisabled(); + await expect(poFederationChannelServer2.roomToolbar.btnVoiceCall).toBeDisabled(); + await expect(poFederationChannelServer1.roomToolbar.btnVideoCall).toBeDisabled(); await pageForServer2.close(); }); @@ -799,10 +799,10 @@ test.describe.parallel('Federation - Direct Messages', () => { await poFederationChannelServer1.sidenav.openChat(usernameWithDomainFromServer2); await poFederationChannelServer1.content.sendMessage('hello world'); - await expect(poFederationChannelServer1.tabs.btnDiscussion).toBeDisabled(); + await expect(poFederationChannelServer1.roomToolbar.btnDiscussion).toBeDisabled(); await poFederationChannelServer2.sidenav.openChat(usernameWithDomainFromServer1); - await expect(poFederationChannelServer2.tabs.btnDiscussion).toBeDisabled(); + await expect(poFederationChannelServer2.roomToolbar.btnDiscussion).toBeDisabled(); await pageForServer2.close(); }); @@ -832,10 +832,10 @@ test.describe.parallel('Federation - Direct Messages', () => { await poFederationChannelServer1.sidenav.openChat(usernameWithDomainFromServer2); await poFederationChannelServer1.content.sendMessage('hello world'); - await expect(poFederationChannelServer1.tabs.btnRoomInfo).not.toBeVisible(); + await expect(poFederationChannelServer1.roomToolbar.btnRoomInfo).not.toBeVisible(); await poFederationChannelServer2.sidenav.openChat(usernameWithDomainFromServer1); - await expect(poFederationChannelServer2.tabs.btnRoomInfo).not.toBeVisible(); + await expect(poFederationChannelServer2.roomToolbar.btnRoomInfo).not.toBeVisible(); await pageForServer2.close(); }); @@ -863,10 +863,10 @@ test.describe.parallel('Federation - Direct Messages', () => { await poFederationChannelServer1.sidenav.openChat(usernameWithDomainFromServer2); await poFederationChannelServer1.content.sendMessage('hello world'); - await expect(poFederationChannelServer1.tabs.btnTabMembers).not.toBeVisible(); + await expect(poFederationChannelServer1.roomToolbar.btnMembers).not.toBeVisible(); await poFederationChannelServer2.sidenav.openChat(usernameWithDomainFromServer1); - await expect(poFederationChannelServer2.tabs.btnTabMembers).not.toBeVisible(); + await expect(poFederationChannelServer2.roomToolbar.btnMembers).not.toBeVisible(); await pageForServer2.close(); }); diff --git a/apps/meteor/tests/e2e/federation/tests/channel/private.spec.ts b/apps/meteor/tests/e2e/federation/tests/channel/private.spec.ts index 29570e0372cb1..f7a4045391c8c 100644 --- a/apps/meteor/tests/e2e/federation/tests/channel/private.spec.ts +++ b/apps/meteor/tests/e2e/federation/tests/channel/private.spec.ts @@ -96,11 +96,11 @@ test.describe.parallel('Federation - Group Creation', () => { await expect(page).toHaveURL(`${constants.RC_SERVER_1.url}/group/${groupName}`); await poFederationChannelServer1.sidenav.openChat(groupName); - await poFederationChannelServer1.tabs.btnTabMembers.click(); + await poFederationChannelServer1.roomToolbar.openMembersTab(); await poFederationChannelServer1.tabs.members.showAllUsers(); await poFederationChannelServer2.sidenav.openChat(groupName); - await poFederationChannelServer2.tabs.btnTabMembers.click(); + await poFederationChannelServer2.roomToolbar.openMembersTab(); await poFederationChannelServer2.tabs.members.showAllUsers(); await expect(poFederationChannelServer1.tabs.members.getUserInList(usernameWithDomainFromServer2)).toBeVisible(); @@ -143,11 +143,11 @@ test.describe.parallel('Federation - Group Creation', () => { await expect(page).toHaveURL(`${constants.RC_SERVER_1.url}/group/${groupName}`); await poFederationChannelServer1.sidenav.openChat(groupName); - await poFederationChannelServer1.tabs.btnTabMembers.click(); + await poFederationChannelServer1.roomToolbar.openMembersTab(); await poFederationChannelServer1.tabs.members.showAllUsers(); await poFederationChannelServer2.sidenav.openChat(groupName); - await poFederationChannelServer2.tabs.btnTabMembers.click(); + await poFederationChannelServer2.roomToolbar.openMembersTab(); await poFederationChannelServer2.tabs.members.showAllUsers(); await expect(poFederationChannelServer1.tabs.members.getUserInList(usernameWithDomainFromServer2)).toBeVisible(); @@ -206,11 +206,11 @@ test.describe.parallel('Federation - Group Creation', () => { await expect(page).toHaveURL(`${constants.RC_SERVER_1.url}/group/${createdGroup}`); await poFederationChannelServer1.sidenav.openChat(createdGroup); - await poFederationChannelServer1.tabs.btnTabMembers.click(); + await poFederationChannelServer1.roomToolbar.openMembersTab(); await poFederationChannelServer1.tabs.members.showAllUsers(); await poFederationChannelServer2.sidenav.openChat(createdGroup); - await poFederationChannelServer2.tabs.btnTabMembers.click(); + await poFederationChannelServer2.roomToolbar.openMembersTab(); await poFederationChannelServer2.tabs.members.showAllUsers(); await expect(poFederationChannelServer1.tabs.members.getUserInList(usernameWithDomainFromServer2)).toBeVisible(); @@ -241,7 +241,7 @@ test.describe.parallel('Federation - Group Creation', () => { await poFederationChannel1ForUser2.sidenav.openChat(createdGroup); - await poFederationChannel1ForUser2.tabs.btnTabMembers.click(); + await poFederationChannel1ForUser2.roomToolbar.openMembersTab(); await poFederationChannel1ForUser2.tabs.members.showAllUsers(); const usernameWithDomainFromServer2 = formatUsernameAndDomainIntoMatrixFormat( createdUsernameFromServer2, @@ -298,11 +298,11 @@ test.describe.parallel('Federation - Group Creation', () => { await expect(page).toHaveURL(`${constants.RC_SERVER_1.url}/group/${createdGroup}`); await poFederationChannelServer1.sidenav.openChat(createdGroup); - await poFederationChannelServer1.tabs.btnTabMembers.click(); + await poFederationChannelServer1.roomToolbar.openMembersTab(); await poFederationChannelServer1.tabs.members.showAllUsers(); await poFederationChannelServer2.sidenav.openChat(createdGroup); - await poFederationChannelServer2.tabs.btnTabMembers.click(); + await poFederationChannelServer2.roomToolbar.openMembersTab(); await poFederationChannelServer2.tabs.members.showAllUsers(); await expect(poFederationChannelServer1.tabs.members.getUserInList(usernameWithDomainFromServer2)).toBeVisible(); @@ -333,7 +333,7 @@ test.describe.parallel('Federation - Group Creation', () => { await poFederationChannel1ForUser2.sidenav.openChat(createdGroup); - await poFederationChannel1ForUser2.tabs.btnTabMembers.click(); + await poFederationChannel1ForUser2.roomToolbar.openMembersTab(); await poFederationChannel1ForUser2.tabs.members.showAllUsers(); const usernameWithDomainFromServer2 = formatUsernameAndDomainIntoMatrixFormat( userFromServer2UsernameOnly, @@ -358,7 +358,7 @@ test.describe.parallel('Federation - Group Creation', () => { await expect(page).toHaveURL(`${constants.RC_SERVER_1.url}/group/${createdGroup}`); await poFederationChannelServer1.sidenav.openChat(createdGroup); - await poFederationChannelServer1.tabs.btnTabMembers.click(); + await poFederationChannelServer1.roomToolbar.openMembersTab(); await poFederationChannelServer1.tabs.members.showAllUsers(); await expect(poFederationChannelServer1.tabs.members.getUserInList(userFromServer1UsernameOnly)).toBeVisible(); @@ -383,7 +383,7 @@ test.describe.parallel('Federation - Group Creation', () => { await poFederationChannel1ForUser2.sidenav.openChat(createdGroup); - await poFederationChannel1ForUser2.tabs.btnTabMembers.click(); + await poFederationChannel1ForUser2.roomToolbar.openMembersTab(); await poFederationChannel1ForUser2.tabs.members.showAllUsers(); await expect(poFederationChannel1ForUser2.tabs.members.getUserInList(userFromServer1UsernameOnly)).toBeVisible(); @@ -432,13 +432,13 @@ test.describe.parallel('Federation - Group Creation', () => { await expect(page).toHaveURL(`${constants.RC_SERVER_1.url}/group/${groupName}`); await poFederationChannelServer1.sidenav.openChat(groupName); - await poFederationChannelServer1.tabs.btnTabMembers.click(); + await poFederationChannelServer1.roomToolbar.openMembersTab(); await poFederationChannelServer1.tabs.members.showAllUsers(); await poFederationChannelServer1.tabs.members.addMultipleUsers([fullUsernameFromServer2]); await expect(poFederationChannelServer1.toastSuccess).toBeVisible(); await poFederationChannelServer2.sidenav.openChat(groupName); - await poFederationChannelServer2.tabs.btnTabMembers.click(); + await poFederationChannelServer2.roomToolbar.openMembersTab(); await poFederationChannelServer2.tabs.members.showAllUsers(); await expect(poFederationChannelServer1.tabs.members.getUserInList(usernameWithDomainFromServer2)).toBeVisible(); @@ -484,13 +484,13 @@ test.describe.parallel('Federation - Group Creation', () => { await expect(page).toHaveURL(`${constants.RC_SERVER_1.url}/group/${groupName}`); await poFederationChannelServer1.sidenav.openChat(groupName); - await poFederationChannelServer1.tabs.btnTabMembers.click(); + await poFederationChannelServer1.roomToolbar.openMembersTab(); await poFederationChannelServer1.tabs.members.showAllUsers(); await poFederationChannelServer1.tabs.members.addMultipleUsers([userFromServer2UsernameOnly]); await expect(poFederationChannelServer1.toastSuccess).toBeVisible(); await poFederationChannelServer2.sidenav.openChat(groupName); - await poFederationChannelServer2.tabs.btnTabMembers.click(); + await poFederationChannelServer2.roomToolbar.openMembersTab(); await poFederationChannelServer2.tabs.members.showAllUsers(); await expect(poFederationChannelServer1.tabs.members.getUserInList(usernameWithDomainFromServer2)).toBeVisible(); @@ -546,13 +546,13 @@ test.describe.parallel('Federation - Group Creation', () => { await expect(page).toHaveURL(`${constants.RC_SERVER_1.url}/group/${createdGroup}`); await poFederationChannelServer1.sidenav.openChat(createdGroup); - await poFederationChannelServer1.tabs.btnTabMembers.click(); + await poFederationChannelServer1.roomToolbar.openMembersTab(); await poFederationChannelServer1.tabs.members.showAllUsers(); await poFederationChannelServer1.tabs.members.addMultipleUsers([fullUsernameFromServer2, userFromServer1UsernameOnly]); await expect(poFederationChannelServer1.toastSuccess).toBeVisible(); await poFederationChannelServer2.sidenav.openChat(createdGroup); - await poFederationChannelServer2.tabs.btnTabMembers.click(); + await poFederationChannelServer2.roomToolbar.openMembersTab(); await poFederationChannelServer2.tabs.members.showAllUsers(); await expect(poFederationChannelServer1.tabs.members.getUserInList(usernameWithDomainFromServer2)).toBeVisible(); @@ -583,7 +583,7 @@ test.describe.parallel('Federation - Group Creation', () => { await poFederationChannel1ForUser2.sidenav.openChat(createdGroup); - await poFederationChannel1ForUser2.tabs.btnTabMembers.click(); + await poFederationChannel1ForUser2.roomToolbar.openMembersTab(); await poFederationChannel1ForUser2.tabs.members.showAllUsers(); const usernameWithDomainFromServer2 = formatUsernameAndDomainIntoMatrixFormat( createdUsernameFromServer2, @@ -638,13 +638,13 @@ test.describe.parallel('Federation - Group Creation', () => { await expect(page).toHaveURL(`${constants.RC_SERVER_1.url}/group/${createdGroup}`); await poFederationChannelServer1.sidenav.openChat(createdGroup); - await poFederationChannelServer1.tabs.btnTabMembers.click(); + await poFederationChannelServer1.roomToolbar.openMembersTab(); await poFederationChannelServer1.tabs.members.showAllUsers(); await poFederationChannelServer1.tabs.members.addMultipleUsers([userFromServer1UsernameOnly, userFromServer2UsernameOnly]); await expect(poFederationChannelServer1.toastSuccess).toBeVisible(); await poFederationChannelServer2.sidenav.openChat(createdGroup); - await poFederationChannelServer2.tabs.btnTabMembers.click(); + await poFederationChannelServer2.roomToolbar.openMembersTab(); await poFederationChannelServer2.tabs.members.showAllUsers(); await expect(poFederationChannelServer1.tabs.members.getUserInList(usernameWithDomainFromServer2)).toBeVisible(); @@ -675,7 +675,7 @@ test.describe.parallel('Federation - Group Creation', () => { await poFederationChannel1ForUser2.sidenav.openChat(createdGroup); - await poFederationChannel1ForUser2.tabs.btnTabMembers.click(); + await poFederationChannel1ForUser2.roomToolbar.openMembersTab(); await poFederationChannel1ForUser2.tabs.members.showAllUsers(); const usernameWithDomainFromServer2 = formatUsernameAndDomainIntoMatrixFormat( userFromServer2UsernameOnly, @@ -700,7 +700,7 @@ test.describe.parallel('Federation - Group Creation', () => { await expect(page).toHaveURL(`${constants.RC_SERVER_1.url}/group/${createdGroup}`); await poFederationChannelServer1.sidenav.openChat(createdGroup); - await poFederationChannelServer1.tabs.btnTabMembers.click(); + await poFederationChannelServer1.roomToolbar.openMembersTab(); await poFederationChannelServer1.tabs.members.showAllUsers(); await poFederationChannelServer1.tabs.members.addMultipleUsers([userFromServer1UsernameOnly]); @@ -728,7 +728,7 @@ test.describe.parallel('Federation - Group Creation', () => { await poFederationChannel1ForUser2.sidenav.openChat(createdGroup); - await poFederationChannel1ForUser2.tabs.btnTabMembers.click(); + await poFederationChannel1ForUser2.roomToolbar.openMembersTab(); await poFederationChannel1ForUser2.tabs.members.showAllUsers(); await expect(poFederationChannel1ForUser2.tabs.members.getUserInList(userFromServer1UsernameOnly)).toBeVisible(); @@ -780,11 +780,11 @@ test.describe.parallel('Federation - Group Creation', () => { await expect(page).toHaveURL(`${constants.RC_SERVER_1.url}/group/${groupName}`); await poFederationChannelServer1.sidenav.openChat(groupName); - await poFederationChannelServer1.tabs.btnTabMembers.click(); + await poFederationChannelServer1.roomToolbar.openMembersTab(); await poFederationChannelServer1.tabs.members.showAllUsers(); await poFederationChannelServer2.sidenav.openChat(groupName); - await poFederationChannelServer2.tabs.btnTabMembers.click(); + await poFederationChannelServer2.roomToolbar.openMembersTab(); await poFederationChannelServer2.tabs.members.showAllUsers(); await expect(poFederationChannelServer1.tabs.members.getUserInList(usernameWithDomainFromServer2)).toBeVisible(); @@ -846,7 +846,7 @@ test.describe.parallel('Federation - Group Creation', () => { await expect(page).toHaveURL(`${constants.RC_SERVER_1.url}/group/${groupName}`); await poFederationChannelServer2.sidenav.openChat(groupName); - await poFederationChannelServer2.tabs.btnTabMembers.click(); + await poFederationChannelServer2.roomToolbar.openMembersTab(); await poFederationChannelServer2.tabs.members.showAllUsers(); await expect(poFederationChannelServer1.tabs.members.getUserInList(usernameWithDomainFromServer2)).toBeVisible(); @@ -881,10 +881,10 @@ test.describe.parallel('Federation - Group Creation', () => { await expect(page).toHaveURL(`${constants.RC_SERVER_1.url}/group/${createdGroupName}`); - await expect(poFederationChannelServer1.tabs.btnCall).toBeDisabled(); - await expect(poFederationChannelServer2.tabs.btnCall).toBeDisabled(); - await expect(poFederationChannelServer1.tabs.btnVideoCall).toBeDisabled(); - await expect(poFederationChannelServer2.tabs.btnVideoCall).toBeDisabled(); + await expect(poFederationChannelServer1.roomToolbar.btnVoiceCall).toBeDisabled(); + await expect(poFederationChannelServer2.roomToolbar.btnVoiceCall).toBeDisabled(); + await expect(poFederationChannelServer1.roomToolbar.btnVideoCall).toBeDisabled(); + await expect(poFederationChannelServer2.roomToolbar.btnVideoCall).toBeDisabled(); await pageForServer2.close(); }); @@ -911,8 +911,8 @@ test.describe.parallel('Federation - Group Creation', () => { await expect(page).toHaveURL(`${constants.RC_SERVER_1.url}/group/${createdGroupName}`); - await expect(poFederationChannelServer1.tabs.btnDiscussion).toBeDisabled(); - await expect(poFederationChannelServer2.tabs.btnDiscussion).toBeDisabled(); + await expect(poFederationChannelServer1.roomToolbar.btnDiscussion).toBeDisabled(); + await expect(poFederationChannelServer2.roomToolbar.btnDiscussion).toBeDisabled(); await pageForServer2.close(); }); @@ -941,12 +941,12 @@ test.describe.parallel('Federation - Group Creation', () => { await expect(page).toHaveURL(`${constants.RC_SERVER_1.url}/group/${createdGroupName}`); - await expect(poFederationChannelServer1.tabs.btnTabMembers).toBeVisible(); - await poFederationChannelServer1.tabs.btnTabMembers.click(); + await expect(poFederationChannelServer1.roomToolbar.btnMembers).toBeVisible(); + await poFederationChannelServer1.roomToolbar.openMembersTab(); await expect(poFederationChannelServer1.tabs.members.addUsersButton).toBeVisible(); - await expect(poFederationChannelServer2.tabs.btnTabMembers).toBeVisible(); - await poFederationChannelServer2.tabs.btnTabMembers.click(); + await expect(poFederationChannelServer2.roomToolbar.btnMembers).toBeVisible(); + await poFederationChannelServer2.roomToolbar.openMembersTab(); await expect(poFederationChannelServer2.tabs.members.addUsersButton).not.toBeVisible(); await pageForServer2.close(); @@ -982,14 +982,14 @@ test.describe.parallel('Federation - Group Creation', () => { await expect(page).toHaveURL(`${constants.RC_SERVER_1.url}/group/${createdGroupName}`); - await expect(poFederationChannelServer1.tabs.btnTabMembers).toBeVisible(); - await poFederationChannelServer1.tabs.btnTabMembers.click(); + await expect(poFederationChannelServer1.roomToolbar.btnMembers).toBeVisible(); + await poFederationChannelServer1.roomToolbar.openMembersTab(); await (await poFederationChannelServer1.tabs.members.getUserInList(usernameWithDomainFromServer2)).click(); await poFederationChannelServer1.tabs.members.btnMenuUserInfo.click(); await expect(poFederationChannelServer1.tabs.members.btnRemoveUserFromRoom).toBeVisible(); - await expect(poFederationChannelServer2.tabs.btnTabMembers).toBeVisible(); - await poFederationChannelServer2.tabs.btnTabMembers.click(); + await expect(poFederationChannelServer2.roomToolbar.btnMembers).toBeVisible(); + await poFederationChannelServer2.roomToolbar.openMembersTab(); await (await poFederationChannelServer2.tabs.members.getUserInList(usernameWithDomainFromServer1)).click(); await expect(poFederationChannelServer2.tabs.members.btnMenuUserInfo).not.toBeVisible(); await expect(poFederationChannelServer2.tabs.members.btnRemoveUserFromRoom).not.toBeVisible(); @@ -1019,18 +1019,18 @@ test.describe.parallel('Federation - Group Creation', () => { await expect(page).toHaveURL(`${constants.RC_SERVER_1.url}/group/${createdGroupName}`); - await expect(poFederationChannelServer1.tabs.btnRoomInfo).toBeVisible(); - await poFederationChannelServer1.tabs.btnRoomInfo.click(); + await expect(poFederationChannelServer1.roomToolbar.btnRoomInfo).toBeVisible(); + await poFederationChannelServer1.roomToolbar.openRoomInfo(); await expect(poFederationChannelServer1.tabs.room.btnEdit).toBeVisible(); - await expect(poFederationChannelServer2.tabs.btnRoomInfo).toBeVisible(); - await poFederationChannelServer2.tabs.btnRoomInfo.click(); + await expect(poFederationChannelServer2.roomToolbar.btnRoomInfo).toBeVisible(); + await poFederationChannelServer2.roomToolbar.openRoomInfo(); await expect(poFederationChannelServer2.tabs.room.btnEdit).not.toBeVisible(); await poFederationChannelServer1.tabs.room.btnEdit.click(); await poFederationChannelServer1.tabs.room.inputName.fill(`NAME-EDITED-${createdGroupName}`); await poFederationChannelServer1.tabs.room.btnSave.click(); - await poFederationChannelServer1.tabs.btnRoomInfo.click(); + await poFederationChannelServer1.roomToolbar.openRoomInfo(); // waiting for the toast dismiss await page.waitForTimeout(3000); @@ -1043,7 +1043,7 @@ test.describe.parallel('Federation - Group Creation', () => { ); await expect(nameChangedSystemMessageServer2).toBeVisible(); - await poFederationChannelServer1.tabs.btnRoomInfo.click(); + await poFederationChannelServer1.roomToolbar.openRoomInfo(); await poFederationChannelServer1.tabs.room.btnEdit.click(); await poFederationChannelServer1.tabs.room.inputTopic.fill('hello-topic-edited'); await poFederationChannelServer1.tabs.room.btnSave.click(); @@ -1096,11 +1096,11 @@ test.describe.parallel('Federation - Group Creation', () => { await expect(page).toHaveURL(`${constants.RC_SERVER_1.url}/group/${groupName}`); await poFederationChannelServer1.sidenav.openChat(groupName); - await poFederationChannelServer1.tabs.btnTabMembers.click(); + await poFederationChannelServer1.roomToolbar.openMembersTab(); await poFederationChannelServer1.tabs.members.showAllUsers(); await poFederationChannelServer2.sidenav.openChat(groupName); - await poFederationChannelServer2.tabs.btnTabMembers.click(); + await poFederationChannelServer2.roomToolbar.openMembersTab(); await poFederationChannelServer2.tabs.members.showAllUsers(); await expect(poFederationChannelServer1.tabs.members.getUserInList(usernameWithDomainFromServer2)).toBeVisible(); @@ -1154,7 +1154,7 @@ test.describe.parallel('Federation - Group Creation', () => { await poFederationChannelServer1.sidenav.openChat(groupName); await poFederationChannelServer2.sidenav.openChat(groupName); - await poFederationChannelServer2.tabs.btnRoomInfo.click(); + await poFederationChannelServer2.roomToolbar.openRoomInfo(); await expect(poFederationChannelServer2.tabs.room.btnLeave).toBeVisible(); await poFederationChannelServer2.tabs.room.btnLeave.click(); @@ -1209,7 +1209,7 @@ test.describe.parallel('Federation - Group Creation', () => { await poFederationChannelServer1.createPrivateGroupAndInviteUsersUsingCreationModal(channelName, [fullUsernameFromServer2]); await poFederationChannelServer1.createTeam(teamName); - await poFederationChannelServer1.tabs.btnTeam.click(); + await poFederationChannelServer1.roomToolbar.openTeamChannels(); await poFederationChannelServer1.tabs.btnAddExistingChannelToTeam.click(); await poFederationChannelServer1.tabs.searchForChannelOnAddChannelToTeam(channelName); await expect(page.locator('div.rcx-option__content', { hasText: 'Empty' })).toBeVisible(); @@ -1240,7 +1240,7 @@ test.describe.parallel('Federation - Group Creation', () => { await poFederationChannelServer1.createPrivateGroupAndInviteUsersUsingCreationModal(channelName, [fullUsernameFromServer2]); await poFederationChannelServer2.createTeam(teamName); - await poFederationChannelServer2.tabs.btnTeam.click(); + await poFederationChannelServer2.roomToolbar.openTeamChannels(); await poFederationChannelServer2.tabs.btnAddExistingChannelToTeam.click(); await poFederationChannelServer2.tabs.searchForChannelOnAddChannelToTeam(channelName); await expect(pageForServer2.locator('div.rcx-option__content', { hasText: 'Empty' })).toBeVisible(); diff --git a/apps/meteor/tests/e2e/federation/tests/channel/public.spec.ts b/apps/meteor/tests/e2e/federation/tests/channel/public.spec.ts index 237a154c0d72c..3ac64e22209b5 100644 --- a/apps/meteor/tests/e2e/federation/tests/channel/public.spec.ts +++ b/apps/meteor/tests/e2e/federation/tests/channel/public.spec.ts @@ -96,11 +96,11 @@ test.describe.parallel('Federation - Channel Creation', () => { await expect(page).toHaveURL(`${constants.RC_SERVER_1.url}/channel/${channelName}`); await poFederationChannelServer1.sidenav.openChat(channelName); - await poFederationChannelServer1.tabs.btnTabMembers.click(); + await poFederationChannelServer1.roomToolbar.openMembersTab(); await poFederationChannelServer1.tabs.members.showAllUsers(); await poFederationChannelServer2.sidenav.openChat(channelName); - await poFederationChannelServer2.tabs.btnTabMembers.click(); + await poFederationChannelServer2.roomToolbar.openMembersTab(); await poFederationChannelServer2.tabs.members.showAllUsers(); await expect(poFederationChannelServer1.tabs.members.getUserInList(usernameWithDomainFromServer2)).toBeVisible(); @@ -143,11 +143,11 @@ test.describe.parallel('Federation - Channel Creation', () => { await expect(page).toHaveURL(`${constants.RC_SERVER_1.url}/channel/${channelName}`); await poFederationChannelServer1.sidenav.openChat(channelName); - await poFederationChannelServer1.tabs.btnTabMembers.click(); + await poFederationChannelServer1.roomToolbar.openMembersTab(); await poFederationChannelServer1.tabs.members.showAllUsers(); await poFederationChannelServer2.sidenav.openChat(channelName); - await poFederationChannelServer2.tabs.btnTabMembers.click(); + await poFederationChannelServer2.roomToolbar.openMembersTab(); await poFederationChannelServer2.tabs.members.showAllUsers(); await expect(poFederationChannelServer1.tabs.members.getUserInList(usernameWithDomainFromServer2)).toBeVisible(); @@ -206,11 +206,11 @@ test.describe.parallel('Federation - Channel Creation', () => { await expect(page).toHaveURL(`${constants.RC_SERVER_1.url}/channel/${createdChannel}`); await poFederationChannelServer1.sidenav.openChat(createdChannel); - await poFederationChannelServer1.tabs.btnTabMembers.click(); + await poFederationChannelServer1.roomToolbar.openMembersTab(); await poFederationChannelServer1.tabs.members.showAllUsers(); await poFederationChannelServer2.sidenav.openChat(createdChannel); - await poFederationChannelServer2.tabs.btnTabMembers.click(); + await poFederationChannelServer2.roomToolbar.openMembersTab(); await poFederationChannelServer2.tabs.members.showAllUsers(); await expect(poFederationChannelServer1.tabs.members.getUserInList(usernameWithDomainFromServer2)).toBeVisible(); @@ -241,7 +241,7 @@ test.describe.parallel('Federation - Channel Creation', () => { await poFederationChannel1ForUser2.sidenav.openChat(createdChannel); - await poFederationChannel1ForUser2.tabs.btnTabMembers.click(); + await poFederationChannel1ForUser2.roomToolbar.openMembersTab(); await poFederationChannel1ForUser2.tabs.members.showAllUsers(); const usernameWithDomainFromServer2 = formatUsernameAndDomainIntoMatrixFormat( createdUsernameFromServer2, @@ -299,11 +299,11 @@ test.describe.parallel('Federation - Channel Creation', () => { await expect(page).toHaveURL(`${constants.RC_SERVER_1.url}/channel/${createdChannel}`); await poFederationChannelServer1.sidenav.openChat(createdChannel); - await poFederationChannelServer1.tabs.btnTabMembers.click(); + await poFederationChannelServer1.roomToolbar.openMembersTab(); await poFederationChannelServer1.tabs.members.showAllUsers(); await poFederationChannelServer2.sidenav.openChat(createdChannel); - await poFederationChannelServer2.tabs.btnTabMembers.click(); + await poFederationChannelServer2.roomToolbar.openMembersTab(); await poFederationChannelServer2.tabs.members.showAllUsers(); await expect(poFederationChannelServer1.tabs.members.getUserInList(usernameWithDomainFromServer2)).toBeVisible(); @@ -334,7 +334,7 @@ test.describe.parallel('Federation - Channel Creation', () => { await poFederationChannel1ForUser2.sidenav.openChat(createdChannel); - await poFederationChannel1ForUser2.tabs.btnTabMembers.click(); + await poFederationChannel1ForUser2.roomToolbar.openMembersTab(); await poFederationChannel1ForUser2.tabs.members.showAllUsers(); const usernameWithDomainFromServer2 = formatUsernameAndDomainIntoMatrixFormat( userFromServer2UsernameOnly, @@ -361,7 +361,7 @@ test.describe.parallel('Federation - Channel Creation', () => { await expect(page).toHaveURL(`${constants.RC_SERVER_1.url}/channel/${createdChannel}`); await poFederationChannelServer1.sidenav.openChat(createdChannel); - await poFederationChannelServer1.tabs.btnTabMembers.click(); + await poFederationChannelServer1.roomToolbar.openMembersTab(); await poFederationChannelServer1.tabs.members.showAllUsers(); await expect(poFederationChannelServer1.tabs.members.getUserInList(userFromServer1UsernameOnly)).toBeVisible(); @@ -386,7 +386,7 @@ test.describe.parallel('Federation - Channel Creation', () => { await poFederationChannel1ForUser2.sidenav.openChat(createdChannel); - await poFederationChannel1ForUser2.tabs.btnTabMembers.click(); + await poFederationChannel1ForUser2.roomToolbar.openMembersTab(); await poFederationChannel1ForUser2.tabs.members.showAllUsers(); await expect(poFederationChannel1ForUser2.tabs.members.getUserInList(userFromServer1UsernameOnly)).toBeVisible(); @@ -435,13 +435,13 @@ test.describe.parallel('Federation - Channel Creation', () => { await expect(page).toHaveURL(`${constants.RC_SERVER_1.url}/channel/${channelName}`); await poFederationChannelServer1.sidenav.openChat(channelName); - await poFederationChannelServer1.tabs.btnTabMembers.click(); + await poFederationChannelServer1.roomToolbar.openMembersTab(); await poFederationChannelServer1.tabs.members.showAllUsers(); await poFederationChannelServer1.tabs.members.addMultipleUsers([fullUsernameFromServer2]); await expect(poFederationChannelServer1.toastSuccess).toBeVisible(); await poFederationChannelServer2.sidenav.openChat(channelName); - await poFederationChannelServer2.tabs.btnTabMembers.click(); + await poFederationChannelServer2.roomToolbar.openMembersTab(); await poFederationChannelServer2.tabs.members.showAllUsers(); await expect(poFederationChannelServer1.tabs.members.getUserInList(usernameWithDomainFromServer2)).toBeVisible(); @@ -487,13 +487,13 @@ test.describe.parallel('Federation - Channel Creation', () => { await expect(page).toHaveURL(`${constants.RC_SERVER_1.url}/channel/${channelName}`); await poFederationChannelServer1.sidenav.openChat(channelName); - await poFederationChannelServer1.tabs.btnTabMembers.click(); + await poFederationChannelServer1.roomToolbar.openMembersTab(); await poFederationChannelServer1.tabs.members.showAllUsers(); await poFederationChannelServer1.tabs.members.addMultipleUsers([userFromServer2UsernameOnly]); await expect(poFederationChannelServer1.toastSuccess).toBeVisible(); await poFederationChannelServer2.sidenav.openChat(channelName); - await poFederationChannelServer2.tabs.btnTabMembers.click(); + await poFederationChannelServer2.roomToolbar.openMembersTab(); await poFederationChannelServer2.tabs.members.showAllUsers(); await expect(poFederationChannelServer1.tabs.members.getUserInList(usernameWithDomainFromServer2)).toBeVisible(); @@ -549,13 +549,13 @@ test.describe.parallel('Federation - Channel Creation', () => { await expect(page).toHaveURL(`${constants.RC_SERVER_1.url}/channel/${createdChannel}`); await poFederationChannelServer1.sidenav.openChat(createdChannel); - await poFederationChannelServer1.tabs.btnTabMembers.click(); + await poFederationChannelServer1.roomToolbar.openMembersTab(); await poFederationChannelServer1.tabs.members.showAllUsers(); await poFederationChannelServer1.tabs.members.addMultipleUsers([fullUsernameFromServer2, userFromServer1UsernameOnly]); await expect(poFederationChannelServer1.toastSuccess).toBeVisible(); await poFederationChannelServer2.sidenav.openChat(createdChannel); - await poFederationChannelServer2.tabs.btnTabMembers.click(); + await poFederationChannelServer2.roomToolbar.openMembersTab(); await poFederationChannelServer2.tabs.members.showAllUsers(); await expect(poFederationChannelServer1.tabs.members.getUserInList(usernameWithDomainFromServer2)).toBeVisible(); @@ -586,7 +586,7 @@ test.describe.parallel('Federation - Channel Creation', () => { await poFederationChannel1ForUser2.sidenav.openChat(createdChannel); - await poFederationChannel1ForUser2.tabs.btnTabMembers.click(); + await poFederationChannel1ForUser2.roomToolbar.openMembersTab(); await poFederationChannel1ForUser2.tabs.members.showAllUsers(); const usernameWithDomainFromServer2 = formatUsernameAndDomainIntoMatrixFormat( createdUsernameFromServer2, @@ -641,13 +641,13 @@ test.describe.parallel('Federation - Channel Creation', () => { await expect(page).toHaveURL(`${constants.RC_SERVER_1.url}/channel/${createdChannel}`); await poFederationChannelServer1.sidenav.openChat(createdChannel); - await poFederationChannelServer1.tabs.btnTabMembers.click(); + await poFederationChannelServer1.roomToolbar.openMembersTab(); await poFederationChannelServer1.tabs.members.showAllUsers(); await poFederationChannelServer1.tabs.members.addMultipleUsers([userFromServer1UsernameOnly, userFromServer2UsernameOnly]); await expect(poFederationChannelServer1.toastSuccess).toBeVisible(); await poFederationChannelServer2.sidenav.openChat(createdChannel); - await poFederationChannelServer2.tabs.btnTabMembers.click(); + await poFederationChannelServer2.roomToolbar.openMembersTab(); await poFederationChannelServer2.tabs.members.showAllUsers(); await expect(poFederationChannelServer1.tabs.members.getUserInList(usernameWithDomainFromServer2)).toBeVisible(); @@ -678,7 +678,7 @@ test.describe.parallel('Federation - Channel Creation', () => { await poFederationChannel1ForUser2.sidenav.openChat(createdChannel); - await poFederationChannel1ForUser2.tabs.btnTabMembers.click(); + await poFederationChannel1ForUser2.roomToolbar.openMembersTab(); await poFederationChannel1ForUser2.tabs.members.showAllUsers(); const usernameWithDomainFromServer2 = formatUsernameAndDomainIntoMatrixFormat( userFromServer2UsernameOnly, @@ -703,7 +703,7 @@ test.describe.parallel('Federation - Channel Creation', () => { await expect(page).toHaveURL(`${constants.RC_SERVER_1.url}/channel/${createdChannel}`); await poFederationChannelServer1.sidenav.openChat(createdChannel); - await poFederationChannelServer1.tabs.btnTabMembers.click(); + await poFederationChannelServer1.roomToolbar.openMembersTab(); await poFederationChannelServer1.tabs.members.showAllUsers(); await poFederationChannelServer1.tabs.members.addMultipleUsers([userFromServer1UsernameOnly]); @@ -731,7 +731,7 @@ test.describe.parallel('Federation - Channel Creation', () => { await poFederationChannel1ForUser2.sidenav.openChat(createdChannel); - await poFederationChannel1ForUser2.tabs.btnTabMembers.click(); + await poFederationChannel1ForUser2.roomToolbar.openMembersTab(); await poFederationChannel1ForUser2.tabs.members.showAllUsers(); await expect(poFederationChannel1ForUser2.tabs.members.getUserInList(userFromServer1UsernameOnly)).toBeVisible(); @@ -783,14 +783,14 @@ test.describe.parallel('Federation - Channel Creation', () => { await expect(page).toHaveURL(`${constants.RC_SERVER_1.url}/channel/${channelName}`); await poFederationChannelServer1.sidenav.openChat(channelName); - await poFederationChannelServer1.tabs.btnTabMembers.click(); + await poFederationChannelServer1.roomToolbar.openMembersTab(); await poFederationChannelServer1.tabs.members.showAllUsers(); await expect(await poFederationChannelServer2.sidenav.countRoomsByNameOnSearch(channelName)).toBe(2); await pageForServer2.reload(); await poFederationChannelServer2.sidenav.openChatWhenHaveMultipleWithTheSameName(channelName, 1); - await poFederationChannelServer2.tabs.btnTabMembers.click(); + await poFederationChannelServer2.roomToolbar.openMembersTab(); await poFederationChannelServer2.tabs.members.showAllUsers(); await expect(poFederationChannelServer1.tabs.members.getUserInList(usernameWithDomainFromServer2)).toBeVisible(); @@ -852,7 +852,7 @@ test.describe.parallel('Federation - Channel Creation', () => { await expect(page).toHaveURL(`${constants.RC_SERVER_1.url}/channel/${channelName}`); await poFederationChannelServer2.sidenav.openChat(channelName); - await poFederationChannelServer2.tabs.btnTabMembers.click(); + await poFederationChannelServer2.roomToolbar.openMembersTab(); await poFederationChannelServer2.tabs.members.showAllUsers(); await expect(poFederationChannelServer1.tabs.members.getUserInList(usernameWithDomainFromServer2)).toBeVisible(); @@ -887,10 +887,10 @@ test.describe.parallel('Federation - Channel Creation', () => { await expect(page).toHaveURL(`${constants.RC_SERVER_1.url}/channel/${createdChannelName}`); - await expect(poFederationChannelServer1.tabs.btnCall).toBeDisabled(); - await expect(poFederationChannelServer2.tabs.btnCall).toBeDisabled(); - await expect(poFederationChannelServer1.tabs.btnVideoCall).toBeDisabled(); - await expect(poFederationChannelServer2.tabs.btnVideoCall).toBeDisabled(); + await expect(poFederationChannelServer1.roomToolbar.btnVoiceCall).toBeDisabled(); + await expect(poFederationChannelServer2.roomToolbar.btnVoiceCall).toBeDisabled(); + await expect(poFederationChannelServer1.roomToolbar.btnVideoCall).toBeDisabled(); + await expect(poFederationChannelServer2.roomToolbar.btnVideoCall).toBeDisabled(); await pageForServer2.close(); }); @@ -917,8 +917,8 @@ test.describe.parallel('Federation - Channel Creation', () => { await expect(page).toHaveURL(`${constants.RC_SERVER_1.url}/channel/${createdChannelName}`); - await expect(poFederationChannelServer1.tabs.btnDiscussion).toBeDisabled(); - await expect(poFederationChannelServer2.tabs.btnDiscussion).toBeDisabled(); + await expect(poFederationChannelServer1.roomToolbar.btnDiscussion).toBeDisabled(); + await expect(poFederationChannelServer2.roomToolbar.btnDiscussion).toBeDisabled(); await pageForServer2.close(); }); @@ -947,12 +947,12 @@ test.describe.parallel('Federation - Channel Creation', () => { await expect(page).toHaveURL(`${constants.RC_SERVER_1.url}/channel/${createdChannelName}`); - await expect(poFederationChannelServer1.tabs.btnTabMembers).toBeVisible(); - await poFederationChannelServer1.tabs.btnTabMembers.click(); + await expect(poFederationChannelServer1.roomToolbar.btnMembers).toBeVisible(); + await poFederationChannelServer1.roomToolbar.openMembersTab(); await expect(poFederationChannelServer1.tabs.members.addUsersButton).toBeVisible(); - await expect(poFederationChannelServer2.tabs.btnTabMembers).toBeVisible(); - await poFederationChannelServer2.tabs.btnTabMembers.click(); + await expect(poFederationChannelServer2.roomToolbar.btnMembers).toBeVisible(); + await poFederationChannelServer2.roomToolbar.openMembersTab(); await expect(poFederationChannelServer2.tabs.members.addUsersButton).not.toBeVisible(); await pageForServer2.close(); @@ -988,14 +988,14 @@ test.describe.parallel('Federation - Channel Creation', () => { await expect(page).toHaveURL(`${constants.RC_SERVER_1.url}/channel/${createdChannelName}`); - await expect(poFederationChannelServer1.tabs.btnTabMembers).toBeVisible(); - await poFederationChannelServer1.tabs.btnTabMembers.click(); + await expect(poFederationChannelServer1.roomToolbar.btnMembers).toBeVisible(); + await poFederationChannelServer1.roomToolbar.openMembersTab(); await (await poFederationChannelServer1.tabs.members.getUserInList(usernameWithDomainFromServer2)).hover(); await (await poFederationChannelServer1.tabs.members.getKebabMenuForUser(usernameWithDomainFromServer2)).click(); await expect(await poFederationChannelServer1.tabs.members.getOptionFromKebabMenuForUser('removeUser')).toBeVisible(); - await expect(poFederationChannelServer2.tabs.btnTabMembers).toBeVisible(); - await poFederationChannelServer2.tabs.btnTabMembers.click(); + await expect(poFederationChannelServer2.roomToolbar.btnMembers).toBeVisible(); + await poFederationChannelServer2.roomToolbar.openMembersTab(); await (await poFederationChannelServer2.tabs.members.getUserInList(usernameWithDomainFromServer1)).hover(); await (await poFederationChannelServer2.tabs.members.getKebabMenuForUser(usernameWithDomainFromServer1)).click(); await expect(await poFederationChannelServer2.tabs.members.getOptionFromKebabMenuForUser('removeUser')).not.toBeVisible(); @@ -1033,14 +1033,14 @@ test.describe.parallel('Federation - Channel Creation', () => { await expect(page).toHaveURL(`${constants.RC_SERVER_1.url}/channel/${createdChannelName}`); - await expect(poFederationChannelServer1.tabs.btnTabMembers).toBeVisible(); - await poFederationChannelServer1.tabs.btnTabMembers.click(); + await expect(poFederationChannelServer1.roomToolbar.btnMembers).toBeVisible(); + await poFederationChannelServer1.roomToolbar.openMembersTab(); await (await poFederationChannelServer1.tabs.members.getUserInList(usernameWithDomainFromServer2)).click(); await poFederationChannelServer1.tabs.members.btnMenuUserInfo.click(); await expect(poFederationChannelServer1.tabs.members.btnRemoveUserFromRoom).toBeVisible(); - await expect(poFederationChannelServer2.tabs.btnTabMembers).toBeVisible(); - await poFederationChannelServer2.tabs.btnTabMembers.click(); + await expect(poFederationChannelServer2.roomToolbar.btnMembers).toBeVisible(); + await poFederationChannelServer2.roomToolbar.openMembersTab(); await (await poFederationChannelServer2.tabs.members.getUserInList(usernameWithDomainFromServer1)).click(); await expect(poFederationChannelServer2.tabs.members.btnMenuUserInfo).not.toBeVisible(); await expect(poFederationChannelServer2.tabs.members.btnRemoveUserFromRoom).not.toBeVisible(); @@ -1070,19 +1070,19 @@ test.describe.parallel('Federation - Channel Creation', () => { await expect(page).toHaveURL(`${constants.RC_SERVER_1.url}/channel/${createdChannelName}`); - await expect(poFederationChannelServer1.tabs.btnRoomInfo).toBeVisible(); - await poFederationChannelServer1.tabs.btnRoomInfo.click(); + await expect(poFederationChannelServer1.roomToolbar.btnRoomInfo).toBeVisible(); + await poFederationChannelServer1.roomToolbar.openRoomInfo(); await expect(poFederationChannelServer1.tabs.room.btnEdit).toBeVisible(); - await expect(poFederationChannelServer2.tabs.btnRoomInfo).toBeVisible(); - await poFederationChannelServer2.tabs.btnRoomInfo.click(); + await expect(poFederationChannelServer2.roomToolbar.btnRoomInfo).toBeVisible(); + await poFederationChannelServer2.roomToolbar.openRoomInfo(); await expect(poFederationChannelServer2.tabs.room.btnEdit).not.toBeVisible(); await poFederationChannelServer1.tabs.room.btnEdit.click(); await poFederationChannelServer1.tabs.room.inputName.fill(`NAME-EDITED-${createdChannelName}`); await poFederationChannelServer1.tabs.room.btnSave.click(); - await poFederationChannelServer1.tabs.btnRoomInfo.click(); + await poFederationChannelServer1.roomToolbar.openRoomInfo(); // waiting for the toast dismiss await page.waitForTimeout(3000); @@ -1095,7 +1095,7 @@ test.describe.parallel('Federation - Channel Creation', () => { ); await expect(nameChangedSystemMessageServer2).toBeVisible(); - await poFederationChannelServer1.tabs.btnRoomInfo.click(); + await poFederationChannelServer1.roomToolbar.openRoomInfo(); await poFederationChannelServer1.tabs.room.btnEdit.click(); await poFederationChannelServer1.tabs.room.inputTopic.fill('hello-topic-edited'); await poFederationChannelServer1.tabs.room.btnSave.click(); @@ -1147,11 +1147,11 @@ test.describe.parallel('Federation - Channel Creation', () => { await expect(page).toHaveURL(`${constants.RC_SERVER_1.url}/channel/${channelName}`); await poFederationChannelServer1.sidenav.openChat(channelName); - await poFederationChannelServer1.tabs.btnTabMembers.click(); + await poFederationChannelServer1.roomToolbar.openMembersTab(); await poFederationChannelServer1.tabs.members.showAllUsers(); await poFederationChannelServer2.sidenav.openChat(channelName); - await poFederationChannelServer2.tabs.btnTabMembers.click(); + await poFederationChannelServer2.roomToolbar.openMembersTab(); await poFederationChannelServer2.tabs.members.showAllUsers(); await expect(poFederationChannelServer1.tabs.members.getUserInList(usernameWithDomainFromServer2)).toBeVisible(); @@ -1179,7 +1179,7 @@ test.describe.parallel('Federation - Channel Creation', () => { `removed ${userFromServer2UsernameOnly}`, ); await expect(removedSystemMessageServer2).toBeVisible(); - await poFederationChannelServer2.tabs.btnTabMembers.click(); + await poFederationChannelServer2.roomToolbar.openMembersTab(); await expect(poFederationChannelServer2.tabs.members.getUserInList(userFromServer2UsernameOnly)).not.toBeVisible(); await expect(poFederationChannelServer2.tabs.members.getUserInList(usernameWithDomainFromServer1)).toBeVisible(); await expect(await (await poFederationChannelServer2.content.getLastSystemMessageName()).textContent()).toBe( @@ -1224,7 +1224,7 @@ test.describe.parallel('Federation - Channel Creation', () => { await poFederationChannelServer2.sidenav.openChat(channelName); await poFederationChannelServer2.content.sendMessage('hello world'); - await poFederationChannelServer2.tabs.btnRoomInfo.click(); + await poFederationChannelServer2.roomToolbar.openRoomInfo(); await expect(poFederationChannelServer2.tabs.room.btnLeave).toBeVisible(); await poFederationChannelServer2.tabs.room.btnLeave.click(); @@ -1243,7 +1243,7 @@ test.describe.parallel('Federation - Channel Creation', () => { await expect(await (await poFederationChannelServer2.content.getLastSystemMessageName()).textContent()).toBe( userFromServer2UsernameOnly, ); - await poFederationChannelServer2.tabs.btnTabMembers.click(); + await poFederationChannelServer2.roomToolbar.openMembersTab(); await poFederationChannelServer2.tabs.members.showAllUsers(); await expect(poFederationChannelServer2.tabs.members.getUserInList(userFromServer2UsernameOnly)).not.toBeVisible(); @@ -1291,7 +1291,7 @@ test.describe.parallel('Federation - Channel Creation', () => { await poFederationChannelServer1.createPublicChannelAndInviteUsersUsingCreationModal(channelName, [fullUsernameFromServer2]); await poFederationChannelServer1.createTeam(teamName); - await poFederationChannelServer1.tabs.btnTeam.click(); + await poFederationChannelServer1.roomToolbar.openTeamChannels(); await poFederationChannelServer1.tabs.btnAddExistingChannelToTeam.click(); await poFederationChannelServer1.tabs.searchForChannelOnAddChannelToTeam(channelName); await expect(page.locator('div.rcx-option__content', { hasText: 'Empty' })).toBeVisible(); @@ -1322,7 +1322,7 @@ test.describe.parallel('Federation - Channel Creation', () => { await poFederationChannelServer1.createPublicChannelAndInviteUsersUsingCreationModal(channelName, [fullUsernameFromServer2]); await poFederationChannelServer2.createTeam(teamName); - await poFederationChannelServer2.tabs.btnTeam.click(); + await poFederationChannelServer2.roomToolbar.openTeamChannels(); await poFederationChannelServer2.tabs.btnAddExistingChannelToTeam.click(); await poFederationChannelServer2.tabs.searchForChannelOnAddChannelToTeam(channelName); await expect(pageForServer2.locator('div.rcx-option__content', { hasText: 'Empty' })).toBeVisible(); diff --git a/apps/meteor/tests/e2e/federation/tests/messaging/dm.spec.ts b/apps/meteor/tests/e2e/federation/tests/messaging/dm.spec.ts index 4eb8f8e0a38b8..e59550537013c 100644 --- a/apps/meteor/tests/e2e/federation/tests/messaging/dm.spec.ts +++ b/apps/meteor/tests/e2e/federation/tests/messaging/dm.spec.ts @@ -1297,7 +1297,7 @@ test.describe.parallel('Federation - DM Messaging', () => { await poFederationChannelServer1.sidenav.openChat(usernameWithDomainFromServer2); - await expect(poFederationChannelServer1.tabs.btnFileList).toBeVisible(); + await expect(poFederationChannelServer1.roomToolbar.btnFiles).toBeVisible(); }); test('expect to see the file list sent in the DM on Server B', async () => { @@ -1305,61 +1305,61 @@ test.describe.parallel('Federation - DM Messaging', () => { await poFederationChannelServer2.sidenav.openChat(adminUsernameWithDomainFromServer1); - await expect(poFederationChannelServer2.tabs.btnFileList).toBeVisible(); + await expect(poFederationChannelServer2.roomToolbar.btnFiles).toBeVisible(); }); test('expect to see all the starred messages sent in the DM on Server A', async ({ page }) => { await page.goto(`${constants.RC_SERVER_1.url}/home`); await poFederationChannelServer1.sidenav.openChat(usernameWithDomainFromServer2); - await poFederationChannelServer1.tabs.kebab.click(); + await poFederationChannelServer1.roomToolbar.openMoreOptions(); - await expect(poFederationChannelServer1.tabs.btnStarredMessagesList).toBeVisible(); + await expect(poFederationChannelServer1.roomToolbar.menuItemStarredMessages).toBeVisible(); }); test('expect to see all the starred messages sent in the DM on Server B', async () => { await pageForServer2.goto(`${constants.RC_SERVER_2.url}/home`); await poFederationChannelServer2.sidenav.openChat(adminUsernameWithDomainFromServer1); - await poFederationChannelServer2.tabs.kebab.click(); + await poFederationChannelServer2.roomToolbar.openMoreOptions(); - await expect(poFederationChannelServer2.tabs.btnStarredMessagesList).toBeVisible(); + await expect(poFederationChannelServer2.roomToolbar.menuItemStarredMessages).toBeVisible(); }); test('expect to not to see the pinned messages sent in the DM on Server A', async ({ page }) => { await page.goto(`${constants.RC_SERVER_1.url}/home`); await poFederationChannelServer1.sidenav.openChat(usernameWithDomainFromServer2); - await poFederationChannelServer1.tabs.kebab.click(); + await poFederationChannelServer1.roomToolbar.openMoreOptions(); - await expect(poFederationChannelServer1.tabs.btnPinnedMessagesList).not.toBeVisible(); + await expect(poFederationChannelServer1.roomToolbar.menuItemPinnedMessages).not.toBeVisible(); }); test('expect to not to see the pinned messages sent in the DM on Server B', async () => { await pageForServer2.goto(`${constants.RC_SERVER_2.url}/home`); await poFederationChannelServer2.sidenav.openChat(adminUsernameWithDomainFromServer1); - await poFederationChannelServer2.tabs.kebab.click(); + await poFederationChannelServer2.roomToolbar.openMoreOptions(); - await expect(poFederationChannelServer2.tabs.btnPinnedMessagesList).not.toBeVisible(); + await expect(poFederationChannelServer2.roomToolbar.menuItemPinnedMessages).not.toBeVisible(); }); test('expect to not be able to prune messages sent in the DM on Server A', async ({ page }) => { await page.goto(`${constants.RC_SERVER_1.url}/home`); await poFederationChannelServer1.sidenav.openChat(usernameWithDomainFromServer2); - await poFederationChannelServer1.tabs.kebab.click(); + await poFederationChannelServer1.roomToolbar.openMoreOptions(); - await expect(poFederationChannelServer1.tabs.btnPruneMessages).not.toBeVisible(); + await expect(poFederationChannelServer1.roomToolbar.menuItemPruneMessages).not.toBeVisible(); }); test('expect to not be able to prune messages sent in the DM on Server B', async () => { await pageForServer2.goto(`${constants.RC_SERVER_2.url}/home`); await poFederationChannelServer2.sidenav.openChat(adminUsernameWithDomainFromServer1); - await poFederationChannelServer2.tabs.kebab.click(); + await poFederationChannelServer2.roomToolbar.openMoreOptions(); - await expect(poFederationChannelServer2.tabs.btnPruneMessages).not.toBeVisible(); + await expect(poFederationChannelServer2.roomToolbar.menuItemPruneMessages).not.toBeVisible(); }); }); }); diff --git a/apps/meteor/tests/e2e/federation/tests/messaging/private.spec.ts b/apps/meteor/tests/e2e/federation/tests/messaging/private.spec.ts index 8992d673dc639..ea83730e8d98d 100644 --- a/apps/meteor/tests/e2e/federation/tests/messaging/private.spec.ts +++ b/apps/meteor/tests/e2e/federation/tests/messaging/private.spec.ts @@ -1018,7 +1018,7 @@ test.describe.parallel('Federation - Group Messaging', () => { await poFederationChannelServer1.sidenav.openChat(createdGroupName); - await expect(poFederationChannelServer1.tabs.btnFileList).toBeVisible(); + await expect(poFederationChannelServer1.roomToolbar.btnFiles).toBeVisible(); }); test('expect to see the file list sent in the group on Server B', async () => { @@ -1026,79 +1026,79 @@ test.describe.parallel('Federation - Group Messaging', () => { await poFederationChannelServer2.sidenav.openChat(createdGroupName); - await expect(poFederationChannelServer2.tabs.btnFileList).toBeVisible(); + await expect(poFederationChannelServer2.roomToolbar.btnFiles).toBeVisible(); }); test('expect to see all the mentions sent in the group on Server A', async ({ page }) => { await page.goto(`${constants.RC_SERVER_1.url}/home`); await poFederationChannelServer1.sidenav.openChat(createdGroupName); - await poFederationChannelServer1.tabs.kebab.click(); + await poFederationChannelServer1.roomToolbar.openMoreOptions(); - await expect(poFederationChannelServer1.tabs.btnMentionedMessagesList).toBeVisible(); + await expect(poFederationChannelServer1.roomToolbar.menuItemMentions).toBeVisible(); }); test('expect to see all the mentions sent in the group on Server B', async () => { await pageForServer2.goto(`${constants.RC_SERVER_2.url}/home`); await poFederationChannelServer2.sidenav.openChat(createdGroupName); - await poFederationChannelServer2.tabs.kebab.click(); + await poFederationChannelServer2.roomToolbar.openMoreOptions(); - await expect(poFederationChannelServer2.tabs.btnMentionedMessagesList).toBeVisible(); + await expect(poFederationChannelServer2.roomToolbar.menuItemMentions).toBeVisible(); }); test('expect to see all the starred messages sent in the group on Server A', async ({ page }) => { await page.goto(`${constants.RC_SERVER_1.url}/home`); await poFederationChannelServer1.sidenav.openChat(createdGroupName); - await poFederationChannelServer1.tabs.kebab.click(); + await poFederationChannelServer1.roomToolbar.openMoreOptions(); - await expect(poFederationChannelServer1.tabs.btnStarredMessagesList).toBeVisible(); + await expect(poFederationChannelServer1.roomToolbar.menuItemStarredMessages).toBeVisible(); }); test('expect to see all the starred messages sent in the group on Server B', async () => { await pageForServer2.goto(`${constants.RC_SERVER_2.url}/home`); await poFederationChannelServer2.sidenav.openChat(createdGroupName); - await poFederationChannelServer2.tabs.kebab.click(); + await poFederationChannelServer2.roomToolbar.openMoreOptions(); - await expect(poFederationChannelServer2.tabs.btnStarredMessagesList).toBeVisible(); + await expect(poFederationChannelServer2.roomToolbar.menuItemStarredMessages).toBeVisible(); }); test('expect to not to see the pinned messages sent in the group on Server A', async ({ page }) => { await page.goto(`${constants.RC_SERVER_1.url}/home`); await poFederationChannelServer1.sidenav.openChat(createdGroupName); - await poFederationChannelServer1.tabs.kebab.click(); + await poFederationChannelServer1.roomToolbar.openMoreOptions(); - await expect(poFederationChannelServer1.tabs.btnPinnedMessagesList).not.toBeVisible(); + await expect(poFederationChannelServer1.roomToolbar.menuItemPinnedMessages).not.toBeVisible(); }); test('expect to not to see the pinned messages sent in the group on Server B', async () => { await pageForServer2.goto(`${constants.RC_SERVER_2.url}/home`); await poFederationChannelServer2.sidenav.openChat(createdGroupName); - await poFederationChannelServer2.tabs.kebab.click(); + await poFederationChannelServer2.roomToolbar.openMoreOptions(); - await expect(poFederationChannelServer2.tabs.btnPinnedMessagesList).not.toBeVisible(); + await expect(poFederationChannelServer2.roomToolbar.menuItemPinnedMessages).not.toBeVisible(); }); test('expect to not be able to prune messages sent in the group on Server A', async ({ page }) => { await page.goto(`${constants.RC_SERVER_1.url}/home`); await poFederationChannelServer1.sidenav.openChat(createdGroupName); - await poFederationChannelServer1.tabs.kebab.click(); + await poFederationChannelServer1.roomToolbar.openMoreOptions(); - await expect(poFederationChannelServer1.tabs.btnPruneMessages).not.toBeVisible(); + await expect(poFederationChannelServer1.roomToolbar.menuItemPruneMessages).not.toBeVisible(); }); test('expect to not be able to prune messages sent in the group on Server B', async () => { await pageForServer2.goto(`${constants.RC_SERVER_2.url}/home`); await poFederationChannelServer2.sidenav.openChat(createdGroupName); - await poFederationChannelServer2.tabs.kebab.click(); + await poFederationChannelServer2.roomToolbar.openMoreOptions(); - await expect(poFederationChannelServer2.tabs.btnPruneMessages).not.toBeVisible(); + await expect(poFederationChannelServer2.roomToolbar.menuItemPruneMessages).not.toBeVisible(); }); }); }); diff --git a/apps/meteor/tests/e2e/federation/tests/messaging/public.spec.ts b/apps/meteor/tests/e2e/federation/tests/messaging/public.spec.ts index f994909995475..838d7248b3130 100644 --- a/apps/meteor/tests/e2e/federation/tests/messaging/public.spec.ts +++ b/apps/meteor/tests/e2e/federation/tests/messaging/public.spec.ts @@ -1012,7 +1012,7 @@ test.describe.parallel('Federation - Channel Messaging', () => { await poFederationChannelServer1.sidenav.openChat(createdChannelName); - await expect(poFederationChannelServer1.tabs.btnFileList).toBeVisible(); + await expect(poFederationChannelServer1.roomToolbar.btnFiles).toBeVisible(); }); test('expect to see the file list sent in the channel on Server B', async () => { @@ -1020,79 +1020,79 @@ test.describe.parallel('Federation - Channel Messaging', () => { await poFederationChannelServer2.sidenav.openChat(createdChannelName); - await expect(poFederationChannelServer2.tabs.btnFileList).toBeVisible(); + await expect(poFederationChannelServer2.roomToolbar.btnFiles).toBeVisible(); }); test('expect to see all the mentions sent in the channel on Server A', async ({ page }) => { await page.goto(`${constants.RC_SERVER_1.url}/home`); await poFederationChannelServer1.sidenav.openChat(createdChannelName); - await poFederationChannelServer1.tabs.kebab.click(); + await poFederationChannelServer1.roomToolbar.openMoreOptions(); - await expect(poFederationChannelServer1.tabs.btnMentionedMessagesList).toBeVisible(); + await expect(poFederationChannelServer1.roomToolbar.menuItemMentions).toBeVisible(); }); test('expect to see all the mentions sent in the channel on Server B', async () => { await pageForServer2.goto(`${constants.RC_SERVER_2.url}/home`); await poFederationChannelServer2.sidenav.openChat(createdChannelName); - await poFederationChannelServer2.tabs.kebab.click(); + await poFederationChannelServer2.roomToolbar.openMoreOptions(); - await expect(poFederationChannelServer2.tabs.btnMentionedMessagesList).toBeVisible(); + await expect(poFederationChannelServer2.roomToolbar.menuItemMentions).toBeVisible(); }); test('expect to see all the starred messages sent in the channel on Server A', async ({ page }) => { await page.goto(`${constants.RC_SERVER_1.url}/home`); await poFederationChannelServer1.sidenav.openChat(createdChannelName); - await poFederationChannelServer1.tabs.kebab.click(); + await poFederationChannelServer1.roomToolbar.openMoreOptions(); - await expect(poFederationChannelServer1.tabs.btnStarredMessagesList).toBeVisible(); + await expect(poFederationChannelServer1.roomToolbar.menuItemStarredMessages).toBeVisible(); }); test('expect to see all the starred messages sent in the channel on Server B', async () => { await pageForServer2.goto(`${constants.RC_SERVER_2.url}/home`); await poFederationChannelServer2.sidenav.openChat(createdChannelName); - await poFederationChannelServer2.tabs.kebab.click(); + await poFederationChannelServer2.roomToolbar.openMoreOptions(); - await expect(poFederationChannelServer2.tabs.btnStarredMessagesList).toBeVisible(); + await expect(poFederationChannelServer2.roomToolbar.menuItemStarredMessages).toBeVisible(); }); test('expect to not to see the pinned messages sent in the channel on Server A', async ({ page }) => { await page.goto(`${constants.RC_SERVER_1.url}/home`); await poFederationChannelServer1.sidenav.openChat(createdChannelName); - await poFederationChannelServer1.tabs.kebab.click(); + await poFederationChannelServer1.roomToolbar.openMoreOptions(); - await expect(poFederationChannelServer1.tabs.btnPinnedMessagesList).not.toBeVisible(); + await expect(poFederationChannelServer1.roomToolbar.menuItemPinnedMessages).not.toBeVisible(); }); test('expect to not to see the pinned messages sent in the channel on Server B', async () => { await pageForServer2.goto(`${constants.RC_SERVER_2.url}/home`); await poFederationChannelServer2.sidenav.openChat(createdChannelName); - await poFederationChannelServer2.tabs.kebab.click(); + await poFederationChannelServer2.roomToolbar.openMoreOptions(); - await expect(poFederationChannelServer2.tabs.btnPinnedMessagesList).not.toBeVisible(); + await expect(poFederationChannelServer2.roomToolbar.menuItemPinnedMessages).not.toBeVisible(); }); test('expect to not be able to prune messages sent in the channel on Server A', async ({ page }) => { await page.goto(`${constants.RC_SERVER_1.url}/home`); await poFederationChannelServer1.sidenav.openChat(createdChannelName); - await poFederationChannelServer1.tabs.kebab.click(); + await poFederationChannelServer1.roomToolbar.openMoreOptions(); - await expect(poFederationChannelServer1.tabs.btnPruneMessages).not.toBeVisible(); + await expect(poFederationChannelServer1.roomToolbar.menuItemPruneMessages).not.toBeVisible(); }); test('expect to not be able to prune messages sent in the channel on Server B', async () => { await pageForServer2.goto(`${constants.RC_SERVER_2.url}/home`); await poFederationChannelServer2.sidenav.openChat(createdChannelName); - await poFederationChannelServer2.tabs.kebab.click(); + await poFederationChannelServer2.roomToolbar.openMoreOptions(); - await expect(poFederationChannelServer2.tabs.btnPruneMessages).not.toBeVisible(); + await expect(poFederationChannelServer2.roomToolbar.menuItemPruneMessages).not.toBeVisible(); }); }); }); diff --git a/apps/meteor/tests/e2e/federation/tests/messaging/threads.spec.ts b/apps/meteor/tests/e2e/federation/tests/messaging/threads.spec.ts index f03e33ebdc3dc..2d2df339ac2b7 100644 --- a/apps/meteor/tests/e2e/federation/tests/messaging/threads.spec.ts +++ b/apps/meteor/tests/e2e/federation/tests/messaging/threads.spec.ts @@ -353,7 +353,7 @@ test.describe.only('Federation - Threads', () => { await poFederationChannelServer1.sidenav.openChat(createdGroupName); - await expect(poFederationChannelServer1.tabs.btnThread).toBeVisible(); + await expect(poFederationChannelServer1.roomToolbar.btnThreads).toBeVisible(); }); test('expect to see the thread list sent in the group on Server B', async () => { @@ -361,7 +361,7 @@ test.describe.only('Federation - Threads', () => { await poFederationChannelServer2.sidenav.openChat(createdGroupName); - await expect(poFederationChannelServer2.tabs.btnThread).toBeVisible(); + await expect(poFederationChannelServer2.roomToolbar.btnThreads).toBeVisible(); }); }); }); diff --git a/apps/meteor/tests/e2e/federation/tests/user-account/user.spec.ts b/apps/meteor/tests/e2e/federation/tests/user-account/user.spec.ts index b0b341a192e48..0dee124f2803c 100644 --- a/apps/meteor/tests/e2e/federation/tests/user-account/user.spec.ts +++ b/apps/meteor/tests/e2e/federation/tests/user-account/user.spec.ts @@ -97,7 +97,7 @@ test.describe.parallel('Federation - User Account Pannel', () => { await poFederationChannelServer1.sidenav.openChat(createdChannelName); await poFederationChannelServer2.sidenav.openChat(createdChannelName); - await poFederationChannelServer2.tabs.btnTabMembers.click(); + await poFederationChannelServer2.roomToolbar.openMembersTab(); await poFederationChannelServer2.tabs.members.showAllUsers(); await expect(poFederationChannelServer2.tabs.members.getUserInList(adminUsernameWithDomainFromServer1)).toContainText(newName); @@ -121,7 +121,7 @@ test.describe.parallel('Federation - User Account Pannel', () => { await poFederationChannelServer1.sidenav.openChat(createdChannelName); await poFederationChannelServer2.sidenav.openChat(createdChannelName); - await poFederationChannelServer1.tabs.btnTabMembers.click(); + await poFederationChannelServer1.roomToolbar.openMembersTab(); await poFederationChannelServer1.tabs.members.showAllUsers(); await expect(poFederationChannelServer1.tabs.members.getUserInList(usernameWithDomainFromServer2)).toContainText(newName); diff --git a/apps/meteor/tests/e2e/omnichannel/omnichannel-auto-onhold-chat-closing.spec.ts b/apps/meteor/tests/e2e/omnichannel/omnichannel-auto-onhold-chat-closing.spec.ts index 255ac0d3ed091..7e734211dd92e 100644 --- a/apps/meteor/tests/e2e/omnichannel/omnichannel-auto-onhold-chat-closing.spec.ts +++ b/apps/meteor/tests/e2e/omnichannel/omnichannel-auto-onhold-chat-closing.spec.ts @@ -4,7 +4,7 @@ import { createFakeVisitor } from '../../mocks/data'; import { IS_EE } from '../config/constants'; import { createAuxContext } from '../fixtures/createAuxContext'; import { Users } from '../fixtures/userStates'; -import { OmnichannelLiveChat, HomeChannel } from '../page-objects'; +import { OmnichannelLiveChat, HomeOmnichannel } from '../page-objects'; import { test, expect } from '../utils/test'; test.describe('omnichannel-auto-onhold-chat-closing', () => { @@ -13,7 +13,7 @@ test.describe('omnichannel-auto-onhold-chat-closing', () => { let poLiveChat: OmnichannelLiveChat; let newVisitor: { email: string; name: string }; - let agent: { page: Page; poHomeChannel: HomeChannel }; + let agent: { page: Page; poHomeChannel: HomeOmnichannel }; test.beforeAll(async ({ api, browser }) => { await Promise.all([ @@ -24,7 +24,7 @@ test.describe('omnichannel-auto-onhold-chat-closing', () => { ]); const { page } = await createAuxContext(browser, Users.user1); - agent = { page, poHomeChannel: new HomeChannel(page) }; + agent = { page, poHomeChannel: new HomeOmnichannel(page) }; }); test.afterAll(async ({ api }) => { await agent.page.close(); @@ -56,7 +56,7 @@ test.describe('omnichannel-auto-onhold-chat-closing', () => { await agent.poHomeChannel.sidenav.openChat(newVisitor.name); await agent.poHomeChannel.content.sendMessage('this_is_a_test_message_from_agent'); - await agent.poHomeChannel.content.btnOnHold.click(); + await agent.poHomeChannel.quickActionsRoomToolbar.placeChatOnHold(); await agent.poHomeChannel.content.btnModalConfirm.click(); diff --git a/apps/meteor/tests/e2e/omnichannel/omnichannel-canned-responses-sidebar.spec.ts b/apps/meteor/tests/e2e/omnichannel/omnichannel-canned-responses-sidebar.spec.ts index c6a0bee612ad7..63ec1af2a873a 100644 --- a/apps/meteor/tests/e2e/omnichannel/omnichannel-canned-responses-sidebar.spec.ts +++ b/apps/meteor/tests/e2e/omnichannel/omnichannel-canned-responses-sidebar.spec.ts @@ -34,7 +34,7 @@ test.describe.serial('OC - Canned Responses Sidebar', () => { }); test.afterAll('close livechat conversation', async () => { - await agent.poHomeChannel.content.closeChat(); + await agent.poHomeChannel.quickActionsRoomToolbar.closeChat(); }); test.afterAll(async ({ api }) => { @@ -60,7 +60,7 @@ test.describe.serial('OC - Canned Responses Sidebar', () => { }); await test.step('expect to be able to open canned responses sidebar and creation', async () => { - await agent.poHomeChannel.content.btnCannedResponses.click(); + await agent.poHomeChannel.roomToolbar.openCannedResponses(); }); await test.step('expect to create new canned response', async () => { @@ -79,7 +79,7 @@ test.describe.serial('OC - Canned Responses Sidebar', () => { }); await test.step('expect to be able to open canned responses sidebar and creation', async () => { - await agent.poHomeChannel.content.btnCannedResponses.click(); + await agent.poHomeChannel.roomToolbar.openCannedResponses(); }); await test.step('expect to edit canned response', async () => { diff --git a/apps/meteor/tests/e2e/omnichannel/omnichannel-chat-history.spec.ts b/apps/meteor/tests/e2e/omnichannel/omnichannel-chat-history.spec.ts index 3661e41939563..58c747cd77371 100644 --- a/apps/meteor/tests/e2e/omnichannel/omnichannel-chat-history.spec.ts +++ b/apps/meteor/tests/e2e/omnichannel/omnichannel-chat-history.spec.ts @@ -57,10 +57,7 @@ test.describe('Omnichannel chat history', () => { }); await test.step('Expect to be able to close an omnichannel to conversation', async () => { - await agent.poHomeOmnichannel.content.btnCloseChat.click(); - await agent.poHomeOmnichannel.content.inputModalClosingComment.type('any_comment'); - await agent.poHomeOmnichannel.content.btnModalConfirm.click(); - await expect(agent.poHomeOmnichannel.toastSuccess).toBeVisible(); + await agent.poHomeOmnichannel.quickActionsRoomToolbar.closeChat(); }); await test.step('Expect send a message as a visitor again to reopen chat', async () => { diff --git a/apps/meteor/tests/e2e/omnichannel/omnichannel-chat-transfers.spec.ts b/apps/meteor/tests/e2e/omnichannel/omnichannel-chat-transfers.spec.ts index 101308ef0b6af..0a6cbbec3e12a 100644 --- a/apps/meteor/tests/e2e/omnichannel/omnichannel-chat-transfers.spec.ts +++ b/apps/meteor/tests/e2e/omnichannel/omnichannel-chat-transfers.spec.ts @@ -138,7 +138,7 @@ test.describe('OC - Chat transfers [Monitor role]', () => { await test.step('expect to be able to join chats from same unit', async () => { await poOmnichannel.currentChats.findRowByName(roomA.fname).click(); await expect(page).toHaveURL(`/omnichannel/current/${roomA._id}`); - await poOmnichannel.content.btnForwardChat.click(); + await poOmnichannel.quickActionsRoomToolbar.forwardChat(); }); await test.step('expect agent and department fields to be visible and enabled', async () => { @@ -181,7 +181,7 @@ test.describe('OC - Chat transfers [Monitor role]', () => { await test.step('expect to be able to join chats from same unit', async () => { await poOmnichannel.currentChats.findRowByName(roomB.fname).click(); await expect(page).toHaveURL(`/omnichannel/current/${roomB._id}`); - await poOmnichannel.content.btnForwardChat.click(); + await poOmnichannel.quickActionsRoomToolbar.forwardChat(); }); await test.step('expect agent and department fields to be visible and enabled', async () => { @@ -226,7 +226,7 @@ test.describe('OC - Chat transfers [Monitor role]', () => { await test.step('expect to be able to join chats from same unit', async () => { await poOmnichannel.currentChats.findRowByName(roomC.fname).click(); await expect(page).toHaveURL(`/omnichannel/current/${roomC._id}`); - await poOmnichannel.content.btnForwardChat.click(); + await poOmnichannel.quickActionsRoomToolbar.forwardChat(); }); await test.step('expect agent and department fields to be visible and enabled', async () => { @@ -363,7 +363,7 @@ test.describe('OC - Chat transfers [Manager role]', () => { await test.step('expect to be able to join chats from same unit', async () => { await poOmnichannel.currentChats.findRowByName(roomA.fname).click(); await expect(page).toHaveURL(`/omnichannel/current/${roomA._id}`); - await poOmnichannel.content.btnForwardChat.click(); + await poOmnichannel.quickActionsRoomToolbar.forwardChat(); }); await test.step('expect agent and department fields to be visible and enabled', async () => { @@ -406,7 +406,7 @@ test.describe('OC - Chat transfers [Manager role]', () => { await test.step('expect to be able to join chats from same unit', async () => { await poOmnichannel.currentChats.findRowByName(roomB.fname).click(); await expect(page).toHaveURL(`/omnichannel/current/${roomB._id}`); - await poOmnichannel.content.btnForwardChat.click(); + await poOmnichannel.quickActionsRoomToolbar.forwardChat(); }); await test.step('expect agent and department fields to be visible and enabled', async () => { @@ -451,7 +451,7 @@ test.describe('OC - Chat transfers [Manager role]', () => { await test.step('expect to be able to join chats from same unit', async () => { await poOmnichannel.currentChats.findRowByName(roomC.fname).click(); await expect(page).toHaveURL(`/omnichannel/current/${roomC._id}`); - await poOmnichannel.content.btnForwardChat.click(); + await poOmnichannel.quickActionsRoomToolbar.forwardChat(); }); await test.step('expect agent and department fields to be visible and enabled', async () => { diff --git a/apps/meteor/tests/e2e/omnichannel/omnichannel-close-chat.spec.ts b/apps/meteor/tests/e2e/omnichannel/omnichannel-close-chat.spec.ts index b17842afd969d..f0f63022ede2a 100644 --- a/apps/meteor/tests/e2e/omnichannel/omnichannel-close-chat.spec.ts +++ b/apps/meteor/tests/e2e/omnichannel/omnichannel-close-chat.spec.ts @@ -4,7 +4,7 @@ import { createFakeVisitor } from '../../mocks/data'; import { createAuxContext } from '../fixtures/createAuxContext'; import { Users } from '../fixtures/userStates'; import { OmnichannelLiveChat, HomeOmnichannel } from '../page-objects'; -import { test, expect } from '../utils/test'; +import { test } from '../utils/test'; test.describe('Omnichannel close chat', () => { let poLiveChat: OmnichannelLiveChat; @@ -46,10 +46,7 @@ test.describe('Omnichannel close chat', () => { }); await test.step('Expect to be able to close an omnichannel to conversation', async () => { - await agent.poHomeOmnichannel.content.btnCloseChat.click(); - await agent.poHomeOmnichannel.content.inputModalClosingComment.type('any_comment'); - await agent.poHomeOmnichannel.content.btnModalConfirm.click(); - await expect(agent.poHomeOmnichannel.toastSuccess).toBeVisible(); + await agent.poHomeOmnichannel.quickActionsRoomToolbar.closeChat(); }); }); }); diff --git a/apps/meteor/tests/e2e/omnichannel/omnichannel-close-inquiry.spec.ts b/apps/meteor/tests/e2e/omnichannel/omnichannel-close-inquiry.spec.ts index b37a34ba861e7..52fc2a7201532 100644 --- a/apps/meteor/tests/e2e/omnichannel/omnichannel-close-inquiry.spec.ts +++ b/apps/meteor/tests/e2e/omnichannel/omnichannel-close-inquiry.spec.ts @@ -54,10 +54,7 @@ test.describe('Omnichannel close inquiry', () => { }); await test.step('Expect to be able to close an inquiry conversation', async () => { - await agent.poHomeOmnichannel.content.btnCloseChat.click(); - await agent.poHomeOmnichannel.content.inputModalClosingComment.type('any_comment'); - await agent.poHomeOmnichannel.content.btnModalConfirm.click(); - await expect(agent.poHomeOmnichannel.toastSuccess).toBeVisible(); + await agent.poHomeOmnichannel.quickActionsRoomToolbar.closeChat(); }); await test.step('Expect to inquiry be closed when navigate back', async () => { diff --git a/apps/meteor/tests/e2e/omnichannel/omnichannel-contact-conflict-review.spec.ts b/apps/meteor/tests/e2e/omnichannel/omnichannel-contact-conflict-review.spec.ts index cd76ec3fdce85..ebffe9850461b 100644 --- a/apps/meteor/tests/e2e/omnichannel/omnichannel-contact-conflict-review.spec.ts +++ b/apps/meteor/tests/e2e/omnichannel/omnichannel-contact-conflict-review.spec.ts @@ -77,7 +77,7 @@ test.describe.serial('OC - Contact Review', () => { test('OC - Contact Review - Update custom field conflicting', async ({ page }) => { await poHomeChannel.sidenav.getSidebarItemByName(visitor.name).click(); - await poHomeChannel.content.btnContactInformation.click(); + await poHomeChannel.roomToolbar.openContactInfo(); await poHomeChannel.content.contactReviewModal.btnSeeConflicts.click(); diff --git a/apps/meteor/tests/e2e/omnichannel/omnichannel-contact-info.spec.ts b/apps/meteor/tests/e2e/omnichannel/omnichannel-contact-info.spec.ts index 7d06da790bcf6..dcb5ba663d910 100644 --- a/apps/meteor/tests/e2e/omnichannel/omnichannel-contact-info.spec.ts +++ b/apps/meteor/tests/e2e/omnichannel/omnichannel-contact-info.spec.ts @@ -3,7 +3,7 @@ import type { Page } from '@playwright/test'; import { createFakeVisitor } from '../../mocks/data'; import { createAuxContext } from '../fixtures/createAuxContext'; import { Users } from '../fixtures/userStates'; -import { OmnichannelLiveChat, HomeChannel } from '../page-objects'; +import { HomeOmnichannel, OmnichannelLiveChat } from '../page-objects'; import { OmnichannelContacts } from '../page-objects/omnichannel-contacts-list'; import { expect, test } from '../utils/test'; @@ -11,7 +11,7 @@ test.describe('Omnichannel contact info', () => { let poLiveChat: OmnichannelLiveChat; let newVisitor: { email: string; name: string }; - let agent: { page: Page; poHomeChannel: HomeChannel; poContacts: OmnichannelContacts }; + let agent: { page: Page; poHomeChannel: HomeOmnichannel; poContacts: OmnichannelContacts }; test.beforeAll(async ({ api, browser }) => { newVisitor = createFakeVisitor(); @@ -21,7 +21,7 @@ test.describe('Omnichannel contact info', () => { await api.post('/livechat/users/manager', { username: 'user1' }); const { page } = await createAuxContext(browser, Users.user1); - agent = { page, poHomeChannel: new HomeChannel(page), poContacts: new OmnichannelContacts(page) }; + agent = { page, poHomeChannel: new HomeOmnichannel(page), poContacts: new OmnichannelContacts(page) }; }); test.beforeEach(async ({ page, api }) => { poLiveChat = new OmnichannelLiveChat(page, api); @@ -47,7 +47,7 @@ test.describe('Omnichannel contact info', () => { }); await test.step('Expect to be able to see contact information and edit', async () => { - await agent.poHomeChannel.content.btnContactInformation.click(); + await agent.poHomeChannel.roomToolbar.openContactInfo(); await agent.poHomeChannel.content.btnContactEdit.click(); }); diff --git a/apps/meteor/tests/e2e/omnichannel/omnichannel-livechat-api.spec.ts b/apps/meteor/tests/e2e/omnichannel/omnichannel-livechat-api.spec.ts index c9bf2490d10ee..6c954c8c94c09 100644 --- a/apps/meteor/tests/e2e/omnichannel/omnichannel-livechat-api.spec.ts +++ b/apps/meteor/tests/e2e/omnichannel/omnichannel-livechat-api.spec.ts @@ -495,7 +495,7 @@ test.describe('OC - Livechat API', () => { await test.step('Expect registered guest to have valid info', async () => { await poAuxContext.poHomeOmnichannel.sidenav.openChat(registerGuestVisitor.name); - await poAuxContext.poHomeOmnichannel.content.btnGuestInfo.click(); + await poAuxContext.poHomeOmnichannel.roomToolbar.openContactInfo(); // For some reason the guest info email information is being set to lowercase await expect(poAuxContext.poHomeOmnichannel.content.infoContactEmail).toHaveText(registerGuestVisitor.email.toLowerCase()); }); @@ -629,7 +629,7 @@ test.describe('OC - Livechat API', () => { await test.step('Expect registered guest to have valid info', async () => { await poAuxContext.poHomeOmnichannel.sidenav.openChat(registerGuestVisitor.name); - await poAuxContext.poHomeOmnichannel.content.btnGuestInfo.click(); + await poAuxContext.poHomeOmnichannel.roomToolbar.openContactInfo(); // For some reason the guest info email information is being set to lowercase await expect(poAuxContext.poHomeOmnichannel.content.infoContactEmail).toHaveText( `changed${registerGuestVisitor.email}`.toLowerCase(), @@ -802,11 +802,7 @@ test.describe('OC - Livechat API', () => { ); await poAuxContext.poHomeOmnichannel.sidenav.openChat(newVisitor.name); - await poAuxContext.poHomeOmnichannel.content.btnCloseChat.click(); - await poAuxContext.poHomeOmnichannel.content.closeChatModal.inputComment.fill('this_is_a_test_comment'); - await poAuxContext.poHomeOmnichannel.content.closeChatModal.btnConfirm.click(); - await expect(poAuxContext.poHomeOmnichannel.toastSuccess).toBeVisible(); - + await poAuxContext.poHomeOmnichannel.quickActionsRoomToolbar.closeChat({ comment: 'this_is_a_test_comment' }); await watchForTrigger; }); }); diff --git a/apps/meteor/tests/e2e/omnichannel/omnichannel-livechat-avatar-visibility.spec.ts b/apps/meteor/tests/e2e/omnichannel/omnichannel-livechat-avatar-visibility.spec.ts index 7729b5684228b..0b6c7818e340b 100644 --- a/apps/meteor/tests/e2e/omnichannel/omnichannel-livechat-avatar-visibility.spec.ts +++ b/apps/meteor/tests/e2e/omnichannel/omnichannel-livechat-avatar-visibility.spec.ts @@ -89,10 +89,7 @@ test.describe('OC - Livechat - Avatar visibility', async () => { await test.step('should close the conversation', async () => { await poAuxContext.poHomeOmnichannel.sidenav.openChat(visitor.name); - await poAuxContext.poHomeOmnichannel.content.btnCloseChat.click(); - await poAuxContext.poHomeOmnichannel.content.closeChatModal.inputComment.fill('this_is_a_test_comment'); - await poAuxContext.poHomeOmnichannel.content.closeChatModal.btnConfirm.click(); - await expect(poAuxContext.poHomeOmnichannel.toastSuccess).toBeVisible(); + await poAuxContext.poHomeOmnichannel.quickActionsRoomToolbar.closeChat({ comment: 'this_is_a_test_comment' }); }); }); }); diff --git a/apps/meteor/tests/e2e/omnichannel/omnichannel-livechat-message-bubble-color.spec.ts b/apps/meteor/tests/e2e/omnichannel/omnichannel-livechat-message-bubble-color.spec.ts index 70d0441db5e13..165e0cc95c0de 100644 --- a/apps/meteor/tests/e2e/omnichannel/omnichannel-livechat-message-bubble-color.spec.ts +++ b/apps/meteor/tests/e2e/omnichannel/omnichannel-livechat-message-bubble-color.spec.ts @@ -96,10 +96,7 @@ test.describe('OC - Livechat - Bubble background color', async () => { await test.step('should close the conversation', async () => { await poAuxContext.poHomeOmnichannel.sidenav.openChat(visitor.name); - await poAuxContext.poHomeOmnichannel.content.btnCloseChat.click(); - await poAuxContext.poHomeOmnichannel.content.closeChatModal.inputComment.fill('this_is_a_test_comment'); - await poAuxContext.poHomeOmnichannel.content.closeChatModal.btnConfirm.click(); - await expect(poAuxContext.poHomeOmnichannel.toastSuccess).toBeVisible(); + await poAuxContext.poHomeOmnichannel.quickActionsRoomToolbar.closeChat({ comment: 'this_is_a_test_comment' }); }); }); }); diff --git a/apps/meteor/tests/e2e/omnichannel/omnichannel-livechat.spec.ts b/apps/meteor/tests/e2e/omnichannel/omnichannel-livechat.spec.ts index 706d9729304a7..e13803e7bff85 100644 --- a/apps/meteor/tests/e2e/omnichannel/omnichannel-livechat.spec.ts +++ b/apps/meteor/tests/e2e/omnichannel/omnichannel-livechat.spec.ts @@ -102,10 +102,7 @@ test.describe.serial('OC - Livechat', () => { await poHomeOmnichannel.sidenav.openChat(firstVisitor.name); await test.step('expect livechat conversation to be closed by agent', async () => { - await poHomeOmnichannel.content.btnCloseChat.click(); - await poHomeOmnichannel.content.closeChatModal.inputComment.fill('this_is_a_test_comment'); - await poHomeOmnichannel.content.closeChatModal.btnConfirm.click(); - await expect(poHomeOmnichannel.toastSuccess).toBeVisible(); + await poHomeOmnichannel.quickActionsRoomToolbar.closeChat({ comment: 'this_is_a_test_comment' }); }); }); }); @@ -158,10 +155,7 @@ test.describe.serial('OC - Livechat - Visitors closing the room is disabled', () await poHomeOmnichannel.sidenav.openChat(firstVisitor.name); await test.step('expect livechat conversation to be closed by agent', async () => { - await poHomeOmnichannel.content.btnCloseChat.click(); - await poHomeOmnichannel.content.closeChatModal.inputComment.fill('this_is_a_test_comment'); - await poHomeOmnichannel.content.closeChatModal.btnConfirm.click(); - await expect(poHomeOmnichannel.toastSuccess).toBeVisible(); + await poHomeOmnichannel.quickActionsRoomToolbar.closeChat({ comment: 'this_is_a_test_comment' }); }); }); }); diff --git a/apps/meteor/tests/e2e/omnichannel/omnichannel-manager-role.spec.ts b/apps/meteor/tests/e2e/omnichannel/omnichannel-manager-role.spec.ts index a9c0de65cdff4..71947ee4f058c 100644 --- a/apps/meteor/tests/e2e/omnichannel/omnichannel-manager-role.spec.ts +++ b/apps/meteor/tests/e2e/omnichannel/omnichannel-manager-role.spec.ts @@ -135,9 +135,7 @@ test.describe('OC - Manager Role', () => { }); await test.step('expect to be able to put a conversation from another agent on hold', async () => { - await poOmnichannel.content.btnOnHold.click({ clickCount: 2 }); - await expect(poOmnichannel.content.modalOnHold).toBeVisible(); - await poOmnichannel.content.btnOnHoldConfirm.click(); + await poOmnichannel.quickActionsRoomToolbar.placeChatOnHold(); await expect(poOmnichannel.content.lastSystemMessageBody).toHaveText( `Chat On Hold: The chat was manually placed On Hold by ${MANAGER}`, ); @@ -149,14 +147,11 @@ test.describe('OC - Manager Role', () => { await poOmnichannel.content.btnResume.click(); await expect(poOmnichannel.content.btnResume).not.toBeVisible(); await expect(poOmnichannel.content.inputMessage).toBeVisible(); - await expect(poOmnichannel.content.btnOnHold).toBeVisible(); + await expect(poOmnichannel.quickActionsRoomToolbar.btnOnHold).toBeVisible(); }); await test.step('expect to be able to close a conversation from another agent', async () => { - await poOmnichannel.content.btnCloseChat.click(); - await poOmnichannel.content.inputModalClosingComment.type('any_comment'); - await poOmnichannel.content.btnModalConfirm.click(); - await expect(poOmnichannel.toastSuccess).toBeVisible(); + await poOmnichannel.quickActionsRoomToolbar.closeChat(); await page.waitForURL('/omnichannel/current'); }); diff --git a/apps/meteor/tests/e2e/omnichannel/omnichannel-monitor-role.spec.ts b/apps/meteor/tests/e2e/omnichannel/omnichannel-monitor-role.spec.ts index d21af6e6570bc..11044f2bb09f0 100644 --- a/apps/meteor/tests/e2e/omnichannel/omnichannel-monitor-role.spec.ts +++ b/apps/meteor/tests/e2e/omnichannel/omnichannel-monitor-role.spec.ts @@ -187,9 +187,7 @@ test.describe('OC - Monitor Role', () => { }); await test.step('expect to be able to put a conversation from another agent on hold', async () => { - await poOmnichannel.content.btnOnHold.click({ clickCount: 2 }); - await expect(poOmnichannel.content.modalOnHold).toBeVisible(); - await poOmnichannel.content.btnOnHoldConfirm.click(); + await poOmnichannel.quickActionsRoomToolbar.placeChatOnHold(); await expect(poOmnichannel.content.lastSystemMessageBody).toHaveText( `Chat On Hold: The chat was manually placed On Hold by ${MONITOR}`, ); @@ -201,16 +199,13 @@ test.describe('OC - Monitor Role', () => { await poOmnichannel.content.btnResume.click(); await expect(poOmnichannel.content.btnResume).not.toBeVisible(); await expect(poOmnichannel.content.inputMessage).toBeVisible(); - await expect(poOmnichannel.content.btnOnHold).toBeVisible(); + await expect(poOmnichannel.quickActionsRoomToolbar.btnOnHold).toBeVisible(); }); // await test.step('expect to be able to edit room information from another agent', async () => {); await test.step('expect to be able to close a conversation from another agent', async () => { - await poOmnichannel.content.btnCloseChat.click(); - await poOmnichannel.content.inputModalClosingComment.type('any_comment'); - await poOmnichannel.content.btnModalConfirm.click(); - await expect(poOmnichannel.toastSuccess).toBeVisible(); + await poOmnichannel.quickActionsRoomToolbar.closeChat(); await page.waitForURL('/omnichannel/current'); }); diff --git a/apps/meteor/tests/e2e/omnichannel/omnichannel-send-pdf-transcript.spec.ts b/apps/meteor/tests/e2e/omnichannel/omnichannel-send-pdf-transcript.spec.ts index 75c06efc75070..afe38b4b5b78c 100644 --- a/apps/meteor/tests/e2e/omnichannel/omnichannel-send-pdf-transcript.spec.ts +++ b/apps/meteor/tests/e2e/omnichannel/omnichannel-send-pdf-transcript.spec.ts @@ -55,11 +55,7 @@ test.describe('omnichannel- export chat transcript as PDF', () => { }); await test.step('Expect chat to be closed', async () => { - await agent.poHomeChannel.content.btnCloseChat.click(); - await agent.poHomeChannel.content.inputModalClosingComment.type('any_comment'); - await agent.poHomeChannel.transcript.checkboxPDF.click(); - await agent.poHomeChannel.content.btnModalConfirm.click(); - await expect(agent.poHomeChannel.toastSuccess).toBeVisible(); + await agent.poHomeChannel.quickActionsRoomToolbar.closeChat({ downloadPDF: true }); }); // Exported PDF can be downloaded from rocket.cat room diff --git a/apps/meteor/tests/e2e/omnichannel/omnichannel-transfer-to-another-agents.spec.ts b/apps/meteor/tests/e2e/omnichannel/omnichannel-transfer-to-another-agents.spec.ts index 5be6c4181460b..b67c979134925 100644 --- a/apps/meteor/tests/e2e/omnichannel/omnichannel-transfer-to-another-agents.spec.ts +++ b/apps/meteor/tests/e2e/omnichannel/omnichannel-transfer-to-another-agents.spec.ts @@ -72,7 +72,7 @@ test.describe('OC - Chat transfers [Agent role]', () => { await test.step('expect to not be able to transfer chat to "user-2" when that user is offline', async () => { await agentB.poHomeOmnichannel.sidenav.switchStatus('offline'); - await agentA.poHomeOmnichannel.content.btnForwardChat.click(); + await agentA.poHomeOmnichannel.quickActionsRoomToolbar.forwardChat(); await agentA.poHomeOmnichannel.content.forwardChatModal.inputFowardUser.click(); await agentA.poHomeOmnichannel.content.forwardChatModal.inputFowardUser.type('user2'); await expect(agentA.page.locator('text=Empty')).toBeVisible(); @@ -84,7 +84,7 @@ test.describe('OC - Chat transfers [Agent role]', () => { await agentB.poHomeOmnichannel.sidenav.switchStatus('online'); await agentA.poHomeOmnichannel.sidenav.getSidebarItemByName(visitor.name).click(); - await agentA.poHomeOmnichannel.content.btnForwardChat.click(); + await agentA.poHomeOmnichannel.quickActionsRoomToolbar.forwardChat(); await agentA.poHomeOmnichannel.content.forwardChatModal.selectUser('user2'); await agentA.poHomeOmnichannel.content.forwardChatModal.inputComment.type('any_comment'); await agentA.poHomeOmnichannel.content.forwardChatModal.btnForward.click(); diff --git a/apps/meteor/tests/e2e/page-objects/fragments/home-content.ts b/apps/meteor/tests/e2e/page-objects/fragments/home-content.ts index 23671b3bcc807..e1a545e858878 100644 --- a/apps/meteor/tests/e2e/page-objects/fragments/home-content.ts +++ b/apps/meteor/tests/e2e/page-objects/fragments/home-content.ts @@ -315,18 +315,10 @@ export class HomeContent { return this.userCard.locator('a'); } - get btnContactInformation(): Locator { - return this.page.locator('[data-qa-id="ToolBoxAction-user"]'); - } - get btnContactEdit(): Locator { return this.page.getByRole('dialog').getByRole('button', { name: 'Edit', exact: true }); } - get inputModalClosingComment(): Locator { - return this.page.locator('#modal-root input:nth-child(1)[name="comment"]'); - } - get btnSendTranscript(): Locator { return this.page.locator('role=button[name="Send transcript"]'); } @@ -339,10 +331,6 @@ export class HomeContent { return this.page.locator('li.rcx-option', { hasText: 'Export as PDF' }); } - get btnCannedResponses(): Locator { - return this.page.locator('[data-qa-id="ToolBoxAction-canned-response"]'); - } - get btnNewCannedResponse(): Locator { return this.page.locator('.rcx-vertical-bar button:has-text("Create")'); } @@ -468,10 +456,6 @@ export class HomeContent { return this.page.locator('button.rcx-button--primary >> text="Resume"'); } - get btnOnHold(): Locator { - return this.page.locator('[data-qa-id="ToolBoxAction-pause-unfilled"]'); - } - get primaryRoomActionsToolbar(): Locator { return this.page.getByRole('toolbar', { name: 'Primary Room actions' }); } diff --git a/apps/meteor/tests/e2e/page-objects/fragments/home-flextab.ts b/apps/meteor/tests/e2e/page-objects/fragments/home-flextab.ts index 2c5fc0b13ede9..ef8fcaa74a11e 100644 --- a/apps/meteor/tests/e2e/page-objects/fragments/home-flextab.ts +++ b/apps/meteor/tests/e2e/page-objects/fragments/home-flextab.ts @@ -40,18 +40,6 @@ export class HomeFlextab { return this.page.getByRole('toolbar', { name: 'Primary Room actions' }); } - get btnTabMembers(): Locator { - return this.page.locator('[data-qa-id=ToolBoxAction-members]'); - } - - get btnRoomInfo(): Locator { - return this.page.locator('[data-qa-id=ToolBoxAction-info-circled]'); - } - - get btnChannels(): Locator { - return this.page.locator('[data-qa-id="ToolBoxAction-hash"]'); - } - get btnTeamMembers(): Locator { return this.page.locator('role=menuitem[name="Teams Members"]'); } @@ -72,10 +60,6 @@ export class HomeFlextab { return this.page.getByRole('menuitem', { name: 'Prune Messages' }); } - get btnE2EERoomSetupDisableE2E(): Locator { - return this.page.locator('[data-qa-id=ToolBoxAction-key]'); - } - get btnDisableE2E(): Locator { return this.page.locator('role=menuitem[name="Disable E2E encryption"]'); } diff --git a/apps/meteor/tests/e2e/page-objects/fragments/home-omnichannel-content.ts b/apps/meteor/tests/e2e/page-objects/fragments/home-omnichannel-content.ts index 04ea4ec697ae0..a74f2c2f677d3 100644 --- a/apps/meteor/tests/e2e/page-objects/fragments/home-omnichannel-content.ts +++ b/apps/meteor/tests/e2e/page-objects/fragments/home-omnichannel-content.ts @@ -2,19 +2,15 @@ import type { Locator, Page } from '@playwright/test'; import { OmnichannelTransferChatModal } from '../omnichannel-transfer-chat-modal'; import { HomeContent } from './home-content'; -import { OmnichannelCloseChatModal } from './omnichannel-close-chat-modal'; import { OmnichannelContactReviewModal } from '../omnichannel-contact-review-modal'; export class HomeOmnichannelContent extends HomeContent { - readonly closeChatModal: OmnichannelCloseChatModal; - readonly forwardChatModal: OmnichannelTransferChatModal; readonly contactReviewModal: OmnichannelContactReviewModal; constructor(page: Page) { super(page); - this.closeChatModal = new OmnichannelCloseChatModal(page); this.forwardChatModal = new OmnichannelTransferChatModal(page); this.contactReviewModal = new OmnichannelContactReviewModal(page); } @@ -43,18 +39,6 @@ export class HomeOmnichannelContent extends HomeContent { return this.page.locator('[name="msg"]'); } - get btnForwardChat(): Locator { - return this.page.locator('[data-qa-id="ToolBoxAction-balloon-arrow-top-right"]'); - } - - get btnCloseChat(): Locator { - return this.page.locator('[data-qa-id="ToolBoxAction-balloon-close-top-right"]'); - } - - get btnGuestInfo(): Locator { - return this.page.locator('[data-qa-id="ToolBoxAction-user"]'); - } - get contactContextualBar() { return this.page.getByRole('dialog', { name: 'Contact' }); } @@ -64,31 +48,17 @@ export class HomeOmnichannelContent extends HomeContent { } get btnReturn(): Locator { - return this.page.locator('[data-qa-id="ToolBoxAction-back"]'); + return this.page.getByRole('button', { name: 'Back' }); } get btnResume(): Locator { return this.page.locator('role=button[name="Resume"]'); } - get modalOnHold(): Locator { - return this.page.locator('[data-qa-id="on-hold-modal"]'); - } - - get btnOnHoldConfirm(): Locator { - return this.modalOnHold.locator('role=button[name="Place chat On-Hold"]'); - } - get infoHeaderName(): Locator { return this.page.locator('.rcx-room-header').getByRole('heading'); } - async closeChat() { - await this.btnCloseChat.click(); - await this.closeChatModal.inputComment.fill('any_comment'); - await this.closeChatModal.btnConfirm.click(); - } - async useCannedResponse(cannedResponseName: string): Promise { await this.inputMessage.pressSequentially('!'); await this.page.locator('[role="menu"][name="ComposerBoxPopup"]').waitFor({ state: 'visible' }); diff --git a/apps/meteor/tests/e2e/page-objects/fragments/omnichannel-close-chat-modal.ts b/apps/meteor/tests/e2e/page-objects/fragments/omnichannel-close-chat-modal.ts index f6d7c2c8fd475..4833e16075e14 100644 --- a/apps/meteor/tests/e2e/page-objects/fragments/omnichannel-close-chat-modal.ts +++ b/apps/meteor/tests/e2e/page-objects/fragments/omnichannel-close-chat-modal.ts @@ -1,17 +1,35 @@ import type { Locator, Page } from '@playwright/test'; -export class OmnichannelCloseChatModal { - private readonly page: Page; +import { Modal } from './modal'; +import { ToastMessages } from './toast-messages'; + +export class OmnichannelCloseChatModal extends Modal { + private readonly toastMessages: ToastMessages; constructor(page: Page) { - this.page = page; + super(page.getByRole('dialog', { name: 'Wrap up conversation' })); + this.toastMessages = new ToastMessages(page); + } + + private get inputComment(): Locator { + return this.root.locator('input[name="comment"]'); + } + + private get btnConfirm(): Locator { + return this.root.locator('role=button[name="Confirm"]'); } - get inputComment(): Locator { - return this.page.locator('input[name="comment"]'); + private get labelPDF(): Locator { + return this.root.locator('label[for="transcript-pdf"]'); } - get btnConfirm(): Locator { - return this.page.locator('role=button[name="Confirm"]'); + async confirm(comment: string, downloadPDF: boolean): Promise { + await this.inputComment.fill(comment); + if (downloadPDF) { + await this.labelPDF.click(); + } + await this.btnConfirm.click(); + await this.waitForDismissal(); + await this.toastMessages.dismissToast('success'); } } diff --git a/apps/meteor/tests/e2e/page-objects/fragments/omnichannel-on-hold-modal.ts b/apps/meteor/tests/e2e/page-objects/fragments/omnichannel-on-hold-modal.ts new file mode 100644 index 0000000000000..593c67209c546 --- /dev/null +++ b/apps/meteor/tests/e2e/page-objects/fragments/omnichannel-on-hold-modal.ts @@ -0,0 +1,18 @@ +import type { Locator, Page } from '@playwright/test'; + +import { Modal } from './modal'; + +export class OmnichannelOnHoldModal extends Modal { + constructor(page: Page) { + super(page.getByRole('dialog', { name: 'Place chat On-Hold' })); + } + + private get btnPlaceChatOnHold(): Locator { + return this.root.getByRole('button', { name: 'Place chat On-Hold' }); + } + + async confirm(): Promise { + await this.btnPlaceChatOnHold.click(); + await this.waitForDismissal(); + } +} diff --git a/apps/meteor/tests/e2e/page-objects/fragments/toolbar.ts b/apps/meteor/tests/e2e/page-objects/fragments/toolbar.ts new file mode 100644 index 0000000000000..f55910a6d2b02 --- /dev/null +++ b/apps/meteor/tests/e2e/page-objects/fragments/toolbar.ts @@ -0,0 +1,165 @@ +import type { Locator, Page } from '@playwright/test'; + +import { OmnichannelCloseChatModal } from './omnichannel-close-chat-modal'; +import { OmnichannelOnHoldModal } from './omnichannel-on-hold-modal'; + +export abstract class Toolbar { + constructor(protected root: Locator) {} + + click() { + return this.root.click(); + } +} + +export class RoomToolbar extends Toolbar { + constructor(page: Page) { + super(page.getByRole('toolbar', { name: 'Primary Room actions' })); + } + + get btnRoomInfo() { + return this.root.getByRole('button', { name: 'Room Information' }); + } + + private get btnTeamInfo() { + return this.root.getByRole('button', { name: 'Team info' }); + } + + get btnMembers() { + return this.root.getByRole('button', { name: 'Members' }); + } + + get btnVideoCall() { + return this.root.getByRole('button', { name: 'Video Call' }); + } + + get btnVoiceCall() { + return this.root.getByRole('button', { name: 'Voice call' }); + } + + get btnUserInfo(): Locator { + return this.root.getByRole('button', { name: 'User Info' }); + } + + get btnDiscussion(): Locator { + return this.root.getByRole('button', { name: 'Discussions' }); + } + + private get btnTeamChannels(): Locator { + return this.root.getByRole('button', { name: 'Team Channels' }); + } + + get btnThreads(): Locator { + return this.root.getByRole('button', { name: 'Threads' }); + } + + get btnFiles(): Locator { + return this.root.getByRole('button', { name: 'Files' }); + } + + get btnMoreOptions(): Locator { + return this.root.getByRole('button', { name: 'Options' }); + } + + get btnDisableE2EEncryption(): Locator { + return this.root.getByRole('button', { name: 'Disable E2E encryption' }); + } + + get menuItemMentions(): Locator { + return this.root.getByRole('menuitem', { name: 'Mentions' }); + } + + get menuItemStarredMessages(): Locator { + return this.root.getByRole('menuitem', { name: 'Starred Messages' }); + } + + get menuItemPinnedMessages(): Locator { + return this.root.getByRole('menuitem', { name: 'Pinned Messages' }); + } + + get menuItemPruneMessages(): Locator { + return this.root.getByRole('menuitem', { name: 'Prune Messages' }); + } + + async openRoomInfo() { + await this.btnRoomInfo.click(); + } + + async openTeamInfo() { + await this.btnTeamInfo.click(); + } + + async openMembersTab() { + await this.btnMembers.click(); + } + + async openUserInfo() { + await this.btnUserInfo.click(); + } + + async openTeamChannels() { + await this.btnTeamChannels.click(); + } + + async openMoreOptions() { + await this.btnMoreOptions.click(); + } +} + +export class OmnichannelRoomToolbar extends RoomToolbar { + private get btnContactInfo(): Locator { + return this.root.getByRole('button', { name: 'Contact Information' }); + } + + private get btnCannedResponses(): Locator { + return this.root.getByRole('button', { name: 'Canned Responses' }); + } + + async openContactInfo() { + await this.btnContactInfo.click(); + } + + async openCannedResponses() { + await this.btnCannedResponses.click(); + } +} + +export class OmnichannelQuickActionsRoomToolbar extends Toolbar { + private closeChatModal: OmnichannelCloseChatModal; + + private onHoldModal: OmnichannelOnHoldModal; + + constructor(page: Page) { + super(page.getByRole('toolbar', { name: 'Omnichannel Quick Actions' })); + this.closeChatModal = new OmnichannelCloseChatModal(page); + this.onHoldModal = new OmnichannelOnHoldModal(page); + } + + get btnOnHold(): Locator { + return this.root.getByRole('button', { name: 'Place chat On-Hold' }); + } + + get btnForwardChat(): Locator { + return this.root.getByRole('button', { name: 'Forward chat' }); + } + + get btnEndConversation(): Locator { + return this.root.getByRole('button', { name: 'End conversation' }); + } + + /** + * FIXME: This `clickCount` seems a hack for a bad implementation + */ + async placeChatOnHold() { + await this.btnOnHold.click({ clickCount: 2 }); + await this.onHoldModal.confirm(); + } + + async forwardChat() { + await this.btnForwardChat.click(); + } + + async closeChat({ comment = 'any_comment', downloadPDF = false } = {}): Promise { + await this.btnEndConversation.click(); + await this.closeChatModal.confirm(comment, downloadPDF); + } +} diff --git a/apps/meteor/tests/e2e/page-objects/home-channel.ts b/apps/meteor/tests/e2e/page-objects/home-channel.ts index 1a1d9b96242c8..e5c44558f3137 100644 --- a/apps/meteor/tests/e2e/page-objects/home-channel.ts +++ b/apps/meteor/tests/e2e/page-objects/home-channel.ts @@ -1,6 +1,7 @@ import type { Locator, Page } from '@playwright/test'; import { HomeContent, HomeSidenav, HomeFlextab, Navbar, Sidebar, Sidepanel } from './fragments'; +import { RoomToolbar } from './fragments/toolbar'; export class HomeChannel { public readonly page: Page; @@ -17,6 +18,8 @@ export class HomeChannel { readonly tabs: HomeFlextab; + readonly roomToolbar: RoomToolbar; + constructor(page: Page) { this.page = page; this.content = new HomeContent(page); @@ -25,6 +28,7 @@ export class HomeChannel { this.sidepanel = new Sidepanel(page); this.navbar = new Navbar(page); this.tabs = new HomeFlextab(page); + this.roomToolbar = new RoomToolbar(page); } goto() { diff --git a/apps/meteor/tests/e2e/page-objects/home-omnichannel.ts b/apps/meteor/tests/e2e/page-objects/home-omnichannel.ts index f0a1fc147a351..2d642cf3bc927 100644 --- a/apps/meteor/tests/e2e/page-objects/home-omnichannel.ts +++ b/apps/meteor/tests/e2e/page-objects/home-omnichannel.ts @@ -1,6 +1,7 @@ import type { Locator, Page } from '@playwright/test'; import { HomeOmnichannelContent, HomeSidenav, HomeFlextab, OmnichannelSidenav } from './fragments'; +import { OmnichannelRoomToolbar, OmnichannelQuickActionsRoomToolbar } from './fragments/toolbar'; import { OmnichannelAgents } from './omnichannel-agents'; import { OmnichannelCannedResponses } from './omnichannel-canned-responses'; import { OmnichannelContacts } from './omnichannel-contacts-list'; @@ -40,6 +41,10 @@ export class HomeOmnichannel { readonly roomInfo: OmnichannelRoomInfo; + readonly roomToolbar: OmnichannelRoomToolbar; + + readonly quickActionsRoomToolbar: OmnichannelQuickActionsRoomToolbar; + constructor(page: Page) { this.page = page; this.content = new HomeOmnichannelContent(page); @@ -55,6 +60,8 @@ export class HomeOmnichannel { this.monitors = new OmnichannelMonitors(page); this.contacts = new OmnichannelContacts(page); this.roomInfo = new OmnichannelRoomInfo(page); + this.roomToolbar = new OmnichannelRoomToolbar(page); + this.quickActionsRoomToolbar = new OmnichannelQuickActionsRoomToolbar(page); } get toastSuccess(): Locator { diff --git a/apps/meteor/tests/e2e/page-objects/home-team.ts b/apps/meteor/tests/e2e/page-objects/home-team.ts index 9225ca7a1b4d6..f44b2584f7f27 100644 --- a/apps/meteor/tests/e2e/page-objects/home-team.ts +++ b/apps/meteor/tests/e2e/page-objects/home-team.ts @@ -1,7 +1,11 @@ import type { Locator, Page } from '@playwright/test'; import { HomeContent, HomeFlextab, HomeSidenav } from './fragments'; +import { RoomToolbar } from './fragments/toolbar'; +/** + * TODO: HomeTeam shouldn't exist since the rooms are the same + */ export class HomeTeam { private readonly page: Page; @@ -11,11 +15,14 @@ export class HomeTeam { readonly tabs: HomeFlextab; + readonly roomToolbar: RoomToolbar; + constructor(page: Page) { this.page = page; this.content = new HomeContent(page); this.sidenav = new HomeSidenav(page); this.tabs = new HomeFlextab(page); + this.roomToolbar = new RoomToolbar(page); } get inputTeamName(): Locator { diff --git a/apps/meteor/tests/e2e/page-objects/modal.ts b/apps/meteor/tests/e2e/page-objects/modal.ts index 8eaa2a4291111..79afc067efd24 100644 --- a/apps/meteor/tests/e2e/page-objects/modal.ts +++ b/apps/meteor/tests/e2e/page-objects/modal.ts @@ -1,5 +1,8 @@ import type { Locator, Page } from '@playwright/test'; +/** + * TODO: merge this class with the Modal class in fragments/modal.ts + */ export class Modal { protected readonly page: Page; diff --git a/apps/meteor/tests/e2e/page-objects/omnichannel-transcript.ts b/apps/meteor/tests/e2e/page-objects/omnichannel-transcript.ts index c5b54398b7cd2..b2ac1e59a6bb9 100644 --- a/apps/meteor/tests/e2e/page-objects/omnichannel-transcript.ts +++ b/apps/meteor/tests/e2e/page-objects/omnichannel-transcript.ts @@ -12,10 +12,6 @@ export class OmnichannelTranscript { this.sidenav = new OmnichannelSidenav(page); } - get checkboxPDF(): Locator { - return this.page.locator('//input[@name="transcriptPDF"]//following::i[1]'); - } - get contactCenter(): Locator { return this.page.locator('//button[@data-tooltip="Contact Center"]'); } diff --git a/apps/meteor/tests/e2e/retention-policy.spec.ts b/apps/meteor/tests/e2e/retention-policy.spec.ts index 25962d2aae162..9dc17cd2b3625 100644 --- a/apps/meteor/tests/e2e/retention-policy.spec.ts +++ b/apps/meteor/tests/e2e/retention-policy.spec.ts @@ -50,7 +50,7 @@ test.describe.serial('retention-policy', () => { test('should not show prune section on edit channel', async () => { await poHomeChannel.sidenav.openChat(targetChannel); - await poHomeChannel.tabs.btnRoomInfo.click(); + await poHomeChannel.roomToolbar.openRoomInfo(); await poHomeChannel.tabs.room.btnEdit.click(); await expect(poHomeChannel.tabs.room.pruneAccordion).not.toBeVisible(); @@ -85,7 +85,7 @@ test.describe.serial('retention-policy', () => { test('should show prune section in edit channel', async () => { await poHomeChannel.sidenav.openChat(targetChannel); - await poHomeChannel.tabs.btnRoomInfo.click(); + await poHomeChannel.roomToolbar.openRoomInfo(); await poHomeChannel.tabs.room.btnEdit.click(); await expect(poHomeChannel.tabs.room.pruneAccordion).toBeVisible(); @@ -97,7 +97,7 @@ test.describe.serial('retention-policy', () => { const { page } = await createAuxContext(browser, Users.user1); auxContext = { page, poHomeChannel: new HomeChannel(page) }; await auxContext.poHomeChannel.sidenav.openChat(targetChannel); - await auxContext.poHomeChannel.tabs.btnRoomInfo.click(); + await auxContext.poHomeChannel.roomToolbar.openRoomInfo(); await auxContext.poHomeChannel.tabs.room.btnEdit.click(); }); test.afterEach(async () => { @@ -127,7 +127,7 @@ test.describe.serial('retention-policy', () => { await poHomeChannel.sidenav.openChat(targetChannel); await expect(poHomeChannel.content.channelRetentionPolicyWarning).toBeVisible(); - await poHomeChannel.tabs.btnRoomInfo.click(); + await poHomeChannel.roomToolbar.openRoomInfo(); await poHomeChannel.tabs.room.btnEdit.click(); await poHomeChannel.tabs.room.pruneAccordion.click(); await expect(poHomeChannel.tabs.room.checkboxPruneMessages).toBeChecked(); @@ -137,7 +137,7 @@ test.describe.serial('retention-policy', () => { await poHomeChannel.sidenav.openChat(targetTeam); await expect(poHomeChannel.content.channelRetentionPolicyWarning).toBeVisible(); - await poHomeChannel.tabs.btnRoomInfo.click(); + await poHomeChannel.roomToolbar.openTeamInfo(); await poHomeChannel.tabs.room.btnEdit.click(); await poHomeChannel.tabs.room.pruneAccordion.click(); await expect(poHomeChannel.tabs.room.checkboxPruneMessages).toBeChecked(); @@ -147,7 +147,7 @@ test.describe.serial('retention-policy', () => { await poHomeChannel.sidenav.openChat(targetGroup); await expect(poHomeChannel.content.channelRetentionPolicyWarning).toBeVisible(); - await poHomeChannel.tabs.btnRoomInfo.click(); + await poHomeChannel.roomToolbar.openRoomInfo(); await poHomeChannel.tabs.room.btnEdit.click(); await poHomeChannel.tabs.room.pruneAccordion.click(); await expect(poHomeChannel.tabs.room.checkboxPruneMessages).toBeChecked(); @@ -169,7 +169,7 @@ test.describe.serial('retention-policy', () => { test.beforeEach(async () => { await poHomeChannel.sidenav.openChat(targetChannel); - await poHomeChannel.tabs.btnRoomInfo.click(); + await poHomeChannel.roomToolbar.openRoomInfo(); await poHomeChannel.tabs.room.btnEdit.click(); await poHomeChannel.tabs.room.pruneAccordion.click(); }); @@ -186,7 +186,7 @@ test.describe.serial('retention-policy', () => { await poHomeChannel.tabs.room.btnSave.click(); await poHomeChannel.dismissToast(); - await poHomeChannel.tabs.btnRoomInfo.click(); + await poHomeChannel.roomToolbar.openRoomInfo(); await poHomeChannel.tabs.room.btnEdit.click(); await poHomeChannel.tabs.room.pruneAccordion.click(); @@ -203,7 +203,7 @@ test.describe.serial('retention-policy', () => { await poHomeChannel.tabs.room.btnSave.click(); await poHomeChannel.dismissToast(); - await poHomeChannel.tabs.btnRoomInfo.click(); + await poHomeChannel.roomToolbar.openRoomInfo(); await poHomeChannel.tabs.room.btnEdit.click(); await poHomeChannel.tabs.room.pruneAccordion.click(); diff --git a/apps/meteor/tests/e2e/team-management.spec.ts b/apps/meteor/tests/e2e/team-management.spec.ts index d5e621097aed7..6bfc67238d465 100644 --- a/apps/meteor/tests/e2e/team-management.spec.ts +++ b/apps/meteor/tests/e2e/team-management.spec.ts @@ -156,7 +156,7 @@ test.describe.serial('teams-management', () => { test('should set targetTeam as readonly', async () => { await poHomeTeam.sidenav.openChat(targetTeam); - await poHomeTeam.tabs.btnRoomInfo.click(); + await poHomeTeam.roomToolbar.openTeamInfo(); await poHomeTeam.tabs.room.btnEdit.click(); await poHomeTeam.tabs.room.advancedSettingsAccordion.click(); await poHomeTeam.tabs.room.checkboxReadOnly.click(); @@ -171,7 +171,7 @@ test.describe.serial('teams-management', () => { ); await poHomeTeam.sidenav.openChat(targetTeam); - await poHomeTeam.tabs.btnChannels.click(); + await poHomeTeam.roomToolbar.openTeamChannels(); await expect(poHomeTeam.tabs.channels.btnAddExisting).not.toBeVisible(); }); @@ -190,7 +190,7 @@ test.describe.serial('teams-management', () => { ).toBe(200); await poHomeTeam.sidenav.openChat(targetTeam); - await poHomeTeam.tabs.btnChannels.click(); + await poHomeTeam.roomToolbar.openTeamChannels(); await expect(poHomeTeam.tabs.channels.btnCreateNew).not.toBeVisible(); }); @@ -209,7 +209,7 @@ test.describe.serial('teams-management', () => { ).toBe(200); await poHomeTeam.sidenav.openChat(targetTeam); - await poHomeTeam.tabs.btnChannels.click(); + await poHomeTeam.roomToolbar.openTeamChannels(); await expect(poHomeTeam.tabs.channels.btnCreateNew).toBeVisible(); await poHomeTeam.tabs.channels.btnCreateNew.click(); await poHomeTeam.sidenav.inputChannelName.type(targetChannelNameInTeam); @@ -235,7 +235,7 @@ test.describe.serial('teams-management', () => { ).toBe(200); await poHomeTeam.sidenav.openChat(targetTeam); - await poHomeTeam.tabs.btnChannels.click(); + await poHomeTeam.roomToolbar.openTeamChannels(); await expect(poHomeTeam.tabs.channels.btnCreateNew).toBeVisible(); await poHomeTeam.tabs.channels.btnCreateNew.click(); await poHomeTeam.sidenav.inputChannelName.type(targetGroupNameInTeam); @@ -250,7 +250,7 @@ test.describe.serial('teams-management', () => { expect((await api.post('/permissions.update', { permissions: [{ _id: 'move-room-to-team', roles: ['owner'] }] })).status()).toBe(200); await poHomeTeam.sidenav.openChat(targetTeam); - await poHomeTeam.tabs.btnChannels.click(); + await poHomeTeam.roomToolbar.openTeamChannels(); await poHomeTeam.tabs.channels.btnAddExisting.click(); await poHomeTeam.tabs.channels.inputChannels.fill(targetChannel); await page.locator(`.rcx-option__content:has-text("${targetChannel}")`).click(); @@ -278,7 +278,7 @@ test.describe.serial('teams-management', () => { ); await poHomeTeam.sidenav.openChat(targetTeam); - await poHomeTeam.tabs.btnChannels.click(); + await poHomeTeam.roomToolbar.openTeamChannels(); await poHomeTeam.tabs.channels.openChannelOptionMoreActions(targetGroupNameInTeam); await expect(page.getByRole('menu', { exact: true }).getByRole('menuitem', { name: 'Remove from team' })).not.toBeVisible(); }); @@ -287,7 +287,7 @@ test.describe.serial('teams-management', () => { expect((await api.post('/permissions.update', { permissions: [{ _id: 'remove-team-channel', roles: ['owner'] }] })).status()).toBe(200); await poHomeTeam.sidenav.openChat(targetTeam); - await poHomeTeam.tabs.btnChannels.click(); + await poHomeTeam.roomToolbar.openTeamChannels(); await poHomeTeam.tabs.channels.openChannelOptionMoreActions(targetGroupNameInTeam); await expect(page.getByRole('menu', { exact: true }).getByRole('menuitem', { name: 'Remove from team' })).toBeVisible(); await page.getByRole('menu', { exact: true }).getByRole('menuitem', { name: 'Remove from team' }).click(); @@ -313,7 +313,7 @@ test.describe.serial('teams-management', () => { // re-add channel to team await poHomeTeam.sidenav.openChat(targetTeam); - await poHomeTeam.tabs.btnChannels.click(); + await poHomeTeam.roomToolbar.openTeamChannels(); await poHomeTeam.tabs.channels.btnAddExisting.click(); await poHomeTeam.tabs.channels.inputChannels.fill(targetGroupNameInTeam); await page.locator(`.rcx-option__content:has-text("${targetGroupNameInTeam}")`).click(); @@ -332,14 +332,14 @@ test.describe.serial('teams-management', () => { expect((await api.post('/permissions.update', { permissions: [{ _id: 'delete-team-group', roles: ['owner'] }] })).status()).toBe(200); await poHomeTeam.sidenav.openChat(targetTeam); - await poHomeTeam.tabs.btnChannels.click(); + await poHomeTeam.roomToolbar.openTeamChannels(); await poHomeTeam.tabs.channels.openChannelOptionMoreActions(targetGroupNameInTeam); await expect(page.getByRole('menu', { exact: true }).getByRole('menuitem', { name: 'Delete' })).toBeVisible(); await page.getByRole('menu', { exact: true }).getByRole('menuitem', { name: 'Delete' }).click(); await poHomeTeam.tabs.channels.confirmDeleteRoom(); await poHomeTeam.sidenav.openChat(targetTeam); - await poHomeTeam.tabs.btnChannels.click(); + await poHomeTeam.roomToolbar.openTeamChannels(); await expect(poHomeTeam.tabs.channels.channelsList).not.toContainText(targetGroupNameInTeam); }); @@ -352,7 +352,7 @@ test.describe.serial('teams-management', () => { ); await poHomeTeam.sidenav.openChat(targetTeam); - await poHomeTeam.tabs.btnChannels.click(); + await poHomeTeam.roomToolbar.openTeamChannels(); await poHomeTeam.tabs.channels.openChannelOptionMoreActions(targetChannelNameInTeam); await expect(page.getByRole('menu', { exact: true }).getByRole('menuitem', { name: 'Remove from team' })).not.toBeVisible(); }); @@ -361,7 +361,7 @@ test.describe.serial('teams-management', () => { expect((await api.post('/permissions.update', { permissions: [{ _id: 'remove-team-channel', roles: ['owner'] }] })).status()).toBe(200); await poHomeTeam.sidenav.openChat(targetTeam); - await poHomeTeam.tabs.btnChannels.click(); + await poHomeTeam.roomToolbar.openTeamChannels(); await poHomeTeam.tabs.channels.openChannelOptionMoreActions(targetChannelNameInTeam); await expect(page.getByRole('menu', { exact: true }).getByRole('menuitem', { name: 'Remove from team' })).toBeVisible(); await page.getByRole('menu', { exact: true }).getByRole('menuitem', { name: 'Remove from team' }).click(); @@ -387,7 +387,7 @@ test.describe.serial('teams-management', () => { // re-add channel to team await poHomeTeam.sidenav.openChat(targetTeam); - await poHomeTeam.tabs.btnChannels.click(); + await poHomeTeam.roomToolbar.openTeamChannels(); await poHomeTeam.tabs.channels.btnAddExisting.click(); await poHomeTeam.tabs.channels.inputChannels.fill(targetChannelNameInTeam); await page.locator(`.rcx-option__content:has-text("${targetChannelNameInTeam}")`).click(); @@ -406,14 +406,14 @@ test.describe.serial('teams-management', () => { expect((await api.post('/permissions.update', { permissions: [{ _id: 'delete-team-channel', roles: ['owner'] }] })).status()).toBe(200); await poHomeTeam.sidenav.openChat(targetTeam); - await poHomeTeam.tabs.btnChannels.click(); + await poHomeTeam.roomToolbar.openTeamChannels(); await poHomeTeam.tabs.channels.openChannelOptionMoreActions(targetChannelNameInTeam); await expect(page.getByRole('menu', { exact: true }).getByRole('menuitem', { name: 'Delete' })).toBeVisible(); await page.getByRole('menu', { exact: true }).getByRole('menuitem', { name: 'Delete' }).click(); await poHomeTeam.tabs.channels.confirmDeleteRoom(); await poHomeTeam.sidenav.openChat(targetTeam); - await poHomeTeam.tabs.btnChannels.click(); + await poHomeTeam.roomToolbar.openTeamChannels(); await expect(poHomeTeam.tabs.channels.channelsList).not.toContainText(targetChannelNameInTeam); }); @@ -421,7 +421,7 @@ test.describe.serial('teams-management', () => { expect((await api.post('/permissions.update', { permissions: [{ _id: 'remove-team-channel', roles: ['owner'] }] })).status()).toBe(200); await poHomeTeam.sidenav.openChat(targetTeam); - await poHomeTeam.tabs.btnChannels.click(); + await poHomeTeam.roomToolbar.openTeamChannels(); await poHomeTeam.tabs.channels.openChannelOptionMoreActions(targetChannel); await page.getByRole('menu', { exact: true }).getByRole('menuitem', { name: 'Remove from team' }).click(); await poHomeTeam.tabs.channels.confirmRemoveChannel(); @@ -444,7 +444,7 @@ test.describe.serial('teams-management', () => { test('should delete targetTeamNonPrivate', async () => { await poHomeTeam.sidenav.openChat(targetTeamNonPrivate); - await poHomeTeam.tabs.btnRoomInfo.click(); + await poHomeTeam.roomToolbar.openTeamInfo(); await poHomeTeam.tabs.room.btnMore.click(); await poHomeTeam.tabs.room.getMoreOption('Delete').click(); await expect(poHomeTeam.tabs.room.confirmDeleteTeamModal).toBeVisible(); @@ -460,7 +460,7 @@ test.describe.serial('teams-management', () => { await user1Page.goto(`/group/${targetTeam}`); await user1Channel.content.waitForChannel(); - await user1Channel.tabs.btnRoomInfo.click(); + await user1Channel.roomToolbar.openTeamInfo(); await user1Channel.tabs.room.btnLeave.click(); await expect(user1Channel.tabs.room.confirmLeaveModal).toBeVisible(); @@ -476,7 +476,7 @@ test.describe.serial('teams-management', () => { test('should convert team into a channel', async () => { await poHomeTeam.sidenav.openChat(targetTeam); - await poHomeTeam.tabs.btnRoomInfo.click(); + await poHomeTeam.roomToolbar.openTeamInfo(); await poHomeTeam.tabs.room.btnMore.click(); await poHomeTeam.tabs.room.getMoreOption('Convert to Channel').click(); await expect(poHomeTeam.tabs.room.confirmConvertModal).toBeVisible(); diff --git a/packages/ui-client/src/components/Header/Header.spec.tsx b/packages/ui-client/src/components/Header/Header.spec.tsx new file mode 100644 index 0000000000000..9fd86f4504a7e --- /dev/null +++ b/packages/ui-client/src/components/Header/Header.spec.tsx @@ -0,0 +1,20 @@ +import { mockAppRoot } from '@rocket.chat/mock-providers'; +import { composeStories } from '@storybook/react'; +import { render } from '@testing-library/react'; +import { axe } from 'jest-axe'; + +import * as stories from './Header.stories'; + +const testCases = Object.values(composeStories(stories)).map((Story) => [Story.storyName || 'Story', Story]); + +test.each(testCases)(`renders %s without crashing`, async (_storyname, Story) => { + const { baseElement } = render(, { wrapper: mockAppRoot().build() }); + expect(baseElement).toMatchSnapshot(); +}); + +test.each(testCases)('%s should have no a11y violations', async (_storyname, Story) => { + const { container } = render(, { wrapper: mockAppRoot().build() }); + + const results = await axe(container); + expect(results).toHaveNoViolations(); +}); diff --git a/packages/ui-client/src/components/Header/Header.stories.tsx b/packages/ui-client/src/components/Header/Header.stories.tsx index cc129f191601a..cb3b006cc82bf 100644 --- a/packages/ui-client/src/components/Header/Header.stories.tsx +++ b/packages/ui-client/src/components/Header/Header.stories.tsx @@ -1,5 +1,5 @@ import type { IRoom } from '@rocket.chat/core-typings'; -import { Avatar } from '@rocket.chat/fuselage'; +import { Avatar, IconButton } from '@rocket.chat/fuselage'; import { SettingsContext } from '@rocket.chat/ui-contexts'; import { action } from '@storybook/addon-actions'; import type { Meta } from '@storybook/react'; @@ -95,7 +95,7 @@ export const Default = () => ( {icon && } {room.name} - + @@ -104,9 +104,9 @@ export const Default = () => ( - - - + + + ); @@ -114,14 +114,14 @@ export const Default = () => ( export const WithBurger = () => (
- + {avatar} {icon && } {room.name} - + @@ -130,9 +130,9 @@ export const WithBurger = () => ( - - - + + +
); @@ -144,23 +144,23 @@ export const WithActionBadge = () => ( {icon && } {room.name} - + {room.name} - + 1 - + 2 - + 99 - + ); diff --git a/packages/ui-client/src/components/Header/HeaderToolbar/HeaderToolbarAction.tsx b/packages/ui-client/src/components/Header/HeaderToolbar/HeaderToolbarAction.tsx index ba08eeba23327..26d476e67a17b 100644 --- a/packages/ui-client/src/components/Header/HeaderToolbar/HeaderToolbarAction.tsx +++ b/packages/ui-client/src/components/Header/HeaderToolbar/HeaderToolbarAction.tsx @@ -1,26 +1,15 @@ import { IconButton } from '@rocket.chat/fuselage'; -import { forwardRef } from 'react'; +import { ComponentProps, forwardRef } from 'react'; -// TODO: remove any and type correctly -const HeaderToolbarAction = forwardRef(function HeaderToolbarAction( - { id, icon, action, index, title, 'data-tooltip': tooltip, ...props }, +type HeaderToolbarActionProps = ComponentProps & { + tooltip?: string; +}; + +const HeaderToolbarAction = forwardRef(function HeaderToolbarAction( + { icon, title, tooltip, ...props }, ref, ) { - return ( - action(id)} - data-toolbox={index} - key={id} - icon={icon} - small - position='relative' - overflow='visible' - {...(tooltip ? { 'data-tooltip': tooltip, 'title': '' } : { title })} - {...props} - /> - ); + return ; }); export default HeaderToolbarAction; diff --git a/packages/ui-client/src/components/Header/__snapshots__/Header.spec.tsx.snap b/packages/ui-client/src/components/Header/__snapshots__/Header.spec.tsx.snap new file mode 100644 index 0000000000000..139868f4a75bb --- /dev/null +++ b/packages/ui-client/src/components/Header/__snapshots__/Header.spec.tsx.snap @@ -0,0 +1,440 @@ +// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing + +exports[`renders Default without crashing 1`] = ` + +
+
+
+
+
+ +
+
+
+
+
+ +
+

+ general general general general general general general general general general general general general general general general general general general +

+ + + +
+
+
+ general general general general general general general general general general general general general general general general general general general +
+
+
+ +
+
+
+
+ +`; + +exports[`renders WithActionBadge without crashing 1`] = ` + +
+
+
+
+
+ +
+
+
+
+
+ +
+

+ general general general general general general general general general general general general general general general general general general general +

+ +
+
+
+ general general general general general general general general general general general general general general general general general general general +
+
+
+ +
+
+
+
+ +`; + +exports[`renders WithBurger without crashing 1`] = ` + +
+
+
+ +
+
+ +
+
+
+
+
+ +
+

+ general general general general general general general general general general general general general general general general general general general +

+ + + +
+
+
+ general general general general general general general general general general general general general general general general general general general +
+
+
+ +
+
+
+
+ +`; diff --git a/packages/ui-client/src/components/HeaderV2/Header.spec.tsx b/packages/ui-client/src/components/HeaderV2/Header.spec.tsx new file mode 100644 index 0000000000000..9fd86f4504a7e --- /dev/null +++ b/packages/ui-client/src/components/HeaderV2/Header.spec.tsx @@ -0,0 +1,20 @@ +import { mockAppRoot } from '@rocket.chat/mock-providers'; +import { composeStories } from '@storybook/react'; +import { render } from '@testing-library/react'; +import { axe } from 'jest-axe'; + +import * as stories from './Header.stories'; + +const testCases = Object.values(composeStories(stories)).map((Story) => [Story.storyName || 'Story', Story]); + +test.each(testCases)(`renders %s without crashing`, async (_storyname, Story) => { + const { baseElement } = render(, { wrapper: mockAppRoot().build() }); + expect(baseElement).toMatchSnapshot(); +}); + +test.each(testCases)('%s should have no a11y violations', async (_storyname, Story) => { + const { container } = render(, { wrapper: mockAppRoot().build() }); + + const results = await axe(container); + expect(results).toHaveNoViolations(); +}); diff --git a/packages/ui-client/src/components/HeaderV2/Header.stories.tsx b/packages/ui-client/src/components/HeaderV2/Header.stories.tsx index 2438dfb90bb7a..62b1e6abb40a3 100644 --- a/packages/ui-client/src/components/HeaderV2/Header.stories.tsx +++ b/packages/ui-client/src/components/HeaderV2/Header.stories.tsx @@ -1,5 +1,5 @@ import type { IRoom } from '@rocket.chat/core-typings'; -import { Avatar, Box } from '@rocket.chat/fuselage'; +import { Avatar, Box, IconButton } from '@rocket.chat/fuselage'; import { SettingsContext } from '@rocket.chat/ui-contexts'; import { action } from '@storybook/addon-actions'; import type { Meta } from '@storybook/react'; @@ -99,15 +99,15 @@ export const Default = () => ( {icon && } {room.name} - + - - - + + + ); @@ -115,7 +115,7 @@ export const Default = () => ( export const WithBurger = () => (
- + @@ -124,15 +124,15 @@ export const WithBurger = () => ( {icon && } {room.name} - + - - - + + +
); @@ -146,20 +146,20 @@ export const WithActionBadge = () => ( {icon && } {room.name} - + - + 1 - + 2 - + 99 - + ); @@ -174,16 +174,16 @@ export const WithTopic = () => ( {icon && } {room.name} - + {room.topic} - - - + + + @@ -199,15 +199,15 @@ export const WithAnnouncement = () => ( {icon && } {room.name} - + - - - + + + {room.announcement} diff --git a/packages/ui-client/src/components/HeaderV2/HeaderToolbar/HeaderToolbarAction.tsx b/packages/ui-client/src/components/HeaderV2/HeaderToolbar/HeaderToolbarAction.tsx index ba08eeba23327..26d476e67a17b 100644 --- a/packages/ui-client/src/components/HeaderV2/HeaderToolbar/HeaderToolbarAction.tsx +++ b/packages/ui-client/src/components/HeaderV2/HeaderToolbar/HeaderToolbarAction.tsx @@ -1,26 +1,15 @@ import { IconButton } from '@rocket.chat/fuselage'; -import { forwardRef } from 'react'; +import { ComponentProps, forwardRef } from 'react'; -// TODO: remove any and type correctly -const HeaderToolbarAction = forwardRef(function HeaderToolbarAction( - { id, icon, action, index, title, 'data-tooltip': tooltip, ...props }, +type HeaderToolbarActionProps = ComponentProps & { + tooltip?: string; +}; + +const HeaderToolbarAction = forwardRef(function HeaderToolbarAction( + { icon, title, tooltip, ...props }, ref, ) { - return ( - action(id)} - data-toolbox={index} - key={id} - icon={icon} - small - position='relative' - overflow='visible' - {...(tooltip ? { 'data-tooltip': tooltip, 'title': '' } : { title })} - {...props} - /> - ); + return ; }); export default HeaderToolbarAction; diff --git a/packages/ui-client/src/components/HeaderV2/__snapshots__/Header.spec.tsx.snap b/packages/ui-client/src/components/HeaderV2/__snapshots__/Header.spec.tsx.snap new file mode 100644 index 0000000000000..43a5f6bad0ebd --- /dev/null +++ b/packages/ui-client/src/components/HeaderV2/__snapshots__/Header.spec.tsx.snap @@ -0,0 +1,673 @@ +// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing + +exports[`renders Default without crashing 1`] = ` + +
+
+
+
+
+ +
+
+
+
+
+ +
+

+ general general general general general general general general general general general general general general general general general general general +

+ + + +
+
+ +
+
+
+
+ +`; + +exports[`renders WithActionBadge without crashing 1`] = ` + +
+
+
+
+
+ +
+
+
+
+
+ +
+

+ general general general general general general general general general general general general general general general general general general general +

+ +
+
+ +
+
+
+
+ +`; + +exports[`renders WithAnnouncement without crashing 1`] = ` + +
+
+
+
+
+ +
+
+
+
+
+ +
+

+ general general general general general general general general general general general general general general general general general general general +

+ + + +
+
+ +
+
+
+
+
+ Announcement +
+
+
+ +`; + +exports[`renders WithBurger without crashing 1`] = ` + +
+
+
+ +
+
+ +
+
+
+
+
+ +
+

+ general general general general general general general general general general general general general general general general general general general +

+ + + +
+
+ +
+
+
+
+ +`; + +exports[`renders WithTopic without crashing 1`] = ` + +
+
+
+
+
+ +
+
+
+
+
+ +
+

+ general general general general general general general general general general general general general general general general general general general +

+ + + +
+ lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum +
+
+
+ +
+
+
+
+ +`;