diff --git a/apps/meteor/client/components/UserCard/UserCard.tsx b/apps/meteor/client/components/UserCard/UserCard.tsx index d8878524fce35..7482621c49ae4 100644 --- a/apps/meteor/client/components/UserCard/UserCard.tsx +++ b/apps/meteor/client/components/UserCard/UserCard.tsx @@ -49,7 +49,7 @@ const UserCard = ({ const isLayoutEmbedded = useEmbeddedLayout(); return ( - +
{username && } diff --git a/apps/meteor/client/components/avatar/UserAvatarEditor/UserAvatarEditor.tsx b/apps/meteor/client/components/avatar/UserAvatarEditor/UserAvatarEditor.tsx index 4a80185a399c0..b88acc2781335 100644 --- a/apps/meteor/client/components/avatar/UserAvatarEditor/UserAvatarEditor.tsx +++ b/apps/meteor/client/components/avatar/UserAvatarEditor/UserAvatarEditor.tsx @@ -80,7 +80,7 @@ function UserAvatarEditor({ currentUsername, username, setAvatarObj, name, disab size='x124' url={url} key={url} - data-qa-id='UserAvatarEditor' + alt={t('__username__profile_picture', { username: currentUsername || 'user' })} username={currentUsername || ''} etag={etag} style={{ @@ -102,7 +102,6 @@ function UserAvatarEditor({ currentUsername, username, setAvatarObj, name, disab title={t('Add_URL')} mi={4} onClick={handleAddUrl} - data-qa-id='UserAvatarEditorSetAvatarLink' /> @@ -110,7 +109,6 @@ function UserAvatarEditor({ currentUsername, username, setAvatarObj, name, disab {t('Use_url_for_avatar')} ) => ( @@ -226,7 +225,6 @@ const CreateChannelModal = ({ teamId = '', mainRoom, onClose, reload }: CreateCh validateChannelName(value), @@ -248,7 +246,7 @@ const CreateChannelModal = ({ teamId = '', mainRoom, onClose, reload }: CreateCh {t('Topic')} - + {t('Displayed_next_to_name')} @@ -407,7 +405,7 @@ const CreateChannelModal = ({ teamId = '', mainRoom, onClose, reload }: CreateCh - diff --git a/apps/meteor/client/navbar/NavBarPagesGroup/actions/CreateDirectMessage.tsx b/apps/meteor/client/navbar/NavBarPagesGroup/actions/CreateDirectMessage.tsx index ddac0c930ae3c..59318d02fa26b 100644 --- a/apps/meteor/client/navbar/NavBarPagesGroup/actions/CreateDirectMessage.tsx +++ b/apps/meteor/client/navbar/NavBarPagesGroup/actions/CreateDirectMessage.tsx @@ -60,7 +60,6 @@ const CreateDirectMessage = ({ onClose }: CreateDirectMessageProps) => { return ( } > diff --git a/apps/meteor/client/sidebar/RoomList/SidebarItemTemplateWithData.tsx b/apps/meteor/client/sidebar/RoomList/SidebarItemTemplateWithData.tsx index 331a5b8ce44a8..6e67ed9334fb4 100644 --- a/apps/meteor/client/sidebar/RoomList/SidebarItemTemplateWithData.tsx +++ b/apps/meteor/client/sidebar/RoomList/SidebarItemTemplateWithData.tsx @@ -125,7 +125,6 @@ const SidebarItemTemplateWithData = ({ { - diff --git a/apps/meteor/client/views/account/security/ChangePassphrase.tsx b/apps/meteor/client/views/account/security/ChangePassphrase.tsx index 752d34ee6f47e..8dab8d387b866 100644 --- a/apps/meteor/client/views/account/security/ChangePassphrase.tsx +++ b/apps/meteor/client/views/account/security/ChangePassphrase.tsx @@ -196,13 +196,7 @@ export const ChangePassphrase = (): JSX.Element => { )} - diff --git a/apps/meteor/client/views/account/security/ResetPassphrase.tsx b/apps/meteor/client/views/account/security/ResetPassphrase.tsx index 83077292c8732..6e01f74f311d4 100644 --- a/apps/meteor/client/views/account/security/ResetPassphrase.tsx +++ b/apps/meteor/client/views/account/security/ResetPassphrase.tsx @@ -14,9 +14,7 @@ export const ResetPassphrase = (): JSX.Element => { {t('Reset_E2EE_password_description')} - + ); }; diff --git a/apps/meteor/client/views/admin/engagementDashboard/EngagementDashboardCardErrorBoundary.tsx b/apps/meteor/client/views/admin/engagementDashboard/EngagementDashboardCardErrorBoundary.tsx index aee0412283802..dcfe34ff50e2f 100644 --- a/apps/meteor/client/views/admin/engagementDashboard/EngagementDashboardCardErrorBoundary.tsx +++ b/apps/meteor/client/views/admin/engagementDashboard/EngagementDashboardCardErrorBoundary.tsx @@ -32,7 +32,7 @@ const EngagementDashboardCardErrorBoundary = ({ children }: EngagementDashboardC {t('Something_went_wrong')} {isError(error) && error?.message} - + resetErrorBoundary()}>{t('Retry')} diff --git a/apps/meteor/client/views/admin/permissions/PermissionsPage.tsx b/apps/meteor/client/views/admin/permissions/PermissionsPage.tsx index feb34c289acbd..d245d4e394328 100644 --- a/apps/meteor/client/views/admin/permissions/PermissionsPage.tsx +++ b/apps/meteor/client/views/admin/permissions/PermissionsPage.tsx @@ -59,19 +59,13 @@ const PermissionsPage = ({ isEnterprise }: { isEnterprise: boolean }): ReactElem {t('Permissions')} - + {t('Settings')} diff --git a/apps/meteor/client/views/admin/permissions/PermissionsTable/PermissionsTableFilter.tsx b/apps/meteor/client/views/admin/permissions/PermissionsTable/PermissionsTableFilter.tsx index a86f97d66e95b..76dffe51bffae 100644 --- a/apps/meteor/client/views/admin/permissions/PermissionsTable/PermissionsTableFilter.tsx +++ b/apps/meteor/client/views/admin/permissions/PermissionsTable/PermissionsTableFilter.tsx @@ -17,15 +17,7 @@ const PermissionsTableFilter = ({ onChange }: { onChange: (debouncedFilter: stri setFilter(value); }); - return ( - - ); + return ; }; export default PermissionsTableFilter; diff --git a/apps/meteor/client/views/admin/permissions/PermissionsTable/__snapshots__/PermissionsTable.spec.tsx.snap b/apps/meteor/client/views/admin/permissions/PermissionsTable/__snapshots__/PermissionsTable.spec.tsx.snap index c896af1674544..597ba10319d9d 100644 --- a/apps/meteor/client/views/admin/permissions/PermissionsTable/__snapshots__/PermissionsTable.spec.tsx.snap +++ b/apps/meteor/client/views/admin/permissions/PermissionsTable/__snapshots__/PermissionsTable.spec.tsx.snap @@ -8,7 +8,6 @@ exports[`renders Default without crashing 1`] = ` > { return ( - + diff --git a/apps/meteor/client/views/home/DefaultHomePage.tsx b/apps/meteor/client/views/home/DefaultHomePage.tsx index 1c8e5fd680dec..fa394949c4f4b 100644 --- a/apps/meteor/client/views/home/DefaultHomePage.tsx +++ b/apps/meteor/client/views/home/DefaultHomePage.tsx @@ -24,10 +24,10 @@ const DefaultHomePage = (): ReactElement => { const isCustomContentVisible = useSetting('Layout_Home_Custom_Block_Visible', false); return ( - + - + {t('Welcome_to_workspace', { Site_Name: workspaceName || 'Rocket.Chat' })} diff --git a/apps/meteor/client/views/home/HomePageHeader.tsx b/apps/meteor/client/views/home/HomePageHeader.tsx index a8a46043f51d7..85018f42ee805 100644 --- a/apps/meteor/client/views/home/HomePageHeader.tsx +++ b/apps/meteor/client/views/home/HomePageHeader.tsx @@ -12,7 +12,7 @@ const HomepageHeader = (): ReactElement => { const settingsRoute = useRoute('admin-settings'); return ( - + {canEditLayout && ( - diff --git a/apps/meteor/client/views/omnichannel/departments/DepartmentAgentsTable/DepartmentAgentsTable.tsx b/apps/meteor/client/views/omnichannel/departments/DepartmentAgentsTable/DepartmentAgentsTable.tsx index 1ace56dd02ca2..b6cd94e4cb2f6 100644 --- a/apps/meteor/client/views/omnichannel/departments/DepartmentAgentsTable/DepartmentAgentsTable.tsx +++ b/apps/meteor/client/views/omnichannel/departments/DepartmentAgentsTable/DepartmentAgentsTable.tsx @@ -25,7 +25,7 @@ function DepartmentAgentsTable({ control, register, 'aria-labelledby': ariaLabel return ( <> - + diff --git a/apps/meteor/client/views/omnichannel/directory/chats/ChatsTable/ChatsTable.tsx b/apps/meteor/client/views/omnichannel/directory/chats/ChatsTable/ChatsTable.tsx index b5590ea120c5d..7bcc9655f06b5 100644 --- a/apps/meteor/client/views/omnichannel/directory/chats/ChatsTable/ChatsTable.tsx +++ b/apps/meteor/client/views/omnichannel/directory/chats/ChatsTable/ChatsTable.tsx @@ -63,7 +63,7 @@ const ChatsTable = () => { {t('Last_Message')} {t('Status')} - {canRemoveClosedChats && } + {canRemoveClosedChats && } ); diff --git a/apps/meteor/client/views/omnichannel/reports/components/ReportCardErrorState.tsx b/apps/meteor/client/views/omnichannel/reports/components/ReportCardErrorState.tsx index 5dbe13ae06d37..f918ce2385173 100644 --- a/apps/meteor/client/views/omnichannel/reports/components/ReportCardErrorState.tsx +++ b/apps/meteor/client/views/omnichannel/reports/components/ReportCardErrorState.tsx @@ -13,7 +13,7 @@ export const ReportCardErrorState = ({ onRetry }: ReportCardErrorStateProps): Re {t('Something_went_wrong')} - + {t('Retry')} diff --git a/apps/meteor/client/views/room/contextualBar/RoomMembers/RoomMembersActions.tsx b/apps/meteor/client/views/room/contextualBar/RoomMembers/RoomMembersActions.tsx index c53892d42252d..5af532ac1edb8 100644 --- a/apps/meteor/client/views/room/contextualBar/RoomMembers/RoomMembersActions.tsx +++ b/apps/meteor/client/views/room/contextualBar/RoomMembers/RoomMembersActions.tsx @@ -34,7 +34,7 @@ const RoomMembersActions = ({ if (!menuOptions) { return null; } - return ; + return ; }; export default RoomMembersActions; diff --git a/apps/meteor/client/views/room/contextualBar/UserInfo/UserInfoActions.tsx b/apps/meteor/client/views/room/contextualBar/UserInfo/UserInfoActions.tsx index ca7c6b0c88531..929c1d9c7570c 100644 --- a/apps/meteor/client/views/room/contextualBar/UserInfo/UserInfoActions.tsx +++ b/apps/meteor/client/views/room/contextualBar/UserInfo/UserInfoActions.tsx @@ -51,11 +51,9 @@ const UserInfoActions = ({ user, rid, isInvited, backToList }: UserInfoActionsPr button={} title={t('More')} key='menu' - data-qa-id='UserUserInfo-menu' sections={menuOptions} placement='bottom-end' small={false} - data-qa='UserUserInfo-menu' /> ); }, [menuOptions, t]); diff --git a/apps/meteor/tests/e2e/admin-room.spec.ts b/apps/meteor/tests/e2e/admin-room.spec.ts index 6c9a4f4755090..73306ba016017 100644 --- a/apps/meteor/tests/e2e/admin-room.spec.ts +++ b/apps/meteor/tests/e2e/admin-room.spec.ts @@ -23,7 +23,8 @@ test.describe.serial('admin-rooms', () => { }); test('should display the Rooms Table', async ({ page }) => { - await expect(page.locator('[data-qa-type="PageHeader-title"]')).toContainText('Rooms'); + await expect(page.getByRole('main').getByRole('heading', { level: 1, name: 'Rooms', exact: true })).toBeVisible(); + await expect(page.getByRole('main').getByRole('table')).toBeVisible(); }); test('should filter room by name', async ({ page }) => { diff --git a/apps/meteor/tests/e2e/federation/page-objects/account-profile.ts b/apps/meteor/tests/e2e/federation/page-objects/account-profile.ts index 7b51e1ddc3492..631eedd10f77f 100644 --- a/apps/meteor/tests/e2e/federation/page-objects/account-profile.ts +++ b/apps/meteor/tests/e2e/federation/page-objects/account-profile.ts @@ -12,6 +12,6 @@ export class FederationAccountProfile { } get btnSubmit(): Locator { - return this.page.locator('[data-qa="AccountProfilePageSaveButton"]'); + return this.page.getByRole('button', { name: 'Save changes', exact: true }); } } 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 1f93afcd9cb77..a60c5c4955b92 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 @@ -150,10 +150,6 @@ export class FederationHomeContent { return this.page.locator('[data-qa-id="menu-more-actions"]'); } - get linkUserCard(): Locator { - return this.page.locator('[data-qa="UserCard"] a'); - } - 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-members.ts b/apps/meteor/tests/e2e/federation/page-objects/fragments/home-flextab-members.ts index 69d7b5a743d9f..937e55bf8d920 100644 --- a/apps/meteor/tests/e2e/federation/page-objects/fragments/home-flextab-members.ts +++ b/apps/meteor/tests/e2e/federation/page-objects/fragments/home-flextab-members.ts @@ -20,7 +20,7 @@ export class FederationHomeFlextabMembers { } get btnMenuUserInfo(): Locator { - return this.page.locator('[data-qa="UserUserInfo-menu"]'); + return this.page.getByRole('dialog', { name: 'User Info', exact: true }).getByRole('button', { name: 'More', exact: true }); } getKebabMenuForUser(username: string): Locator { diff --git a/apps/meteor/tests/e2e/homepage.spec.ts b/apps/meteor/tests/e2e/homepage.spec.ts index 72291785bd09c..2543e66af8177 100644 --- a/apps/meteor/tests/e2e/homepage.spec.ts +++ b/apps/meteor/tests/e2e/homepage.spec.ts @@ -23,7 +23,7 @@ test.describe.serial('homepage', () => { test.beforeAll(async ({ browser }) => { adminPage = await browser.newPage({ storageState: Users.admin.state }); await adminPage.goto('/home'); - await adminPage.waitForSelector('[data-qa-id="home-header"]'); + await adminPage.getByRole('main').getByRole('heading', { level: 1, name: 'Home', exact: true }).waitFor(); }); test.afterAll(async ({ api }) => { @@ -113,7 +113,7 @@ test.describe.serial('homepage', () => { expect((await api.post('/settings/Layout_Home_Body', { value: '' })).status()).toBe(200); regularUserPage = await browser.newPage({ storageState: Users.user2.state }); await regularUserPage.goto('/home'); - await regularUserPage.waitForSelector('[data-qa-id="home-header"]'); + await regularUserPage.getByRole('main').getByRole('heading', { level: 1, name: 'Home', exact: true }).waitFor(); }); test.afterAll(async () => { @@ -142,7 +142,7 @@ test.describe.serial('homepage', () => { }); await test.step('expect header text to use Layout_Home_Title default setting', async () => { - await expect(regularUserPage.locator('[data-qa-type="PageHeader-title"]')).toContainText('Home'); + await expect(regularUserPage.getByRole('main').getByRole('heading', { level: 1, name: 'Home', exact: true })).toBeVisible(); }); }); @@ -152,7 +152,7 @@ test.describe.serial('homepage', () => { expect((await api.post('/settings/Layout_Home_Title', { value: 'NewTitle' })).status()).toBe(200); await regularUserPage.goto('/home'); - await regularUserPage.waitForSelector('[data-qa-id="home-header"]'); + await regularUserPage.getByRole('main').getByRole('heading', { level: 1, name: 'NewTitle', exact: true }).waitFor(); }); test.afterAll(async ({ api }) => { @@ -166,7 +166,7 @@ test.describe.serial('homepage', () => { }); await test.step('expect header text to be Layout_Home_Title setting', async () => { - await expect(regularUserPage.locator('[data-qa-type="PageHeader-title"]')).toContainText('NewTitle'); + await expect(regularUserPage.getByRole('main').getByRole('heading', { name: 'NewTitle', exact: true })).toBeVisible(); }); }); }); @@ -177,7 +177,7 @@ test.describe.serial('homepage', () => { expect((await api.post('/settings/Layout_Home_Custom_Block_Visible', { value: true })).status()).toBe(200); await regularUserPage.goto('/home'); - await regularUserPage.waitForSelector('[data-qa-id="home-header"]'); + await regularUserPage.getByRole('main').getByRole('heading', { level: 1, name: 'Home', exact: true }).waitFor(); }); test.afterAll(async ({ api }) => { @@ -202,7 +202,9 @@ test.describe.serial('homepage', () => { test('expect default layout not be visible and custom body visible', async () => { await test.step('expect default layout to not be visible', async () => { - await expect(regularUserPage.locator('[data-qa-id="homepage-welcome-text"]')).not.toBeVisible(); + await expect( + regularUserPage.getByRole('main').getByRole('heading', { level: 2, name: 'Welcome to Rocket.chat', exact: true }), + ).not.toBeVisible(); }); await test.step('expect custom body to be visible', async () => { diff --git a/apps/meteor/tests/e2e/page-objects/account-profile.ts b/apps/meteor/tests/e2e/page-objects/account-profile.ts index 0b6a47fe1abe6..84b391a292c60 100644 --- a/apps/meteor/tests/e2e/page-objects/account-profile.ts +++ b/apps/meteor/tests/e2e/page-objects/account-profile.ts @@ -12,11 +12,11 @@ export class AccountProfile extends Account { } get inputAvatarLink(): Locator { - return this.page.locator('[data-qa-id="UserAvatarEditorLink"]'); + return this.page.getByRole('textbox', { name: 'Use URL for avatar' }); } get btnSetAvatarLink(): Locator { - return this.page.locator('[data-qa-id="UserAvatarEditorSetAvatarLink"]'); + return this.page.getByRole('button', { name: 'Add URL', exact: true }); } get inputUsername(): Locator { @@ -25,7 +25,7 @@ export class AccountProfile extends Account { // TODO: remove this locator get btnSubmit(): Locator { - return this.page.locator('[data-qa="AccountProfilePageSaveButton"]'); + return this.page.getByRole('button', { name: 'Save changes', exact: true }); } get avatarFileInput(): Locator { @@ -33,7 +33,7 @@ export class AccountProfile extends Account { } get userAvatarEditor(): Locator { - return this.page.locator('[data-qa-id="UserAvatarEditor"]'); + return this.page.getByAltText('profile picture'); } get emailTextInput(): Locator { diff --git a/apps/meteor/tests/e2e/page-objects/account-security.ts b/apps/meteor/tests/e2e/page-objects/account-security.ts index dfeb2ff8ec5cd..a54813eacbdb1 100644 --- a/apps/meteor/tests/e2e/page-objects/account-security.ts +++ b/apps/meteor/tests/e2e/page-objects/account-security.ts @@ -40,7 +40,7 @@ export class AccountSecurity extends Account { } get securityHeader(): Locator { - return this.page.locator('h1[data-qa-type="PageHeader-title"]:has-text("Security")'); + return this.page.getByRole('main').getByRole('heading', { level: 1, name: 'Security', exact: true }); } get securityPasswordSection(): Locator { 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 3eafb1f99a15a..e5b1741d3047a 100644 --- a/apps/meteor/tests/e2e/page-objects/fragments/home-content.ts +++ b/apps/meteor/tests/e2e/page-objects/fragments/home-content.ts @@ -312,7 +312,7 @@ export class HomeContent { } get userCard(): Locator { - return this.page.locator('[data-qa="UserCard"]'); + return this.page.getByRole('dialog', { name: 'User card', exact: true }); } get linkUserCard(): Locator { diff --git a/apps/meteor/tests/e2e/page-objects/fragments/home-sidenav.ts b/apps/meteor/tests/e2e/page-objects/fragments/home-sidenav.ts deleted file mode 100644 index 34b38c60c6280..0000000000000 --- a/apps/meteor/tests/e2e/page-objects/fragments/home-sidenav.ts +++ /dev/null @@ -1,62 +0,0 @@ -import type { Locator, Page } from '@playwright/test'; - -export class HomeSidenav { - private readonly page: Page; - - constructor(page: Page) { - this.page = page; - } - - get advancedSettingsAccordion(): Locator { - return this.page.getByRole('dialog').getByRole('button', { name: 'Advanced settings', exact: true }); - } - - get checkboxPrivateChannel(): Locator { - return this.page.locator('label', { has: this.page.getByRole('checkbox', { name: 'Private' }) }); - } - - get checkboxEncryption(): Locator { - return this.page.locator('role=dialog[name="Create channel"] >> label >> text="Encrypted"'); - } - - get checkboxReadOnly(): Locator { - return this.page.locator('label', { has: this.page.getByRole('checkbox', { name: 'Read-only' }) }); - } - - get inputChannelName(): Locator { - return this.page.locator('#modal-root [data-qa="create-channel-modal"] [data-qa-type="channel-name-input"]'); - } - - get inputDirectUsername(): Locator { - return this.page.locator('#modal-root [data-qa="create-direct-modal"] [data-qa-type="user-auto-complete-input"]'); - } - - get btnCreate(): Locator { - return this.page.locator('role=button[name="Create"]'); - } - - get inputSearch(): Locator { - return this.page.locator('role=search >> role=searchbox').first(); - } - - get sidebarChannelsList(): Locator { - return this.page.getByRole('list', { name: 'Channels' }); - } - - get sidebarToolbar(): Locator { - return this.page.getByRole('toolbar', { name: 'Sidebar actions' }); - } - - // Note: this is different from openChat because queued chats are not searchable - getQueuedChat(name: string): Locator { - return this.page.locator('[data-qa="sidebar-item-title"]', { hasText: new RegExp(`^${name}$`) }).first(); - } - - getSidebarItemByName(name: string): Locator { - return this.page.getByRole('link').filter({ has: this.page.getByText(name, { exact: true }) }); - } - - get homepageHeader(): Locator { - return this.page.locator('main').getByRole('heading', { name: 'Home' }); - } -} diff --git a/apps/meteor/tests/e2e/page-objects/fragments/index.ts b/apps/meteor/tests/e2e/page-objects/fragments/index.ts index 18053e6b80bde..51ba6595b6d06 100644 --- a/apps/meteor/tests/e2e/page-objects/fragments/index.ts +++ b/apps/meteor/tests/e2e/page-objects/fragments/index.ts @@ -3,7 +3,6 @@ export * from './user-info-flextab'; export * from './home-content'; export * from './home-omnichannel-content'; export * from './home-flextab'; -export * from './home-sidenav'; export * from './omnichannel-sidenav'; export * from './navbar'; export * from './sidebar'; diff --git a/apps/meteor/tests/e2e/page-objects/home-channel.ts b/apps/meteor/tests/e2e/page-objects/home-channel.ts index 42f2316401f98..478ca3d2f84b6 100644 --- a/apps/meteor/tests/e2e/page-objects/home-channel.ts +++ b/apps/meteor/tests/e2e/page-objects/home-channel.ts @@ -1,6 +1,6 @@ import type { Locator, Page } from '@playwright/test'; -import { HomeContent, HomeSidenav, HomeFlextab, Navbar, Sidepanel, RoomSidebar, ToastMessages } from './fragments'; +import { HomeContent, HomeFlextab, Navbar, Sidepanel, RoomSidebar, ToastMessages } from './fragments'; import { RoomToolbar } from './fragments/toolbar'; import { VoiceCalls } from './fragments/voice-calls'; @@ -9,8 +9,6 @@ export class HomeChannel { readonly content: HomeContent; - readonly sidenav: HomeSidenav; - readonly sidebar: RoomSidebar; readonly sidepanel: Sidepanel; @@ -28,7 +26,6 @@ export class HomeChannel { constructor(page: Page) { this.page = page; this.content = new HomeContent(page); - this.sidenav = new HomeSidenav(page); this.sidebar = new RoomSidebar(page); this.sidepanel = new Sidepanel(page); this.navbar = new Navbar(page); @@ -122,8 +119,12 @@ export class HomeChannel { return this.page.getByRole('main').getByRole('status'); } + get homepageHeader(): Locator { + return this.page.locator('main').getByRole('heading', { name: 'Home' }); + } + async waitForHome(): Promise { - await this.sidenav.homepageHeader.waitFor({ state: 'visible' }); + await this.homepageHeader.waitFor({ state: 'visible' }); } async waitForRoomLoad(): Promise { diff --git a/apps/meteor/tests/e2e/page-objects/home-discussion.ts b/apps/meteor/tests/e2e/page-objects/home-discussion.ts index 040b4436e8c95..1088007bd9152 100644 --- a/apps/meteor/tests/e2e/page-objects/home-discussion.ts +++ b/apps/meteor/tests/e2e/page-objects/home-discussion.ts @@ -1,14 +1,12 @@ import type { Locator, Page } from '@playwright/test'; -import { HomeContent, HomeSidenav, HomeFlextab, Navbar } from './fragments'; +import { HomeContent, HomeFlextab, Navbar } from './fragments'; export class HomeDiscussion { private readonly page: Page; readonly content: HomeContent; - readonly sidenav: HomeSidenav; - readonly navbar: Navbar; readonly tabs: HomeFlextab; @@ -16,7 +14,6 @@ export class HomeDiscussion { constructor(page: Page) { this.page = page; this.content = new HomeContent(page); - this.sidenav = new HomeSidenav(page); this.navbar = new Navbar(page); this.tabs = new HomeFlextab(page); } diff --git a/apps/meteor/tests/e2e/page-objects/omnichannel-room-info.ts b/apps/meteor/tests/e2e/page-objects/omnichannel-room-info.ts index 7c415faccdb70..e7f6430fc38e0 100644 --- a/apps/meteor/tests/e2e/page-objects/omnichannel-room-info.ts +++ b/apps/meteor/tests/e2e/page-objects/omnichannel-room-info.ts @@ -1,15 +1,15 @@ import type { Locator, Page } from '@playwright/test'; -import { HomeSidenav } from './fragments/home-sidenav'; +import { RoomSidebar } from './fragments'; export class OmnichannelRoomInfo { private readonly page: Page; - private readonly homeSidenav: HomeSidenav; + private readonly sidebar: RoomSidebar; constructor(page: Page) { this.page = page; - this.homeSidenav = new HomeSidenav(page); + this.sidebar = new RoomSidebar(page); } get dialogRoomInfo(): Locator { @@ -70,6 +70,6 @@ export class OmnichannelRoomInfo { } getBadgeIndicator(name: string, title: string): Locator { - return this.homeSidenav.getSidebarItemByName(name).getByTitle(title); + return this.sidebar.getSidebarItemByName(name).getByTitle(title); } } diff --git a/apps/meteor/tests/e2e/settings-assets.spec.ts b/apps/meteor/tests/e2e/settings-assets.spec.ts index bdc265b63dc3d..f2f83360567b8 100644 --- a/apps/meteor/tests/e2e/settings-assets.spec.ts +++ b/apps/meteor/tests/e2e/settings-assets.spec.ts @@ -12,8 +12,8 @@ test.describe.serial('settings-assets', () => { await page.goto('/admin/settings'); await poAdminSettings.btnAssetsSettings.click(); - // FIXME: This is not good practice. We should look for a better way to ensure the page is loaded - await expect(page.locator('[data-qa-type="PageHeader-title"]')).toHaveText('Assets'); + + await expect(page.getByRole('main').getByRole('heading', { level: 1, name: 'Assets', exact: true })).toBeVisible(); }); test('expect upload and delete logo asset and label should be visible', async ({ page }) => { diff --git a/apps/meteor/tests/e2e/settings-int.spec.ts b/apps/meteor/tests/e2e/settings-int.spec.ts index 797e55c82a4aa..b7ac6c4c25eab 100644 --- a/apps/meteor/tests/e2e/settings-int.spec.ts +++ b/apps/meteor/tests/e2e/settings-int.spec.ts @@ -9,10 +9,11 @@ test.describe.serial('settings-int', () => { test.beforeEach(async ({ page }) => { poAdminSettings = new AdminSettings(page); - const pageTitle = page.locator('[data-qa-type="PageHeader-title"]'); + const pageTitle = page.getByRole('main').getByRole('heading', { level: 1, name: 'Message', exact: true }); await page.goto('/admin/settings/Message'); await pageTitle.waitFor(); + await expect(pageTitle).toBeVisible(); await expect(pageTitle).toHaveText('Message'); }); diff --git a/packages/i18n/src/locales/en.i18n.json b/packages/i18n/src/locales/en.i18n.json index 887eb27955fad..ebde7631d98ce 100644 --- a/packages/i18n/src/locales/en.i18n.json +++ b/packages/i18n/src/locales/en.i18n.json @@ -7081,5 +7081,7 @@ "timestamps.longDateDescription": "12/31/2020, 12:00 AM", "timestamps.fullDateTimeDescription": "December 31, 2020 12:00 AM", "timestamps.fullDateTimeLongDescription": "Thursday, December 31, 2020 12:00:00 AM", + "__username__profile_picture": "{{username}}'s profile picture", + "User_card": "User card", "timestamps.relativeTimeDescription": "1 year ago" } \ No newline at end of file diff --git a/packages/ui-client/src/components/Page/PageHeaderNoShadow.tsx b/packages/ui-client/src/components/Page/PageHeaderNoShadow.tsx index 188900d573cb4..d00cfbdec13ea 100644 --- a/packages/ui-client/src/components/Page/PageHeaderNoShadow.tsx +++ b/packages/ui-client/src/components/Page/PageHeaderNoShadow.tsx @@ -37,7 +37,7 @@ const PageHeaderNoShadow = ({ children = undefined, title, onClickBack, ...props ) : null} {onClickBack && } - + {title} {children}