diff --git a/apps/meteor/client/views/admin/AdministrationRouter.tsx b/apps/meteor/client/views/admin/AdministrationRouter.tsx index 9a86f6ea61f78..1575ab3020ed5 100644 --- a/apps/meteor/client/views/admin/AdministrationRouter.tsx +++ b/apps/meteor/client/views/admin/AdministrationRouter.tsx @@ -49,7 +49,7 @@ const AdministrationRouter = ({ children }: AdministrationRouterProps): ReactEle return; } - const defaultRoutePath = getAdminSidebarItems().find(firstSidebarPage)?.href ?? '/admin/workspace'; + const defaultRoutePath = getAdminSidebarItems().find(firstSidebarPage)?.href ?? '/admin/workspace-status'; if (isGoRocketChatLink(defaultRoutePath)) { window.open(defaultRoutePath, '_blank'); diff --git a/apps/meteor/client/views/admin/info/Feature.js b/apps/meteor/client/views/admin/info/Feature.js deleted file mode 100644 index a4edaa1549c0c..0000000000000 --- a/apps/meteor/client/views/admin/info/Feature.js +++ /dev/null @@ -1,13 +0,0 @@ -import { Box, Icon } from '@rocket.chat/fuselage'; -import React from 'react'; - -const Feature = ({ label, enabled }) => ( - - - - - {label} - -); - -export default Feature; diff --git a/apps/meteor/client/views/admin/info/Feature.stories.tsx b/apps/meteor/client/views/admin/info/Feature.stories.tsx deleted file mode 100644 index 0f1606d730a49..0000000000000 --- a/apps/meteor/client/views/admin/info/Feature.stories.tsx +++ /dev/null @@ -1,26 +0,0 @@ -import type { ComponentMeta, ComponentStory } from '@storybook/react'; -import React from 'react'; - -import Feature from './Feature'; - -export default { - title: 'Admin/Info/Feature', - component: Feature, - parameters: { - layout: 'centered', - }, -} as ComponentMeta; - -const Template: ComponentStory = (args) => ; - -export const Enabled = Template.bind({}); -Enabled.args = { - enabled: true, - label: 'Awesome feature', -}; - -export const NotEnabled = Template.bind({}); -NotEnabled.args = { - enabled: false, - label: 'Awesome feature', -}; diff --git a/apps/meteor/client/views/admin/info/InformationPage.stories.tsx b/apps/meteor/client/views/admin/info/InformationPage.stories.tsx deleted file mode 100644 index 222f31f883341..0000000000000 --- a/apps/meteor/client/views/admin/info/InformationPage.stories.tsx +++ /dev/null @@ -1,309 +0,0 @@ -import type { ComponentMeta, ComponentStory } from '@storybook/react'; -import React from 'react'; - -import InformationPage from './InformationPage'; - -export default { - title: 'Admin/Info/InformationPage', - component: InformationPage, - parameters: { - layout: 'fullscreen', - serverContext: { - baseURL: 'http://localhost:3000', - callEndpoint: { - 'GET /v1/licenses.get': async () => ({ - licenses: [ - { - url: 'https://example.com/license.txt', - expiry: '2020-01-01T00:00:00.000Z', - maxActiveUsers: 100, - modules: ['auditing'], - maxGuestUsers: 100, - maxRoomsPerGuest: 100, - }, - ], - }), - 'GET /v1/licenses.maxActiveUsers': async () => ({ - maxActiveUsers: 123, - activeUsers: 32, - }), - }, - callMethod: { - 'license:getTags': async () => [{ name: 'Example plan', color: 'red' }], - }, - }, - }, - decorators: [(fn) => {fn()}], - argTypes: { - onClickDownloadInfo: { action: 'onClickDownloadInfo' }, - onClickRefreshButton: { action: 'onClickRefreshButton' }, - }, - args: { - canViewStatistics: true, - info: { - build: { - arch: 'x64', - cpus: 1, - platform: 'linux', - osRelease: 'Ubuntu 18.04.1 LTS', - date: '2020-01-01T00:00:00.000Z', - freeMemory: 1.3 * 1024 * 1024 * 1024, - nodeVersion: 'v12.0.0', - totalMemory: 2.4 * 1024 * 1024 * 1024, - }, - version: '1.0.0', - marketplaceApiVersion: '1.0.0', - commit: { - author: 'John Doe', - date: '2020-01-01T00:00:00.000Z', - branch: 'master', - hash: '1234567890', - subject: 'This is a commit', - tag: 'v1.0.0', - }, - }, - statistics: { - // Users - totalUsers: 123, - onlineUsers: 23, - awayUsers: 32, - busyUsers: 21, - offlineUsers: 123 - 23 - 32 - 21, - // Types and Distribution - totalConnectedUsers: 32, - activeUsers: 12, - activeGuests: 32 - 12, - nonActiveUsers: 0, - appUsers: 23, - // Uploads - uploadsTotal: 321, - uploadsTotalSize: 123 * 1024 * 1024, - // Rooms - totalRooms: 231, - totalChannels: 12, - totalPrivateGroups: 23, - totalDirect: 21, - totalDiscussions: 32, - totalLivechat: 31, - // Messages - totalMessages: 321, - totalThreads: 123, - totalChannelMessages: 213, - totalPrivateGroupMessages: 21, - totalDirectMessages: 23, - totalLivechatMessages: 31, - // - - _id: '', - wizard: {}, - uniqueId: '', - installedAt: '', - version: '', - tag: '', - branch: '', - userLanguages: {}, - teams: { - totalTeams: 0, - totalRoomsInsideTeams: 0, - totalDefaultRoomsInsideTeams: 0, - }, - totalLivechatManagers: 10, - totalCustomFields: 10, - totalTriggers: 1, - isDepartmentRemovalEnabled: false, - archivedDepartments: 0, - totalLivechatVisitors: 0, - totalLivechatAgents: 0, - livechatEnabled: false, - federatedServers: 0, - federatedUsers: 0, - lastLogin: '', - lastMessageSentAt: new Date(), - lastSeenSubscription: '', - os: { - type: '', - platform: 'linux', - arch: '', - release: '', - uptime: 0, - loadavg: [0, 0, 0], - totalmem: 0, - freemem: 0, - cpus: [ - { - model: '', - speed: 0, - times: { - user: 0, - nice: 0, - sys: 0, - idle: 0, - irq: 0, - }, - }, - ], - }, - process: { - nodeVersion: '', - pid: 0, - uptime: 0, - }, - deploy: { - method: '', - platform: '', - }, - enterpriseReady: false, - migration: { - _id: '', - locked: false, - version: 0, - buildAt: '', - lockedAt: '', - }, - instanceCount: 0, - msEnabled: false, - oplogEnabled: false, - mongoVersion: '', - mongoStorageEngine: '', - pushQueue: 0, - omnichannelSources: [{}], - departments: 0, - routingAlgorithm: '', - onHoldEnabled: false, - emailInboxes: 0, - BusinessHours: {}, - lastChattedAgentPreferred: false, - assignNewConversationsToContactManager: false, - visitorAbandonment: '', - chatsOnHold: 0, - voipEnabled: false, - voipCalls: 0, - voipExtensions: 0, - voipSuccessfulCalls: 0, - voipErrorCalls: 0, - voipOnHoldCalls: 0, - webRTCEnabled: false, - webRTCEnabledForOmnichannel: false, - omnichannelWebRTCCalls: 1, - federationOverviewData: { - numberOfEvents: 0, - numberOfFederatedUsers: 0, - numberOfServers: 0, - }, - readReceiptsEnabled: false, - readReceiptsDetailed: false, - uniqueUsersOfLastWeek: { data: [], day: 0, month: 0, year: 0 }, - uniqueUsersOfLastMonth: { data: [], day: 0, month: 0, year: 0 }, - uniqueUsersOfYesterday: { data: [], day: 0, month: 0, year: 0 }, - uniqueDevicesOfYesterday: { data: [], day: 0, month: 0, year: 0 }, - uniqueDevicesOfLastWeek: { data: [], day: 0, month: 0, year: 0 }, - uniqueDevicesOfLastMonth: { data: [], day: 0, month: 0, year: 0 }, - uniqueOSOfYesterday: { data: [], day: 0, month: 0, year: 0 }, - uniqueOSOfLastWeek: { data: [], day: 0, month: 0, year: 0 }, - uniqueOSOfLastMonth: { data: [], day: 0, month: 0, year: 0 }, - apps: { - engineVersion: 'x.y.z', - enabled: false, - totalInstalled: 0, - totalActive: 0, - totalFailed: 0, - }, - services: {}, - importer: {}, - settings: {}, - integrations: { - totalIntegrations: 0, - totalIncoming: 0, - totalIncomingActive: 0, - totalOutgoing: 0, - totalOutgoingActive: 0, - totalWithScriptEnabled: 0, - }, - enterprise: { - modules: [], - tags: [], - seatRequests: 0, - livechatTags: 0, - cannedResponses: 0, - priorities: 0, - businessUnits: 0, - }, - createdAt: new Date(), - showHomeButton: false, - homeTitleChanged: false, - homeBodyChanged: false, - customCSSChanged: false, - onLogoutCustomScriptChanged: false, - loggedOutCustomScriptChanged: false, - loggedInCustomScriptChanged: false, - logoChange: false, - customCSS: 0, - customScript: 0, - tabInvites: 0, - totalEmailInvitation: 0, - totalRoomsWithStarred: 0, - totalRoomsWithPinned: 0, - totalStarred: 0, - totalPinned: 0, - totalE2ERooms: 0, - totalE2EMessages: 0, - totalUserTOTP: 0, - totalUserEmail2fa: 0, - usersCreatedADM: 0, - usersCreatedSlackImport: 0, - usersCreatedSlackUser: 0, - usersCreatedCSVImport: 0, - usersCreatedHiptext: 0, - totalOTR: 0, - totalOTRRooms: 0, - slashCommandsJitsi: 0, - messageAuditApply: 0, - messageAuditLoad: 0, - dashboardCount: 0, - joinJitsiButton: 0, - totalBroadcastRooms: 0, - totalRoomsWithActiveLivestream: 0, - totalTriggeredEmails: 0, - totalLinkInvitation: 0, - roomsInsideTeams: 0, - totalEncryptedMessages: 0, - totalLinkInvitationUses: 0, - totalManuallyAddedUsers: 0, - videoConf: { - videoConference: { - started: 0, - ended: 0, - }, - direct: { - calling: 0, - started: 0, - ended: 0, - }, - livechat: { - started: 0, - ended: 0, - }, - settings: { - provider: '', - dms: false, - channels: false, - groups: false, - teams: false, - }, - }, - totalSubscriptionRoles: 0, - totalUserRoles: 0, - totalCustomRoles: 0, - totalWebRTCCalls: 0, - uncaughtExceptionsCount: 0, - matrixFederation: { - enabled: false, - }, - }, - instances: [], - }, -} as ComponentMeta; - -const Template: ComponentStory = (args) => ; - -export const Default = Template.bind({}); -Default.storyName = 'InformationPage'; diff --git a/apps/meteor/client/views/admin/info/LicenseCard.stories.tsx b/apps/meteor/client/views/admin/info/LicenseCard.stories.tsx deleted file mode 100644 index 929a3c8f04d2e..0000000000000 --- a/apps/meteor/client/views/admin/info/LicenseCard.stories.tsx +++ /dev/null @@ -1,92 +0,0 @@ -import type { ComponentMeta, ComponentStory } from '@storybook/react'; -import React from 'react'; - -import LicenseCard from './LicenseCard'; - -export default { - title: 'Admin/Info/LicenseCard', - component: LicenseCard, - parameters: { - layout: 'centered', - }, -} as ComponentMeta; - -const Template: ComponentStory = () => ; - -export const Example = Template.bind({}); -Example.parameters = { - serverContext: { - callEndpoint: { - 'GET /v1/licenses.get': async () => ({ - licenses: [ - { - url: 'https://example.com/license.txt', - expiry: '2020-01-01T00:00:00.000Z', - maxActiveUsers: 100, - modules: ['auditing'], - maxGuestUsers: 100, - maxRoomsPerGuest: 100, - }, - ], - }), - }, - callMethod: { - 'license:getTags': async () => [{ name: 'Example plan', color: 'red' }], - }, - }, -}; - -export const MultipleLicenses = Template.bind({}); -MultipleLicenses.parameters = { - serverContext: { - callEndpoint: { - 'GET /v1/licenses.get': async () => ({ - licenses: [ - { - url: 'https://example.com/license.txt', - expiry: '2020-01-01T00:00:00.000Z', - maxActiveUsers: 100, - modules: ['auditing'], - maxGuestUsers: 100, - maxRoomsPerGuest: 100, - }, - { - url: 'https://example.com/license.txt', - expiry: '2020-01-01T00:00:00.000Z', - maxActiveUsers: 100, - modules: ['engagement-dashboard'], - maxGuestUsers: 100, - maxRoomsPerGuest: 100, - }, - ], - }), - }, - callMethod: { - 'license:getTags': async () => [{ name: 'Example plan', color: 'red' }], - }, - }, -}; - -export const Loading = Template.bind({}); -Loading.parameters = { - serverContext: { - callEndpoint: { - 'GET /v1/licenses.get': 'infinite', - }, - callMethod: { - 'license:getTags': 'infinite', - }, - }, -}; - -export const Errored = Template.bind({}); -Errored.parameters = { - serverContext: { - callEndpoint: { - 'GET /v1/licenses.get': 'errored', - }, - callMethod: { - 'license:getTags': 'errored', - }, - }, -}; diff --git a/apps/meteor/client/views/admin/info/LicenseCard.tsx b/apps/meteor/client/views/admin/info/LicenseCard.tsx deleted file mode 100644 index bccbddaa6db73..0000000000000 --- a/apps/meteor/client/views/admin/info/LicenseCard.tsx +++ /dev/null @@ -1,88 +0,0 @@ -import { ButtonGroup, Button, Skeleton } from '@rocket.chat/fuselage'; -import { useMutableCallback } from '@rocket.chat/fuselage-hooks'; -import { Card, CardBody, CardCol, CardTitle, CardColSection, CardColTitle, CardFooter } from '@rocket.chat/ui-client'; -import { useSetModal, useSetting, useTranslation } from '@rocket.chat/ui-contexts'; -import type { ReactElement } from 'react'; -import React from 'react'; - -import PlanTag from '../../../components/PlanTag'; -import { useLicense } from '../../../hooks/useLicense'; -import Feature from './Feature'; -import OfflineLicenseModal from './OfflineLicenseModal'; - -const LicenseCard = (): ReactElement => { - const t = useTranslation(); - const setModal = useSetModal(); - - const currentLicense = useSetting('Enterprise_License') as string; - const licenseStatus = useSetting('Enterprise_License_Status') as string; - - const isAirGapped = true; - - const { data, isError, isLoading } = useLicense(); - - const { modules = [] } = isLoading || isError || !data?.licenses?.length ? {} : data?.licenses[0]; - - const hasEngagement = modules.includes('engagement-dashboard'); - const hasOmnichannel = modules.includes('livechat-enterprise'); - const hasAuditing = modules.includes('auditing'); - const hasCannedResponses = modules.includes('canned-responses'); - const hasReadReceipts = modules.includes('message-read-receipt'); - - const handleApplyLicense = useMutableCallback(() => - setModal( - { - setModal(); - }} - license={currentLicense} - licenseStatus={licenseStatus} - />, - ), - ); - - return ( - - {t('License')} - - - - - - - {t('Features')} - {isLoading ? ( - <> - - - - - > - ) : ( - <> - - - - - - > - )} - - - - - - {isAirGapped ? ( - - {t(currentLicense ? 'Cloud_Change_Offline_License' : 'Cloud_Apply_Offline_License')} - - ) : ( - {t('Cloud_connectivity')} - )} - - - - ); -}; - -export default LicenseCard; diff --git a/apps/meteor/client/views/admin/info/OfflineLicenseModal.stories.tsx b/apps/meteor/client/views/admin/info/OfflineLicenseModal.stories.tsx deleted file mode 100644 index 74e69f7bdf768..0000000000000 --- a/apps/meteor/client/views/admin/info/OfflineLicenseModal.stories.tsx +++ /dev/null @@ -1,59 +0,0 @@ -import type { ComponentMeta, ComponentStory } from '@storybook/react'; -import { screen, userEvent } from '@storybook/testing-library'; -import React from 'react'; - -import OfflineLicenseModal from './OfflineLicenseModal'; - -export default { - title: 'Admin/Info/OfflineLicenseModal', - component: OfflineLicenseModal, - parameters: { - layout: 'fullscreen', - serverContext: { - callEndpoint: { - 'POST /v1/licenses.add': async ({ license }: { license: string }) => ({ - success: license === 'valid-license', - }), - }, - }, - }, - argTypes: { - onClose: { action: 'onClose' }, - }, -} as ComponentMeta; - -const Template: ComponentStory = (args) => ; - -export const WithValidLicense = Template.bind({}); -WithValidLicense.args = { - license: 'valid-license', - licenseStatus: 'valid', -}; - -export const WithInvalidLicense = Template.bind({}); -WithInvalidLicense.args = { - license: 'invalid-license', - licenseStatus: 'invalid', -}; - -export const ApplyingValidLicense = Template.bind({}); -ApplyingValidLicense.play = async () => { - const licenseInput = screen.getByRole('textbox'); - - await userEvent.type(licenseInput, 'valid-license', { delay: 100 }); - - const applyButton = screen.getByRole('button', { name: 'Apply license' }); - - userEvent.click(applyButton); -}; - -export const ApplyingInvalidLicense = Template.bind({}); -ApplyingInvalidLicense.play = async () => { - const licenseInput = screen.getByRole('textbox'); - - await userEvent.type(licenseInput, 'invalid-license', { delay: 100 }); - - const applyButton = screen.getByRole('button', { name: 'Apply license' }); - - userEvent.click(applyButton); -}; diff --git a/apps/meteor/client/views/admin/info/OfflineLicenseModal.tsx b/apps/meteor/client/views/admin/info/OfflineLicenseModal.tsx deleted file mode 100644 index 0ece529fc2d31..0000000000000 --- a/apps/meteor/client/views/admin/info/OfflineLicenseModal.tsx +++ /dev/null @@ -1,121 +0,0 @@ -import { Modal, Box, ButtonGroup, Button, Scrollable, Callout, Margins } from '@rocket.chat/fuselage'; -import { useMutableCallback } from '@rocket.chat/fuselage-hooks'; -import { useEndpoint, useToastMessageDispatch, useTranslation } from '@rocket.chat/ui-contexts'; -import type { ComponentProps, FormEvent, ReactElement } from 'react'; -import React, { useState } from 'react'; - -import { queryClient } from '../../../lib/queryClient'; - -type OfflineLicenseModalProps = { - onClose: () => void; - license: string; - licenseStatus: string; -} & ComponentProps; - -const OfflineLicenseModal = ({ onClose, license, licenseStatus, ...props }: OfflineLicenseModalProps): ReactElement => { - const t = useTranslation(); - - const dispatchToastMessage = useToastMessageDispatch(); - - const [newLicense, setNewLicense] = useState(license); - const [isUpdating, setIsUpdating] = useState(false); - const [status, setStatus] = useState(licenseStatus); - const [lastSetLicense, setLastSetLicense] = useState(license); - - const handleNewLicense = (e: FormEvent): void => { - setNewLicense(e.currentTarget.value); - }; - - const hasChanges = lastSetLicense !== newLicense; - - const handlePaste = useMutableCallback(async () => { - try { - const text = await navigator.clipboard.readText(); - setNewLicense(text); - } catch (error) { - dispatchToastMessage({ type: 'error', message: `${t('Paste_error')}: ${error}` }); - } - }); - - const addLicense = useEndpoint('POST', '/v1/licenses.add'); - - const handleApplyLicense = useMutableCallback(async (e) => { - e.preventDefault(); - setLastSetLicense(newLicense); - try { - setIsUpdating(true); - await addLicense({ license: newLicense }); - queryClient.invalidateQueries(['licenses']); - - dispatchToastMessage({ type: 'success', message: t('Cloud_License_applied_successfully') }); - onClose(); - } catch (error) { - dispatchToastMessage({ - type: 'error', - message: error && typeof error === 'object' && 'error' in error ? (error as any).error : String(error), - }); - setIsUpdating(false); - setStatus('invalid'); - } - }); - - return ( - ) => } {...props}> - - {t('Cloud_Apply_Offline_License')} - - - - - {t('Cloud_register_offline_finish_helper')} - - - - - - - - - {t('Paste')} - - - - - {status === 'invalid' && {t('Cloud_Invalid_license')}} - - - - - {t('Cloud_Apply_license')} - - - - - ); -}; - -export default OfflineLicenseModal; diff --git a/apps/meteor/client/views/admin/info/InformationPage.tsx b/apps/meteor/client/views/admin/info/WorkspaceStatusPage.tsx similarity index 94% rename from apps/meteor/client/views/admin/info/InformationPage.tsx rename to apps/meteor/client/views/admin/info/WorkspaceStatusPage.tsx index a37cb94e96661..c6c228ff21eb5 100644 --- a/apps/meteor/client/views/admin/info/InformationPage.tsx +++ b/apps/meteor/client/views/admin/info/WorkspaceStatusPage.tsx @@ -11,7 +11,7 @@ import MessagesRoomsCard from './MessagesRoomsCard'; import UsersUploadsCard from './UsersUploadsCard'; import VersionCard from './VersionCard'; -type InformationPageProps = { +type WorkspaceStatusPageProps = { canViewStatistics: boolean; serverInfo: IServerInfo; statistics: IStats; @@ -20,14 +20,14 @@ type InformationPageProps = { onClickDownloadInfo: () => void; }; -const InformationPage = ({ +const WorkspaceStatusPage = ({ canViewStatistics, serverInfo, statistics, instances, onClickRefreshButton, onClickDownloadInfo, -}: InformationPageProps) => { +}: WorkspaceStatusPageProps) => { const t = useTranslation(); const { data } = useIsEnterprise(); @@ -36,7 +36,7 @@ const InformationPage = ({ const alertOplogForMultipleInstances = warningMultipleInstances && !statistics.oplogEnabled; return ( - + {canViewStatistics && ( @@ -99,4 +99,4 @@ const InformationPage = ({ ); }; -export default memo(InformationPage); +export default memo(WorkspaceStatusPage); diff --git a/apps/meteor/client/views/admin/info/InformationRoute.tsx b/apps/meteor/client/views/admin/info/WorkspaceStatusRoute.tsx similarity index 91% rename from apps/meteor/client/views/admin/info/InformationRoute.tsx rename to apps/meteor/client/views/admin/info/WorkspaceStatusRoute.tsx index 6d1b2a05c61cd..ad1e1daa52fc1 100644 --- a/apps/meteor/client/views/admin/info/InformationRoute.tsx +++ b/apps/meteor/client/views/admin/info/WorkspaceStatusRoute.tsx @@ -8,9 +8,9 @@ import PageSkeleton from '../../../components/PageSkeleton'; import { useWorkspaceInfo } from '../../../hooks/useWorkspaceInfo'; import { downloadJsonAs } from '../../../lib/download'; import NotAuthorizedPage from '../../notAuthorized/NotAuthorizedPage'; -import InformationPage from './InformationPage'; +import WorkspaceStatusPage from './WorkspaceStatusPage'; -const InformationRoute = (): ReactElement => { +const WorkspaceStatusRoute = (): ReactElement => { const t = useTranslation(); const canViewStatistics = usePermission('view-statistics'); @@ -54,7 +54,7 @@ const InformationRoute = (): ReactElement => { if (canViewStatistics) { return ( - { return ; }; -export default memo(InformationRoute); +export default memo(WorkspaceStatusRoute); diff --git a/apps/meteor/client/views/admin/routes.tsx b/apps/meteor/client/views/admin/routes.tsx index fa418b986cc1e..66fdb53305d4c 100644 --- a/apps/meteor/client/views/admin/routes.tsx +++ b/apps/meteor/client/views/admin/routes.tsx @@ -13,9 +13,9 @@ declare module '@rocket.chat/ui-contexts' { pathname: `/admin/sounds${`/${string}` | ''}${`/${string}` | ''}`; pattern: '/admin/sounds/:context?/:id?'; }; - 'admin-info': { - pathname: '/admin/workspace'; - pattern: '/admin/workspace'; + 'workspace-status': { + pathname: '/admin/workspace-status'; + pattern: '/admin/workspace-status'; }; 'admin-import': { pathname: '/admin/import'; @@ -119,9 +119,9 @@ registerAdminRoute('/sounds/:context?/:id?', { component: lazy(() => import('./customSounds/CustomSoundsRoute')), }); -registerAdminRoute('/workspace', { - name: 'admin-info', - component: lazy(() => import('./info/InformationRoute')), +registerAdminRoute('/workspace-status', { + name: 'workspace-status', + component: lazy(() => import('./info/WorkspaceStatusRoute')), }); registerAdminRoute('/import', { diff --git a/apps/meteor/client/views/admin/sidebarItems.ts b/apps/meteor/client/views/admin/sidebarItems.ts index 8c4acdb3ea9a9..3e07c22f63960 100644 --- a/apps/meteor/client/views/admin/sidebarItems.ts +++ b/apps/meteor/client/views/admin/sidebarItems.ts @@ -8,7 +8,7 @@ export const { subscribeToSidebarItems: subscribeToAdminSidebarItems, } = createSidebarItems([ { - href: '/admin/workspace', + href: '/admin/workspace-status', i18nLabel: 'Workspace_status', icon: 'info-circled', permissionGranted: (): boolean => hasPermission('view-statistics'), diff --git a/apps/meteor/tests/e2e/administration-menu.spec.ts b/apps/meteor/tests/e2e/administration-menu.spec.ts index e105b4a2a0d45..c572f35020cb4 100644 --- a/apps/meteor/tests/e2e/administration-menu.spec.ts +++ b/apps/meteor/tests/e2e/administration-menu.spec.ts @@ -21,11 +21,11 @@ test.describe.serial('administration-menu', () => { await expect(page).toHaveURL('admin/upgrade/go-fully-featured'); }); - test('expect open info page', async ({ page }) => { + test('expect open Workspace status page', async ({ page }) => { test.skip(!IS_EE, 'Enterprise only'); - await poHomeDiscussion.sidenav.openAdministrationByLabel('Workspace'); + await poHomeDiscussion.sidenav.openAdministrationByLabel('Workspace status'); - await expect(page).toHaveURL('admin/workspace'); + await expect(page).toHaveURL('admin/workspace-status'); }); test('expect open omnichannel page', async ({ page }) => {
{t('Cloud_register_offline_finish_helper')}