From 593b552610c8271e77584c2becf74d0ea6b3ab48 Mon Sep 17 00:00:00 2001 From: chalapkoStanislav <154974553+chalapkoStanislav@users.noreply.github.com> Date: Thu, 21 Nov 2024 16:20:46 +0200 Subject: [PATCH] feature(test): viewer user tests added (#121) feature(test): viewer user tests added --- pages/dashboard/dashboard-page.js | 29 ++ pages/dashboard/team-page.js | 16 + pages/workspace/main-page.js | 40 +++ tests/dashboard/dashboard-teams.spec.js | 307 ++++++++++++++++++ .../win32/chrome/right-sidebar-image.png | Bin 0 -> 12772 bytes .../win32/firefox/right-sidebar-image.png | Bin 0 -> 17880 bytes .../win32/webkit/right-sidebar-image.png | Bin 0 -> 10095 bytes 7 files changed, 392 insertions(+) create mode 100644 tests/dashboard/dashboard-teams.spec.js-snapshots/win32/chrome/right-sidebar-image.png create mode 100644 tests/dashboard/dashboard-teams.spec.js-snapshots/win32/firefox/right-sidebar-image.png create mode 100644 tests/dashboard/dashboard-teams.spec.js-snapshots/win32/webkit/right-sidebar-image.png diff --git a/pages/dashboard/dashboard-page.js b/pages/dashboard/dashboard-page.js index 71af19b1..fe499f2e 100644 --- a/pages/dashboard/dashboard-page.js +++ b/pages/dashboard/dashboard-page.js @@ -27,6 +27,7 @@ exports.DashboardPage = class DashboardPage extends BasePage { 'div[class*="dashboard-grid"] button[class*="create-new"]', ); this.createFileButtonTitlePanel = page.getByTestId('project-new-file'); + this.createFileButtonDraftsTab = page.getByTestId('new-file'); this.renameFileMenuItem = page.getByTestId('file-rename'); this.duplicateFileMenuItem = page.getByTestId('file-duplicate'); this.addFileAsSharedLibraryMenuItem = page.getByTestId('file-add-shared'); @@ -101,6 +102,10 @@ exports.DashboardPage = class DashboardPage extends BasePage { //Fonts this.fontsSidebarItem = page.getByTestId('fonts'); this.uploadFontSelector = page.locator('#font-upload'); + this.addCustomFontButton = page.getByRole('button', { + name: 'Add custom font', + exact: true, + }); this.uploadFontButton = page.getByRole('button', { name: 'Upload', exact: true, @@ -975,4 +980,28 @@ exports.DashboardPage = class DashboardPage extends BasePage { async waitForCreateFilePlaceholderVisible() { await this.createFileButtonPlaceholder.first().waitFor({ state: 'visible' }); } + + async isOptionButtonFromDraftPageVisible(visible = true) { + visible + ? await expect(this.headerOptionsMenuButton).toBeVisible() + : await expect(this.headerOptionsMenuButton).not.toBeVisible(); + } + + async isCreateFileOnDraftsTabButtonVisible(visible = true) { + visible + ? await expect(this.createFileButtonDraftsTab.first()).toBeVisible() + : await expect(this.createFileButtonDraftsTab.first()).not.toBeVisible(); + } + + async isAddCustomFontButtonVisible(visible = true) { + visible + ? await expect(this.addCustomFontButton).toBeVisible() + : await expect(this.addCustomFontButton).not.toBeVisible(); + } + + async isAddProjectButtonVisible(visible = true) { + visible + ? await expect(this.addProjectButton).toBeVisible() + : await expect(this.addProjectButton).not.toBeVisible(); + } }; diff --git a/pages/dashboard/team-page.js b/pages/dashboard/team-page.js index 2a54545c..d302fd9f 100644 --- a/pages/dashboard/team-page.js +++ b/pages/dashboard/team-page.js @@ -64,6 +64,7 @@ exports.TeamPage = class TeamPage extends BasePage { this.editorRoleSelector = page .getByRole('listitem') .filter({ hasText: 'Editor' }); + this.viewerRoleSelector = page.getByRole('listitem').filter({ hasText: 'Viewer' }); this.ownerRoleSelector = page.getByRole('listitem').filter({ hasText: 'Owner' }); this.transferOwnershipButton = page.getByRole('button', { name: 'Transfer ownership', @@ -278,6 +279,9 @@ exports.TeamPage = class TeamPage extends BasePage { case 'Editor': await this.editorRoleSelector.click(); break; + case 'Viewer': + await this.viewerRoleSelector.click(); + break; } } @@ -290,6 +294,9 @@ exports.TeamPage = class TeamPage extends BasePage { case 'Editor': await this.editorRoleSelector.click(); break; + case 'Viewer': + await this.viewerRoleSelector.click(); + break; } } @@ -313,6 +320,9 @@ exports.TeamPage = class TeamPage extends BasePage { case 'Owner': await this.ownerRoleSelector.click(); break; + case 'Viewer': + await this.viewerRoleSelector.click(); + break; } } @@ -332,6 +342,9 @@ exports.TeamPage = class TeamPage extends BasePage { case 'Owner': roleLoc = await this.ownerRoleSelector; break; + case 'Viewer': + roleLoc = await this.viewerRoleSelector; + break; } await expect(roleLoc).not.toBeVisible(); } @@ -352,6 +365,9 @@ exports.TeamPage = class TeamPage extends BasePage { case 'Owner': roleLoc = await this.ownerRoleSelector; break; + case 'Viewer': + roleLoc = await this.viewerRoleSelector; + break; } await expect(roleLoc).not.toBeVisible(); } diff --git a/pages/workspace/main-page.js b/pages/workspace/main-page.js index eb034ff3..828436b1 100644 --- a/pages/workspace/main-page.js +++ b/pages/workspace/main-page.js @@ -174,6 +174,7 @@ exports.MainPage = class MainPage extends BasePage { this.deletePageOkButton = page.getByRole('button', { name: 'Ok' }); // Bottom palette + this.typographyButton = page.getByRole('button', { name: 'Typographies' }); this.bottomPaletteContentBlock = page.locator( 'div[class="main_ui_workspace_palette__palette"]', ); @@ -183,6 +184,7 @@ exports.MainPage = class MainPage extends BasePage { this.typographiesColorsBottomPanel = page.locator( 'div.main_ui_workspace_palette__wide', ); + this.workspaceMenu = page.locator('*[class*="workspace-context-menu"]'); //Header this.unSavedChangesIcon = page.getByTitle('Unsaved changes', { exact: true }); @@ -923,6 +925,12 @@ exports.MainPage = class MainPage extends BasePage { await this.designTab.click(); } + async isDesignTabVisible(visible = true) { + visible + ? await expect(this.designTab).toBeVisible() + : await expect(this.designTab).not.toBeVisible(); + } + async createComponentsMultipleShapesRightClick(singleComponent = true) { const layerSel = this.page.locator( 'div[class*="viewport"] .main.viewport-selrect', @@ -1052,4 +1060,36 @@ exports.MainPage = class MainPage extends BasePage { await selectedElement.hover(); await selectedElement.dragTo(board); } + + async isToolBarVisible(visible = true) { + visible + ? await expect(this.toolBarWindow).toBeVisible() + : await expect(this.toolBarWindow).not.toBeVisible(); + } + + async isPageRightClickMenuVisible(visible = true) { + await this.firstPageListItem.click({ button: 'right' }); + visible + ? await expect(this.renamePageMenuItem).toBeVisible() + : await expect(this.renamePageMenuItem).not.toBeVisible(); + } + + async checkViewerRightClickMenu() { + const layerSel = this.page.locator('.viewport-selrect'); + await layerSel.last().click({ button: 'right', force: true }); + await expect(this.copyOption).not.toBeVisible(); + await expect(this.workspaceMenu).not.toBeVisible(); + } + + async isColorsPaletteButtonVisible(visible = true){ + visible + ? await expect(this.colorsPaletteButton).toBeVisible() + : await expect(this.colorsPaletteButton).not.toBeVisible(); + } + + async isTypographyButtonVisible(visible = true){ + visible + ? await expect(this.typographyButton).toBeVisible() + : await expect(this.typographyButton).not.toBeVisible(); + } }; diff --git a/tests/dashboard/dashboard-teams.spec.js b/tests/dashboard/dashboard-teams.spec.js index b0506c1a..f91cb81d 100644 --- a/tests/dashboard/dashboard-teams.spec.js +++ b/tests/dashboard/dashboard-teams.spec.js @@ -23,6 +23,7 @@ const { const { LoginPage } = require('../../pages/login-page'); const { RegisterPage } = require('../../pages/register-page'); const { ViewModePage } = require('../../pages/workspace/view-mode-page'); +const { LayersPanelPage } = require('../../pages/workspace/layers-panel-page'); mainTest.describe(() => { const team = random().concat('autotest'); @@ -2292,6 +2293,312 @@ test.describe(() => { }); }); +mainTest.describe(() => { + const team = random().concat('autotest'); + const firstAdmin = random().concat('autotest'); + const firstEmail = `${process.env.GMAIL_NAME}+${firstAdmin}@gmail.com`; + let profilePage, + dashboardPage, + loginPage, + teamPage, + registerPage, + mainPage, + layersPanelPage; + + mainTest.beforeEach(async ({ page }, testInfo) => { + await testInfo.setTimeout(testInfo.timeout + 30000); + profilePage = new ProfilePage(page); + dashboardPage = new DashboardPage(page); + loginPage = new LoginPage(page); + teamPage = new TeamPage(page); + registerPage = new RegisterPage(page); + mainPage = new MainPage(page); + layersPanelPage = new LayersPanelPage(page); + await teamPage.createTeam(team); + await teamPage.isTeamSelected(team); + await dashboardPage.createFileViaPlaceholder(); + await mainPage.waitForViewportVisible(); + await mainPage.createDefaultRectangleByCoordinates(200, 300); + await mainPage.createComponentViaRightClick(); + await mainPage.waitForChangeIsSaved(); + await mainPage.backToDashboardFromFileEditor(); + + await teamPage.openInvitationsPageViaOptionsMenu(); + await teamPage.clickInviteMembersToTeamButton(); + await teamPage.isInviteMembersPopUpHeaderDisplayed('Invite members to the team'); + await teamPage.enterEmailToInviteMembersPopUp(firstEmail); + await teamPage.selectInvitationRoleInPopUp('Viewer'); + await teamPage.clickSendInvitationButton(); + await teamPage.isSuccessMessageDisplayed('Invitation sent successfully'); + + const firstInvite = await waitMessage(page, firstEmail, 40); + + await profilePage.logout(); + await loginPage.isLoginPageOpened(); + + await page.goto(firstInvite.inviteUrl); + await registerPage.isRegisterPageOpened(); + await registerPage.enterEmail(firstEmail); + await registerPage.enterPassword(process.env.LOGIN_PWD); + await registerPage.clickOnCreateAccountBtn(); + await registerPage.enterFullName(firstAdmin); + await registerPage.clickOnAcceptTermsCheckbox(); + await registerPage.clickOnCreateAccountSecondBtn(); + await dashboardPage.fillOnboardingQuestions(); + await teamPage.isTeamSelected(team); + }); + + mainTest( + qase(1870, 'As a viewer user try to edit any layer'), + async ({ page }, testInfo) => { + await dashboardPage.openFileWithName('New File 1'); + await mainPage.waitForViewportVisible(); + await mainPage.isDesignTabVisible(false); + await layersPanelPage.clickMainComponentOnLayersTab(); + await expect(mainPage.fileRightSidebarAside).toHaveScreenshot( + 'right-sidebar-image.png', + { + mask: [mainPage.usersSection], + }, + ); + await mainPage.backToDashboardFromFileEditor(); + }, + ); + + mainTest( + qase(1873, 'As a viewer user import file to Drafts'), + async ({ page }, testInfo) => { + await dashboardPage.openSidebarItem('Drafts'); + await dashboardPage.isCreateFileOnDraftsTabButtonVisible(false); + await dashboardPage.isOptionButtonFromDraftPageVisible(false); + }, + ); + + mainTest( + qase(1877, 'As a viewer user Add font on Dashboard > Fonts page'), + async ({ page }, testInfo) => { + await dashboardPage.openSidebarItem('Fonts'); + await dashboardPage.isAddCustomFontButtonVisible(false); + }, + ); + + mainTest( + qase( + 1880, + 'As a viewer user check the "Create" buttons of Project and draft pages', + ), + async ({ page }, testInfo) => { + await dashboardPage.openSidebarItem('Projects'); + await dashboardPage.isAddProjectButtonVisible(false); + await dashboardPage.openSidebarItem('Drafts'); + await dashboardPage.isCreateFileOnDraftsTabButtonVisible(false); + }, + ); + + mainTest( + qase(1889, 'As a viewer user try to use a toolbar'), + async ({ page }, testInfo) => { + await dashboardPage.openFileWithName('New File 1'); + await mainPage.waitForViewportVisible(); + await mainPage.isToolBarVisible(false); + await mainPage.backToDashboardFromFileEditor(); + }, + ); + + mainTest( + qase(1891, 'As a viewer user try to create, duplicate and delete page'), + async ({ page }, testInfo) => { + await dashboardPage.openFileWithName('New File 1'); + await mainPage.waitForViewportVisible(); + await mainPage.isPageRightClickMenuVisible(false); + await mainPage.backToDashboardFromFileEditor(); + }, + ); + + mainTest( + qase(1894, 'As a viewer user right-click created layer'), + async ({ page }, testInfo) => { + await dashboardPage.openFileWithName('New File 1'); + await mainPage.waitForViewportVisible(); + await layersPanelPage.clickMainComponentOnLayersTab(); + await mainPage.checkViewerRightClickMenu(); + await mainPage.backToDashboardFromFileEditor(); + }, + ); + + mainTest( + qase(1898, 'As a viewer user try to open color palette'), + async ({ page }, testInfo) => { + await dashboardPage.openFileWithName('New File 1'); + await mainPage.waitForViewportVisible(); + await mainPage.isColorsPaletteButtonVisible(false); + await mainPage.backToDashboardFromFileEditor(); + }, + ); + + mainTest( + qase(1906, 'As a viewer user try to open typographies'), + async ({ page }, testInfo) => { + await dashboardPage.openFileWithName('New File 1'); + await mainPage.waitForViewportVisible(); + await mainPage.isTypographyButtonVisible(false); + await mainPage.backToDashboardFromFileEditor(); + }, + ); + + mainTest( + qase( + 1867, + 'Change a role of viewer user to editor and admin after accepting an invitation', + ), + async ({ page }, testInfo) => { + await dashboardPage.openFileWithName('New File 1'); + await mainPage.waitForViewportVisible(); + await mainPage.isDesignTabVisible(false); + + await mainPage.backToDashboardFromFileEditor(); + await profilePage.logout(); + await loginPage.isLoginPageOpened(); + await loginPage.enterEmail(process.env.LOGIN_EMAIL); + await loginPage.enterPwd(process.env.LOGIN_PWD); + await loginPage.clickLoginButton(); + await dashboardPage.isDashboardOpenedAfterLogin(); + await teamPage.switchTeam(team); + await teamPage.isTeamSelected(team); + await teamPage.openMembersPageViaOptionsMenu(); + await teamPage.selectMemberRoleInPopUp(firstAdmin, 'Editor'); + await teamPage.isMultipleMemberRecordDisplayed( + firstAdmin, + firstEmail, + 'Editor', + ); + await profilePage.logout(); + await loginPage.isLoginPageOpened(); + await loginPage.enterEmail(firstEmail); + await loginPage.enterPwd(process.env.LOGIN_PWD); + await loginPage.clickLoginButton(); + await dashboardPage.isDashboardOpenedAfterLogin(); + await teamPage.switchTeam(team); + await teamPage.isTeamSelected(team); + await dashboardPage.openFileWithName('New File 1'); + await mainPage.waitForViewportVisible(); + await mainPage.isDesignTabVisible(true); + await mainPage.backToDashboardFromFileEditor(); + }, + ); + + mainTest.afterEach(async ({ page }) => { + await profilePage.logout(); + await loginPage.isLoginPageOpened(); + await loginPage.enterEmail(process.env.LOGIN_EMAIL); + await loginPage.enterPwd(process.env.LOGIN_PWD); + await loginPage.clickLoginButton(); + await dashboardPage.isDashboardOpenedAfterLogin(); + await teamPage.switchTeam(team); + await teamPage.isTeamSelected(team); + await teamPage.deleteTeam(team); + }); +}); + test.afterEach(async ({ page }, testInfo) => { await updateTestResults(testInfo.status, testInfo.retry); }); + +mainTest.describe(() => { + const team = random().concat('autotest'); + const firstAdmin = random().concat('autotest'); + const firstEmail = `${process.env.GMAIL_NAME}+${firstAdmin}@gmail.com`; + let profilePage, dashboardPage, loginPage, teamPage, registerPage, mainPage; + + mainTest( + qase(1869, 'Change a role of admin to viewer after accepting an invitation'), + async ({ page }, testInfo) => { + await testInfo.setTimeout(testInfo.timeout + 30000); + profilePage = new ProfilePage(page); + dashboardPage = new DashboardPage(page); + loginPage = new LoginPage(page); + teamPage = new TeamPage(page); + registerPage = new RegisterPage(page); + mainPage = new MainPage(page); + await teamPage.createTeam(team); + await teamPage.isTeamSelected(team); + await dashboardPage.createFileViaPlaceholder(); + await mainPage.waitForViewportVisible(); + await mainPage.createDefaultRectangleByCoordinates(200, 300); + await mainPage.createComponentViaRightClick(); + await mainPage.waitForChangeIsSaved(); + await mainPage.backToDashboardFromFileEditor(); + + await teamPage.openInvitationsPageViaOptionsMenu(); + await teamPage.clickInviteMembersToTeamButton(); + await teamPage.isInviteMembersPopUpHeaderDisplayed( + 'Invite members to the team', + ); + await teamPage.enterEmailToInviteMembersPopUp(firstEmail); + await teamPage.selectInvitationRoleInPopUp('Admin'); + await teamPage.clickSendInvitationButton(); + await teamPage.isSuccessMessageDisplayed('Invitation sent successfully'); + + const firstInvite = await waitMessage(page, firstEmail, 40); + + await profilePage.logout(); + await loginPage.isLoginPageOpened(); + + await page.goto(firstInvite.inviteUrl); + await registerPage.isRegisterPageOpened(); + await registerPage.enterEmail(firstEmail); + await registerPage.enterPassword(process.env.LOGIN_PWD); + await registerPage.clickOnCreateAccountBtn(); + await registerPage.enterFullName(firstAdmin); + await registerPage.clickOnAcceptTermsCheckbox(); + await registerPage.clickOnCreateAccountSecondBtn(); + await dashboardPage.fillOnboardingQuestions(); + await teamPage.isTeamSelected(team); + + await dashboardPage.openFileWithName('New File 1'); + await mainPage.waitForViewportVisible(); + await mainPage.isDesignTabVisible(true); + + await mainPage.backToDashboardFromFileEditor(); + await profilePage.logout(); + await loginPage.isLoginPageOpened(); + await loginPage.enterEmail(process.env.LOGIN_EMAIL); + await loginPage.enterPwd(process.env.LOGIN_PWD); + await loginPage.clickLoginButton(); + await dashboardPage.isDashboardOpenedAfterLogin(); + await teamPage.switchTeam(team); + await teamPage.isTeamSelected(team); + await teamPage.openMembersPageViaOptionsMenu(); + await teamPage.selectMemberRoleInPopUp(firstAdmin, 'Viewer'); + await teamPage.isMultipleMemberRecordDisplayed( + firstAdmin, + firstEmail, + 'Viewer', + ); + await profilePage.logout(); + await loginPage.isLoginPageOpened(); + await loginPage.enterEmail(firstEmail); + await loginPage.enterPwd(process.env.LOGIN_PWD); + await loginPage.clickLoginButton(); + await dashboardPage.isDashboardOpenedAfterLogin(); + await teamPage.switchTeam(team); + await teamPage.isTeamSelected(team); + await dashboardPage.openFileWithName('New File 1'); + await mainPage.waitForViewportVisible(); + await mainPage.isDesignTabVisible(false); + }, + ); + + mainTest.afterEach(async ({ page }) => { + await mainPage.backToDashboardFromFileEditor(); + await profilePage.logout(); + await loginPage.isLoginPageOpened(); + await loginPage.enterEmail(process.env.LOGIN_EMAIL); + await loginPage.enterPwd(process.env.LOGIN_PWD); + await loginPage.clickLoginButton(); + await dashboardPage.isDashboardOpenedAfterLogin(); + await teamPage.switchTeam(team); + await teamPage.isTeamSelected(team); + await teamPage.deleteTeam(team); + }); +}); diff --git a/tests/dashboard/dashboard-teams.spec.js-snapshots/win32/chrome/right-sidebar-image.png b/tests/dashboard/dashboard-teams.spec.js-snapshots/win32/chrome/right-sidebar-image.png new file mode 100644 index 0000000000000000000000000000000000000000..3a43a4e6c6900c5ebdca618d5ff7d7a5d29bac35 GIT binary patch literal 12772 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 literal 0 HcmV?d00001 diff --git a/tests/dashboard/dashboard-teams.spec.js-snapshots/win32/firefox/right-sidebar-image.png b/tests/dashboard/dashboard-teams.spec.js-snapshots/win32/firefox/right-sidebar-image.png new file mode 100644 index 0000000000000000000000000000000000000000..2ec1ce49f7108bd1afa61067bc31342d47c32e8d GIT binary patch literal 17880 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 X<;mu~-n$iaeD`jf-zvZ1^xJ;}f8_oU literal 0 HcmV?d00001