PENPOT-1191,1190,1183,1182,1196

This commit is contained in:
chalapkoStanislav 2024-06-10 10:39:08 +03:00
parent 73fa9c158b
commit 5f3309a77a
3 changed files with 402 additions and 5 deletions

View File

@ -62,6 +62,7 @@ exports.TeamPage = class TeamPage extends BasePage {
this.ownerRoleSelector = page.locator('li:has-text("Owner")');
this.transferOwnershipButton = page.locator('input[value="Transfer ownership"]');
this.leaveTeamButton = page.locator('input[value="Leave team"]');
this.ownerLeaveTeamButton = page.locator('input[value="Promote and leave"]');
this.deleteMemberButton = page.locator('input[value="Delete member"]');
this.inviteMembersToTeamEmailInput = page.locator(
'input[placeholder="Emails, comma separated"]',
@ -176,6 +177,10 @@ exports.TeamPage = class TeamPage extends BasePage {
await this.inviteMembersToTeamButton.click();
}
async isInviteMembersToTeamButtonDisabled() {
await expect(this.inviteMembersToTeamButton).not.toBeVisible();
}
async isInviteMembersPopUpHeaderDisplayed(title) {
await expect(this.inviteMembersPopUpHeader).toHaveText(title);
}
@ -226,6 +231,18 @@ exports.TeamPage = class TeamPage extends BasePage {
await expect(roleLocator).toHaveText(role);
}
async changeInvitationRole(email, role) {
await this.page.locator(`//div[contains(@class, 'dashboard_team__field-email') and contains(text(), '${email}')]/following-sibling::div//span`).click();
switch (role) {
case 'Admin':
await this.adminRoleSelector.click();
break;
case 'Editor':
await this.editorRoleSelector.click();
break;
}
}
async selectInvitationRoleInPopUp(role) {
await this.inviteMembersToTeamRoleSelectorButton.click();
switch (role) {
@ -259,6 +276,42 @@ exports.TeamPage = class TeamPage extends BasePage {
}
}
async isMemberRoleInPopUpNotDisplayed(name, role) {
const locator = this.page.locator(`//div[contains(@class, 'team__member-name') and contains(text(), '${name}')]/../../following-sibling::div//span`);
await locator.click();
let roleLoc;
switch (role) {
case 'Admin':
roleLoc = await this.adminRoleSelector;
break;
case 'Editor':
roleLoc = await this.editorRoleSelector;
break;
case 'Owner':
roleLoc = await this.ownerRoleSelector;
break;
}
await expect(roleLoc).not.toBeVisible();
}
async isInvitationRoleInPopUpNotDisplayed(email, role) {
const locator = this.page.locator(`//div[contains(@class, 'dashboard_team__field-email') and contains(text(), '${email}')]/following-sibling::div//span`);
await locator.click();
let roleLoc;
switch (role) {
case 'Admin':
roleLoc = await this.adminRoleSelector;
break;
case 'Editor':
roleLoc = await this.editorRoleSelector;
break;
case 'Owner':
roleLoc = await this.ownerRoleSelector;
break;
}
await expect(roleLoc).not.toBeVisible();
}
async clickOnTransferOwnershipButton() {
await this.transferOwnershipButton.click();
}
@ -267,6 +320,10 @@ exports.TeamPage = class TeamPage extends BasePage {
await this.leaveTeamButton.click();
}
async clickOnPromoteAndLeaveTeamButton() {
await this.ownerLeaveTeamButton.click();
}
async clickOnDeleteMemberButton() {
await this.deleteMemberButton.click();
}
@ -280,10 +337,12 @@ exports.TeamPage = class TeamPage extends BasePage {
await this.invitationRecordDeleteInvititationMenuItem.click();
}
async leaveTeam(teamName) {
await this.invitationRecordOptionsMenuButton.click();
async leaveTeam(teamName, role = 'Admin', name) {
await this.invitationRecordOptionsMenuButton.first().click();
await this.memberRecordleaveTeamMenuItem.click();
await this.clickOnLeaveTeamButton();
role === 'Owner'
? await this.selectMember(name)
: await this.clickOnLeaveTeamButton();
await expect(this.teamCurrentBtn).not.toHaveText(teamName);
await expect(this.teamCurrentBtn).toHaveText('Your Penpot');
}
@ -341,4 +400,15 @@ exports.TeamPage = class TeamPage extends BasePage {
const locator = await this.page.locator(`//div[contains(@class, 'team__member-name') and contains(text(), '${name}')]/../../following-sibling::div/button`);
await expect(locator).not.toBeVisible();
}
async isInvitationRecordOptionsDisabled(email) {
const locator = await this.page.locator(`//div[contains(@class, 'dashboard_team__field-email') and contains(text(), '${email}')]/following-sibling::div/button`);
await expect(locator).not.toBeVisible();
}
async selectMember(name) {
await this.page.locator('span[class*="dropdown-button"]').click();
await this.page.locator(`li span[class*="components_select"]:has-text("${name}")`).click();
await this.ownerLeaveTeamButton.click();
}
};

View File

@ -343,8 +343,8 @@ mainTest(qase(1749,'PENPOT-1749 Change group shadow color'),
await mainPage.waitForChangeIsSaved();
await mainPage.groupLayerViaRightClick();
await mainPage.waitForChangeIsSaved();
await mainPage.clickViewportOnce();
await layersPanelPage.clickLayerOnLayersTab('Group');
// await mainPage.clickViewportOnce();
// await layersPanelPage.clickLayerOnLayersTab('Group');
await designPanelPage.clickAddGroupShadowButton();
await mainPage.waitForChangeIsSaved();
await designPanelPage.clickFirstColorIcon();

View File

@ -997,6 +997,202 @@ test.describe(() => {
},
);
mainTest(
qase(1191,'DA-105 Team. Members - unable to change roles via editor'),
async ({ page }, testInfo) => {
await testInfo.setTimeout(testInfo.timeout + 60000);
const firstAdmin = random().concat('autotest');
const secondAdmin = random().concat('autotest');
const firstEmail = `${process.env.GMAIL_NAME}+${firstAdmin}@gmail.com`;
const secondEmail = `${process.env.GMAIL_NAME}+${secondAdmin}@gmail.com`;
const profilePage = new ProfilePage(page);
const dashboardPage = new DashboardPage(page);
const loginPage = new LoginPage(page);
const teamPage = new TeamPage(page);
const registerPage = new RegisterPage(page);
await teamPage.createTeam(team);
await teamPage.isTeamSelected(team);
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');
await teamPage.clickInviteMembersToTeamButton();
await teamPage.isInviteMembersPopUpHeaderDisplayed(
'Invite members to the team',
);
await teamPage.enterEmailToInviteMembersPopUp(`${secondEmail}`);
await teamPage.selectInvitationRoleInPopUp('Editor');
await teamPage.clickSendInvitationButton();
await teamPage.isSuccessMessageDisplayed('Invitation sent successfully');
await page.waitForTimeout(30000);
const firstInvite = await getRegisterMessage(firstEmail);
const secondInvite = await getRegisterMessage(secondEmail);
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.isOnboardingNextBtnDisplayed();
await dashboardPage.clickOnOnboardingNextBtn();
await dashboardPage.checkOnboardingWelcomeHeader('Before you start');
await dashboardPage.clickOnOnboardingNextBtn();
await dashboardPage.reloadPage();
await teamPage.isTeamSelected(team);
await profilePage.logout();
await loginPage.isLoginPageOpened();
await page.goto(secondInvite.inviteUrl);
await registerPage.isRegisterPageOpened();
await registerPage.enterEmail(secondEmail);
await registerPage.enterPassword(process.env.LOGIN_PWD);
await registerPage.clickOnCreateAccountBtn();
await registerPage.enterFullName(secondAdmin);
await registerPage.clickOnAcceptTermsCheckbox();
await registerPage.clickOnCreateAccountSecondBtn();
await dashboardPage.isOnboardingNextBtnDisplayed();
await dashboardPage.clickOnOnboardingNextBtn();
await dashboardPage.checkOnboardingWelcomeHeader('Before you start');
await dashboardPage.clickOnOnboardingNextBtn();
await dashboardPage.reloadPage();
await teamPage.isTeamSelected(team);
await teamPage.openMembersPageViaOptionsMenu();
await teamPage.isMultipleMemberRecordDisplayed(
firstAdmin,
firstEmail,
'Admin'
);
await teamPage.isMultipleMemberRecordDisplayed(
secondAdmin,
secondEmail,
'Editor'
);
await teamPage.isMemberRoleInPopUpNotDisplayed(firstAdmin, 'Editor');
},
);
mainTest(
qase(1190,'DA-104 Team. Members - unable to change role of owner via admin'),
async ({ page }, testInfo) => {
await testInfo.setTimeout(testInfo.timeout + 60000);
const firstAdmin = random().concat('autotest');
const firstEmail = `${process.env.GMAIL_NAME}+${firstAdmin}@gmail.com`;
const profilePage = new ProfilePage(page);
const dashboardPage = new DashboardPage(page);
const loginPage = new LoginPage(page);
const teamPage = new TeamPage(page);
const registerPage = new RegisterPage(page);
await teamPage.createTeam(team);
await teamPage.isTeamSelected(team);
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');
await teamPage.clickInviteMembersToTeamButton();
await page.waitForTimeout(30000);
const firstInvite = await getRegisterMessage(firstEmail);
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.isOnboardingNextBtnDisplayed();
await dashboardPage.clickOnOnboardingNextBtn();
await dashboardPage.checkOnboardingWelcomeHeader('Before you start');
await dashboardPage.clickOnOnboardingNextBtn();
await dashboardPage.reloadPage();
await teamPage.isTeamSelected(team);
await teamPage.openMembersPageViaOptionsMenu();
const owner = process.env.CI ? 'QA Engineer' : 'k8q6byz';
await teamPage.isMemberRoleInPopUpNotDisplayed(owner, 'Owner');
},
);
mainTest(
qase(1183,'DA-97 Team. Invitations - unable to create, edit and delete invitations via editor'),
async ({ page }, testInfo) => {
await testInfo.setTimeout(testInfo.timeout + 60000);
const firstAdmin = random().concat('autotest');
const secondAdmin = random().concat('autotest');
const firstEmail = `${process.env.GMAIL_NAME}+${firstAdmin}@gmail.com`;
const secondEmail = `${process.env.GMAIL_NAME}+${secondAdmin}@gmail.com`;
const profilePage = new ProfilePage(page);
const dashboardPage = new DashboardPage(page);
const loginPage = new LoginPage(page);
const teamPage = new TeamPage(page);
const registerPage = new RegisterPage(page);
await teamPage.createTeam(team);
await teamPage.isTeamSelected(team);
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');
await teamPage.clickInviteMembersToTeamButton();
await teamPage.isInviteMembersPopUpHeaderDisplayed(
'Invite members to the team',
);
await teamPage.enterEmailToInviteMembersPopUp(`${secondEmail}`);
await teamPage.selectInvitationRoleInPopUp('Editor');
await teamPage.clickSendInvitationButton();
await teamPage.isSuccessMessageDisplayed('Invitation sent successfully');
await page.waitForTimeout(30000);
const firstInvite = await getRegisterMessage(firstEmail);
const secondInvite = await getRegisterMessage(secondEmail);
await profilePage.logout();
await loginPage.isLoginPageOpened();
await page.goto(secondInvite.inviteUrl);
await registerPage.isRegisterPageOpened();
await registerPage.enterEmail(secondEmail);
await registerPage.enterPassword(process.env.LOGIN_PWD);
await registerPage.clickOnCreateAccountBtn();
await registerPage.enterFullName(secondAdmin);
await registerPage.clickOnAcceptTermsCheckbox();
await registerPage.clickOnCreateAccountSecondBtn();
await dashboardPage.isOnboardingNextBtnDisplayed();
await dashboardPage.clickOnOnboardingNextBtn();
await dashboardPage.checkOnboardingWelcomeHeader('Before you start');
await dashboardPage.clickOnOnboardingNextBtn();
await dashboardPage.reloadPage();
await teamPage.isTeamSelected(team);
await teamPage.openInvitationsPageViaOptionsMenu();
await teamPage.isInviteMembersToTeamButtonDisabled();
await teamPage.isInvitationRecordOptionsDisabled(firstEmail);
await teamPage.isInvitationRoleInPopUpNotDisplayed(firstAdmin, 'Editor');
},
);
mainTest(
qase(1197,'DA-111 Team. Members - leave team (as admin)'),
async ({ page }, testInfo) => {
@ -1315,6 +1511,75 @@ test.describe(() => {
},
);
mainTest(
qase(1182,'DA-96 Team. Invitations - change role in invitation via admin'),
async ({ page }, testInfo) => {
await testInfo.setTimeout(testInfo.timeout + 60000);
const firstAdmin = random().concat('autotest');
const secondAdmin = random().concat('autotest');
const firstEmail = `${process.env.GMAIL_NAME}+${firstAdmin}@gmail.com`;
const secondEmail = `${process.env.GMAIL_NAME}+${secondAdmin}@gmail.com`;
const profilePage = new ProfilePage(page);
const dashboardPage = new DashboardPage(page);
const loginPage = new LoginPage(page);
const teamPage = new TeamPage(page);
const registerPage = new RegisterPage(page);
await teamPage.createTeam(team);
await teamPage.isTeamSelected(team);
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');
await teamPage.clickInviteMembersToTeamButton();
await teamPage.isInviteMembersPopUpHeaderDisplayed(
'Invite members to the team',
);
await teamPage.enterEmailToInviteMembersPopUp(`${secondEmail}`);
await teamPage.selectInvitationRoleInPopUp('Editor');
await teamPage.clickSendInvitationButton();
await teamPage.isSuccessMessageDisplayed('Invitation sent successfully');
await page.waitForTimeout(30000);
const firstInvite = await getRegisterMessage(firstEmail);
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.isOnboardingNextBtnDisplayed();
await dashboardPage.clickOnOnboardingNextBtn();
await dashboardPage.checkOnboardingWelcomeHeader('Before you start');
await dashboardPage.clickOnOnboardingNextBtn();
await dashboardPage.reloadPage();
await teamPage.isTeamSelected(team);
await teamPage.openInvitationsPageViaOptionsMenu();
await teamPage.isMultipleInvitationRecordDisplayed(
secondEmail,
'Editor',
'Pending',
);
await teamPage.changeInvitationRole(secondAdmin, 'Admin');
await teamPage.openMembersPageViaOptionsMenu();
await teamPage.openInvitationsPageViaOptionsMenu();
await teamPage.isMultipleInvitationRecordDisplayed(
secondEmail,
'Admin',
'Pending',
);
},
);
test.afterEach(async ({ page }) => {
const teamPage = new TeamPage(page);
const dashboardPage = new DashboardPage(page);
@ -1502,6 +1767,68 @@ test.describe(() => {
await teamPage.deleteTeam(team);
},
);
mainTest(
qase(1196,'DA-110 Team. Members - leave team (as owner)'),
async ({ page }, testInfo) => {
await testInfo.setTimeout(testInfo.timeout + 60000);
const firstAdmin = random().concat('autotest');
const firstEmail = `${process.env.GMAIL_NAME}+${firstAdmin}@gmail.com`;
const profilePage = new ProfilePage(page);
const dashboardPage = new DashboardPage(page);
const loginPage = new LoginPage(page);
const teamPage = new TeamPage(page);
const registerPage = new RegisterPage(page);
await teamPage.createTeam(team);
await teamPage.isTeamSelected(team);
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');
await page.waitForTimeout(30000);
const firstInvite = await getRegisterMessage(firstEmail);
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.isOnboardingNextBtnDisplayed();
await dashboardPage.clickOnOnboardingNextBtn();
await dashboardPage.checkOnboardingWelcomeHeader('Before you start');
await dashboardPage.clickOnOnboardingNextBtn();
await dashboardPage.reloadPage();
await teamPage.isTeamSelected(team);
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.isMultipleMemberRecordDisplayed(
firstAdmin,
firstEmail,
'Admin'
);
await teamPage.leaveTeam(team, 'Owner', firstAdmin);
},
);
});
test.afterEach(async ({ page }, testInfo) => {