update code styling with prettier

This commit is contained in:
KateMaruk 2023-12-12 09:53:40 +02:00
parent b28532dd7e
commit e16ed8527e
47 changed files with 2652 additions and 2109 deletions

View File

@ -58,7 +58,7 @@ jobs:
retention-days: 30
tests_webkit:
if: ${{ always() }}
needs: [ tests_chromium, tests_firefox]
needs: [tests_chromium, tests_firefox]
environment: PRE
runs-on: windows-latest
steps:

View File

@ -56,7 +56,7 @@ jobs:
retention-days: 30
tests_webkit:
if: ${{ always() }}
needs: [ tests_chromium, tests_firefox]
needs: [tests_chromium, tests_firefox]
environment: PRO
runs-on: windows-latest
steps:

View File

@ -33,6 +33,7 @@ To run the tests in Firefox and Webkit browsers, use `"firefox"` and `"webkit"`
`"webkit": "npx playwright test --project=webkit"`
Currently, there are 318 tests at all. For each browser there is the following execution time:
- Chrome - 75 min
- Firefox - 80 min
- Webkit - 90 min
@ -76,6 +77,7 @@ there is no way to unhide them in Firefox (unlike Chrome) - screenshots comparis
**5. Performance testing.**
To exclude performance tests from the periodical regression test run the following scripts should be used:
- for Chrome: `"npx playwright test --project=chrome -gv 'PERF'"`
- for Firefox: `"npx playwright test --project=firefox -gv 'PERF'"`
- for Webkit: `"npx playwright test --project=webkit -gv 'PERF'"`
@ -87,19 +89,23 @@ because in such way performance tests are not ignored.
On _Settings > Environments_ page 2 environments were created: _PRE_ and _PRO_.
For each environment the appropriate secrets were added:
- _LOGIN_EMAIL_ (email from your Penpot account, which is used for tests)
- _LOGIN_PWD_ (password from your Penpot account, which is used for tests)
- _BASE_URL_ (Penpot url)
- _LOGIN_EMAIL_ (email from your Penpot account, which is used for tests)
- _LOGIN_PWD_ (password from your Penpot account, which is used for tests)
- _BASE_URL_ (Penpot url)
2 _.yml_ files were added into _.github/workflows_ directory with settings for environments:
- tests for _PRE_ env will be run by schedule: each Thursday at 6:00 am UTC (and also it is possible to trigger them manually)
- tests for _PRO_ env will be run only by request and triggered manually
- tests for _PRE_ env will be run by schedule: each Thursday at 6:00 am UTC (and also it is possible to trigger them manually)
- tests for _PRO_ env will be run only by request and triggered manually
**Note**:
- The UTC time is used for schedule set up.
- There may be a delay for start running tests by schedule. It will take nearly 5-15 minutes.
There are 2 workflows on _Actions_ tab:
- Penpot Regression Tests on PRO env
- Penpot Regression Tests on PRE env
@ -109,10 +115,12 @@ In a few seconds running should be start.
**Tests run results:**
When the run will be finished the appropriate marker will appear near the current workflow:
- `green icon` - workflow has been passed
- `red icon` - workflow has been failed
It is possible to open workflows (both passed and failed) and look through the _Summary_ info:
- Status
- Total duration
- Artifacts

View File

@ -103,7 +103,7 @@ const performanceTest = base.test.extend({
"#shape-5bdd2da0-d6b1-11ec-a04a-cf2544e40df7",
],
frameTitleId: "#frame-title-5b3247a0-d6b1-11ec-a04a-cf2544e40df7",
frameId: "#frame-container-5b3247a0-d6b1-11ec-a04a-cf2544e40df7"
frameId: "#frame-container-5b3247a0-d6b1-11ec-a04a-cf2544e40df7",
},
{ option: true },
],

View File

@ -7,10 +7,10 @@ export function getPlatformName() {
let currentOS = process.platform.toLowerCase();
switch (currentOS) {
case 'win32':
case "win32":
platformName = "Windows";
break;
case 'darwin':
case "darwin":
platformName = "MacOS";
break;
default:

View File

@ -50,5 +50,4 @@ exports.BasePage = class BasePage {
async waitInfoMessageHidden() {
await this.infoMessage.waitFor({ state: "hidden" });
}
};

View File

@ -10,93 +10,99 @@ exports.DashboardPage = class DashboardPage extends BasePage {
//Files
this.numberOfFilesText = page.locator(
'div[class="project-name-wrapper"] span[class="info"]'
'div[class="project-name-wrapper"] span[class="info"]',
);
this.fileTile = page.locator('div[class="grid-item-th"]');
this.fileInfoPanel = page.locator('div[class="dashboard-grid"] div[class="grid-item-th"]');
this.fileInfoPanel = page.locator(
'div[class="dashboard-grid"] div[class="grid-item-th"]',
);
this.fileNameTitle = page.locator('div[class="item-info"] h3');
this.deleteFileMenuItem = page.locator('a[data-test="file-delete"]');
this.deleteFileButton = page.locator(
'input[value="Delete files"],input[value="Delete file"]'
'input[value="Delete files"],input[value="Delete file"]',
);
this.createFileButtonPlaceholder = page.locator(
'div[class="dashboard-grid"] button[class="create-new"]'
'div[class="dashboard-grid"] button[class="create-new"]',
);
this.createFileButtonTitlePanel = page.locator(
'*[data-test="project-new-file"]'
'*[data-test="project-new-file"]',
);
this.renameFileMenuItem = page.locator('a[data-test="file-rename"]');
this.duplicateFileMenuItem = page.locator('a[data-test="file-duplicate"]');
this.addFileAsSharedLibraryMenuItem = page.locator(
'a[data-test="file-add-shared"]'
'a[data-test="file-add-shared"]',
);
this.addFileAsSharedLibraryButton = page.locator(
'input[value="Add as Shared Library"]'
'input[value="Add as Shared Library"]',
);
this.sharedLibraryIcon = page.locator('svg[class="icon-library"]');
this.delFileAsSharedLibraryMenuItem = page.locator(
'a[data-test="file-del-shared"]'
'a[data-test="file-del-shared"]',
);
this.delFileAsSharedLibraryButton = page.locator(
'input[value="Unpublish"]'
'input[value="Unpublish"]',
);
this.downloadFilePenpotMenuItem = page.locator(
'a[data-test="download-binary-file"]'
'a[data-test="download-binary-file"]',
);
this.downloadFileStandardMenuItem = page.locator(
'a[data-test="download-standard-file"]'
'a[data-test="download-standard-file"]',
);
this.downloadFileTickIcon = page.locator('svg[class="icon-tick"]');
this.downloadFileCloseButton = page.locator('input[value="Close"]');
this.fileNameInput = page.locator('div[class="edit-wrapper"]');
this.fileOptionsMenuButton = page.locator(
'div[class="project-th-icon menu"] svg[class="icon-actions"]'
'div[class="project-th-icon menu"] svg[class="icon-actions"]',
);
this.headerOptionsMenuButton = page.locator(
'div[class="dashboard-header-actions"] svg[class="icon-actions"]'
'div[class="dashboard-header-actions"] svg[class="icon-actions"]',
);
//Projects
this.addProjectButton = page.locator(
'button[data-test="new-project-button"]'
'button[data-test="new-project-button"]',
);
this.projectNameInput = page.locator(
'div[class="project-name-wrapper"] div[class="edit-wrapper"]'
'div[class="project-name-wrapper"] div[class="edit-wrapper"]',
);
this.projectNameTitle = page.locator(
'div[class="project-name-wrapper"] h2'
'div[class="project-name-wrapper"] h2',
);
this.deleteProjectMenuItem = page.locator('a[data-test="project-delete"]');
this.deleteProjectButton = page.locator(
'input[value="Delete files"],input[value="Delete project"]'
'input[value="Delete files"],input[value="Delete project"]',
);
this.renameProjectMenuItem = page.locator('a[data-test="project-rename"]');
this.duplicateProjectMenuItem = page.locator(
'a[data-test="project-duplicate"]'
'a[data-test="project-duplicate"]',
);
this.pinUnpinProjectButton = page.locator('button[alt="Pin/Unpin"] svg');
this.projectNameInput = page.locator(
'div[class="project-name-wrapper"] div[class="edit-wrapper"]'
'div[class="project-name-wrapper"] div[class="edit-wrapper"]',
);
this.projectOptionsMenuButton = page.locator(
'*[data-test="project-options"] .icon-actions'
'*[data-test="project-options"] .icon-actions',
);
this.projectsSidebarItem = page.locator('li:has-text("Projects")');
this.draftsSidebarItem = page.locator('li:has-text("Drafts")');
this.librariesSidebarItem = page.locator('li:has-text("Libraries")');
this.pinnedProjectsSidebarItem = page.locator(
'div[data-test="pinned-projects"]'
'div[data-test="pinned-projects"]',
);
this.searchInput = page.locator('#search-input');
this.searchInput = page.locator("#search-input");
this.projectOptions = page.locator('[data-test="project-options"]');
// Import files
this.fileImport = page.locator('[data-test="file-import"]');
this.modalTitle = page.locator('.modal-header-title h2');
this.modalCancelButton = page.locator('.modal-footer .action-buttons .cancel-button');
this.modalAcceptButton = page.locator('.modal-footer .action-buttons .accept-button');
this.feedbackBanner = page.locator('.feedback-banner');
this.feedbackBannerMessage = page.locator('.feedback-banner .message');
this.modalTitle = page.locator(".modal-header-title h2");
this.modalCancelButton = page.locator(
".modal-footer .action-buttons .cancel-button",
);
this.modalAcceptButton = page.locator(
".modal-footer .action-buttons .accept-button",
);
this.feedbackBanner = page.locator(".feedback-banner");
this.feedbackBannerMessage = page.locator(".feedback-banner .message");
this.importErrorMessage = page.locator('div[class="error-message"]');
//Fonts
@ -104,22 +110,22 @@ exports.DashboardPage = class DashboardPage extends BasePage {
this.uploadFontSelector = page.locator("#font-upload");
this.uploadFontButton = page.locator('button:has-text("Upload")');
this.fontNameTableCell = page.locator(
'div[class="font-item table-row"] div[class="table-field family"]'
'div[class="font-item table-row"] div[class="table-field family"]',
);
this.fontStyleTableCell = page.locator(
'div[class="font-item table-row"] div[class="table-field variants"]'
'div[class="font-item table-row"] div[class="table-field variants"]',
);
this.fontOptionsMenuButton = page.locator(
'div[class="table-field options"] svg[class="icon-actions"]'
'div[class="table-field options"] svg[class="icon-actions"]',
);
this.editFontMenuItem = page.locator('a[data-test="font-edit"]');
this.deleteFontMenuItem = page.locator('a[data-test="font-delete"]');
this.deleteFontButton = page.locator('input[value="Delete"]');
this.fontsTablePlaceholder = page.locator(
'div[class="fonts-placeholder"] div[class="label"]'
'div[class="fonts-placeholder"] div[class="label"]',
);
this.fontNameInput = page.locator(
'div[class="font-item table-row"] input[type="text"]'
'div[class="font-item table-row"] input[type="text"]',
);
this.saveFontButton = page.locator('button:has-text("Save")');
this.searchFontInput = page.locator('input[placeholder="Search font"]');
@ -127,23 +133,25 @@ exports.DashboardPage = class DashboardPage extends BasePage {
//Libraries & Templates
this.librariesAndTemplatesCarouselButton = page.locator(
'div.dashboard-templates-section div.title button'
"div.dashboard-templates-section div.title button",
);
this.librariesAndTemplatesSection = page.locator(
'div[class="dashboard-templates-section "]'
'div[class="dashboard-templates-section "]',
);
this.librariesAndTemplatesSectionCollapsed = page.locator(
'div[class="dashboard-templates-section collapsed"]'
'div[class="dashboard-templates-section collapsed"]',
);
this.librariesAndTemplatesSectionLeftArrowButton = page.locator(
'button[class="button left"]'
'button[class="button left"]',
);
this.librariesAndTemplatesSectionRightArrowButton = page.locator(
'button[class="button right"]'
'button[class="button right"]',
);
this.continueButton = page.locator('input[value="Continue"]');
this.acceptButton = page.locator('input[value="Accept"]');
this.noLibrariesPlacelder = page.locator('div[data-test="empty-placeholder"] p');
this.noLibrariesPlacelder = page.locator(
'div[data-test="empty-placeholder"] p',
);
}
async createFileViaPlaceholder() {
@ -417,13 +425,16 @@ exports.DashboardPage = class DashboardPage extends BasePage {
async openProjectFromLeftSidebar(projectName) {
const projectSel = await this.page.locator(
`div[data-test="pinned-projects"] span.element-title:has-text("${projectName}")`);
`div[data-test="pinned-projects"] span.element-title:has-text("${projectName}")`,
);
await projectSel.click();
await this.isHeaderDisplayed(projectName);
}
async checkNoLibrariesExist() {
await expect(this.noLibrariesPlacelder).toContainText("Files added to Libraries will appear here.");
await expect(this.noLibrariesPlacelder).toContainText(
"Files added to Libraries will appear here.",
);
}
async clickUnpinProjectButton() {
@ -455,8 +466,8 @@ exports.DashboardPage = class DashboardPage extends BasePage {
}
async uploadFontWithInvalidFormat(filePath) {
const fontName = filePath.split('/')[1];
const warning =`The font '${fontName}' could not be loaded`;
const fontName = filePath.split("/")[1];
const warning = `The font '${fontName}' could not be loaded`;
await this.uploadFontSelector.setInputFiles(filePath);
await expect(this.fontFormatError).toHaveText(warning);
}
@ -505,9 +516,12 @@ exports.DashboardPage = class DashboardPage extends BasePage {
async isLibrariesAndTemplatesCarouselVisible() {
try {
await this.librariesAndTemplatesSection.waitFor({ state: 'visible', timeout: 4000 });
await this.librariesAndTemplatesSection.waitFor({
state: "visible",
timeout: 4000,
});
return true;
} catch(error) {
} catch (error) {
return false;
}
}
@ -520,17 +534,21 @@ exports.DashboardPage = class DashboardPage extends BasePage {
}
async maximizeLibrariesAndTemplatesCarousel() {
if (!await this.isLibrariesAndTemplatesCarouselVisible()) {
if (!(await this.isLibrariesAndTemplatesCarouselVisible())) {
await this.clickLibrariesAndTemplatesCarouselButton();
}
await this.isLibrariesAndTemplatesSectionDisplayed();
}
async flipLibrariesAndTemplatesCarousel(direction, times=1) {
if (direction === 'left') {
await this.librariesAndTemplatesSectionLeftArrowButton.click({ clickCount: times });
async flipLibrariesAndTemplatesCarousel(direction, times = 1) {
if (direction === "left") {
await this.librariesAndTemplatesSectionLeftArrowButton.click({
clickCount: times,
});
} else {
await this.librariesAndTemplatesSectionRightArrowButton.click({ clickCount: times });
await this.librariesAndTemplatesSectionRightArrowButton.click({
clickCount: times,
});
}
await this.header.hover();
}
@ -540,12 +558,16 @@ exports.DashboardPage = class DashboardPage extends BasePage {
}
async openSecondFile(fileName) {
const fileSel = this.page.locator(`div.info-wrapper:has-text("${fileName}")`);
const fileSel = this.page.locator(
`div.info-wrapper:has-text("${fileName}")`,
);
await fileSel.dblclick();
}
async importSharedLibrary(libraryName) {
await this.page.locator(`div[class="card-name"] span:has-text('${libraryName}')`).click();
await this.page
.locator(`div[class="card-name"] span:has-text('${libraryName}')`)
.click();
await this.continueButton.click();
await this.acceptButton.click();
}
@ -558,8 +580,10 @@ exports.DashboardPage = class DashboardPage extends BasePage {
await expect(this.modalTitle).toBeVisible();
await expect(this.modalTitle).toHaveText("Import Penpot files");
await this.modalAcceptButton.click();
await this.feedbackBanner.waitFor({ state: 'visible' });
await expect(this.feedbackBannerMessage).toHaveText("1 file has been imported successfully.");
await this.feedbackBanner.waitFor({ state: "visible" });
await expect(this.feedbackBannerMessage).toHaveText(
"1 file has been imported successfully.",
);
await this.modalAcceptButton.click();
}
@ -573,7 +597,9 @@ exports.DashboardPage = class DashboardPage extends BasePage {
await expect(this.modalAcceptButton).toBeVisible();
await expect(this.modalAcceptButton).toBeDisabled();
await expect(this.importErrorMessage).toHaveText("Oops! We couldn't import this file");
await expect(this.importErrorMessage).toHaveText(
"Oops! We couldn't import this file",
);
await this.modalCancelButton.click();
}

View File

@ -2,7 +2,6 @@ const { BasePage } = require("../base-page");
const { expect } = require("@playwright/test");
exports.TeamPage = class TeamPage extends BasePage {
/**
* @param {import('@playwright/test').Page} page
*/
@ -10,14 +9,16 @@ exports.TeamPage = class TeamPage extends BasePage {
super(page);
// Teams
this.teamCurrentBtn = page.locator('.current-team');
this.teamCurrentBtn = page.locator(".current-team");
this.teamList = page.locator('ul[class*="teams-dropdown"]');
this.createNewTeamMenuItem = page.locator('#teams-selector-create-team');
this.teamNameInput = page.locator('#name');
this.createNewTeamMenuItem = page.locator("#teams-selector-create-team");
this.teamNameInput = page.locator("#name");
this.createNewTeamButton = page.locator('input[value="Create new team"]');
this.teamCurrentNameDiv = page.locator('.current-team .team-name');
this.teamListItem = page.locator('li[class="team-name"] span[class="team-text"]');
this.teamOptionsMenuButton = page.locator('.switch-options .icon-actions');
this.teamCurrentNameDiv = page.locator(".current-team .team-name");
this.teamListItem = page.locator(
'li[class="team-name"] span[class="team-text"]',
);
this.teamOptionsMenuButton = page.locator(".switch-options .icon-actions");
this.deleteTeamMenuItem = page.locator('li[data-test="delete-team"]');
this.deleteTeamButton = page.locator('input[value="Delete team"]');
this.teamSettingsMenuItem = page.locator('li[data-test="team-settings"]');
@ -25,55 +26,61 @@ exports.TeamPage = class TeamPage extends BasePage {
this.uploadTeamImageButton = page.locator('input[type="file"]');
this.renameTeamInput = page.locator("#name");
this.updateTeamButton = page.locator('input[value="Update team"]');
this.teamOwnerSpan = page.locator('div.owner-block .owner span.text');
this.teamMembersSpan = page.locator('div.owner-block .summary span.text');
this.teamProjectsSpan = page.locator('div.stats-block .projects span.text');
this.teamFilesSpan = page.locator('div.stats-block .files span.text');
this.teamOwnerSpan = page.locator("div.owner-block .owner span.text");
this.teamMembersSpan = page.locator("div.owner-block .summary span.text");
this.teamProjectsSpan = page.locator("div.stats-block .projects span.text");
this.teamFilesSpan = page.locator("div.stats-block .files span.text");
this.teamInfoSection = page.locator('div[class="block info-block"]');
this.teamNameLabel = page.locator('div.block.info-block div.name');
this.teamNameLabel = page.locator("div.block.info-block div.name");
this.teamOwnerSection = page.locator('div[class="block owner-block"]');
this.teamStatsSection = page.locator('div[class="block stats-block"]');
//Invitations
this.invitationsMenuItem = page.locator('li[data-test="team-invitations"]');
this.inviteMembersToTeamButton = page.locator('a[data-test="invite-member"]');
this.inviteMembersPopUpHeader = page.locator(
'div[class^="modal dashboard-invite-modal form-container "] div[class="title"]'
this.inviteMembersToTeamButton = page.locator(
'a[data-test="invite-member"]',
);
this.inviteMembersPopUpHeader = page.locator(
'div[class^="modal dashboard-invite-modal form-container "] div[class="title"]',
);
this.inviteMembersTeamHeroButton = page.locator(
'button[class="btn-primary invite"]',
);
this.inviteMembersTeamHeroButton = page.locator('button[class="btn-primary invite"]');
this.inviteMembersToTeamRoleSelectorButton = page.locator(
'div[class="custom-select"]'
'div[class="custom-select"]',
);
this.inviteMembersToTeamRoleSelector = page.locator(
'div[class="custom-select"] select'
'div[class="custom-select"] select',
);
this.inviteMembersToTeamEmailInput = page.locator(
'input[placeholder="Emails, comma separated"]'
'input[placeholder="Emails, comma separated"]',
);
this.sendInvitationButton = page.locator('input[value="Send invitation"]');
this.invitationRecord = page.locator('div[class="table-row"]');
this.invitationRecordEmailCell = page.locator(
'div[class="table-field mail"]'
'div[class="table-field mail"]',
);
this.invitationRecordRoleCell = page.locator(
'div[class="table-field roles"]'
'div[class="table-field roles"]',
);
this.invitationRecordRoleSelector = page.locator(
'div[class="rol-selector has-priv"]'
'div[class="rol-selector has-priv"]',
);
this.invitationRecordStatusCell = page.locator(
'div[class="table-field status"] div'
'div[class="table-field status"] div',
);
this.invitationRecordOptionsMenuButton = page.locator(
'div[class="table-field actions"] svg[class="icon-actions"]'
'div[class="table-field actions"] svg[class="icon-actions"]',
);
this.invitationRecordResendInvititationMenuItem = page.locator(
'li:has-text("Resend invitation")'
'li:has-text("Resend invitation")',
);
this.invitationRecordDeleteInvititationMenuItem = page.locator(
'li:has-text("Delete invitation")'
'li:has-text("Delete invitation")',
);
this.invitationWarningSpan = page.locator(
"div.dashboard-invite-modal .warning span.text",
);
this.invitationWarningSpan = page.locator('div.dashboard-invite-modal .warning span.text');
}
async createTeam(teamName) {
@ -88,7 +95,7 @@ exports.TeamPage = class TeamPage extends BasePage {
}
async openTeamsListIfClosed() {
if (!await this.teamList.isVisible()) {
if (!(await this.teamList.isVisible())) {
await this.teamCurrentBtn.click();
}
await expect(this.teamList).toBeVisible();
@ -96,7 +103,9 @@ exports.TeamPage = class TeamPage extends BasePage {
async switchTeam(teamName) {
await this.openTeamsListIfClosed();
const teamOption = this.page.locator(`li.team-name span.team-text:has-text("${teamName}")`);
const teamOption = this.page.locator(
`li.team-name span.team-text:has-text("${teamName}")`,
);
await teamOption.click();
await this.isTeamSelected(teamName);
}
@ -136,7 +145,9 @@ exports.TeamPage = class TeamPage extends BasePage {
await this.openTeamsListIfClosed();
for (const teamName of await this.teamListItem.allInnerTexts()) {
if (!teamName.includes("Your Penpot")) {
const teamSel = this.page.locator(`li.team-name span.team-text:text-is("${teamName}")`).last();
const teamSel = this.page
.locator(`li.team-name span.team-text:text-is("${teamName}")`)
.last();
await teamSel.click();
await this.teamOptionsMenuButton.waitFor();
await this.teamOptionsMenuButton.click();
@ -260,5 +271,4 @@ exports.TeamPage = class TeamPage extends BasePage {
await this.renameTeamInput.fill(teamName);
await this.updateTeamButton.click();
}
}
};

View File

@ -1,5 +1,6 @@
const { expect } = require("@playwright/test");
const { BasePage } = require("./base-page");
exports.LoginPage = class LoginPage extends BasePage {
/**
* @param {import('@playwright/test').Page} page
@ -11,10 +12,10 @@ exports.LoginPage = class LoginPage extends BasePage {
this.pwdInput = page.locator("#password");
this.loginButton = page.locator('[data-test="login-submit"]');
this.emailInputError = page.locator(
'div[class=" invalid with-icon custom-input"] #email'
'div[class=" invalid with-icon custom-input"] #email',
);
this.pwdInputError = page.locator(
'div[class=" invalid empty with-icon custom-input"] #password'
'div[class=" invalid empty with-icon custom-input"] #password',
);
this.section = page.locator('section[class="auth-content"]');
this.loginErrorBanner = page.locator('div[data-test="login-banner"]');
@ -73,5 +74,4 @@ exports.LoginPage = class LoginPage extends BasePage {
await expect(this.pageTitle).toBeVisible();
await expect(this.pageTitle).toHaveText("Great to see you again!");
}
};

View File

@ -1,5 +1,6 @@
const { expect } = require("@playwright/test");
const { BasePage } = require("./base-page");
exports.ProfilePage = class ProfilePage extends BasePage {
/**
* @param {import('@playwright/test').Page} page
@ -9,33 +10,40 @@ exports.ProfilePage = class ProfilePage extends BasePage {
//Account
this.profileMenuButton = page.locator('div[data-test="profile-btn"]');
this.profileNameSpan = page.locator('div.profile span');
this.yourAccountMenuItem = page.locator('li[data-test="profile-profile-opt"]');
this.profileNameSpan = page.locator("div.profile span");
this.yourAccountMenuItem = page.locator(
'li[data-test="profile-profile-opt"]',
);
this.logoutMenuItem = page.locator('li[data-test="logout-profile-opt"]');
this.giveFeedbackMenuItem = page.locator('li[data-test="feedback-profile-opt"]');
this.backToDashboardBtn = page.locator('div.back-to-dashboard');
this.giveFeedbackMenuItem = page.locator(
'li[data-test="feedback-profile-opt"]',
);
this.backToDashboardBtn = page.locator("div.back-to-dashboard");
//Profile
this.profileNameInput = page.locator('#fullname');
this.profileEmailInput = page.locator('#email');
this.profileNameInput = page.locator("#fullname");
this.profileEmailInput = page.locator("#email");
this.saveSettingsButton = page.locator('input[value="Save settings"]');
this.profileImageInput = page.locator('input[data-test="profile-image-input"]')
this.profileAvatarBlock = page.locator('div.form-container.two-columns');
this.profileImageInput = page.locator(
'input[data-test="profile-image-input"]',
);
this.profileAvatarBlock = page.locator("div.form-container.two-columns");
//Feedback
this.feedbackSubjectInput = page.locator('#subject');
this.feedbackDescriptionInput = page.locator('textarea');
this.feedbackSubjectInput = page.locator("#subject");
this.feedbackDescriptionInput = page.locator("textarea");
this.sendFeedbackButton = page.locator('input[value="Send"]');
//Password
this.passwordSidebarOption = page.locator(
'div.sidebar-content-section li span.element-title:text-is("Password")');
this.passwordFormHeader = page.locator('.password-form h2');
this.passwordOldInput = page.locator('#password-old');
'div.sidebar-content-section li span.element-title:text-is("Password")',
);
this.passwordFormHeader = page.locator(".password-form h2");
this.passwordOldInput = page.locator("#password-old");
this.passwordNewInput = page.locator('input[label="New password"]');
this.passwordConfirmInput = page.locator('input[label="Confirm password"]');
this.updateSettingsBtn = page.locator('input[value="Update settings"]');
this.passwordInputError = page.locator('span[data-test="-error"]')
this.passwordInputError = page.locator('span[data-test="-error"]');
}
async openYourAccountPage() {
@ -50,7 +58,7 @@ exports.ProfilePage = class ProfilePage extends BasePage {
async openPasswordPageInAccount() {
await this.passwordSidebarOption.click();
await expect(this.passwordFormHeader).toHaveText('Change password');
await expect(this.passwordFormHeader).toHaveText("Change password");
}
async enterCurrentPassword(value) {
@ -120,5 +128,4 @@ exports.ProfilePage = class ProfilePage extends BasePage {
await this.backToDashboardBtn.click();
await this.isHeaderDisplayed("Projects");
}
};

View File

@ -9,16 +9,16 @@ exports.RegisterPage = class RegisterPage extends BasePage {
super(page);
this.pageTitle = page.locator('h1[data-test="registration-title"]');
this.emailInput = page.locator('#email');
this.passwordInput = page.locator('#password');
this.emailInput = page.locator("#email");
this.passwordInput = page.locator("#password");
this.createAccountBtn = page.locator('input[value="Create an account"]');
this.emailInputError = page.locator('span[data-test="email-input-error"]');
this.passwordInputError = page.locator('span[data-test="-error"]')
this.passwordInputError = page.locator('span[data-test="-error"]');
}
async isRegisterPageOpened() {
await expect(this.pageTitle).toBeVisible();
await expect(this.pageTitle).toHaveText('Create an account');
await expect(this.pageTitle).toHaveText("Create an account");
}
async enterEmail(email) {
@ -58,5 +58,4 @@ exports.RegisterPage = class RegisterPage extends BasePage {
async clickOnHeader() {
await this.pageTitle.click();
}
}
};

View File

@ -7,19 +7,25 @@ exports.ColorPalettePopUp = class ColorPalettePopUp extends BasePage {
*/
constructor(page) {
super(page);
this.popUp = page.locator('.colorpicker-tooltip');
this.hexInput = page.locator('#hex-value');
this.popUp = page.locator(".colorpicker-tooltip");
this.hexInput = page.locator("#hex-value");
this.saveColorStyleButton = page.locator(
'button:has-text("Save color style")'
'button:has-text("Save color style")',
);
this.fileLibraryColorBullet = page.locator(
'div[class="selected-colors"] div[class="color-bullet is-library-color"] >>nth=0'
'div[class="selected-colors"] div[class="color-bullet is-library-color"] >>nth=0',
);
this.colorsSelector = page.locator(".colorpicker-tooltip select");
this.colorPaletteActionsBtn = page.locator("div.color-palette-actions");
this.colorPaletteMenu = page.locator(
"ul.workspace-context-menu.palette-menu",
);
this.colorPaletteFileLibraryOpt = page.locator(
'li.palette-library:has-text("File library")',
);
this.colorPaletteRecentColorsOpt = page.locator(
'li.palette-library:has-text("Recent colors")',
);
this.colorsSelector = page.locator('.colorpicker-tooltip select');
this.colorPaletteActionsBtn = page.locator('div.color-palette-actions');
this.colorPaletteMenu = page.locator('ul.workspace-context-menu.palette-menu');
this.colorPaletteFileLibraryOpt = page.locator('li.palette-library:has-text("File library")');
this.colorPaletteRecentColorsOpt = page.locator('li.palette-library:has-text("Recent colors")');
}
async setHex(value) {
@ -36,7 +42,9 @@ exports.ColorPalettePopUp = class ColorPalettePopUp extends BasePage {
}
async isRecentColorBulletDisplayed(color) {
const selector = await this.page.locator(`div[class="selected-colors"] div[title="${color}"]`);
const selector = await this.page.locator(
`div[class="selected-colors"] div[title="${color}"]`,
);
await expect(selector).toBeVisible();
}
@ -49,7 +57,9 @@ exports.ColorPalettePopUp = class ColorPalettePopUp extends BasePage {
}
async clickRecentColorBullet(color) {
const selector = await this.page.locator(`div[class="selected-colors"] div[title="${color}"]`);
const selector = await this.page.locator(
`div[class="selected-colors"] div[title="${color}"]`,
);
await selector.click();
}
@ -71,14 +81,17 @@ exports.ColorPalettePopUp = class ColorPalettePopUp extends BasePage {
}
async selectColorPaletteMenuOption(value) {
const menuSel = this.page.locator(`li.palette-library:has-text("${value}")`);
const menuSel = this.page.locator(
`li.palette-library:has-text("${value}")`,
);
await menuSel.click();
await expect(this.colorPaletteMenu).not.toBeVisible();
}
async selectColorBulletFromPalette(value) {
const colorSel = this.page.locator(`div.color-palette-inside div[title="${value}"]`);
const colorSel = this.page.locator(
`div.color-palette-inside div[title="${value}"]`,
);
await colorSel.click();
}
};

View File

@ -2,56 +2,65 @@ const { expect } = require("@playwright/test");
const { BasePage } = require("../base-page");
exports.DesignPanelPage = class DesignPanelPage extends BasePage {
/**
* @param {import('@playwright/test').Page} page
*/
constructor(page) {
super(page);
/**
* @param {import('@playwright/test').Page} page
*/
constructor(page) {
super(page);
// 'Flex element' section
this.flexElementSection = page.locator('div[class="element-set-content layout-item-menu"]');
this.flexElementAlignStartBtn = page.locator('div.layout-item-menu button[alt="Align self start"]');
this.flexElementAlignCenterBtn = page.locator('div.layout-item-menu button[alt="Align self center"]');
this.flexElementAlignEndBtn = page.locator('div.layout-item-menu button[alt="Align self end"]');
this.flexElementMarginVertInput = page.locator(
'div[class="margin-row"] div[alt="Vertical margin"] input'
);
this.flexElementMarginHorizontInput = page.locator(
'div[class="margin-row"] div[alt="Horizontal margin"] input'
);
this.flexElementPositionAbsolute = page.locator('div[class="layout-row"] button[alt="Absolute"]');
// 'Flex element' section
this.flexElementSection = page.locator(
'div[class="element-set-content layout-item-menu"]',
);
this.flexElementAlignStartBtn = page.locator(
'div.layout-item-menu button[alt="Align self start"]',
);
this.flexElementAlignCenterBtn = page.locator(
'div.layout-item-menu button[alt="Align self center"]',
);
this.flexElementAlignEndBtn = page.locator(
'div.layout-item-menu button[alt="Align self end"]',
);
this.flexElementMarginVertInput = page.locator(
'div[class="margin-row"] div[alt="Vertical margin"] input',
);
this.flexElementMarginHorizontInput = page.locator(
'div[class="margin-row"] div[alt="Horizontal margin"] input',
);
this.flexElementPositionAbsolute = page.locator(
'div[class="layout-row"] button[alt="Absolute"]',
);
}
async waitFlexElementSectionExpanded() {
await expect(this.flexElementSection).toBeVisible();
}
async changeFlexElementAlignment(alignment) {
switch (alignment) {
case "Start":
await this.flexElementAlignStartBtn.click();
break;
case "Center":
await this.flexElementAlignCenterBtn.click();
break;
case "End":
await this.flexElementAlignEndBtn.click();
break;
}
}
async waitFlexElementSectionExpanded() {
await expect(this.flexElementSection).toBeVisible();
}
async changeFlexElementVerticalMargin(value) {
await this.flexElementMarginVertInput.fill(value);
await this.clickOnEnter();
}
async changeFlexElementAlignment(alignment) {
switch (alignment) {
case 'Start':
await this.flexElementAlignStartBtn.click();
break;
case 'Center':
await this.flexElementAlignCenterBtn.click();
break;
case 'End':
await this.flexElementAlignEndBtn.click();
break;
}
}
async changeFlexElementHorizontalMargin(value) {
await this.flexElementMarginHorizontInput.fill(value);
await this.clickOnEnter();
}
async changeFlexElementVerticalMargin(value) {
await this.flexElementMarginVertInput.fill(value);
await this.clickOnEnter();
}
async changeFlexElementHorizontalMargin(value) {
await this.flexElementMarginHorizontInput.fill(value);
await this.clickOnEnter();
}
async setFlexElementPositionAbsolute() {
await this.flexElementPositionAbsolute.click();
}
}
async setFlexElementPositionAbsolute() {
await this.flexElementPositionAbsolute.click();
}
};

View File

@ -2,37 +2,40 @@ const { expect } = require("@playwright/test");
const { BasePage } = require("../base-page");
exports.LayersPanelPage = class LayersPanelPage extends BasePage {
/**
* @param {import('@playwright/test').Page} page
*/
constructor(page) {
super(page);
/**
* @param {import('@playwright/test').Page} page
*/
constructor(page) {
super(page);
this.layerBoardToggleContentExpand = page.locator('ul.element-list span.toggle-content.inverse');
this.layerBoardToggleContentCollapse = page.locator('ul.element-list span.toggle-content');
this.layerBoardChildRect = page.locator(
'div[class="element-list-body "] span:has-text("Rectangle") >>nth=-1'
);
this.layerBoardChildEllipse = page.locator(
'div[class="element-list-body "] span:has-text("Ellipse") >>nth=-1'
);
this.layerBoardToggleContentExpand = page.locator(
"ul.element-list span.toggle-content.inverse",
);
this.layerBoardToggleContentCollapse = page.locator(
"ul.element-list span.toggle-content",
);
this.layerBoardChildRect = page.locator(
'div[class="element-list-body "] span:has-text("Rectangle") >>nth=-1',
);
this.layerBoardChildEllipse = page.locator(
'div[class="element-list-body "] span:has-text("Ellipse") >>nth=-1',
);
}
async expandBoardOnLayers() {
if (!(await this.layerBoardToggleContentExpand.isVisible())) {
await this.layerBoardToggleContentCollapse.click();
await expect(this.layerBoardToggleContentExpand).toBeVisible();
}
}
async expandBoardOnLayers() {
if (!await this.layerBoardToggleContentExpand.isVisible()) {
await this.layerBoardToggleContentCollapse.click();
await expect(this.layerBoardToggleContentExpand).toBeVisible();
}
}
async selectBoardChildRect() {
await this.expandBoardOnLayers();
await this.layerBoardChildRect.click();
}
async selectBoardChildRect() {
await this.expandBoardOnLayers();
await this.layerBoardChildRect.click();
}
async selectBoardChildEllipse() {
await this.expandBoardOnLayers();
await this.layerBoardChildEllipse.click();
}
}
async selectBoardChildEllipse() {
await this.expandBoardOnLayers();
await this.layerBoardChildEllipse.click();
}
};

File diff suppressed because it is too large Load Diff

View File

@ -1,14 +1,14 @@
const { mainTest } = require("../../fixtures");
const { MainPage } = require("../../pages/workspace/main-page");
const { expect, test} = require("@playwright/test");
const { expect, test } = require("@playwright/test");
const { ColorPalettePopUp } = require("../../pages/workspace/color-palette-popup");
const { random } = require("../../helpers/string-generator");
const { TeamPage } = require("../../pages/dashboard/team-page");
const { DashboardPage } = require("../../pages/dashboard/dashboard-page");
const teamName = random().concat('autotest');
const teamName = random().concat("autotest");
test.beforeEach( async ({ page }) => {
test.beforeEach(async ({ page }) => {
const teamPage = new TeamPage(page);
const dashboardPage = new DashboardPage(page);
const mainPage = new MainPage(page);
@ -77,7 +77,7 @@ mainTest("AS-25 File library colors - rename", async ({ page }) => {
await mainPage.waitForChangeIsSaved();
await mainPage.isColorAddedToFileLibraryColors("test color#ffff00");
await expect(mainPage.assetsPanel).toHaveScreenshot(
"colors-rename-color.png"
"colors-rename-color.png",
);
});
@ -127,7 +127,7 @@ mainTest("AS-29 File library colors - rename group", async ({ page }) => {
await mainPage.waitForChangeIsSaved();
await mainPage.isFileLibraryGroupCreated("New Group");
await expect(mainPage.assetsPanel).toHaveScreenshot(
"group-colors-renamed.png"
"group-colors-renamed.png",
);
});
@ -162,7 +162,7 @@ mainTest("AS-34 File library colors - apply to element", async ({ page }) => {
await mainPage.waitForChangeIsSaved();
await mainPage.clickFileLibraryColorsColorBullet();
await expect(mainPage.createdLayer).toHaveScreenshot(
"apply-color-to-board.png"
"apply-color-to-board.png",
);
});
@ -183,6 +183,6 @@ mainTest("AS-117 File library colors - apply to stroke", async ({ page }) => {
await mainPage.waitForChangeIsSaved();
await mainPage.clickViewportByCoordinates(900, 100);
await expect(mainPage.createdLayer).toHaveScreenshot(
"apply-color-to-stroke-board.png"
"apply-color-to-stroke-board.png",
);
});

View File

@ -1,13 +1,13 @@
const { mainTest } = require("../../fixtures");
const { MainPage } = require("../../pages/workspace/main-page");
const { expect, test} = require("@playwright/test");
const { expect, test } = require("@playwright/test");
const { random } = require("../../helpers/string-generator");
const { TeamPage } = require("../../pages/dashboard/team-page");
const { DashboardPage } = require("../../pages/dashboard/dashboard-page");
const teamName = random().concat('autotest');
const teamName = random().concat("autotest");
test.beforeEach( async ({ page }) => {
test.beforeEach(async ({ page }) => {
const teamPage = new TeamPage(page);
const dashboardPage = new DashboardPage(page);
const mainPage = new MainPage(page);
@ -31,7 +31,7 @@ mainTest(
await mainPage.clickAssetsTab();
await mainPage.selectTypeFromAllAssetsSelector("Components");
await mainPage.isAssetsTitleDisplayed("Components (0)");
}
},
);
mainTest("AS-57 Create component shape", async ({ page }) => {
@ -44,7 +44,7 @@ mainTest("AS-57 Create component shape", async ({ page }) => {
await mainPage.clickAssetsTab();
await mainPage.isComponentAddedToFileLibraryComponents();
await expect(mainPage.assetsPanel).toHaveScreenshot(
"components-rectangle.png"
"components-rectangle.png",
);
});
@ -106,7 +106,7 @@ mainTest("AS-80 Duplicate component", async ({ page }) => {
await mainPage.waitForChangeIsSaved();
await mainPage.isSecondComponentAddedToFileLibraryComponents();
await expect(mainPage.assetsPanel).toHaveScreenshot(
"components-rectangle-duplicated.png"
"components-rectangle-duplicated.png",
);
});
@ -153,7 +153,7 @@ mainTest("AS-85 Components - rename group", async ({ page }) => {
await mainPage.waitForChangeIsSaved();
await mainPage.isFileLibraryGroupCreated("New Group");
await expect(mainPage.assetsPanel).toHaveScreenshot(
"group-components-renamed.png"
"group-components-renamed.png",
);
});
@ -171,7 +171,7 @@ mainTest("AS-88 Components - ungroup", async ({ page }) => {
await mainPage.waitForChangeIsSaved();
await mainPage.isFileLibraryGroupRemoved();
await expect(mainPage.assetsPanel).toHaveScreenshot(
"components-rectangle.png"
"components-rectangle.png",
);
});
@ -195,16 +195,16 @@ mainTest("AS-90 Components - change view list tile", async ({ page }) => {
await mainPage.waitForChangeIsSaved();
await mainPage.clickAssetsTab();
await expect(mainPage.assetsPanel).toHaveScreenshot(
"components-tile-view.png"
"components-tile-view.png",
);
await mainPage.clickFileLibraryChangeViewButton();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.assetsPanel).toHaveScreenshot(
"components-list-view.png"
"components-list-view.png",
);
await mainPage.clickFileLibraryChangeViewButton();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.assetsPanel).toHaveScreenshot(
"components-tile-view.png"
"components-tile-view.png",
);
});

View File

@ -5,23 +5,23 @@ const { random } = require("../../helpers/string-generator");
const { TeamPage } = require("../../pages/dashboard/team-page");
const { DashboardPage } = require("../../pages/dashboard/dashboard-page");
const teamName = random().concat('autotest');
const teamName = random().concat("autotest");
test.beforeEach( async ({ page }) => {
const teamPage = new TeamPage(page);
const dashboardPage = new DashboardPage(page);
const mainPage = new MainPage(page);
await teamPage.createTeam(teamName);
await teamPage.isTeamSelected(teamName);
await dashboardPage.createFileViaPlaceholder();
await mainPage.isMainPageLoaded();
test.beforeEach(async ({ page }) => {
const teamPage = new TeamPage(page);
const dashboardPage = new DashboardPage(page);
const mainPage = new MainPage(page);
await teamPage.createTeam(teamName);
await teamPage.isTeamSelected(teamName);
await dashboardPage.createFileViaPlaceholder();
await mainPage.isMainPageLoaded();
});
test.afterEach(async ({ page }) => {
const teamPage = new TeamPage(page);
const mainPage = new MainPage(page);
await mainPage.backToDashboardFromFileEditor();
await teamPage.deleteTeam(teamName);
const teamPage = new TeamPage(page);
const mainPage = new MainPage(page);
await mainPage.backToDashboardFromFileEditor();
await teamPage.deleteTeam(teamName);
});
mainTest(
@ -36,7 +36,7 @@ mainTest(
await mainPage.isAssetsPanelDisplayed();
await mainPage.switchToLayersPanelViaShortcut();
await mainPage.isLayersPanelDisplayed();
}
},
);
mainTest("AS-2 Filter Graphics from All Assets drop-down", async ({ page }) => {
@ -68,7 +68,7 @@ mainTest("AS-5 File library graphics - add .svg", async ({ page }) => {
const mainPage = new MainPage(page);
await mainPage.clickAssetsTab();
await mainPage.uploadImageToFileLibraryGraphics(
"images/potato-snack-food-svgrepo-com.svg"
"images/potato-snack-food-svgrepo-com.svg",
);
await mainPage.waitForChangeIsSaved();
await mainPage.isImageUploadedToFileLibraryGraphics();
@ -109,7 +109,7 @@ mainTest("AS-14 File library graphics - rename group", async ({ page }) => {
await mainPage.waitForChangeIsSaved();
await mainPage.isFileLibraryGroupCreated("New Group");
await expect(mainPage.assetsPanel).toHaveScreenshot(
"group-graphics-renamed.png"
"group-graphics-renamed.png",
);
});
@ -136,21 +136,21 @@ mainTest(
await mainPage.uploadImageToFileLibraryGraphics("images/sample.jpeg");
await mainPage.waitForChangeIsSaved();
await mainPage.uploadImageToFileLibraryGraphics(
"images/potato-snack-food-svgrepo-com.svg"
"images/potato-snack-food-svgrepo-com.svg",
);
await mainPage.waitForChangeIsSaved();
await expect(mainPage.assetsPanel).toHaveScreenshot(
"graphics-tile-view.png"
"graphics-tile-view.png",
);
await mainPage.clickFileLibraryChangeViewButton();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.assetsPanel).toHaveScreenshot(
"graphics-list-view.png"
"graphics-list-view.png",
);
await mainPage.clickFileLibraryChangeViewButton();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.assetsPanel).toHaveScreenshot(
"graphics-tile-view.png"
"graphics-tile-view.png",
);
}
},
);

View File

@ -5,9 +5,9 @@ const { MainPage } = require("../../pages/workspace/main-page");
const { random } = require("../../helpers/string-generator");
const { TeamPage } = require("../../pages/dashboard/team-page");
const teamName = random().concat('autotest');
const teamName = random().concat("autotest");
test.beforeEach( async ({ page }) => {
test.beforeEach(async ({ page }) => {
const teamPage = new TeamPage(page);
const dashboardPage = new DashboardPage(page);
await teamPage.createTeam(teamName);
@ -20,13 +20,13 @@ test.afterEach(async ({ page }) => {
await teamPage.deleteTeam(teamName);
});
test.describe('Tests with importing Penpot Libraries', () => {
test.describe("Tests with importing Penpot Libraries", () => {
test.beforeEach(async ({ page }) => {
const dashboardPage = new DashboardPage(page);
const mainPage = new MainPage(page);
await mainPage.backToDashboardFromFileEditor();
await dashboardPage.maximizeLibrariesAndTemplatesCarousel();
await dashboardPage.flipLibrariesAndTemplatesCarousel('right');
await dashboardPage.flipLibrariesAndTemplatesCarousel("right");
await dashboardPage.importSharedLibrary("Whiteboarding Kit");
await dashboardPage.minimizeLibrariesAndTemplatesCarousel();
await dashboardPage.reloadPage();
@ -37,69 +37,90 @@ test.describe('Tests with importing Penpot Libraries', () => {
await mainPage.backToDashboardFromFileEditor();
});
mainTest("AS-92 Import shared library from LIBRARIES pop-up",async ({ page }) => {
const mainPage = new MainPage(page);
const dashboardPage = new DashboardPage(page);
await dashboardPage.openSecondFile("New File 1");
await mainPage.isMainPageLoaded();
await mainPage.clickAssetsTab();
await mainPage.clickLibrariesTab();
await mainPage.clickAddSharedLibraryButton();
await mainPage.clickCloseLibrariesPopUpButton();
await mainPage.expandFileLibraryOnAccessPanel("Whiteboarding & mapping kit");
await expect(mainPage.assetsPanel).toHaveScreenshot("imported-library.png");
});
mainTest(
"AS-92 Import shared library from LIBRARIES pop-up",
async ({ page }) => {
const mainPage = new MainPage(page);
const dashboardPage = new DashboardPage(page);
await dashboardPage.openSecondFile("New File 1");
await mainPage.isMainPageLoaded();
await mainPage.clickAssetsTab();
await mainPage.clickLibrariesTab();
await mainPage.clickAddSharedLibraryButton();
await mainPage.clickCloseLibrariesPopUpButton();
await mainPage.expandFileLibraryOnAccessPanel(
"Whiteboarding & mapping kit",
);
await expect(mainPage.assetsPanel).toHaveScreenshot(
"imported-library.png",
);
},
);
mainTest("AS-93 Remove shared library from LIBRARIES pop-up",async ({ page }) => {
const mainPage = new MainPage(page);
const dashboardPage = new DashboardPage(page);
await dashboardPage.openSecondFile("New File 1");
await mainPage.isMainPageLoaded();
await mainPage.clickAssetsTab();
await mainPage.clickLibrariesTab();
await mainPage.clickAddSharedLibraryButton();
await mainPage.clickCloseLibrariesPopUpButton();
await mainPage.expandFileLibraryOnAccessPanel("Whiteboarding & mapping kit");
await expect(mainPage.assetsPanel).toHaveScreenshot("imported-library.png");
await mainPage.clickLibrariesTab();
await mainPage.clickRemoveSharedLibraryButton();
await mainPage.clickCloseLibrariesPopUpButton();
await mainPage.isFileLibraryOnAccessPanelNotDisplayed("Whiteboarding & mapping kit");
await expect(mainPage.assetsPanel).toHaveScreenshot("removed-library.png");
});
mainTest(
"AS-93 Remove shared library from LIBRARIES pop-up",
async ({ page }) => {
const mainPage = new MainPage(page);
const dashboardPage = new DashboardPage(page);
await dashboardPage.openSecondFile("New File 1");
await mainPage.isMainPageLoaded();
await mainPage.clickAssetsTab();
await mainPage.clickLibrariesTab();
await mainPage.clickAddSharedLibraryButton();
await mainPage.clickCloseLibrariesPopUpButton();
await mainPage.expandFileLibraryOnAccessPanel(
"Whiteboarding & mapping kit",
);
await expect(mainPage.assetsPanel).toHaveScreenshot(
"imported-library.png",
);
await mainPage.clickLibrariesTab();
await mainPage.clickRemoveSharedLibraryButton();
await mainPage.clickCloseLibrariesPopUpButton();
await mainPage.isFileLibraryOnAccessPanelNotDisplayed(
"Whiteboarding & mapping kit",
);
await expect(mainPage.assetsPanel).toHaveScreenshot(
"removed-library.png",
);
},
);
mainTest("AS-94 Search shared library in LIBRARIES pop-up", async ({ page }) => {
const library1 = "Whiteboarding & mapping kit";
const library2 = "CircumIcons";
const mainPage = new MainPage(page);
const dashboardPage = new DashboardPage(page);
await dashboardPage.maximizeLibrariesAndTemplatesCarousel();
await dashboardPage.flipLibrariesAndTemplatesCarousel('right');
await dashboardPage.importSharedLibrary("Circum Icons pack");
await dashboardPage.minimizeLibrariesAndTemplatesCarousel();
await dashboardPage.reloadPage();
await dashboardPage.openSecondFile("New File 1");
await mainPage.isMainPageLoaded();
await mainPage.clickAssetsTab();
await mainPage.clickLibrariesTab();
mainTest(
"AS-94 Search shared library in LIBRARIES pop-up",
async ({ page }) => {
const library1 = "Whiteboarding & mapping kit";
const library2 = "CircumIcons";
const mainPage = new MainPage(page);
const dashboardPage = new DashboardPage(page);
await dashboardPage.maximizeLibrariesAndTemplatesCarousel();
await dashboardPage.flipLibrariesAndTemplatesCarousel("right");
await dashboardPage.importSharedLibrary("Circum Icons pack");
await dashboardPage.minimizeLibrariesAndTemplatesCarousel();
await dashboardPage.reloadPage();
await dashboardPage.openSecondFile("New File 1");
await mainPage.isMainPageLoaded();
await mainPage.clickAssetsTab();
await mainPage.clickLibrariesTab();
await mainPage.searchForLibrary("Circ");
await mainPage.isLibraryFoundAfterSearch(library2, true);
await mainPage.isLibraryFoundAfterSearch(library1, false);
await mainPage.clearSearchLibraryInput();
await mainPage.searchForLibrary("Circ");
await mainPage.isLibraryFoundAfterSearch(library2, true);
await mainPage.isLibraryFoundAfterSearch(library1, false);
await mainPage.clearSearchLibraryInput();
await mainPage.searchForLibrary(library1);
await mainPage.isLibraryFoundAfterSearch(library2, false);
await mainPage.isLibraryFoundAfterSearch(library1, true);
await mainPage.clearSearchLibraryInput();
await mainPage.searchForLibrary(library1);
await mainPage.isLibraryFoundAfterSearch(library2, false);
await mainPage.isLibraryFoundAfterSearch(library1, true);
await mainPage.clearSearchLibraryInput();
await mainPage.searchForLibrary("uncreated library");
await mainPage.isNoMatchedLibrariesFound("uncreated library");
await mainPage.clickCloseLibrariesPopUpButton();
});
await mainPage.searchForLibrary("uncreated library");
await mainPage.isNoMatchedLibrariesFound("uncreated library");
await mainPage.clickCloseLibrariesPopUpButton();
},
);
});
test.describe('Tests wt importing Penpot Libraries', () => {
test.describe("Tests wt importing Penpot Libraries", () => {
test.beforeEach(async ({ page }) => {
const mainPage = new MainPage(page);
await mainPage.clickAssetsTab();
@ -114,13 +135,13 @@ test.describe('Tests wt importing Penpot Libraries', () => {
await mainPage.backToDashboardFromFileEditor();
});
mainTest("AS-95 Publish Shared library",async ({ page }) => {
mainTest("AS-95 Publish Shared library", async ({ page }) => {
const dashboardPage = new DashboardPage(page);
await dashboardPage.openSidebarItem("Libraries");
await dashboardPage.isFilePresent("New File 1");
});
mainTest("AS-96 Unpublish Shared library",async ({ page }) => {
mainTest("AS-96 Unpublish Shared library", async ({ page }) => {
const mainPage = new MainPage(page);
const dashboardPage = new DashboardPage(page);
await dashboardPage.openSidebarItem("Libraries");
@ -137,5 +158,3 @@ test.describe('Tests wt importing Penpot Libraries', () => {
await dashboardPage.checkNoLibrariesExist();
});
});

View File

@ -5,9 +5,9 @@ const { random } = require("../../helpers/string-generator");
const { TeamPage } = require("../../pages/dashboard/team-page");
const { DashboardPage } = require("../../pages/dashboard/dashboard-page");
const teamName = random().concat('autotest');
const teamName = random().concat("autotest");
test.beforeEach( async ({ page }) => {
test.beforeEach(async ({ page }) => {
const teamPage = new TeamPage(page);
const dashboardPage = new DashboardPage(page);
const mainPage = new MainPage(page);

View File

@ -5,23 +5,23 @@ const { random } = require("../../helpers/string-generator");
const { TeamPage } = require("../../pages/dashboard/team-page");
const { DashboardPage } = require("../../pages/dashboard/dashboard-page");
const teamName = random().concat('autotest');
const teamName = random().concat("autotest");
test.beforeEach( async ({ page }) => {
const teamPage = new TeamPage(page);
const dashboardPage = new DashboardPage(page);
const mainPage = new MainPage(page);
await teamPage.createTeam(teamName);
await teamPage.isTeamSelected(teamName);
await dashboardPage.createFileViaPlaceholder();
await mainPage.isMainPageLoaded();
test.beforeEach(async ({ page }) => {
const teamPage = new TeamPage(page);
const dashboardPage = new DashboardPage(page);
const mainPage = new MainPage(page);
await teamPage.createTeam(teamName);
await teamPage.isTeamSelected(teamName);
await dashboardPage.createFileViaPlaceholder();
await mainPage.isMainPageLoaded();
});
test.afterEach(async ({ page }) => {
const teamPage = new TeamPage(page);
const mainPage = new MainPage(page);
await mainPage.backToDashboardFromFileEditor();
await teamPage.deleteTeam(teamName);
const teamPage = new TeamPage(page);
const mainPage = new MainPage(page);
await mainPage.backToDashboardFromFileEditor();
await teamPage.deleteTeam(teamName);
});
mainTest(
@ -31,7 +31,7 @@ mainTest(
await mainPage.clickAssetsTab();
await mainPage.selectTypeFromAllAssetsSelector("Typographies");
await mainPage.isAssetsTitleDisplayed("Typographies (0)");
}
},
);
mainTest(
@ -43,19 +43,19 @@ mainTest(
await mainPage.waitForChangeIsSaved();
await mainPage.clickViewportTwice();
await expect(mainPage.assetsPanel).toHaveScreenshot(
"typographies-add-typography-expanded.png"
"typographies-add-typography-expanded.png",
);
await mainPage.minimizeFileLibraryTypography();
await mainPage.clickViewportTwice();
await expect(mainPage.assetsPanel).toHaveScreenshot(
"typographies-add-typography-minimized.png"
"typographies-add-typography-minimized.png",
);
await mainPage.expandFileLibraryTypography();
await mainPage.clickViewportTwice();
await expect(mainPage.assetsPanel).toHaveScreenshot(
"typographies-add-typography-expanded.png"
"typographies-add-typography-expanded.png",
);
}
},
);
mainTest("AS-40 Typographic styles - edit", async ({ page }) => {
@ -71,17 +71,17 @@ mainTest("AS-40 Typographic styles - edit", async ({ page }) => {
await mainPage.waitForChangeIsSaved();
await mainPage.clickViewportTwice();
await expect(mainPage.assetsPanel).toHaveScreenshot(
"typographies-edit-typography-expanded.png"
"typographies-edit-typography-expanded.png",
);
await mainPage.minimizeFileLibraryTypography();
await mainPage.clickViewportTwice();
await expect(mainPage.assetsPanel).toHaveScreenshot(
"typographies-edit-typography-minimized.png"
"typographies-edit-typography-minimized.png",
);
await mainPage.expandFileLibraryTypography();
await mainPage.clickViewportTwice();
await expect(mainPage.assetsPanel).toHaveScreenshot(
"typographies-edit-typography-expanded.png"
"typographies-edit-typography-expanded.png",
);
});
@ -96,17 +96,17 @@ mainTest("AS-41 Typographic styles - rename", async ({ page }) => {
await mainPage.waitForChangeIsSaved();
await mainPage.clickViewportTwice();
await expect(mainPage.assetsPanel).toHaveScreenshot(
"typographies-rename-typography-expanded.png"
"typographies-rename-typography-expanded.png",
);
await mainPage.minimizeFileLibraryTypography();
await mainPage.clickViewportTwice();
await expect(mainPage.assetsPanel).toHaveScreenshot(
"typographies-rename-typography-minimized.png"
"typographies-rename-typography-minimized.png",
);
await mainPage.expandFileLibraryTypography();
await mainPage.clickViewportTwice();
await expect(mainPage.assetsPanel).toHaveScreenshot(
"typographies-rename-typography-expanded.png"
"typographies-rename-typography-expanded.png",
);
});
@ -121,7 +121,7 @@ mainTest("AS-42 Typographic styles - delete", async ({ page }) => {
await mainPage.waitForChangeIsSaved();
await mainPage.clickViewportTwice();
await expect(mainPage.assetsPanel).toHaveScreenshot(
"typographies-deleted-typography.png"
"typographies-deleted-typography.png",
);
});
@ -151,7 +151,7 @@ mainTest("AS-45 Typographic styles - rename group", async ({ page }) => {
await mainPage.waitForChangeIsSaved();
await mainPage.isFileLibraryGroupCreated("New Group");
await expect(mainPage.assetsPanel).toHaveScreenshot(
"group-typographies-renamed.png"
"group-typographies-renamed.png",
);
});
@ -168,7 +168,7 @@ mainTest("AS-48 Typographic styles - ungroup", async ({ page }) => {
await mainPage.waitForChangeIsSaved();
await mainPage.isFileLibraryGroupRemoved();
await expect(mainPage.assetsPanel).toHaveScreenshot(
"typographies-add-typography-minimized.png"
"typographies-add-typography-minimized.png",
);
});
@ -192,11 +192,12 @@ mainTest(
await mainPage.waitForChangeIsSaved();
await mainPage.clickViewportTwice();
await expect(mainPage.viewport).toHaveScreenshot(
"apply-typography-to-text_from_assets.png", {
"apply-typography-to-text_from_assets.png",
{
mask: [mainPage.guides],
}
},
);
}
},
);
mainTest(
@ -220,9 +221,10 @@ mainTest(
await mainPage.waitForChangeIsSaved();
await mainPage.clickViewportTwice();
await expect(mainPage.viewport).toHaveScreenshot(
"apply-typography-to-text.png", {
"apply-typography-to-text.png",
{
mask: [mainPage.guides],
}
},
);
}
},
);

View File

@ -6,9 +6,9 @@ const { TeamPage } = require("../../pages/dashboard/team-page");
const { DashboardPage } = require("../../pages/dashboard/dashboard-page");
const { random } = require("../../helpers/string-generator");
const teamName = random().concat('autotest');
const teamName = random().concat("autotest");
test.beforeEach( async ({ page }) => {
test.beforeEach(async ({ page }) => {
const teamPage = new TeamPage(page);
const dashboardPage = new DashboardPage(page);
const mainPage = new MainPage(page);
@ -55,7 +55,7 @@ mainTest(
const colorPalettePopUp = new ColorPalettePopUp(page);
await mainPage.clickCanvasBackgroundColorIcon();
await colorPalettePopUp.isColorPalettePopUpOpened();
}
},
);
mainTest("CP-7 Use Recent colors", async ({ page }) => {
@ -81,7 +81,7 @@ mainTest("CP-7 Use Recent colors", async ({ page }) => {
await mainPage.clickViewportTwice();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.createdLayer).toHaveScreenshot(
"board-recent-color.png"
"board-recent-color.png",
);
});
@ -104,7 +104,7 @@ mainTest("CP-8 Use colors from File library", async ({ page }) => {
await mainPage.clickViewportTwice();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.createdLayer).toHaveScreenshot(
"rectangle-file-library-color.png"
"rectangle-file-library-color.png",
);
});
@ -172,40 +172,52 @@ mainTest("CP-20 Choose file library colors", async ({ page }) => {
await colorPalettePopUp.isPaletteRecentColorsOptExist();
await colorPalettePopUp.isPaletteFileLibraryOptExist();
await colorPalettePopUp.selectColorPaletteMenuOption("File library");
await expect(mainPage.colorsPalette).toHaveScreenshot("colors-file-library.png");
await expect(mainPage.colorsPalette).toHaveScreenshot(
"colors-file-library.png",
);
await mainPage.pressColorsPaletteShortcut();
await mainPage.isColorsPaletteNotDisplayed();
});
mainTest("CP-21 Click any layer and change Fill color from palette",async ({ page }) => {
const mainPage = new MainPage(page);
const colorPalettePopUp = new ColorPalettePopUp(page);
await mainPage.clickCreateRectangleButton();
await mainPage.clickViewportTwice();
await mainPage.waitForChangeIsSaved();
await mainPage.clickFillColorIcon();
await colorPalettePopUp.setHex("#FF0000");
await mainPage.clickViewportTwice();
await mainPage.waitForChangeIsSaved();
await mainPage.clickFillColorIcon();
await colorPalettePopUp.setHex("#B1B2B5");
await mainPage.clickViewportTwice();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.createdLayer).toHaveScreenshot("rectangle-color-B1B2B5.png");
mainTest(
"CP-21 Click any layer and change Fill color from palette",
async ({ page }) => {
const mainPage = new MainPage(page);
const colorPalettePopUp = new ColorPalettePopUp(page);
await mainPage.clickCreateRectangleButton();
await mainPage.clickViewportTwice();
await mainPage.waitForChangeIsSaved();
await mainPage.clickFillColorIcon();
await colorPalettePopUp.setHex("#FF0000");
await mainPage.clickViewportTwice();
await mainPage.waitForChangeIsSaved();
await mainPage.clickFillColorIcon();
await colorPalettePopUp.setHex("#B1B2B5");
await mainPage.clickViewportTwice();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.createdLayer).toHaveScreenshot(
"rectangle-color-B1B2B5.png",
);
await mainPage.pressColorsPaletteShortcut();
await mainPage.isColorsPaletteDisplayed();
await expect(mainPage.colorsPalette).toHaveScreenshot("colors-panel.png");
await colorPalettePopUp.selectColorBulletFromPalette("#FF0000");
await expect(mainPage.createdLayer).toHaveScreenshot("rectangle-color-FF0000.png");
await mainPage.pressColorsPaletteShortcut();
await mainPage.isColorsPaletteNotDisplayed();
});
await mainPage.pressColorsPaletteShortcut();
await mainPage.isColorsPaletteDisplayed();
await expect(mainPage.colorsPalette).toHaveScreenshot("colors-panel.png");
await colorPalettePopUp.selectColorBulletFromPalette("#FF0000");
await expect(mainPage.createdLayer).toHaveScreenshot(
"rectangle-color-FF0000.png",
);
await mainPage.pressColorsPaletteShortcut();
await mainPage.isColorsPaletteNotDisplayed();
},
);
mainTest("CP-26 Open color picker from add or edit color in assets",async ({ page }) => {
mainTest(
"CP-26 Open color picker from add or edit color in assets",
async ({ page }) => {
const mainPage = new MainPage(page);
const colorPalettePopUp = new ColorPalettePopUp(page);
await mainPage.clickAssetsTab();
await mainPage.clickAddFileLibraryColorButton();
await colorPalettePopUp.isColorPalettePopUpOpened();
});
},
);

View File

@ -6,9 +6,9 @@ const { random } = require("../../helpers/string-generator");
const { TeamPage } = require("../../pages/dashboard/team-page");
const { DashboardPage } = require("../../pages/dashboard/dashboard-page");
const teamName = random().concat('autotest');
const teamName = random().concat("autotest");
test.beforeEach( async ({ page }) => {
test.beforeEach(async ({ page }) => {
const teamPage = new TeamPage(page);
const dashboardPage = new DashboardPage(page);
const mainPage = new MainPage(page);
@ -41,10 +41,9 @@ mainTest("CO-2 Create a board from toolbar", async ({ page }) => {
await mainPage.clickViewportTwice();
await mainPage.waitForChangeIsSaved();
await mainPage.isCreatedLayerVisible();
await expect(mainPage.viewport).toHaveScreenshot(
"board.png", {
mask: [mainPage.guides]
});
await expect(mainPage.viewport).toHaveScreenshot("board.png", {
mask: [mainPage.guides],
});
});
mainTest("CO-4 Rename board with valid name", async ({ page }) => {
@ -62,42 +61,55 @@ mainTest("CO-4 Rename board with valid name", async ({ page }) => {
await mainPage.isBoardNameDisplayed("renamed board");
});
mainTest("CO-9 Add, hide, unhide, change type and delete Shadow to board", async ({ page }) => {
const mainPage = new MainPage(page);
await mainPage.clickCreateBoardButton();
await mainPage.clickViewportTwice();
await mainPage.waitForChangeIsSaved();
await mainPage.clickAddShadowButton();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"board-drop-shadow-default.png", {
mask: [mainPage.guides]
});
await mainPage.hideShadow();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"board-drop-shadow-hide.png", {
mask: [mainPage.guides]
});
await mainPage.unhideShadow();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"board-drop-shadow-unhide.png", {
mask: [mainPage.guides]
});
await mainPage.selectTypeForShadow("Inner shadow");
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"board-inner-shadow-default.png", {
mask: [mainPage.guides]
});
await mainPage.removeShadow();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"board-inner-shadow-remove.png", {
mask: [mainPage.guides]
});
});
mainTest(
"CO-9 Add, hide, unhide, change type and delete Shadow to board",
async ({ page }) => {
const mainPage = new MainPage(page);
await mainPage.clickCreateBoardButton();
await mainPage.clickViewportTwice();
await mainPage.waitForChangeIsSaved();
await mainPage.clickAddShadowButton();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"board-drop-shadow-default.png",
{
mask: [mainPage.guides],
},
);
await mainPage.hideShadow();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"board-drop-shadow-hide.png",
{
mask: [mainPage.guides],
},
);
await mainPage.unhideShadow();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"board-drop-shadow-unhide.png",
{
mask: [mainPage.guides],
},
);
await mainPage.selectTypeForShadow("Inner shadow");
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"board-inner-shadow-default.png",
{
mask: [mainPage.guides],
},
);
await mainPage.removeShadow();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"board-inner-shadow-remove.png",
{
mask: [mainPage.guides],
},
);
},
);
mainTest("CO-10 Add and edit Shadow to board", async ({ page }) => {
const mainPage = new MainPage(page);
@ -116,10 +128,9 @@ mainTest("CO-10 Add and edit Shadow to board", async ({ page }) => {
await colorPalettePopUp.setHex("#304d6a");
await mainPage.clickViewportTwice();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"board-drop-shadow.png", {
mask: [mainPage.guides]
});
await expect(mainPage.viewport).toHaveScreenshot("board-drop-shadow.png", {
mask: [mainPage.guides],
});
await mainPage.selectTypeForShadow("Inner shadow");
await mainPage.changeXForShadow("5");
await mainPage.changeYForShadow("7");
@ -130,46 +141,44 @@ mainTest("CO-10 Add and edit Shadow to board", async ({ page }) => {
await colorPalettePopUp.setHex("#96e637");
await mainPage.clickViewportTwice();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"board-inner-shadow.png", {
mask: [mainPage.guides]
});
await expect(mainPage.viewport).toHaveScreenshot("board-inner-shadow.png", {
mask: [mainPage.guides],
});
});
mainTest("CO-12 Add, hide, unhide and delete Blur to board", async ({ page }) => {
const mainPage = new MainPage(page);
const colorPalettePopUp = new ColorPalettePopUp(page);
await mainPage.clickCreateBoardButton();
await mainPage.clickViewportTwice();
await mainPage.waitForChangeIsSaved();
await mainPage.clickFillColorIcon();
await colorPalettePopUp.setHex("#304d6a");
await mainPage.waitForChangeIsSaved();
await mainPage.clickAddBlurButton();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"board-blur-default.png", {
mask: [mainPage.guides]
mainTest(
"CO-12 Add, hide, unhide and delete Blur to board",
async ({ page }) => {
const mainPage = new MainPage(page);
const colorPalettePopUp = new ColorPalettePopUp(page);
await mainPage.clickCreateBoardButton();
await mainPage.clickViewportTwice();
await mainPage.waitForChangeIsSaved();
await mainPage.clickFillColorIcon();
await colorPalettePopUp.setHex("#304d6a");
await mainPage.waitForChangeIsSaved();
await mainPage.clickAddBlurButton();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot("board-blur-default.png", {
mask: [mainPage.guides],
});
await mainPage.hideBlur();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"board-blur-hide.png", {
mask: [mainPage.guides]
await mainPage.hideBlur();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot("board-blur-hide.png", {
mask: [mainPage.guides],
});
await mainPage.unhideBlur();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"board-blur-unhide.png", {
mask: [mainPage.guides]
await mainPage.unhideBlur();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot("board-blur-unhide.png", {
mask: [mainPage.guides],
});
await mainPage.removeBlur();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"board-blur-remove.png", {
mask: [mainPage.guides]
await mainPage.removeBlur();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot("board-blur-remove.png", {
mask: [mainPage.guides],
});
});
},
);
mainTest("CO-13 Add and edit Blur to board", async ({ page }) => {
const mainPage = new MainPage(page);
@ -179,58 +188,75 @@ mainTest("CO-13 Add and edit Blur to board", async ({ page }) => {
await mainPage.clickAddBlurButton();
await mainPage.changeValueForBlur("55");
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"board-blur.png", {
mask: [mainPage.guides]
});
await expect(mainPage.viewport).toHaveScreenshot("board-blur.png", {
mask: [mainPage.guides],
});
});
mainTest("CO-14 Add, edit and delete Stroke to board",async ({ page }) => {
mainTest("CO-14 Add, edit and delete Stroke to board", async ({ page }) => {
const mainPage = new MainPage(page);
await mainPage.clickCreateBoardButton();
await mainPage.clickViewportByCoordinates(100, 100);
await mainPage.waitForChangeIsSaved();
await mainPage.clickAddStrokeButton();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"board-stroke-default.png", {
mask: [mainPage.guides]
});
await expect(mainPage.viewport).toHaveScreenshot("board-stroke-default.png", {
mask: [mainPage.guides],
});
await mainPage.clickCreatedBoardTitleOnCanvas();
await mainPage.changeStrokeSettings('#43E50B','60', '10', 'Inside', 'Dotted');
await mainPage.changeStrokeSettings(
"#43E50B",
"60",
"10",
"Inside",
"Dotted",
);
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"board-stroke-inside-dotted.png", {
mask: [mainPage.guides]
});
"board-stroke-inside-dotted.png",
{
mask: [mainPage.guides],
},
);
await mainPage.clickCreatedBoardTitleOnCanvas();
await mainPage.changeStrokeSettings('#F5358F','80', '5', 'Outside', 'Dashed');
await mainPage.changeStrokeSettings(
"#F5358F",
"80",
"5",
"Outside",
"Dashed",
);
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"board-stroke-outside-dashed.png", {
mask: [mainPage.guides]
});
"board-stroke-outside-dashed.png",
{
mask: [mainPage.guides],
},
);
await mainPage.clickCreatedBoardTitleOnCanvas();
await mainPage.changeStrokeSettings('#F5358F','100', '3', 'Center', 'Solid');
await mainPage.changeStrokeSettings("#F5358F", "100", "3", "Center", "Solid");
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"board-stroke-center-solid.png", {
mask: [mainPage.guides]
});
"board-stroke-center-solid.png",
{
mask: [mainPage.guides],
},
);
await mainPage.clickCreatedBoardTitleOnCanvas();
await mainPage.changeStrokeSettings('#F5358F','40', '4', 'Center', 'Mixed');
await mainPage.changeStrokeSettings("#F5358F", "40", "4", "Center", "Mixed");
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"board-stroke-center-mixed.png", {
mask: [mainPage.guides]
});
"board-stroke-center-mixed.png",
{
mask: [mainPage.guides],
},
);
await mainPage.clickCreatedBoardTitleOnCanvas();
await mainPage.removeStroke();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"board-stroke-remove.png", {
mask: [mainPage.guides]
});
await expect(mainPage.viewport).toHaveScreenshot("board-stroke-remove.png", {
mask: [mainPage.guides],
});
});
mainTest("CO-25-1 Delete board via rightclick", async ({ page }) => {
@ -285,81 +311,90 @@ mainTest("CO-29 Change border radius multiple values", async ({ page }) => {
await mainPage.changeThirdCornerRadiusForLayer("90");
await mainPage.changeFourthCornerRadiusForLayer("120");
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot("board-changed-corners.png", {
mask: [mainPage.guides]
});
await expect(mainPage.viewport).toHaveScreenshot(
"board-changed-corners.png",
{
mask: [mainPage.guides],
},
);
await mainPage.changeFirstCornerRadiusForLayer("0");
await mainPage.changeSecondCornerRadiusForLayer("0");
await mainPage.changeThirdCornerRadiusForLayer("0");
await mainPage.changeFourthCornerRadiusForLayer("0");
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot("board.png", {
mask: [mainPage.guides]
mask: [mainPage.guides],
});
});
mainTest("CO-33 Zoom to board by double click board icon on the list",async ({ page }) => {
const mainPage = new MainPage(page);
const board1 = "Board #1";
const board2 = "Board #2";
await mainPage.clickCreateBoardButton();
await mainPage.clickViewportByCoordinates(100, 150);
await mainPage.waitForChangeIsSaved();
await mainPage.doubleClickBoardTitleOnCanvas("Board");
await mainPage.renameCreatedLayer(board1);
await mainPage.waitForChangeIsSaved();
await mainPage.clickCreateBoardButton();
await mainPage.clickViewportByCoordinates(250, 300);
await mainPage.waitForChangeIsSaved();
await mainPage.doubleClickBoardTitleOnCanvas("Board");
await mainPage.renameCreatedLayer(board2);
await mainPage.waitForChangeIsSaved();
await mainPage.doubleClickLayerIconOnLayersTab(board1);
await expect(mainPage.viewport).toHaveScreenshot(
"board-first-zoom.png", { mask: [mainPage.guides], }
);
await mainPage.doubleClickLayerIconOnLayersTab(board2);
await expect(mainPage.viewport).toHaveScreenshot(
"board-second-zoom.png", { mask: [mainPage.guides] }
);
});
mainTest(
"CO-33 Zoom to board by double click board icon on the list",
async ({ page }) => {
const mainPage = new MainPage(page);
const board1 = "Board #1";
const board2 = "Board #2";
await mainPage.clickCreateBoardButton();
await mainPage.clickViewportByCoordinates(100, 150);
await mainPage.waitForChangeIsSaved();
await mainPage.doubleClickBoardTitleOnCanvas("Board");
await mainPage.renameCreatedLayer(board1);
await mainPage.waitForChangeIsSaved();
await mainPage.clickCreateBoardButton();
await mainPage.clickViewportByCoordinates(250, 300);
await mainPage.waitForChangeIsSaved();
await mainPage.doubleClickBoardTitleOnCanvas("Board");
await mainPage.renameCreatedLayer(board2);
await mainPage.waitForChangeIsSaved();
await mainPage.doubleClickLayerIconOnLayersTab(board1);
await expect(mainPage.viewport).toHaveScreenshot("board-first-zoom.png", {
mask: [mainPage.guides],
});
await mainPage.doubleClickLayerIconOnLayersTab(board2);
await expect(mainPage.viewport).toHaveScreenshot("board-second-zoom.png", {
mask: [mainPage.guides],
});
},
);
mainTest("CO-34 Hide and show board from rightclick and icons",async ({ page }) => {
const mainPage = new MainPage(page);
const board1 = "Board #1";
const board2 = "Board #2";
await mainPage.clickCreateBoardButton();
await mainPage.clickViewportByCoordinates(100, 150);
await mainPage.waitForChangeIsSaved();
await mainPage.doubleClickBoardTitleOnCanvas("Board");
await mainPage.renameCreatedLayer(board1);
await mainPage.waitForChangeIsSaved();
await mainPage.clickCreateBoardButton();
await mainPage.clickViewportByCoordinates(250, 300);
await mainPage.waitForChangeIsSaved();
await mainPage.doubleClickBoardTitleOnCanvas("Board");
await mainPage.renameCreatedLayer(board2);
await mainPage.waitForChangeIsSaved();
await mainPage.hideUnhideLayerByIconOnLayersTab(board1);
await mainPage.waitForChangeIsSaved();
await expect(page).toHaveScreenshot(
"board-first-hide.png", { mask: [mainPage.guides, mainPage.usersSection] }
);
await mainPage.hideLayerViaRightClickOnCanvas(board2);
await mainPage.waitForChangeIsSaved();
await expect(page).toHaveScreenshot(
"board-second-hide.png", { mask: [mainPage.guides, mainPage.usersSection] }
);
await mainPage.hideUnhideLayerByIconOnLayersTab(board2);
await mainPage.waitForChangeIsSaved();
await expect(page).toHaveScreenshot(
"board-second-show.png", { mask: [mainPage.guides, mainPage.usersSection] }
);
await mainPage.unHideLayerViaRightClickOnLayersTab(board1);
await expect(page).toHaveScreenshot(
"board-first-show.png", { mask: [mainPage.guides, mainPage.usersSection] }
);
});
mainTest(
"CO-34 Hide and show board from rightclick and icons",
async ({ page }) => {
const mainPage = new MainPage(page);
const board1 = "Board #1";
const board2 = "Board #2";
await mainPage.clickCreateBoardButton();
await mainPage.clickViewportByCoordinates(100, 150);
await mainPage.waitForChangeIsSaved();
await mainPage.doubleClickBoardTitleOnCanvas("Board");
await mainPage.renameCreatedLayer(board1);
await mainPage.waitForChangeIsSaved();
await mainPage.clickCreateBoardButton();
await mainPage.clickViewportByCoordinates(250, 300);
await mainPage.waitForChangeIsSaved();
await mainPage.doubleClickBoardTitleOnCanvas("Board");
await mainPage.renameCreatedLayer(board2);
await mainPage.waitForChangeIsSaved();
await mainPage.hideUnhideLayerByIconOnLayersTab(board1);
await mainPage.waitForChangeIsSaved();
await expect(page).toHaveScreenshot("board-first-hide.png", {
mask: [mainPage.guides, mainPage.usersSection],
});
await mainPage.hideLayerViaRightClickOnCanvas(board2);
await mainPage.waitForChangeIsSaved();
await expect(page).toHaveScreenshot("board-second-hide.png", {
mask: [mainPage.guides, mainPage.usersSection],
});
await mainPage.hideUnhideLayerByIconOnLayersTab(board2);
await mainPage.waitForChangeIsSaved();
await expect(page).toHaveScreenshot("board-second-show.png", {
mask: [mainPage.guides, mainPage.usersSection],
});
await mainPage.unHideLayerViaRightClickOnLayersTab(board1);
await expect(page).toHaveScreenshot("board-first-show.png", {
mask: [mainPage.guides, mainPage.usersSection],
});
},
);
mainTest("CO-53 Click 'Focus on' board from right click", async ({ page }) => {
const mainPage = new MainPage(page);
@ -385,7 +420,7 @@ mainTest("CO-53 Click 'Focus on' board from right click", async ({ page }) => {
await mainPage.isFocusModeOn();
await expect(page).toHaveScreenshot("board-second-focus-on.png", {
mask: [mainPage.guides, mainPage.usersSection, mainPage.zoomButton],
maxDiffPixels: 5
maxDiffPixels: 5,
});
await mainPage.clickOnFocusModeLabel();
await mainPage.waitForChangeIsSaved();
@ -394,7 +429,7 @@ mainTest("CO-53 Click 'Focus on' board from right click", async ({ page }) => {
await mainPage.isFocusModeOff();
await expect(page).toHaveScreenshot("board-second-focus-off.png", {
mask: [mainPage.guides, mainPage.usersSection, mainPage.zoomButton],
maxDiffPixels: 5
maxDiffPixels: 5,
});
await mainPage.focusLayerViaRightClickOnLayersTab(board1);
await mainPage.waitForChangeIsSaved();
@ -403,7 +438,7 @@ mainTest("CO-53 Click 'Focus on' board from right click", async ({ page }) => {
await mainPage.isFocusModeOn();
await expect(page).toHaveScreenshot("board-first-focus-on.png", {
mask: [mainPage.guides, mainPage.usersSection, mainPage.zoomButton],
maxDiffPixels: 5
maxDiffPixels: 5,
});
await mainPage.clickOnFocusModeLabel();
await mainPage.waitForChangeIsSaved();
@ -412,11 +447,11 @@ mainTest("CO-53 Click 'Focus on' board from right click", async ({ page }) => {
await mainPage.isFocusModeOff();
await expect(page).toHaveScreenshot("board-first-focus-off.png", {
mask: [mainPage.guides, mainPage.usersSection, mainPage.zoomButton],
maxDiffPixels: 5
maxDiffPixels: 5,
});
});
mainTest("CO-56 Click 'Focus off' board from shortcut F",async ({ page }) => {
mainTest("CO-56 Click 'Focus off' board from shortcut F", async ({ page }) => {
const mainPage = new MainPage(page);
await mainPage.clickCreateBoardButton();
await mainPage.clickViewportTwice();
@ -427,7 +462,7 @@ mainTest("CO-56 Click 'Focus off' board from shortcut F",async ({ page }) => {
await mainPage.isFocusModeOn();
await expect(page).toHaveScreenshot("board-single-focus-on.png", {
mask: [mainPage.guides, mainPage.usersSection, mainPage.zoomButton],
maxDiffPixels: 5
maxDiffPixels: 5,
});
await mainPage.focusLayerViaShortcut();
await mainPage.waitForChangeIsSaved();
@ -435,7 +470,7 @@ mainTest("CO-56 Click 'Focus off' board from shortcut F",async ({ page }) => {
await mainPage.isFocusModeOff();
await expect(page).toHaveScreenshot("board-single-focus-off.png", {
mask: [mainPage.guides, mainPage.usersSection, mainPage.zoomButton],
maxDiffPixels: 5
maxDiffPixels: 5,
});
});

View File

@ -1,27 +1,27 @@
const { mainTest } = require("../../fixtures");
const { MainPage } = require("../../pages/workspace/main-page");
const { expect, test} = require("@playwright/test");
const { expect, test } = require("@playwright/test");
const { TeamPage } = require("../../pages/dashboard/team-page");
const { DashboardPage } = require("../../pages/dashboard/dashboard-page");
const { random } = require("../../helpers/string-generator");
const teamName = random().concat('autotest');
const teamName = random().concat("autotest");
test.beforeEach( async ({ page }) => {
const teamPage = new TeamPage(page);
const dashboardPage = new DashboardPage(page);
const mainPage = new MainPage(page);
await teamPage.createTeam(teamName);
await teamPage.isTeamSelected(teamName);
await dashboardPage.createFileViaPlaceholder();
await mainPage.isMainPageLoaded();
});
test.beforeEach(async ({ page }) => {
const teamPage = new TeamPage(page);
const dashboardPage = new DashboardPage(page);
const mainPage = new MainPage(page);
await teamPage.createTeam(teamName);
await teamPage.isTeamSelected(teamName);
await dashboardPage.createFileViaPlaceholder();
await mainPage.isMainPageLoaded();
});
test.afterEach(async ({ page }) => {
const teamPage = new TeamPage(page);
const mainPage = new MainPage(page);
await mainPage.backToDashboardFromFileEditor();
await teamPage.deleteTeam(teamName);
const teamPage = new TeamPage(page);
const mainPage = new MainPage(page);
await mainPage.backToDashboardFromFileEditor();
await teamPage.deleteTeam(teamName);
});
mainTest(
@ -56,7 +56,7 @@ mainTest(
maxDiffPixels: 10,
});
}
}
},
);
mainTest(
@ -66,14 +66,14 @@ mainTest(
await mainPage.clickCreateCommentButton();
await mainPage.clickViewportTwice();
await mainPage.enterCommentText(
"Lorem Ipsum is simply dummy text of the printing and typesetting industry."
"Lorem Ipsum is simply dummy text of the printing and typesetting industry.",
);
await mainPage.clickPostCommentButton();
await mainPage.isCommentDisplayedInPopUp(
"Lorem Ipsum is simply dummy text of the printing and typesetting industry."
"Lorem Ipsum is simply dummy text of the printing and typesetting industry.",
);
await mainPage.isCommentDisplayedInCommentsPanel(
"Lorem Ipsum is simply dummy text of the printing and typesetting industry."
"Lorem Ipsum is simply dummy text of the printing and typesetting industry.",
);
if (browserName === "chromium") {
await expect(page).toHaveScreenshot("comment-latin-opened-pop-up.png", {
@ -97,7 +97,7 @@ mainTest(
maxDiffPixels: 10,
});
}
}
},
);
mainTest(
@ -111,11 +111,11 @@ mainTest(
await mainPage.clickViewportByCoordinates(600, 400);
await mainPage.clickCommentThreadIcon();
await mainPage.enterReplyText(
"Lorem Ipsum is simply dummy text of the printing and typesetting industry"
"Lorem Ipsum is simply dummy text of the printing and typesetting industry",
);
await mainPage.clickPostCommentButton();
await mainPage.isCommentReplyDisplayedInPopUp(
"Lorem Ipsum is simply dummy text of the printing and typesetting industry"
"Lorem Ipsum is simply dummy text of the printing and typesetting industry",
);
await mainPage.isCommentReplyDisplayedInCommentsPanel();
if (browserName === "chromium") {
@ -128,7 +128,7 @@ mainTest(
maxDiffPixels: 10,
});
}
}
},
);
mainTest(
@ -162,7 +162,7 @@ mainTest(
maxDiffPixels: 10,
});
}
}
},
);
mainTest("CO-356 Delete thread", async ({ page, browserName }) => {
@ -178,7 +178,7 @@ mainTest("CO-356 Delete thread", async ({ page, browserName }) => {
await mainPage.clickDeleteThreadButton();
await mainPage.isCommentThreadIconNotDisplayed();
await mainPage.isCommentsPanelPlaceholderDisplayed(
"You're all caught up! New comment notifications will appear here."
"You're all caught up! New comment notifications will appear here.",
);
if (browserName === "chromium") {
await expect(page).toHaveScreenshot("comment-removed.png", {

View File

@ -6,23 +6,23 @@ const { random } = require("../../helpers/string-generator");
const { TeamPage } = require("../../pages/dashboard/team-page");
const { DashboardPage } = require("../../pages/dashboard/dashboard-page");
const teamName = random().concat('autotest');
const teamName = random().concat("autotest");
test.beforeEach( async ({ page }) => {
const teamPage = new TeamPage(page);
const dashboardPage = new DashboardPage(page);
const mainPage = new MainPage(page);
await teamPage.createTeam(teamName);
await teamPage.isTeamSelected(teamName);
await dashboardPage.createFileViaPlaceholder();
await mainPage.isMainPageLoaded();
test.beforeEach(async ({ page }) => {
const teamPage = new TeamPage(page);
const dashboardPage = new DashboardPage(page);
const mainPage = new MainPage(page);
await teamPage.createTeam(teamName);
await teamPage.isTeamSelected(teamName);
await dashboardPage.createFileViaPlaceholder();
await mainPage.isMainPageLoaded();
});
test.afterEach(async ({ page }) => {
const teamPage = new TeamPage(page);
const mainPage = new MainPage(page);
await mainPage.backToDashboardFromFileEditor();
await teamPage.deleteTeam(teamName);
const teamPage = new TeamPage(page);
const mainPage = new MainPage(page);
await mainPage.backToDashboardFromFileEditor();
await teamPage.deleteTeam(teamName);
});
test.describe(() => {
@ -49,6 +49,6 @@ test.describe(() => {
await mainPage.renameCreatedLayer("renamed curve");
await mainPage.waitForChangeIsSaved();
await mainPage.isLayerNameDisplayed("renamed curve");
}
},
);
});

View File

@ -6,9 +6,9 @@ const { random } = require("../../helpers/string-generator");
const { TeamPage } = require("../../pages/dashboard/team-page");
const { DashboardPage } = require("../../pages/dashboard/dashboard-page");
const teamName = random().concat('autotest');
const teamName = random().concat("autotest");
test.beforeEach( async ({ page }) => {
test.beforeEach(async ({ page }) => {
const teamPage = new TeamPage(page);
const dashboardPage = new DashboardPage(page);
const mainPage = new MainPage(page);
@ -45,7 +45,8 @@ mainTest("CO-114 Rename ellipse with valid name", async ({ page }) => {
await mainPage.isLayerNameDisplayed("renamed ellipse");
});
mainTest("CO-117 Add, hide, unhide, change type and delete Shadow to ellipse",
mainTest(
"CO-117 Add, hide, unhide, change type and delete Shadow to ellipse",
async ({ page }) => {
const mainPage = new MainPage(page);
await mainPage.clickCreateEllipseButton();
@ -54,34 +55,45 @@ mainTest("CO-117 Add, hide, unhide, change type and delete Shadow to ellipse",
await mainPage.clickAddShadowButton();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"ellipse-drop-shadow-default.png", {
mask: [mainPage.guides]
});
"ellipse-drop-shadow-default.png",
{
mask: [mainPage.guides],
},
);
await mainPage.hideShadow();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"ellipse-drop-shadow-hide.png", {
mask: [mainPage.guides]
});
"ellipse-drop-shadow-hide.png",
{
mask: [mainPage.guides],
},
);
await mainPage.unhideShadow();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"ellipse-drop-shadow-unhide.png", {
mask: [mainPage.guides]
});
"ellipse-drop-shadow-unhide.png",
{
mask: [mainPage.guides],
},
);
await mainPage.selectTypeForShadow("Inner shadow");
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"ellipse-inner-shadow-default.png", {
mask: [mainPage.guides]
});
"ellipse-inner-shadow-default.png",
{
mask: [mainPage.guides],
},
);
await mainPage.removeShadow();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"ellipse-inner-shadow-remove.png", {
mask: [mainPage.guides]
});
});
"ellipse-inner-shadow-remove.png",
{
mask: [mainPage.guides],
},
);
},
);
mainTest("CO-118 Add and edit Shadow to ellipse", async ({ page }) => {
const mainPage = new MainPage(page);
@ -115,40 +127,48 @@ mainTest("CO-118 Add and edit Shadow to ellipse", async ({ page }) => {
await expect(mainPage.viewport).toHaveScreenshot("ellipse-inner-shadow.png");
});
mainTest("CO-119 Add, hide, unhide and delete Blur to ellipse",async ({ page }) => {
const mainPage = new MainPage(page);
const colorPalettePopUp = new ColorPalettePopUp(page);
await mainPage.clickCreateEllipseButton();
await mainPage.clickViewportTwice();
await mainPage.waitForChangeIsSaved();
await mainPage.clickFillColorIcon();
await colorPalettePopUp.setHex("#304d6a");
await mainPage.waitForChangeIsSaved();
await mainPage.clickAddBlurButton();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"ellipse-blur-default.png", {
mask: [mainPage.guides]
mainTest(
"CO-119 Add, hide, unhide and delete Blur to ellipse",
async ({ page }) => {
const mainPage = new MainPage(page);
const colorPalettePopUp = new ColorPalettePopUp(page);
await mainPage.clickCreateEllipseButton();
await mainPage.clickViewportTwice();
await mainPage.waitForChangeIsSaved();
await mainPage.clickFillColorIcon();
await colorPalettePopUp.setHex("#304d6a");
await mainPage.waitForChangeIsSaved();
await mainPage.clickAddBlurButton();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"ellipse-blur-default.png",
{
mask: [mainPage.guides],
},
);
await mainPage.hideBlur();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot("ellipse-blur-hide.png", {
mask: [mainPage.guides],
});
await mainPage.hideBlur();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"ellipse-blur-hide.png", {
mask: [mainPage.guides]
});
await mainPage.unhideBlur();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"ellipse-blur-unhide.png", {
mask: [mainPage.guides]
});
await mainPage.removeBlur();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"ellipse-blur-remove.png", {
mask: [mainPage.guides]
});
});
await mainPage.unhideBlur();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"ellipse-blur-unhide.png",
{
mask: [mainPage.guides],
},
);
await mainPage.removeBlur();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"ellipse-blur-remove.png",
{
mask: [mainPage.guides],
},
);
},
);
mainTest("CO-120 Add and edit Blur to ellipse", async ({ page }) => {
const mainPage = new MainPage(page);
@ -170,77 +190,100 @@ mainTest("CO-121 Add, edit and delete Stroke to ellipse", async ({ page }) => {
await mainPage.clickViewportOnce();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"ellipse-stroke-default.png", {
mask: [mainPage.guides]
});
"ellipse-stroke-default.png",
{
mask: [mainPage.guides],
},
);
await mainPage.clickOnLayerOnCanvas();
await mainPage.waitForChangeIsSaved();
await mainPage.changeStrokeSettings('#43E50B','70', '13', 'Inside', 'Dotted');
await mainPage.changeStrokeSettings(
"#43E50B",
"70",
"13",
"Inside",
"Dotted",
);
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"ellipse-stroke-inside-dotted.png", {
mask: [mainPage.guides]
});
"ellipse-stroke-inside-dotted.png",
{
mask: [mainPage.guides],
},
);
await mainPage.clickOnLayerOnCanvas();
await mainPage.waitForChangeIsSaved();
await mainPage.changeStrokeSettings('#F5358F','80', '5', 'Outside', 'Dashed');
await mainPage.changeStrokeSettings(
"#F5358F",
"80",
"5",
"Outside",
"Dashed",
);
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"ellipse-stroke-outside-dashed.png", {
mask: [mainPage.guides]
});
"ellipse-stroke-outside-dashed.png",
{
mask: [mainPage.guides],
},
);
await mainPage.clickOnLayerOnCanvas();
await mainPage.waitForChangeIsSaved();
await mainPage.changeStrokeSettings('#F5358F','100', '3', 'Center', 'Solid');
await mainPage.changeStrokeSettings("#F5358F", "100", "3", "Center", "Solid");
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"ellipse-stroke-center-solid.png", {
mask: [mainPage.guides]
});
"ellipse-stroke-center-solid.png",
{
mask: [mainPage.guides],
},
);
await mainPage.clickOnLayerOnCanvas();
await mainPage.waitForChangeIsSaved();
await mainPage.changeStrokeSettings('#F5358F','40', '4', 'Center', 'Mixed');
await mainPage.changeStrokeSettings("#F5358F", "40", "4", "Center", "Mixed");
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"ellipse-stroke-center-mixed.png", {
mask: [mainPage.guides]
});
"ellipse-stroke-center-mixed.png",
{
mask: [mainPage.guides],
},
);
await mainPage.clickOnLayerOnCanvas();
await mainPage.waitForChangeIsSaved();
await mainPage.removeStroke();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"ellipse-stroke-remove.png", {
mask: [mainPage.guides]
});
"ellipse-stroke-remove.png",
{
mask: [mainPage.guides],
},
);
});
mainTest("CO-126 Click 'Focus off' ellipse from shortcut F",async ({ page }) => {
const mainPage = new MainPage(page);
await mainPage.clickCreateEllipseButton();
await mainPage.clickViewportTwice();
await mainPage.waitForChangeIsSaved();
await mainPage.focusLayerViaRightClickOnCanvas();
await mainPage.waitForChangeIsSaved();
await mainPage.isLayerPresentOnLayersTab("Ellipse", true);
await mainPage.isFocusModeOn();
await expect(page).toHaveScreenshot(
"ellipse-single-focus-on.png", {
mask: [mainPage.guides, mainPage.usersSection, mainPage.zoomButton] ,
maxDiffPixels: 5
}
);
await mainPage.focusLayerViaShortcut();
await mainPage.waitForChangeIsSaved();
await mainPage.isLayerPresentOnLayersTab("Ellipse", true);
await mainPage.isFocusModeOff();
await expect(page).toHaveScreenshot(
"ellipse-single-focus-off.png", {
mainTest(
"CO-126 Click 'Focus off' ellipse from shortcut F",
async ({ page }) => {
const mainPage = new MainPage(page);
await mainPage.clickCreateEllipseButton();
await mainPage.clickViewportTwice();
await mainPage.waitForChangeIsSaved();
await mainPage.focusLayerViaRightClickOnCanvas();
await mainPage.waitForChangeIsSaved();
await mainPage.isLayerPresentOnLayersTab("Ellipse", true);
await mainPage.isFocusModeOn();
await expect(page).toHaveScreenshot("ellipse-single-focus-on.png", {
mask: [mainPage.guides, mainPage.usersSection, mainPage.zoomButton],
maxDiffPixels: 5
}
);
});
maxDiffPixels: 5,
});
await mainPage.focusLayerViaShortcut();
await mainPage.waitForChangeIsSaved();
await mainPage.isLayerPresentOnLayersTab("Ellipse", true);
await mainPage.isFocusModeOff();
await expect(page).toHaveScreenshot("ellipse-single-focus-off.png", {
mask: [mainPage.guides, mainPage.usersSection, mainPage.zoomButton],
maxDiffPixels: 5,
});
},
);
mainTest("CO-136-1 Delete ellipse via rightclick", async ({ page }) => {
const mainPage = new MainPage(page);
@ -303,6 +346,6 @@ mainTest("CO-161 Selection to board", async ({ page }) => {
await mainPage.selectionToBoardViaRightClick();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot("ellipse-to-board.png", {
mask: [mainPage.guides]
mask: [mainPage.guides],
});
});

View File

@ -7,9 +7,9 @@ const { random } = require("../../helpers/string-generator");
const { TeamPage } = require("../../pages/dashboard/team-page");
const { DashboardPage } = require("../../pages/dashboard/dashboard-page");
const teamName = random().concat('autotest');
const teamName = random().concat("autotest");
test.beforeEach( async ({ page }) => {
test.beforeEach(async ({ page }) => {
const teamPage = new TeamPage(page);
const dashboardPage = new DashboardPage(page);
const mainPage = new MainPage(page);
@ -45,95 +45,117 @@ test.describe("Flex Layout & Elements", async () => {
await mainPage.waitForChangeIsSaved();
});
mainTest("FL-1 Add flex layout to board from rightclick", async ({ page }) => {
mainTest(
"FL-1 Add flex layout to board from rightclick",
async ({ page }) => {
const mainPage = new MainPage(page);
await mainPage.addFlexLayoutViaRightClick();
await mainPage.waitForChangeIsSaved();
await mainPage.isLayoutIconVisibleOnLayer();
await mainPage.isLayoutMenuExpanded();
await expect(mainPage.viewport).toHaveScreenshot(
"board-with-layout.png",
{
mask: [mainPage.guides],
},
);
},
);
mainTest("FL-2 Add flex layout to board from shortcut", async ({ page }) => {
const mainPage = new MainPage(page);
await mainPage.addFlexLayoutViaRightClick();
await mainPage.pressFlexLayoutShortcut();
await mainPage.waitForChangeIsSaved();
await mainPage.isLayoutIconVisibleOnLayer();
await mainPage.isLayoutMenuExpanded();
await expect(mainPage.viewport).toHaveScreenshot(
"board-with-layout.png", {
mask: [mainPage.guides]
await expect(mainPage.viewport).toHaveScreenshot("board-with-layout.png", {
mask: [mainPage.guides],
});
});
mainTest("FL-2 Add flex layout to board from shortcut", async ({ page }) => {
mainTest(
"FL-4 Remove flex layout from board from rightclick",
async ({ page }) => {
const mainPage = new MainPage(page);
await mainPage.addFlexLayoutViaRightClick();
await mainPage.waitForChangeIsSaved();
await mainPage.isLayoutIconVisibleOnLayer();
await mainPage.isLayoutMenuExpanded();
await expect(mainPage.viewport).toHaveScreenshot(
"board-with-layout.png",
{
mask: [mainPage.guides],
},
);
await mainPage.clickCreatedBoardTitleOnCanvas();
await mainPage.removeFlexLayoutViaRightClick();
await mainPage.waitForChangeIsSaved();
await mainPage.isLayoutIconVisibleOnLayer(false);
await mainPage.isLayoutMenuExpanded(false);
await expect(mainPage.viewport).toHaveScreenshot(
"board-without-layout.png",
{
mask: [mainPage.guides],
},
);
},
);
mainTest(
"FL-5 Remove flex layout from board from shortcut",
async ({ page }) => {
const mainPage = new MainPage(page);
await mainPage.pressFlexLayoutShortcut();
await mainPage.waitForChangeIsSaved();
await mainPage.isLayoutIconVisibleOnLayer();
await mainPage.isLayoutMenuExpanded();
await expect(mainPage.viewport).toHaveScreenshot(
"board-with-layout.png", {
mask: [mainPage.guides]
});
});
"board-with-layout.png",
{
mask: [mainPage.guides],
},
);
await mainPage.clickCreatedBoardTitleOnCanvas();
await mainPage.pressFlexLayoutShortcut();
await mainPage.waitForChangeIsSaved();
await mainPage.isLayoutIconVisibleOnLayer(false);
await mainPage.isLayoutMenuExpanded(false);
await expect(mainPage.viewport).toHaveScreenshot(
"board-without-layout.png",
{
mask: [mainPage.guides],
},
);
},
);
mainTest("FL-4 Remove flex layout from board from rightclick",async ({ page }) => {
const mainPage = new MainPage(page);
await mainPage.addFlexLayoutViaRightClick();
await mainPage.waitForChangeIsSaved();
await mainPage.isLayoutIconVisibleOnLayer();
await mainPage.isLayoutMenuExpanded();
await expect(mainPage.viewport).toHaveScreenshot(
"board-with-layout.png", {
mask: [mainPage.guides]
});
await mainPage.clickCreatedBoardTitleOnCanvas();
await mainPage.removeFlexLayoutViaRightClick();
await mainPage.waitForChangeIsSaved();
await mainPage.isLayoutIconVisibleOnLayer(false);
await mainPage.isLayoutMenuExpanded(false);
await expect(mainPage.viewport).toHaveScreenshot(
"board-without-layout.png", {
mask: [mainPage.guides]
}
);
});
mainTest("FL-5 Remove flex layout from board from shortcut",async ({ page }) => {
const mainPage = new MainPage(page);
await mainPage.pressFlexLayoutShortcut();
await mainPage.waitForChangeIsSaved();
await mainPage.isLayoutIconVisibleOnLayer();
await mainPage.isLayoutMenuExpanded();
await expect(mainPage.viewport).toHaveScreenshot(
"board-with-layout.png", {
mask: [mainPage.guides]
});
await mainPage.clickCreatedBoardTitleOnCanvas();
await mainPage.pressFlexLayoutShortcut();
await mainPage.waitForChangeIsSaved();
await mainPage.isLayoutIconVisibleOnLayer(false);
await mainPage.isLayoutMenuExpanded(false);
await expect(mainPage.viewport).toHaveScreenshot(
"board-without-layout.png", {
mask: [mainPage.guides]
}
);
});
mainTest("FL-6 Remove flex layout from board from Design panel",async ({ page }) => {
const mainPage = new MainPage(page);
await mainPage.addFlexLayoutViaRightClick();
await mainPage.waitForChangeIsSaved();
await mainPage.isLayoutIconVisibleOnLayer();
await mainPage.isLayoutMenuExpanded();
await expect(mainPage.viewport).toHaveScreenshot(
"board-with-layout.png", {
mask: [mainPage.guides]
});
await mainPage.clickCreatedBoardTitleOnCanvas();
await mainPage.removeLayoutFromDesignPanel();
await mainPage.waitForChangeIsSaved();
await mainPage.isLayoutIconVisibleOnLayer(false);
await mainPage.isLayoutMenuExpanded(false);
await expect(mainPage.viewport).toHaveScreenshot(
"board-without-layout.png", {
mask: [mainPage.guides]
}
);
});
mainTest(
"FL-6 Remove flex layout from board from Design panel",
async ({ page }) => {
const mainPage = new MainPage(page);
await mainPage.addFlexLayoutViaRightClick();
await mainPage.waitForChangeIsSaved();
await mainPage.isLayoutIconVisibleOnLayer();
await mainPage.isLayoutMenuExpanded();
await expect(mainPage.viewport).toHaveScreenshot(
"board-with-layout.png",
{
mask: [mainPage.guides],
},
);
await mainPage.clickCreatedBoardTitleOnCanvas();
await mainPage.removeLayoutFromDesignPanel();
await mainPage.waitForChangeIsSaved();
await mainPage.isLayoutIconVisibleOnLayer(false);
await mainPage.isLayoutMenuExpanded(false);
await expect(mainPage.viewport).toHaveScreenshot(
"board-without-layout.png",
{
mask: [mainPage.guides],
},
);
},
);
mainTest("FL-7 Change direction", async ({ page }) => {
const mainPage = new MainPage(page);
@ -141,40 +163,43 @@ test.describe("Flex Layout & Elements", async () => {
await mainPage.waitForChangeIsSaved();
await mainPage.isLayoutIconVisibleOnLayer();
await mainPage.isLayoutMenuExpanded();
await expect(mainPage.viewport).toHaveScreenshot(
"board-with-layout.png", {
mask: [mainPage.guides]
});
await expect(mainPage.viewport).toHaveScreenshot("board-with-layout.png", {
mask: [mainPage.guides],
});
await mainPage.clickCreatedBoardTitleOnCanvas();
await mainPage.changeLayoutDirection("Row reverse");
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"layout-row-reverse-direction.png", {
mask: [mainPage.guides]
}
"layout-row-reverse-direction.png",
{
mask: [mainPage.guides],
},
);
await mainPage.changeLayoutDirection("Column");
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"layout-column-direction.png", {
mask: [mainPage.guides]
}
"layout-column-direction.png",
{
mask: [mainPage.guides],
},
);
await mainPage.changeLayoutDirection("Column reverse");
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"layout-column-reverse-direction.png", {
mask: [mainPage.guides]
}
"layout-column-reverse-direction.png",
{
mask: [mainPage.guides],
},
);
await mainPage.changeLayoutDirection("Row");
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"layout-row-direction.png", {
mask: [mainPage.guides]
}
"layout-row-direction.png",
{
mask: [mainPage.guides],
},
);
});
});
mainTest("FL-9 Change alignment", async ({ page }) => {
const mainPage = new MainPage(page);
@ -182,32 +207,28 @@ test.describe("Flex Layout & Elements", async () => {
await mainPage.waitForChangeIsSaved();
await mainPage.isLayoutIconVisibleOnLayer();
await mainPage.isLayoutMenuExpanded();
await expect(mainPage.viewport).toHaveScreenshot(
"board-with-layout.png", {
mask: [mainPage.guides]
});
await expect(mainPage.viewport).toHaveScreenshot("board-with-layout.png", {
mask: [mainPage.guides],
});
await mainPage.clickCreatedBoardTitleOnCanvas();
await mainPage.changeLayoutAlignment("Center");
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"layout-align-center.png", {
mask: [mainPage.guides]
}
"layout-align-center.png",
{
mask: [mainPage.guides],
},
);
await mainPage.changeLayoutAlignment("End");
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"layout-align-end.png", {
mask: [mainPage.guides]
}
);
await expect(mainPage.viewport).toHaveScreenshot("layout-align-end.png", {
mask: [mainPage.guides],
});
await mainPage.changeLayoutAlignment("Start");
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"layout-align-start.png", {
mask: [mainPage.guides]
}
);
await expect(mainPage.viewport).toHaveScreenshot("layout-align-start.png", {
mask: [mainPage.guides],
});
});
mainTest("FL-10 Change justification", async ({ page }) => {
@ -216,54 +237,56 @@ test.describe("Flex Layout & Elements", async () => {
await mainPage.waitForChangeIsSaved();
await mainPage.isLayoutIconVisibleOnLayer();
await mainPage.isLayoutMenuExpanded();
await expect(mainPage.viewport).toHaveScreenshot(
"board-with-layout.png", {
mask: [mainPage.guides]
});
await expect(mainPage.viewport).toHaveScreenshot("board-with-layout.png", {
mask: [mainPage.guides],
});
await mainPage.clickCreatedBoardTitleOnCanvas();
await mainPage.changeLayoutJustification("Center");
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"layout-justify-center.png", {
mask: [mainPage.guides]
}
"layout-justify-center.png",
{
mask: [mainPage.guides],
},
);
await mainPage.changeLayoutJustification("End");
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"layout-justify-end.png", {
mask: [mainPage.guides]
}
);
await expect(mainPage.viewport).toHaveScreenshot("layout-justify-end.png", {
mask: [mainPage.guides],
});
await mainPage.changeLayoutJustification("Space between");
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"layout-justify-space-between.png", {
mask: [mainPage.guides]
}
"layout-justify-space-between.png",
{
mask: [mainPage.guides],
},
);
await mainPage.changeLayoutJustification("Space around");
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"layout-justify-space-around.png", {
mask: [mainPage.guides]
}
"layout-justify-space-around.png",
{
mask: [mainPage.guides],
},
);
await mainPage.changeLayoutJustification("Space evenly");
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"layout-justify-space-evenly.png", {
mask: [mainPage.guides]
}
"layout-justify-space-evenly.png",
{
mask: [mainPage.guides],
},
);
await mainPage.changeLayoutJustification("Start");
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"layout-justify-start.png", {
mask: [mainPage.guides]
}
"layout-justify-start.png",
{
mask: [mainPage.guides],
},
);
});
});
mainTest("FL-12 Change column gap", async ({ page }) => {
const mainPage = new MainPage(page);
@ -271,32 +294,34 @@ test.describe("Flex Layout & Elements", async () => {
await mainPage.waitForChangeIsSaved();
await mainPage.isLayoutIconVisibleOnLayer();
await mainPage.isLayoutMenuExpanded();
await expect(mainPage.viewport).toHaveScreenshot(
"board-with-layout.png", {
mask: [mainPage.guides]
});
await expect(mainPage.viewport).toHaveScreenshot("board-with-layout.png", {
mask: [mainPage.guides],
});
await mainPage.clickCreatedBoardTitleOnCanvas();
await mainPage.changeLayoutColumnGap("5");
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"layout-column-gap-5.png", {
mask: [mainPage.guides]
}
"layout-column-gap-5.png",
{
mask: [mainPage.guides],
},
);
await mainPage.changeLayoutColumnGap("15");
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"layout-column-gap-15.png", {
mask: [mainPage.guides]
}
"layout-column-gap-15.png",
{
mask: [mainPage.guides],
},
);
await mainPage.changeLayoutColumnGap("0");
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"layout-column-gap-0.png", {
mask: [mainPage.guides]
}
);
"layout-column-gap-0.png",
{
mask: [mainPage.guides],
},
);
});
mainTest("FL-13 Change row gap", async ({ page }) => {
@ -305,34 +330,27 @@ test.describe("Flex Layout & Elements", async () => {
await mainPage.waitForChangeIsSaved();
await mainPage.isLayoutIconVisibleOnLayer();
await mainPage.isLayoutMenuExpanded();
await expect(mainPage.viewport).toHaveScreenshot(
"board-with-layout.png", {
mask: [mainPage.guides]
});
await expect(mainPage.viewport).toHaveScreenshot("board-with-layout.png", {
mask: [mainPage.guides],
});
await mainPage.clickCreatedBoardTitleOnCanvas();
await mainPage.changeLayoutDirection("Column");
await mainPage.waitForChangeIsSaved();
await mainPage.changeLayoutRowGap("5");
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"layout-row-gap-5.png", {
mask: [mainPage.guides]
}
);
await expect(mainPage.viewport).toHaveScreenshot("layout-row-gap-5.png", {
mask: [mainPage.guides],
});
await mainPage.changeLayoutRowGap("15");
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"layout-row-gap-15.png", {
mask: [mainPage.guides]
}
);
await expect(mainPage.viewport).toHaveScreenshot("layout-row-gap-15.png", {
mask: [mainPage.guides],
});
await mainPage.changeLayoutRowGap("0");
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"layout-row-gap-0.png", {
mask: [mainPage.guides]
}
);
await expect(mainPage.viewport).toHaveScreenshot("layout-row-gap-0.png", {
mask: [mainPage.guides],
});
});
mainTest("FL-14 Change single padding", async ({ page }) => {
@ -341,33 +359,35 @@ test.describe("Flex Layout & Elements", async () => {
await mainPage.waitForChangeIsSaved();
await mainPage.isLayoutIconVisibleOnLayer();
await mainPage.isLayoutMenuExpanded();
await expect(mainPage.viewport).toHaveScreenshot(
"board-with-layout.png", {
mask: [mainPage.guides]
});
await expect(mainPage.viewport).toHaveScreenshot("board-with-layout.png", {
mask: [mainPage.guides],
});
await mainPage.clickCreatedBoardTitleOnCanvas();
await mainPage.changeLayoutVerticalPadding("5");
await mainPage.waitForChangeIsSaved();
await mainPage.changeLayoutHorizontalPadding("15");
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"layout-padding-5-15.png", {
mask: [mainPage.guides]
}
"layout-padding-5-15.png",
{
mask: [mainPage.guides],
},
);
await mainPage.changeLayoutHorizontalPadding("0");
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"layout-horizontal_padding-0.png", {
mask: [mainPage.guides]
}
"layout-horizontal_padding-0.png",
{
mask: [mainPage.guides],
},
);
await mainPage.changeLayoutVerticalPadding("0");
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"layout-vertical_padding-0.png", {
mask: [mainPage.guides]
}
"layout-vertical_padding-0.png",
{
mask: [mainPage.guides],
},
);
});
@ -377,10 +397,9 @@ test.describe("Flex Layout & Elements", async () => {
await mainPage.waitForChangeIsSaved();
await mainPage.isLayoutIconVisibleOnLayer();
await mainPage.isLayoutMenuExpanded();
await expect(mainPage.viewport).toHaveScreenshot(
"board-with-layout.png", {
mask: [mainPage.guides]
});
await expect(mainPage.viewport).toHaveScreenshot("board-with-layout.png", {
mask: [mainPage.guides],
});
await mainPage.clickCreatedBoardTitleOnCanvas();
await mainPage.switchToIndependentPadding();
await mainPage.waitForChangeIsSaved();
@ -389,32 +408,36 @@ test.describe("Flex Layout & Elements", async () => {
await mainPage.changeLayoutLeftPadding("15");
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"layout-top-left-padding-10-15.png", {
mask: [mainPage.guides]
}
"layout-top-left-padding-10-15.png",
{
mask: [mainPage.guides],
},
);
await mainPage.changeLayoutJustification("End");
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"layout-top-left-padding-10-15-justify.png", {
mask: [mainPage.guides]
}
"layout-top-left-padding-10-15-justify.png",
{
mask: [mainPage.guides],
},
);
await mainPage.changeLayoutRightPadding("20");
await mainPage.waitForChangeIsSaved();
await mainPage.changeLayoutAlignment('End');
await mainPage.changeLayoutAlignment("End");
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"layout-top-left-right-padding-justify-align.png", {
mask: [mainPage.guides]
}
"layout-top-left-right-padding-justify-align.png",
{
mask: [mainPage.guides],
},
);
await mainPage.changeLayoutBottomPadding("25");
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"layout-top-left-right-bottom-padding.png", {
mask: [mainPage.guides]
}
"layout-top-left-right-bottom-padding.png",
{
mask: [mainPage.guides],
},
);
});
@ -427,33 +450,35 @@ test.describe("Flex Layout & Elements", async () => {
await mainPage.waitForChangeIsSaved();
await mainPage.isLayoutIconVisibleOnLayer();
await mainPage.isLayoutMenuExpanded();
await expect(mainPage.viewport).toHaveScreenshot(
"board-with-layout.png", {
mask: [mainPage.guides]
});
await expect(mainPage.viewport).toHaveScreenshot("board-with-layout.png", {
mask: [mainPage.guides],
});
await layersPage.selectBoardChildRect();
await designPanelPage.waitFlexElementSectionExpanded();
await designPanelPage.changeFlexElementAlignment("Center");
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"flex-element-align-center.png", {
mask: [mainPage.guides]
}
"flex-element-align-center.png",
{
mask: [mainPage.guides],
},
);
await designPanelPage.changeFlexElementAlignment("End");
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"flex-element-align-end.png", {
mask: [mainPage.guides]
}
"flex-element-align-end.png",
{
mask: [mainPage.guides],
},
);
await designPanelPage.changeFlexElementAlignment("Start");
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"flex-element-align-start.png", {
mask: [mainPage.guides]
}
"flex-element-align-start.png",
{
mask: [mainPage.guides],
},
);
});
@ -466,10 +491,9 @@ test.describe("Flex Layout & Elements", async () => {
await mainPage.waitForChangeIsSaved();
await mainPage.isLayoutIconVisibleOnLayer();
await mainPage.isLayoutMenuExpanded();
await expect(mainPage.viewport).toHaveScreenshot(
"board-with-layout.png", {
mask: [mainPage.guides]
});
await expect(mainPage.viewport).toHaveScreenshot("board-with-layout.png", {
mask: [mainPage.guides],
});
await layersPage.selectBoardChildRect();
await designPanelPage.waitFlexElementSectionExpanded();
@ -478,48 +502,51 @@ test.describe("Flex Layout & Elements", async () => {
await designPanelPage.changeFlexElementHorizontalMargin("25");
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"flex-element-margin-10-25.png", {
mask: [mainPage.guides]
}
"flex-element-margin-10-25.png",
{
mask: [mainPage.guides],
},
);
await designPanelPage.changeFlexElementVerticalMargin("0");
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"flex-element-margin-vert-0.png", {
mask: [mainPage.guides]
}
"flex-element-margin-vert-0.png",
{
mask: [mainPage.guides],
},
);
await designPanelPage.changeFlexElementHorizontalMargin("0");
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"flex-element-margin-horizont-0.png", {
mask: [mainPage.guides]
}
"flex-element-margin-horizont-0.png",
{
mask: [mainPage.guides],
},
);
});
});
});
test.describe("Margins & Paddings & Position", async () => {
test.beforeEach(async ({ page, browserName }, testInfo) => {
testInfo.setTimeout(testInfo.timeout + 10000);
const mainPage = new MainPage(page);
await mainPage.clickCreateBoardButton();
await mainPage.clickViewportTwice();
await mainPage.waitForChangeIsSaved();
await mainPage.isCreatedLayerVisible();
await mainPage.changeHeightAndWidthForLayer("500", "500");
await mainPage.clickCreateEllipseButton();
await mainPage.clickViewportTwice();
await mainPage.waitForChangeIsSaved();
await mainPage.clickCreateEllipseButton();
await mainPage.clickViewportTwice();
await mainPage.waitForChangeIsSaved();
await mainPage.clickCreateEllipseButton();
await mainPage.clickViewportTwice();
await mainPage.waitForChangeIsSaved();
await mainPage.clickCreatedBoardTitleOnCanvas();
await mainPage.addFlexLayoutViaRightClick();
await mainPage.waitForChangeIsSaved();
testInfo.setTimeout(testInfo.timeout + 10000);
const mainPage = new MainPage(page);
await mainPage.clickCreateBoardButton();
await mainPage.clickViewportTwice();
await mainPage.waitForChangeIsSaved();
await mainPage.isCreatedLayerVisible();
await mainPage.changeHeightAndWidthForLayer("500", "500");
await mainPage.clickCreateEllipseButton();
await mainPage.clickViewportTwice();
await mainPage.waitForChangeIsSaved();
await mainPage.clickCreateEllipseButton();
await mainPage.clickViewportTwice();
await mainPage.waitForChangeIsSaved();
await mainPage.clickCreateEllipseButton();
await mainPage.clickViewportTwice();
await mainPage.waitForChangeIsSaved();
await mainPage.clickCreatedBoardTitleOnCanvas();
await mainPage.addFlexLayoutViaRightClick();
await mainPage.waitForChangeIsSaved();
});
mainTest("FL-37 Set margins and padding to 0", async ({ page }) => {
@ -531,26 +558,31 @@ test.describe("Margins & Paddings & Position", async () => {
await mainPage.changeLayoutColumnGap("0");
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"layout-padding-gap-0.png", {
mask: [mainPage.guides]
});
"layout-padding-gap-0.png",
{
mask: [mainPage.guides],
},
);
await mainPage.clickLayoutVerticalPaddingField();
await expect(mainPage.viewport).toHaveScreenshot(
"layout-no-vertical-padding.png", {
mask: [mainPage.guides]
}
"layout-no-vertical-padding.png",
{
mask: [mainPage.guides],
},
);
await mainPage.clickLayoutHorizontalPaddingField();
await expect(mainPage.viewport).toHaveScreenshot(
"layout-no-horizont-padding.png", {
mask: [mainPage.guides]
}
"layout-no-horizont-padding.png",
{
mask: [mainPage.guides],
},
);
await mainPage.clickLayoutColumnGapField();
await expect(mainPage.viewport).toHaveScreenshot(
"layout-no-column-gap.png", {
mask: [mainPage.guides]
}
"layout-no-column-gap.png",
{
mask: [mainPage.guides],
},
);
});
@ -560,24 +592,30 @@ test.describe("Margins & Paddings & Position", async () => {
await mainPage.waitForChangeIsSaved();
await mainPage.clickLayoutColumnGapField();
await expect(mainPage.viewport).toHaveScreenshot(
"layout-column-gap-highlighted.png", {
mask: [mainPage.guides]
});
"layout-column-gap-highlighted.png",
{
mask: [mainPage.guides],
},
);
});
mainTest("FL-42 Use absolute position and look if element still inside a board",
mainTest(
"FL-42 Use absolute position and look if element still inside a board",
async ({ page }) => {
const mainPage = new MainPage(page);
const layersPage = new LayersPanelPage(page);
const designPanelPage = new DesignPanelPage(page);
const mainPage = new MainPage(page);
const layersPage = new LayersPanelPage(page);
const designPanelPage = new DesignPanelPage(page);
await layersPage.selectBoardChildEllipse();
await designPanelPage.waitFlexElementSectionExpanded();
await designPanelPage.setFlexElementPositionAbsolute();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"flex-element-position-absolute.png", {
mask: [mainPage.guides]
});
});
await layersPage.selectBoardChildEllipse();
await designPanelPage.waitFlexElementSectionExpanded();
await designPanelPage.setFlexElementPositionAbsolute();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"flex-element-position-absolute.png",
{
mask: [mainPage.guides],
},
);
},
);
});

View File

@ -6,9 +6,9 @@ const { random } = require("../../helpers/string-generator");
const { TeamPage } = require("../../pages/dashboard/team-page");
const { DashboardPage } = require("../../pages/dashboard/dashboard-page");
const teamName = random().concat('autotest');
const teamName = random().concat("autotest");
test.beforeEach( async ({ page }) => {
test.beforeEach(async ({ page }) => {
const teamPage = new TeamPage(page);
const dashboardPage = new DashboardPage(page);
const mainPage = new MainPage(page);
@ -62,42 +62,55 @@ mainTest("CO-225 Rename image with valid name", async ({ page }) => {
await mainPage.isLayerNameDisplayed("renamed image");
});
mainTest("CO-227 Add, hide, unhide, change type and delete Shadow to image",async ({ page }) => {
const mainPage = new MainPage(page);
await mainPage.uploadImage("images/images.png");
await mainPage.clickViewportTwice();
await mainPage.waitForChangeIsSaved();
await mainPage.clickAddShadowButton();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"image-drop-shadow-default.png", {
mask: [mainPage.guides]
});
await mainPage.hideShadow();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"image-drop-shadow-hide.png", {
mask: [mainPage.guides]
});
await mainPage.unhideShadow();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"image-drop-shadow-unhide.png", {
mask: [mainPage.guides]
});
await mainPage.selectTypeForShadow("Inner shadow");
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"image-inner-shadow-default.png", {
mask: [mainPage.guides]
});
await mainPage.removeShadow();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"image-inner-shadow-remove.png", {
mask: [mainPage.guides]
});
});
mainTest(
"CO-227 Add, hide, unhide, change type and delete Shadow to image",
async ({ page }) => {
const mainPage = new MainPage(page);
await mainPage.uploadImage("images/images.png");
await mainPage.clickViewportTwice();
await mainPage.waitForChangeIsSaved();
await mainPage.clickAddShadowButton();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"image-drop-shadow-default.png",
{
mask: [mainPage.guides],
},
);
await mainPage.hideShadow();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"image-drop-shadow-hide.png",
{
mask: [mainPage.guides],
},
);
await mainPage.unhideShadow();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"image-drop-shadow-unhide.png",
{
mask: [mainPage.guides],
},
);
await mainPage.selectTypeForShadow("Inner shadow");
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"image-inner-shadow-default.png",
{
mask: [mainPage.guides],
},
);
await mainPage.removeShadow();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"image-inner-shadow-remove.png",
{
mask: [mainPage.guides],
},
);
},
);
mainTest("CO-228 Add and edit Shadow to image", async ({ page }) => {
const mainPage = new MainPage(page);
@ -130,78 +143,95 @@ mainTest("CO-228 Add and edit Shadow to image", async ({ page }) => {
await expect(mainPage.viewport).toHaveScreenshot("image-inner-shadow.png");
});
mainTest("CO-229 Add, hide, unhide and delete Blur to image", async ({ page }) => {
const mainPage = new MainPage(page);
await mainPage.uploadImage("images/sample.jpeg");
await mainPage.clickViewportTwice();
await mainPage.waitForChangeIsSaved();
await mainPage.clickAddBlurButton();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"image-blur-default.png", {
mask: [mainPage.guides]
mainTest(
"CO-229 Add, hide, unhide and delete Blur to image",
async ({ page }) => {
const mainPage = new MainPage(page);
await mainPage.uploadImage("images/sample.jpeg");
await mainPage.clickViewportTwice();
await mainPage.waitForChangeIsSaved();
await mainPage.clickAddBlurButton();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot("image-blur-default.png", {
mask: [mainPage.guides],
});
await mainPage.hideBlur();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"image-blur-hide.png", {
mask: [mainPage.guides]
await mainPage.hideBlur();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot("image-blur-hide.png", {
mask: [mainPage.guides],
});
await mainPage.unhideBlur();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"image-blur-unhide.png", {
mask: [mainPage.guides]
await mainPage.unhideBlur();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot("image-blur-unhide.png", {
mask: [mainPage.guides],
});
await mainPage.removeBlur();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"image-blur-remove.png", {
mask: [mainPage.guides]
await mainPage.removeBlur();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot("image-blur-remove.png", {
mask: [mainPage.guides],
});
});
},
);
mainTest("CO-231 Add, edit and delete Stroke to image",async ({ page }) => {
mainTest("CO-231 Add, edit and delete Stroke to image", async ({ page }) => {
const mainPage = new MainPage(page);
await mainPage.uploadImage("images/sample.jpeg");
await mainPage.clickViewportTwice();
await mainPage.waitForChangeIsSaved();
await mainPage.clickAddStrokeButton();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"image-stroke-default.png", {
mask: [mainPage.guides]
});
await mainPage.changeStrokeSettings('#43E50B','60', '10', 'Inside', 'Dotted');
await expect(mainPage.viewport).toHaveScreenshot("image-stroke-default.png", {
mask: [mainPage.guides],
});
await mainPage.changeStrokeSettings(
"#43E50B",
"60",
"10",
"Inside",
"Dotted",
);
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"image-stroke-inside-dotted.png", {
mask: [mainPage.guides]
});
await mainPage.changeStrokeSettings('#F5358F','80', '5', 'Outside', 'Dashed');
"image-stroke-inside-dotted.png",
{
mask: [mainPage.guides],
},
);
await mainPage.changeStrokeSettings(
"#F5358F",
"80",
"5",
"Outside",
"Dashed",
);
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"image-stroke-outside-dashed.png", {
mask: [mainPage.guides]
});
await mainPage.changeStrokeSettings('#F5358F','100', '3', 'Center', 'Solid');
"image-stroke-outside-dashed.png",
{
mask: [mainPage.guides],
},
);
await mainPage.changeStrokeSettings("#F5358F", "100", "3", "Center", "Solid");
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"image-stroke-center-solid.png", {
mask: [mainPage.guides]
});
await mainPage.changeStrokeSettings('#F5358F','40', '4', 'Center', 'Mixed');
"image-stroke-center-solid.png",
{
mask: [mainPage.guides],
},
);
await mainPage.changeStrokeSettings("#F5358F", "40", "4", "Center", "Mixed");
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"image-stroke-center-mixed.png", {
mask: [mainPage.guides]
});
"image-stroke-center-mixed.png",
{
mask: [mainPage.guides],
},
);
await mainPage.removeStroke();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"image-stroke-remove.png", {
mask: [mainPage.guides]
});
await expect(mainPage.viewport).toHaveScreenshot("image-stroke-remove.png", {
mask: [mainPage.guides],
});
});
mainTest("CO-242-1 Delete image via rightclick", async ({ page }) => {
@ -303,21 +333,21 @@ mainTest("CO-259 Flip Vertical and Flip Horizontal image", async ({ page }) => {
await mainPage.flipVerticalViaRightClick();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"image-flipped-vertical.png"
"image-flipped-vertical.png",
);
await mainPage.flipHorizontalViaRightClick();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"image-flipped-vertical-horizontal.png"
"image-flipped-vertical-horizontal.png",
);
await mainPage.flipVerticalViaShortcut();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"image-flipped-horizontal.png"
"image-flipped-horizontal.png",
);
await mainPage.flipHorizontalViaShortcut();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"image-non-flipped-jpeg.png"
"image-non-flipped-jpeg.png",
);
});

View File

@ -1,27 +1,27 @@
const { mainTest } = require("../../fixtures");
const { MainPage } = require("../../pages/workspace/main-page");
const { expect, test} = require("@playwright/test");
const { expect, test } = require("@playwright/test");
const { random } = require("../../helpers/string-generator");
const { TeamPage } = require("../../pages/dashboard/team-page");
const { DashboardPage } = require("../../pages/dashboard/dashboard-page");
const teamName = random().concat('autotest');
const teamName = random().concat("autotest");
test.beforeEach( async ({ page }) => {
const teamPage = new TeamPage(page);
const dashboardPage = new DashboardPage(page);
const mainPage = new MainPage(page);
await teamPage.createTeam(teamName);
await teamPage.isTeamSelected(teamName);
await dashboardPage.createFileViaPlaceholder();
await mainPage.isMainPageLoaded();
test.beforeEach(async ({ page }) => {
const teamPage = new TeamPage(page);
const dashboardPage = new DashboardPage(page);
const mainPage = new MainPage(page);
await teamPage.createTeam(teamName);
await teamPage.isTeamSelected(teamName);
await dashboardPage.createFileViaPlaceholder();
await mainPage.isMainPageLoaded();
});
test.afterEach(async ({ page }) => {
const teamPage = new TeamPage(page);
const mainPage = new MainPage(page);
await mainPage.backToDashboardFromFileEditor();
await teamPage.deleteTeam(teamName);
const teamPage = new TeamPage(page);
const mainPage = new MainPage(page);
await mainPage.backToDashboardFromFileEditor();
await teamPage.deleteTeam(teamName);
});
mainTest(
@ -48,9 +48,9 @@ mainTest(
await mainPage.pressShiftPlusKeyboardShortcut();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"path-added-two-nodes.png"
"path-added-two-nodes.png",
);
}
},
);
mainTest(
@ -67,15 +67,15 @@ mainTest(
await mainPage.clickDeleteNodeButtonOnNodePanel();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"path-deleted-one-node.png"
"path-deleted-one-node.png",
);
await mainPage.clickSecondNode();
await mainPage.pressDeleteKeyboardButton();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"path-deleted-two-nodes.png"
"path-deleted-two-nodes.png",
);
}
},
);
mainTest(
@ -95,7 +95,7 @@ mainTest(
await mainPage.clickMergeNodesButtonOnNodePanel();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"path-merged-nodes-once.png"
"path-merged-nodes-once.png",
);
await mainPage.holdShiftKeyboardButton();
await mainPage.clickFirstNode();
@ -104,9 +104,9 @@ mainTest(
await mainPage.pressCtrlJKeyboardShortcut();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"path-merged-nodes-twice.png"
"path-merged-nodes-twice.png",
);
}
},
);
mainTest(
@ -132,7 +132,7 @@ mainTest(
await mainPage.clickJoinNodesButtonOnNodePanel();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"path-joined-nodes-once.png"
"path-joined-nodes-once.png",
);
await mainPage.holdShiftKeyboardButton();
await mainPage.clickFifthNode();
@ -141,9 +141,9 @@ mainTest(
await mainPage.pressJKeyboardShortcut();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"path-joined-nodes-twice.png"
"path-joined-nodes-twice.png",
);
}
},
);
mainTest(
@ -163,7 +163,7 @@ mainTest(
await mainPage.clickSeparateNodesButtonOnNodePanel();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"path-separated-nodes-once.png"
"path-separated-nodes-once.png",
);
await mainPage.clickSecondNode();
await mainPage.holdShiftKeyboardButton();
@ -172,9 +172,9 @@ mainTest(
await mainPage.pressKKeyboardShortcut();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"path-separated-nodes-twice.png"
"path-separated-nodes-twice.png",
);
}
},
);
mainTest(
@ -191,15 +191,15 @@ mainTest(
await mainPage.clickToCornerButtonOnNodePanel();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"path-to-corner-one-node.png"
"path-to-corner-one-node.png",
);
await mainPage.clickSecondNode();
await mainPage.pressXKeyboardShortcut();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"path-to-corner-two-nodes.png"
"path-to-corner-two-nodes.png",
);
}
},
);
mainTest(
@ -216,13 +216,13 @@ mainTest(
await mainPage.clickToCurveButtonOnNodePanel();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"path-to-curve-one-node.png"
"path-to-curve-one-node.png",
);
await mainPage.clickSecondNode();
await mainPage.pressCKeyboardShortcut();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"path-to-curve-two-nodes.png"
"path-to-curve-two-nodes.png",
);
}
},
);

View File

@ -6,9 +6,9 @@ const { random } = require("../../helpers/string-generator");
const { TeamPage } = require("../../pages/dashboard/team-page");
const { DashboardPage } = require("../../pages/dashboard/dashboard-page");
const teamName = random().concat('autotest');
const teamName = random().concat("autotest");
test.beforeEach( async ({ page }) => {
test.beforeEach(async ({ page }) => {
const teamPage = new TeamPage(page);
const dashboardPage = new DashboardPage(page);
const mainPage = new MainPage(page);
@ -58,40 +58,53 @@ mainTest("CO-277 Rename path with valid name", async ({ page }) => {
await mainPage.isLayerNameDisplayed("renamed path");
});
mainTest("CO-279 Add, hide, unhide, change type and delete Shadow to Path",async ({ page }) => {
const mainPage = new MainPage(page);
await mainPage.createDefaultOpenPath();
await mainPage.clickAddShadowButton();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"path-drop-shadow-default.png", {
mask: [mainPage.guides]
});
await mainPage.hideShadow();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"path-drop-shadow-hide.png", {
mask: [mainPage.guides]
});
await mainPage.unhideShadow();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"path-drop-shadow-unhide.png", {
mask: [mainPage.guides]
});
await mainPage.selectTypeForShadow("Inner shadow");
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"path-inner-shadow-default.png", {
mask: [mainPage.guides]
});
await mainPage.removeShadow();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"path-inner-shadow-remove.png", {
mask: [mainPage.guides]
});
});
mainTest(
"CO-279 Add, hide, unhide, change type and delete Shadow to Path",
async ({ page }) => {
const mainPage = new MainPage(page);
await mainPage.createDefaultOpenPath();
await mainPage.clickAddShadowButton();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"path-drop-shadow-default.png",
{
mask: [mainPage.guides],
},
);
await mainPage.hideShadow();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"path-drop-shadow-hide.png",
{
mask: [mainPage.guides],
},
);
await mainPage.unhideShadow();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"path-drop-shadow-unhide.png",
{
mask: [mainPage.guides],
},
);
await mainPage.selectTypeForShadow("Inner shadow");
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"path-inner-shadow-default.png",
{
mask: [mainPage.guides],
},
);
await mainPage.removeShadow();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"path-inner-shadow-remove.png",
{
mask: [mainPage.guides],
},
);
},
);
mainTest("CO-280 Add and edit Shadow to path", async ({ page }) => {
const mainPage = new MainPage(page);
@ -122,34 +135,33 @@ mainTest("CO-280 Add and edit Shadow to path", async ({ page }) => {
await expect(mainPage.viewport).toHaveScreenshot("path-inner-shadow.png");
});
mainTest("CO-282 Add, hide, unhide and delete Blur to Path",async ({ page }) => {
const mainPage = new MainPage(page);
await mainPage.createDefaultClosedPath();
await mainPage.clickAddBlurButton();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"path-blur-default.png", {
mask: [mainPage.guides]
mainTest(
"CO-282 Add, hide, unhide and delete Blur to Path",
async ({ page }) => {
const mainPage = new MainPage(page);
await mainPage.createDefaultClosedPath();
await mainPage.clickAddBlurButton();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot("path-blur-default.png", {
mask: [mainPage.guides],
});
await mainPage.hideBlur();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"path-blur-hide.png", {
mask: [mainPage.guides]
await mainPage.hideBlur();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot("path-blur-hide.png", {
mask: [mainPage.guides],
});
await mainPage.unhideBlur();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"path-blur-unhide.png", {
mask: [mainPage.guides]
await mainPage.unhideBlur();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot("path-blur-unhide.png", {
mask: [mainPage.guides],
});
await mainPage.removeBlur();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"path-blur-remove.png", {
mask: [mainPage.guides]
await mainPage.removeBlur();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot("path-blur-remove.png", {
mask: [mainPage.guides],
});
});
},
);
mainTest("CO-283 Add and edit Blur to path", async ({ page }) => {
const mainPage = new MainPage(page);
@ -197,45 +209,48 @@ mainTest("CO-298-2 Delete path via shortcut Del", async ({ page }) => {
await expect(mainPage.viewport).toHaveScreenshot("empty-canvas.png");
});
mainTest("CO-303 Hide and show path from rightclick and icons",async ({ page }) => {
const mainPage = new MainPage(page);
const path1 = "Path #1";
const path2 = "Path #2";
await mainPage.createDefaultClosedPath();
await mainPage.doubleClickLayerOnLayersTabViaTitle("Path");
await mainPage.renameCreatedLayer(path1);
await mainPage.waitForChangeIsSaved();
await mainPage.clickCreatePathButton();
await mainPage.clickViewportByCoordinates(200, 300);
await mainPage.clickViewportByCoordinates(300, 500);
await mainPage.clickViewportByCoordinates(100, 200);
await mainPage.clickViewportByCoordinates(200, 300);
await mainPage.clickMoveButton();
await mainPage.waitForChangeIsSaved();
await mainPage.doubleClickLayerOnLayersTabViaTitle("Path");
await mainPage.renameCreatedLayer(path2);
await mainPage.waitForChangeIsSaved();
await mainPage.clickViewportOnce();
await mainPage.hideUnhideLayerByIconOnLayersTab(path1);
await mainPage.waitForChangeIsSaved();
await expect(page).toHaveScreenshot(
"path-first-hide.png", { mask: [mainPage.guides, mainPage.usersSection] }
);
await mainPage.hideLayerViaRightClickOnLayersTab(path2);
await mainPage.waitForChangeIsSaved();
await expect(page).toHaveScreenshot(
"path-second-hide.png", { mask: [mainPage.guides, mainPage.usersSection] }
);
await mainPage.hideUnhideLayerByIconOnLayersTab(path2);
await mainPage.waitForChangeIsSaved();
await expect(page).toHaveScreenshot(
"path-second-show.png", { mask: [mainPage.guides, mainPage.usersSection] }
);
await mainPage.unHideLayerViaRightClickOnLayersTab(path1);
await expect(page).toHaveScreenshot(
"path-first-show.png", { mask: [mainPage.guides, mainPage.usersSection] }
);
});
mainTest(
"CO-303 Hide and show path from rightclick and icons",
async ({ page }) => {
const mainPage = new MainPage(page);
const path1 = "Path #1";
const path2 = "Path #2";
await mainPage.createDefaultClosedPath();
await mainPage.doubleClickLayerOnLayersTabViaTitle("Path");
await mainPage.renameCreatedLayer(path1);
await mainPage.waitForChangeIsSaved();
await mainPage.clickCreatePathButton();
await mainPage.clickViewportByCoordinates(200, 300);
await mainPage.clickViewportByCoordinates(300, 500);
await mainPage.clickViewportByCoordinates(100, 200);
await mainPage.clickViewportByCoordinates(200, 300);
await mainPage.clickMoveButton();
await mainPage.waitForChangeIsSaved();
await mainPage.doubleClickLayerOnLayersTabViaTitle("Path");
await mainPage.renameCreatedLayer(path2);
await mainPage.waitForChangeIsSaved();
await mainPage.clickViewportOnce();
await mainPage.hideUnhideLayerByIconOnLayersTab(path1);
await mainPage.waitForChangeIsSaved();
await expect(page).toHaveScreenshot("path-first-hide.png", {
mask: [mainPage.guides, mainPage.usersSection],
});
await mainPage.hideLayerViaRightClickOnLayersTab(path2);
await mainPage.waitForChangeIsSaved();
await expect(page).toHaveScreenshot("path-second-hide.png", {
mask: [mainPage.guides, mainPage.usersSection],
});
await mainPage.hideUnhideLayerByIconOnLayersTab(path2);
await mainPage.waitForChangeIsSaved();
await expect(page).toHaveScreenshot("path-second-show.png", {
mask: [mainPage.guides, mainPage.usersSection],
});
await mainPage.unHideLayerViaRightClickOnLayersTab(path1);
await expect(page).toHaveScreenshot("path-first-show.png", {
mask: [mainPage.guides, mainPage.usersSection],
});
},
);
mainTest("CO-310 Flip Vertical and Flip Horizontal path", async ({ page }) => {
const mainPage = new MainPage(page);
@ -246,12 +261,12 @@ mainTest("CO-310 Flip Vertical and Flip Horizontal path", async ({ page }) => {
await mainPage.flipHorizontalViaRightClick();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"path-flipped-vertical-horizontal.png"
"path-flipped-vertical-horizontal.png",
);
await mainPage.flipVerticalViaShortcut();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"path-flipped-horizontal.png"
"path-flipped-horizontal.png",
);
await mainPage.flipHorizontalViaShortcut();
await mainPage.waitForChangeIsSaved();

View File

@ -6,9 +6,9 @@ const { random } = require("../../helpers/string-generator");
const { TeamPage } = require("../../pages/dashboard/team-page");
const { DashboardPage } = require("../../pages/dashboard/dashboard-page");
const teamName = random().concat('autotest');
const teamName = random().concat("autotest");
test.beforeEach( async ({ page }) => {
test.beforeEach(async ({ page }) => {
const teamPage = new TeamPage(page);
const dashboardPage = new DashboardPage(page);
const mainPage = new MainPage(page);
@ -34,106 +34,129 @@ mainTest("CO-59 Create a rectangle from toolbar", async ({ page }) => {
await expect(mainPage.viewport).toHaveScreenshot("rectangle.png");
});
mainTest("CO-68 Click 'Focus off' rectangle from shortcut F",async ({ page }) => {
const mainPage = new MainPage(page);
await mainPage.clickCreateRectangleButton();
await mainPage.clickViewportTwice();
await mainPage.waitForChangeIsSaved();
await mainPage.focusLayerViaRightClickOnCanvas();
await mainPage.waitForChangeIsSaved();
await mainPage.isLayerPresentOnLayersTab("Rectangle", true);
await mainPage.isFocusModeOn();
await expect(page).toHaveScreenshot(
"rectangle-single-focus-on.png", {
mainTest(
"CO-68 Click 'Focus off' rectangle from shortcut F",
async ({ page }) => {
const mainPage = new MainPage(page);
await mainPage.clickCreateRectangleButton();
await mainPage.clickViewportTwice();
await mainPage.waitForChangeIsSaved();
await mainPage.focusLayerViaRightClickOnCanvas();
await mainPage.waitForChangeIsSaved();
await mainPage.isLayerPresentOnLayersTab("Rectangle", true);
await mainPage.isFocusModeOn();
await expect(page).toHaveScreenshot("rectangle-single-focus-on.png", {
mask: [mainPage.guides, mainPage.usersSection, mainPage.zoomButton],
maxDiffPixels: 5
}
);
await mainPage.focusLayerViaShortcut();
await mainPage.waitForChangeIsSaved();
await mainPage.isLayerPresentOnLayersTab("Rectangle", true);
await mainPage.isFocusModeOff();
await expect(page).toHaveScreenshot(
"rectangle-single-focus-off.png", {
maxDiffPixels: 5,
});
await mainPage.focusLayerViaShortcut();
await mainPage.waitForChangeIsSaved();
await mainPage.isLayerPresentOnLayersTab("Rectangle", true);
await mainPage.isFocusModeOff();
await expect(page).toHaveScreenshot("rectangle-single-focus-off.png", {
mask: [mainPage.guides, mainPage.usersSection, mainPage.zoomButton],
maxDiffPixels: 5
}
);
});
maxDiffPixels: 5,
});
},
);
mainTest("CO-69 Add, hide, unhide, change type and delete Shadow to rectangle",async ({ page }) => {
const mainPage = new MainPage(page);
await mainPage.clickCreateRectangleButton();
await mainPage.clickViewportTwice();
await mainPage.waitForChangeIsSaved();
await mainPage.clickAddShadowButton();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"rectangle-drop-shadow-default.png", {
mask: [mainPage.guides]
});
await mainPage.hideShadow();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"rectangle-drop-shadow-hide.png", {
mask: [mainPage.guides]
});
await mainPage.unhideShadow();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"rectangle-drop-shadow-unhide.png", {
mask: [mainPage.guides]
});
await mainPage.selectTypeForShadow("Inner shadow");
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"rectangle-inner-shadow-default.png", {
mask: [mainPage.guides]
});
await mainPage.removeShadow();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"rectangle-inner-shadow-remove.png", {
mask: [mainPage.guides]
});
});
mainTest(
"CO-69 Add, hide, unhide, change type and delete Shadow to rectangle",
async ({ page }) => {
const mainPage = new MainPage(page);
await mainPage.clickCreateRectangleButton();
await mainPage.clickViewportTwice();
await mainPage.waitForChangeIsSaved();
await mainPage.clickAddShadowButton();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"rectangle-drop-shadow-default.png",
{
mask: [mainPage.guides],
},
);
await mainPage.hideShadow();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"rectangle-drop-shadow-hide.png",
{
mask: [mainPage.guides],
},
);
await mainPage.unhideShadow();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"rectangle-drop-shadow-unhide.png",
{
mask: [mainPage.guides],
},
);
await mainPage.selectTypeForShadow("Inner shadow");
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"rectangle-inner-shadow-default.png",
{
mask: [mainPage.guides],
},
);
await mainPage.removeShadow();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"rectangle-inner-shadow-remove.png",
{
mask: [mainPage.guides],
},
);
},
);
mainTest("CO-72 Add, hide, unhide and delete Blur to rectangle",async ({ page }) => {
const mainPage = new MainPage(page);
const colorPalettePopUp = new ColorPalettePopUp(page);
await mainPage.clickCreateRectangleButton();
await mainPage.clickViewportTwice();
await mainPage.waitForChangeIsSaved();
await mainPage.clickFillColorIcon();
await colorPalettePopUp.setHex("#304d6a");
await mainPage.waitForChangeIsSaved();
await mainPage.clickAddBlurButton();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"rectangle-blur-default.png", {
mask: [mainPage.guides]
});
await mainPage.hideBlur();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"rectangle-blur-hide.png", {
mask: [mainPage.guides]
});
await mainPage.unhideBlur();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"rectangle-blur-unhide.png", {
mask: [mainPage.guides]
});
await mainPage.removeBlur();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"rectangle-blur-remove.png", {
mask: [mainPage.guides]
});
});
mainTest(
"CO-72 Add, hide, unhide and delete Blur to rectangle",
async ({ page }) => {
const mainPage = new MainPage(page);
const colorPalettePopUp = new ColorPalettePopUp(page);
await mainPage.clickCreateRectangleButton();
await mainPage.clickViewportTwice();
await mainPage.waitForChangeIsSaved();
await mainPage.clickFillColorIcon();
await colorPalettePopUp.setHex("#304d6a");
await mainPage.waitForChangeIsSaved();
await mainPage.clickAddBlurButton();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"rectangle-blur-default.png",
{
mask: [mainPage.guides],
},
);
await mainPage.hideBlur();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"rectangle-blur-hide.png",
{
mask: [mainPage.guides],
},
);
await mainPage.unhideBlur();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"rectangle-blur-unhide.png",
{
mask: [mainPage.guides],
},
);
await mainPage.removeBlur();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"rectangle-blur-remove.png",
{
mask: [mainPage.guides],
},
);
},
);
mainTest("CO-74 Add, edit and delete Stroke to rectangle",async ({ page }) => {
mainTest("CO-74 Add, edit and delete Stroke to rectangle", async ({ page }) => {
const mainPage = new MainPage(page);
await mainPage.clickCreateRectangleButton();
await mainPage.clickViewportTwice();
@ -142,44 +165,68 @@ mainTest("CO-74 Add, edit and delete Stroke to rectangle",async ({ page }) => {
await mainPage.clickViewportOnce();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"rectangle-stroke-default.png", {
mask: [mainPage.guides]
});
"rectangle-stroke-default.png",
{
mask: [mainPage.guides],
},
);
await mainPage.clickOnLayerOnCanvas();
await mainPage.changeStrokeSettings('#43E50B','60', '10', 'Inside', 'Dotted');
await mainPage.changeStrokeSettings(
"#43E50B",
"60",
"10",
"Inside",
"Dotted",
);
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"rectangle-stroke-inside-dotted.png", {
mask: [mainPage.guides]
});
"rectangle-stroke-inside-dotted.png",
{
mask: [mainPage.guides],
},
);
await mainPage.clickOnLayerOnCanvas();
await mainPage.changeStrokeSettings('#F5358F','80', '5', 'Outside', 'Dashed');
await mainPage.changeStrokeSettings(
"#F5358F",
"80",
"5",
"Outside",
"Dashed",
);
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"rectangle-stroke-outside-dashed.png", {
mask: [mainPage.guides]
});
"rectangle-stroke-outside-dashed.png",
{
mask: [mainPage.guides],
},
);
await mainPage.clickOnLayerOnCanvas();
await mainPage.changeStrokeSettings('#F5358F','100', '3', 'Center', 'Solid');
await mainPage.changeStrokeSettings("#F5358F", "100", "3", "Center", "Solid");
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"rectangle-stroke-center-solid.png", {
mask: [mainPage.guides]
});
"rectangle-stroke-center-solid.png",
{
mask: [mainPage.guides],
},
);
await mainPage.clickOnLayerOnCanvas();
await mainPage.changeStrokeSettings('#F5358F','40', '4', 'Center', 'Mixed');
await mainPage.changeStrokeSettings("#F5358F", "40", "4", "Center", "Mixed");
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"rectangle-stroke-center-mixed.png", {
mask: [mainPage.guides]
});
"rectangle-stroke-center-mixed.png",
{
mask: [mainPage.guides],
},
);
await mainPage.clickOnLayerOnCanvas();
await mainPage.removeStroke();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"rectangle-stroke-remove.png", {
mask: [mainPage.guides]
});
"rectangle-stroke-remove.png",
{
mask: [mainPage.guides],
},
);
});
mainTest("CO-80 Rename rectangle with valid name", async ({ page }) => {
@ -222,7 +269,7 @@ mainTest("CO-70 Add and edit Shadow to rectangle", async ({ page }) => {
await mainPage.clickViewportTwice();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"rectangle-inner-shadow.png"
"rectangle-inner-shadow.png",
);
});
@ -290,7 +337,7 @@ mainTest("CO-63 Change border radius multiple values", async ({ page }) => {
await mainPage.changeFourthCornerRadiusForLayer("120");
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"rectangle-changed-corners.png"
"rectangle-changed-corners.png",
);
await mainPage.changeFirstCornerRadiusForLayer("0");
await mainPage.changeSecondCornerRadiusForLayer("0");
@ -319,8 +366,7 @@ mainTest("CO-111 Selection to board", async ({ page }) => {
await mainPage.waitForChangeIsSaved();
await mainPage.selectionToBoardViaRightClick();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"rectangle-to-board.png", {
mask: [mainPage.guides]
});
await expect(mainPage.viewport).toHaveScreenshot("rectangle-to-board.png", {
mask: [mainPage.guides],
});
});

View File

@ -6,23 +6,23 @@ const { random } = require("../../helpers/string-generator");
const { TeamPage } = require("../../pages/dashboard/team-page");
const { DashboardPage } = require("../../pages/dashboard/dashboard-page");
const teamName = random().concat('autotest');
const teamName = random().concat("autotest");
test.beforeEach( async ({ page }) => {
const teamPage = new TeamPage(page);
const dashboardPage = new DashboardPage(page);
const mainPage = new MainPage(page);
await teamPage.createTeam(teamName);
await teamPage.isTeamSelected(teamName)
await dashboardPage.createFileViaPlaceholder();
await mainPage.isMainPageLoaded();
test.beforeEach(async ({ page }) => {
const teamPage = new TeamPage(page);
const dashboardPage = new DashboardPage(page);
const mainPage = new MainPage(page);
await teamPage.createTeam(teamName);
await teamPage.isTeamSelected(teamName);
await dashboardPage.createFileViaPlaceholder();
await mainPage.isMainPageLoaded();
});
test.afterEach(async ({ page }) => {
const teamPage = new TeamPage(page);
const mainPage = new MainPage(page);
await mainPage.backToDashboardFromFileEditor();
await teamPage.deleteTeam(teamName);
const teamPage = new TeamPage(page);
const mainPage = new MainPage(page);
await mainPage.backToDashboardFromFileEditor();
await teamPage.deleteTeam(teamName);
});
mainTest("CO-162 Create a text from toolbar", async ({ page, browserName }) => {
@ -63,110 +63,124 @@ mainTest("CO-165 Add rotation to text", async ({ page, browserName }) => {
await expect(mainPage.viewport).toHaveScreenshot("text-rotated-359.png");
});
mainTest("CO-166 Add, hide, unhide, change type and delete Shadow to Text",
mainTest(
"CO-166 Add, hide, unhide, change type and delete Shadow to Text",
async ({ page, browserName }) => {
const mainPage = new MainPage(page);
await mainPage.createDefaultTextLayer(browserName);
await mainPage.clickAddShadowButton();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"text-drop-shadow-default.png", {
mask: [mainPage.guides]
});
"text-drop-shadow-default.png",
{
mask: [mainPage.guides],
},
);
await mainPage.hideShadow();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"text-drop-shadow-hide.png", {
mask: [mainPage.guides]
});
"text-drop-shadow-hide.png",
{
mask: [mainPage.guides],
},
);
await mainPage.unhideShadow();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"text-drop-shadow-unhide.png", {
mask: [mainPage.guides]
});
"text-drop-shadow-unhide.png",
{
mask: [mainPage.guides],
},
);
await mainPage.selectTypeForShadow("Inner shadow");
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"text-inner-shadow-default.png", {
mask: [mainPage.guides]
});
"text-inner-shadow-default.png",
{
mask: [mainPage.guides],
},
);
await mainPage.removeShadow();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"text-inner-shadow-remove.png", {
mask: [mainPage.guides]
});
});
"text-inner-shadow-remove.png",
{
mask: [mainPage.guides],
},
);
},
);
mainTest("CO-167 Add and edit Shadow to text",async ({ page, browserName }) => {
const mainPage = new MainPage(page);
const colorPalettePopUp = new ColorPalettePopUp(page);
await mainPage.clickCreateTextButton();
await mainPage.clickViewportTwice();
if (browserName === "webkit") {
await mainPage.typeTextFromKeyboard();
} else {
await mainPage.typeText("Hello World!");
}
await mainPage.waitForChangeIsSaved();
await mainPage.clickAddShadowButton();
await mainPage.clickShadowActionsButton();
await mainPage.changeXForShadow("10");
await mainPage.changeYForShadow("15");
await mainPage.changeBlurForShadow("10");
await mainPage.changeSpreadForShadow("20");
await mainPage.changeOpacityForShadow("50");
await mainPage.clickShadowColorIcon();
await colorPalettePopUp.setHex("#304d6a");
await mainPage.clickMoveButton();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot("text-drop-shadow.png");
await mainPage.selectTypeForShadow("Inner shadow");
await mainPage.changeXForShadow("5");
await mainPage.changeYForShadow("7");
await mainPage.changeBlurForShadow("9");
await mainPage.changeSpreadForShadow("12");
await mainPage.changeOpacityForShadow("25");
await mainPage.clickShadowColorIcon();
await colorPalettePopUp.setHex("#96e637");
await mainPage.clickViewportTwice();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot("text-inner-shadow.png");
});
mainTest(
"CO-167 Add and edit Shadow to text",
async ({ page, browserName }) => {
const mainPage = new MainPage(page);
const colorPalettePopUp = new ColorPalettePopUp(page);
await mainPage.clickCreateTextButton();
await mainPage.clickViewportTwice();
if (browserName === "webkit") {
await mainPage.typeTextFromKeyboard();
} else {
await mainPage.typeText("Hello World!");
}
await mainPage.waitForChangeIsSaved();
await mainPage.clickAddShadowButton();
await mainPage.clickShadowActionsButton();
await mainPage.changeXForShadow("10");
await mainPage.changeYForShadow("15");
await mainPage.changeBlurForShadow("10");
await mainPage.changeSpreadForShadow("20");
await mainPage.changeOpacityForShadow("50");
await mainPage.clickShadowColorIcon();
await colorPalettePopUp.setHex("#304d6a");
await mainPage.clickMoveButton();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot("text-drop-shadow.png");
await mainPage.selectTypeForShadow("Inner shadow");
await mainPage.changeXForShadow("5");
await mainPage.changeYForShadow("7");
await mainPage.changeBlurForShadow("9");
await mainPage.changeSpreadForShadow("12");
await mainPage.changeOpacityForShadow("25");
await mainPage.clickShadowColorIcon();
await colorPalettePopUp.setHex("#96e637");
await mainPage.clickViewportTwice();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot("text-inner-shadow.png");
},
);
mainTest("CO-169 Add, hide, unhide and delete Blur to text",async ({ page, browserName }) => {
const mainPage = new MainPage(page);
const colorPalettePopUp = new ColorPalettePopUp(page);
await mainPage.createDefaultTextLayer(browserName);
await mainPage.clickFillColorIcon();
await colorPalettePopUp.setHex("#304d6a");
await mainPage.waitForChangeIsSaved();
await mainPage.clickAddBlurButton();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"text-blur-default.png", {
mask: [mainPage.guides]
mainTest(
"CO-169 Add, hide, unhide and delete Blur to text",
async ({ page, browserName }) => {
const mainPage = new MainPage(page);
const colorPalettePopUp = new ColorPalettePopUp(page);
await mainPage.createDefaultTextLayer(browserName);
await mainPage.clickFillColorIcon();
await colorPalettePopUp.setHex("#304d6a");
await mainPage.waitForChangeIsSaved();
await mainPage.clickAddBlurButton();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot("text-blur-default.png", {
mask: [mainPage.guides],
});
await mainPage.hideBlur();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"text-blur-hide.png", {
mask: [mainPage.guides]
await mainPage.hideBlur();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot("text-blur-hide.png", {
mask: [mainPage.guides],
});
await mainPage.unhideBlur();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"text-blur-unhide.png", {
mask: [mainPage.guides]
await mainPage.unhideBlur();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot("text-blur-unhide.png", {
mask: [mainPage.guides],
});
await mainPage.removeBlur();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"text-blur-remove.png", {
mask: [mainPage.guides]
await mainPage.removeBlur();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot("text-blur-remove.png", {
mask: [mainPage.guides],
});
});
},
);
mainTest("CO-170 Add and edit Blur to text", async ({ page, browserName }) => {
const mainPage = new MainPage(page);
@ -184,52 +198,64 @@ mainTest("CO-170 Add and edit Blur to text", async ({ page, browserName }) => {
await expect(mainPage.viewport).toHaveScreenshot("text-blur.png");
});
mainTest("CO-171 Add, edit and delete Stroke to Text", async ({ page, browserName}) => {
const mainPage = new MainPage(page);
await mainPage.createDefaultTextLayer(browserName);
await mainPage.clickAddStrokeButton();
await mainPage.clickViewportTwice();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"text-stroke-default.png", {
mask: [mainPage.guides]
mainTest(
"CO-171 Add, edit and delete Stroke to Text",
async ({ page, browserName }) => {
const mainPage = new MainPage(page);
await mainPage.createDefaultTextLayer(browserName);
await mainPage.clickAddStrokeButton();
await mainPage.clickViewportTwice();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"text-stroke-default.png",
{
mask: [mainPage.guides],
},
);
await mainPage.clickOnLayerOnCanvas();
await mainPage.changeStrokeSettings("#43E50B", "60", "10", "Inside");
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"text-stroke-inside-dotted.png",
{
mask: [mainPage.guides],
},
);
await mainPage.clickOnLayerOnCanvas();
await mainPage.changeStrokeSettings("#F5358F", "80", "5", "Outside");
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"text-stroke-outside-dashed.png",
{
mask: [mainPage.guides],
},
);
await mainPage.clickOnLayerOnCanvas();
await mainPage.changeStrokeSettings("#F5358F", "100", "3", "Center");
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"text-stroke-center-solid.png",
{
mask: [mainPage.guides],
},
);
await mainPage.clickOnLayerOnCanvas();
await mainPage.changeStrokeSettings("#F5358F", "40", "4", "Center");
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"text-stroke-center-mixed.png",
{
mask: [mainPage.guides],
},
);
await mainPage.clickOnLayerOnCanvas();
await mainPage.removeStroke();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot("text-stroke-remove.png", {
mask: [mainPage.guides],
});
await mainPage.clickOnLayerOnCanvas();
await mainPage.changeStrokeSettings('#43E50B','60', '10', 'Inside');
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"text-stroke-inside-dotted.png", {
mask: [mainPage.guides]
});
await mainPage.clickOnLayerOnCanvas();
await mainPage.changeStrokeSettings('#F5358F','80', '5', 'Outside');
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"text-stroke-outside-dashed.png", {
mask: [mainPage.guides]
});
await mainPage.clickOnLayerOnCanvas();
await mainPage.changeStrokeSettings('#F5358F','100', '3', 'Center');
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"text-stroke-center-solid.png", {
mask: [mainPage.guides]
});
await mainPage.clickOnLayerOnCanvas();
await mainPage.changeStrokeSettings('#F5358F','40', '4', 'Center');
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"text-stroke-center-mixed.png", {
mask: [mainPage.guides]
});
await mainPage.clickOnLayerOnCanvas();
await mainPage.removeStroke();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot(
"text-stroke-remove.png", {
mask: [mainPage.guides]
});
});
},
);
mainTest(
"CO-173-1 Delete text via rightclick",
@ -249,7 +275,7 @@ mainTest(
await mainPage.deleteLayerViaRightClick();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot("empty-canvas.png");
}
},
);
mainTest(
@ -270,7 +296,7 @@ mainTest(
await mainPage.deleteLayerViaShortcut();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot("empty-canvas.png");
}
},
);
mainTest(
@ -289,25 +315,28 @@ mainTest(
await mainPage.renameCreatedLayer("renamed text");
await mainPage.waitForChangeIsSaved();
await mainPage.isLayerNameDisplayed("renamed text");
}
},
);
mainTest("CO-209 Change text uppercase, lowercase",async ({ page, browserName }) => {
const mainPage = new MainPage(page);
await mainPage.createDefaultTextLayer(browserName);
await mainPage.changeTextCase("Upper");
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot("text-upper-case.png");
await mainPage.changeTextCase("Title");
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot("text-title-case.png");
await mainPage.changeTextCase("Lower");
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot("text-lower-case.png");
await mainPage.changeTextCase("None");
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot("text-default-case.png");
});
mainTest(
"CO-209 Change text uppercase, lowercase",
async ({ page, browserName }) => {
const mainPage = new MainPage(page);
await mainPage.createDefaultTextLayer(browserName);
await mainPage.changeTextCase("Upper");
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot("text-upper-case.png");
await mainPage.changeTextCase("Title");
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot("text-title-case.png");
await mainPage.changeTextCase("Lower");
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot("text-lower-case.png");
await mainPage.changeTextCase("None");
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot("text-default-case.png");
},
);
mainTest("CO-210 Change alignment", async ({ page, browserName }) => {
const mainPage = new MainPage(page);
@ -324,18 +353,18 @@ mainTest("CO-210 Change alignment", async ({ page, browserName }) => {
await expect(mainPage.viewport).toHaveScreenshot("text-align-top.png");
});
mainTest("CO-212 Change RTL/LTR",async ({ page, browserName}) => {
mainTest("CO-212 Change RTL/LTR", async ({ page, browserName }) => {
const mainPage = new MainPage(page);
await mainPage.createDefaultTextLayer(browserName);
await mainPage.changeTextDirection("RTL");
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot("text-rtl.png", {
maxDiffPixelRatio: 0
maxDiffPixelRatio: 0,
});
await mainPage.changeTextDirection("LTR");
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot("text-ltr.png", {
maxDiffPixelRatio: 0
maxDiffPixelRatio: 0,
});
});
@ -361,7 +390,7 @@ mainTest(
await mainPage.clickMoveButton();
await mainPage.clickViewportTwice();
await expect(mainPage.viewport).toHaveScreenshot("text-fill-opacity.png");
}
},
);
mainTest("CO-219 Selection to board", async ({ page, browserName }) => {
@ -379,6 +408,6 @@ mainTest("CO-219 Selection to board", async ({ page, browserName }) => {
await mainPage.selectionToBoardViaRightClick();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.viewport).toHaveScreenshot("text-to-board.png", {
mask: [mainPage.guides]
mask: [mainPage.guides],
});
});

View File

@ -5,9 +5,9 @@ const { random } = require("../../helpers/string-generator");
const { test } = require("@playwright/test");
const { TeamPage } = require("../../pages/dashboard/team-page");
const teamName = random().concat('autotest');
const teamName = random().concat("autotest");
test.beforeEach( async ({ page }) => {
test.beforeEach(async ({ page }) => {
const teamPage = new TeamPage(page);
const dashboardPage = new DashboardPage(page);
await teamPage.createTeam(teamName);
@ -19,23 +19,28 @@ test.afterEach(async ({ page }) => {
await teamPage.deleteTeam(teamName);
});
dashboardTest("DA-1 Create new file in Drafts on title panel",async ({ page }) => {
const dashboardPage = new DashboardPage(page);
await dashboardPage.createFileViaTitlePanel();
const mainPage = new MainPage(page);
await mainPage.isMainPageLoaded();
await mainPage.isProjectAndFileNameExistInFile("Drafts", "New File 1");
await mainPage.clickPencilBoxButton();
await dashboardPage.checkNumberOfFiles("1 file");
});
dashboardTest(
"DA-1 Create new file in Drafts on title panel",
async ({ page }) => {
const dashboardPage = new DashboardPage(page);
await dashboardPage.createFileViaTitlePanel();
const mainPage = new MainPage(page);
await mainPage.isMainPageLoaded();
await mainPage.isProjectAndFileNameExistInFile("Drafts", "New File 1");
await mainPage.clickPencilBoxButton();
await dashboardPage.checkNumberOfFiles("1 file");
},
);
dashboardTest("DA-2 Create new file in Drafts via 'New file' placeholder", async ({ page }) => {
const dashboardPage = new DashboardPage(page);
await dashboardPage.createFileViaPlaceholder();
const mainPage = new MainPage(page);
await mainPage.clickPencilBoxButton();
await dashboardPage.checkNumberOfFiles("1 file");
}
dashboardTest(
"DA-2 Create new file in Drafts via 'New file' placeholder",
async ({ page }) => {
const dashboardPage = new DashboardPage(page);
await dashboardPage.createFileViaPlaceholder();
const mainPage = new MainPage(page);
await mainPage.clickPencilBoxButton();
await dashboardPage.checkNumberOfFiles("1 file");
},
);
dashboardTest("DA-3 Open file in Drafts", async ({ page }) => {
@ -67,11 +72,11 @@ dashboardTest(
await mainPage.clickPencilBoxButton();
await dashboardPage.duplicateFileViaRightclick();
await dashboardPage.isSuccessMessageDisplayed(
"Your file has been duplicated successfully"
"Your file has been duplicated successfully",
);
await dashboardPage.waitSuccessMessageHidden();
await dashboardPage.checkNumberOfFiles("2 files");
}
},
);
dashboardTest(
@ -83,10 +88,11 @@ dashboardTest(
await mainPage.clickPencilBoxButton();
await dashboardPage.addFileAsSharedLibraryViaRightclick();
await dashboardPage.isSharedLibraryIconDisplayed();
}
},
);
dashboardTest("DA-11 Remove file as Shared Library via Options icon in Drafts",
dashboardTest(
"DA-11 Remove file as Shared Library via Options icon in Drafts",
async ({ page }) => {
const dashboardPage = new DashboardPage(page);
await dashboardPage.createFileViaPlaceholder();
@ -102,7 +108,8 @@ dashboardTest("DA-11 Remove file as Shared Library via Options icon in Drafts",
await dashboardPage.isSharedLibraryIconNotDisplayed();
await dashboardPage.openSidebarItem("Libraries");
await dashboardPage.checkNoLibrariesExist();
});
},
);
dashboardTest(
"DA-12 Remove file as Shared Library in Drafts via rightclick",
@ -115,7 +122,7 @@ dashboardTest(
await dashboardPage.isSharedLibraryIconDisplayed();
await dashboardPage.deleteFileAsSharedLibraryViaRightclick();
await dashboardPage.isSharedLibraryIconNotDisplayed();
}
},
);
dashboardTest(
@ -126,7 +133,7 @@ dashboardTest(
const mainPage = new MainPage(page);
await mainPage.clickPencilBoxButton();
await dashboardPage.downloadPenpotFileViaRightclick();
}
},
);
dashboardTest(
@ -137,21 +144,24 @@ dashboardTest(
const mainPage = new MainPage(page);
await mainPage.clickPencilBoxButton();
await dashboardPage.downloadStandardFileViaRightclick();
}
},
);
dashboardTest("DA-17 Import file to Drafts .penpot", async ({page}) => {
dashboardTest("DA-17 Import file to Drafts .penpot", async ({ page }) => {
const dashboardPage = new DashboardPage(page);
await dashboardPage.openSidebarItem("Drafts");
await dashboardPage.importFileFromProjectPage("documents/QA test file.penpot")
await dashboardPage.importFileFromProjectPage(
"documents/QA test file.penpot",
);
await dashboardPage.isFilePresent("Wireframing kit"); // todo: issue 5596
}
);
});
dashboardTest("DA-18 Import file to Drafts svgjson", async ({page}) => {
dashboardTest("DA-18 Import file to Drafts svgjson", async ({ page }) => {
const dashboardPage = new DashboardPage(page);
await dashboardPage.openSidebarItem("Drafts");
await dashboardPage.importFileFromProjectPage("documents/QA test zip file.zip")
await dashboardPage.importFileFromProjectPage(
"documents/QA test zip file.zip",
);
await dashboardPage.isFilePresent("Wireframing kit"); // todo: issue 5597
});
@ -163,10 +173,12 @@ dashboardTest(
const mainPage = new MainPage(page);
await mainPage.clickPencilBoxButton();
await dashboardPage.deleteFileViaRightclick();
await dashboardPage.isSuccessMessageDisplayed("Your file has been deleted successfully");
await dashboardPage.isSuccessMessageDisplayed(
"Your file has been deleted successfully",
);
await dashboardPage.waitSuccessMessageHidden();
await dashboardPage.checkNumberOfFiles("0 files");
}
},
);
dashboardTest("DA-24 Create new project ", async ({ page }) => {
@ -187,7 +199,7 @@ dashboardTest(
const mainPage = new MainPage(page);
await mainPage.clickPencilBoxButton();
await dashboardPage.checkNumberOfFiles("1 file");
}
},
);
dashboardTest(
@ -201,7 +213,7 @@ dashboardTest(
const mainPage = new MainPage(page);
await mainPage.clickPencilBoxButton();
await dashboardPage.checkNumberOfFiles("1 file");
}
},
);
dashboardTest("DA-28 Rename file in Project", async ({ page }) => {
@ -226,14 +238,14 @@ dashboardTest("DA-29 Duplicate file in Project", async ({ page }) => {
await mainPage.clickPencilBoxButton();
await dashboardPage.duplicateFileViaRightclick();
await dashboardPage.isSuccessMessageDisplayed(
"Your file has been duplicated successfully"
"Your file has been duplicated successfully",
);
await dashboardPage.reloadPage();
await dashboardPage.isHeaderDisplayed("Projects");
await dashboardPage.checkNumberOfFiles("2 files");
await dashboardPage.duplicateFileViaOptionsIcon();
await dashboardPage.isSuccessMessageDisplayed(
"Your file has been duplicated successfully"
"Your file has been duplicated successfully",
);
await dashboardPage.reloadPage();
await dashboardPage.isHeaderDisplayed("Projects");
@ -252,7 +264,7 @@ dashboardTest(
await mainPage.clickPencilBoxButton();
await dashboardPage.addFileAsSharedLibraryViaRightclick();
await dashboardPage.isSharedLibraryIconDisplayed();
}
},
);
dashboardTest(
@ -267,7 +279,7 @@ dashboardTest(
await mainPage.clickPencilBoxButton();
await dashboardPage.addFileAsSharedLibraryViaOptionsIcon();
await dashboardPage.isSharedLibraryIconDisplayed();
}
},
);
dashboardTest(
@ -284,7 +296,7 @@ dashboardTest(
await dashboardPage.isSharedLibraryIconDisplayed();
await dashboardPage.deleteFileAsSharedLibraryViaRightclick();
await dashboardPage.isSharedLibraryIconNotDisplayed();
}
},
);
dashboardTest(
@ -302,7 +314,7 @@ dashboardTest(
await dashboardPage.reloadPage();
await dashboardPage.deleteFileAsSharedLibraryViaOptionsIcon();
await dashboardPage.isSharedLibraryIconNotDisplayed();
}
},
);
dashboardTest(
@ -316,7 +328,7 @@ dashboardTest(
const mainPage = new MainPage(page);
await mainPage.clickPencilBoxButton();
await dashboardPage.downloadPenpotFileViaRightclick();
}
},
);
dashboardTest(
@ -330,7 +342,7 @@ dashboardTest(
const mainPage = new MainPage(page);
await mainPage.clickPencilBoxButton();
await dashboardPage.downloadPenpotFileViaOptionsIcon();
}
},
);
dashboardTest(
@ -344,7 +356,7 @@ dashboardTest(
const mainPage = new MainPage(page);
await mainPage.clickPencilBoxButton();
await dashboardPage.downloadStandardFileViaRightclick();
}
},
);
dashboardTest(
@ -358,7 +370,7 @@ dashboardTest(
const mainPage = new MainPage(page);
await mainPage.clickPencilBoxButton();
await dashboardPage.downloadStandardFileViaOptionsIcon();
}
},
);
dashboardTest(
@ -372,10 +384,12 @@ dashboardTest(
const mainPage = new MainPage(page);
await mainPage.clickPencilBoxButton();
await dashboardPage.deleteFileViaRightclick();
await dashboardPage.isSuccessMessageDisplayed("Your file has been deleted successfully");
await dashboardPage.isSuccessMessageDisplayed(
"Your file has been deleted successfully",
);
await dashboardPage.waitSuccessMessageHidden();
await dashboardPage.checkNumberOfFiles("0 files");
}
},
);
dashboardTest(
@ -389,10 +403,12 @@ dashboardTest(
const mainPage = new MainPage(page);
await mainPage.clickPencilBoxButton();
await dashboardPage.deleteFileViaOptionsIcon();
await dashboardPage.isSuccessMessageDisplayed("Your file has been deleted successfully");
await dashboardPage.isSuccessMessageDisplayed(
"Your file has been deleted successfully",
);
await dashboardPage.waitSuccessMessageHidden();
await dashboardPage.checkNumberOfFiles("0 files");
}
},
);
dashboardTest("DA-52-1 Rename project via rightclick", async ({ page }) => {
@ -404,7 +420,7 @@ dashboardTest("DA-52-1 Rename project via rightclick", async ({ page }) => {
const mainPage = new MainPage(page);
await mainPage.clickPencilBoxButton();
await dashboardPage.renameProjectViaRightclick(
"Renamed new Project Via Right Click"
"Renamed new Project Via Right Click",
);
});
@ -417,7 +433,7 @@ dashboardTest("DA-52-2 Rename project via Options icon", async ({ page }) => {
const mainPage = new MainPage(page);
await mainPage.clickPencilBoxButton();
await dashboardPage.renameProjectViaOptionsIcon(
"New Renamed Project Via Options Icon"
"New Renamed Project Via Options Icon",
);
});
@ -444,7 +460,7 @@ dashboardTest("DA-54 Unpin project", async ({ page }) => {
await dashboardPage.checkPinnedProjectsSidebarItem("TestProject");
await dashboardPage.clickUnpinProjectButton();
await dashboardPage.checkPinnedProjectsSidebarItem(
"Pinned projects will appear here"
"Pinned projects will appear here",
);
});
@ -455,17 +471,20 @@ dashboardTest("DA-55 Pin project", async ({ page }) => {
await dashboardPage.isProjectTitleDisplayed("TestProject");
await dashboardPage.clickUnpinProjectButton();
await dashboardPage.checkPinnedProjectsSidebarItem(
"Pinned projects will appear here"
"Pinned projects will appear here",
);
await dashboardPage.clickPinProjectButton();
await dashboardPage.checkPinnedProjectsSidebarItem("TestProject");
});
dashboardTest("DA-59 Import file to project - fail invalid format", async ({ page }) => {
dashboardTest(
"DA-59 Import file to project - fail invalid format",
async ({ page }) => {
const dashboardPage = new DashboardPage(page);
await dashboardPage.openSidebarItem("Drafts");
await dashboardPage.importFileWithInvalidFormat("images/images.png")
});
await dashboardPage.importFileWithInvalidFormat("images/images.png");
},
);
dashboardTest("DA-60-1 Delete project via rightclick", async ({ page }) => {
const dashboardPage = new DashboardPage(page);

View File

@ -4,9 +4,9 @@ const { test } = require("@playwright/test");
const { random } = require("../../helpers/string-generator");
const { TeamPage } = require("../../pages/dashboard/team-page");
const teamName = random().concat('autotest');
const teamName = random().concat("autotest");
test.beforeEach( async ({ page }) => {
test.beforeEach(async ({ page }) => {
const teamPage = new TeamPage(page);
const dashboardPage = new DashboardPage(page);
await teamPage.createTeam(teamName);
@ -25,11 +25,14 @@ dashboardTest("DA-66 Upload single font", async ({ page }) => {
await dashboardPage.isFontUploaded("Pacifico", "Regular");
});
dashboardTest("DA-68 Fonts - upload fail invalid file format", async ({ page }) => {
const dashboardPage = new DashboardPage(page);
await dashboardPage.openSidebarItem("Fonts");
await dashboardPage.uploadFontWithInvalidFormat("images/images.png");
});
dashboardTest(
"DA-68 Fonts - upload fail invalid file format",
async ({ page }) => {
const dashboardPage = new DashboardPage(page);
await dashboardPage.openSidebarItem("Fonts");
await dashboardPage.uploadFontWithInvalidFormat("images/images.png");
},
);
dashboardTest("DA-69 Search font", async ({ page }) => {
const dashboardPage = new DashboardPage(page);
@ -54,6 +57,6 @@ dashboardTest("DA-72 Delete font", async ({ page }) => {
await dashboardPage.isFontUploaded("Pacifico", "Regular");
await dashboardPage.deleteFont();
await dashboardPage.isFontsTablePlaceholderDisplayed(
"Custom fonts you upload will appear here."
"Custom fonts you upload will appear here.",
);
});

View File

@ -4,9 +4,9 @@ const { test, expect } = require("@playwright/test");
const { random } = require("../../helpers/string-generator");
const { TeamPage } = require("../../pages/dashboard/team-page");
const teamName = random().concat('autotest');
const teamName = random().concat("autotest");
test.beforeEach( async ({ page }) => {
test.beforeEach(async ({ page }) => {
const teamPage = new TeamPage(page);
const dashboardPage = new DashboardPage(page);
await teamPage.createTeam(teamName);
@ -19,24 +19,30 @@ test.afterEach(async ({ page }) => {
await teamPage.deleteTeam(teamName);
});
dashboardTest("DA-128 Expand Libraries & Templates carousel",async ({ page }) => {
dashboardTest(
"DA-128 Expand Libraries & Templates carousel",
async ({ page }) => {
const dashboardPage = new DashboardPage(page);
await dashboardPage.clickLibrariesAndTemplatesCarouselButton();
await dashboardPage.isLibrariesAndTemplatesSectionDisplayed();
});
},
);
dashboardTest("DA-130 Flip Libraries & Templates carousel",async ({ page }) => {
dashboardTest(
"DA-130 Flip Libraries & Templates carousel",
async ({ page }) => {
const dashboardPage = new DashboardPage(page);
await dashboardPage.maximizeLibrariesAndTemplatesCarousel();
await dashboardPage.flipLibrariesAndTemplatesCarousel('right', 3);
await dashboardPage.flipLibrariesAndTemplatesCarousel("right", 3);
await expect(dashboardPage.librariesAndTemplatesSection).toHaveScreenshot(
"libraries-carousel-flipped-right.png"
"libraries-carousel-flipped-right.png",
);
await dashboardPage.flipLibrariesAndTemplatesCarousel('left', 3);
await dashboardPage.flipLibrariesAndTemplatesCarousel("left", 3);
await expect(dashboardPage.librariesAndTemplatesSection).toHaveScreenshot(
"libraries-carousel-flipped-left.png"
"libraries-carousel-flipped-left.png",
);
});
},
);
dashboardTest(
"DA-129 Minimize Libraries & Templates carousel",
@ -46,6 +52,5 @@ dashboardTest(
await dashboardPage.isLibrariesAndTemplatesSectionDisplayed();
await dashboardPage.clickLibrariesAndTemplatesCarouselButton();
await dashboardPage.isLibrariesAndTemplatesSectionHidden();
}
},
);

View File

@ -7,7 +7,7 @@ const { MainPage } = require("../../pages/workspace/main-page");
const { random } = require("../../helpers/string-generator");
dashboardTest("DA-76 Create a team", async ({ page }) => {
const team = random().concat('autotest');
const team = random().concat("autotest");
const teamPage = new TeamPage(page);
await teamPage.createTeam(team);
await teamPage.isTeamSelected(team);
@ -16,8 +16,8 @@ dashboardTest("DA-76 Create a team", async ({ page }) => {
});
dashboardTest("DA-77 Team.Switch between teams", async ({ page }) => {
const team1 = 'QA Test team 1';
const team2 = 'QA Test team 2';
const team1 = "QA Test team 1";
const team2 = "QA Test team 2";
const teamPage = new TeamPage(page);
await teamPage.createTeam(team1);
@ -30,191 +30,196 @@ dashboardTest("DA-77 Team.Switch between teams", async ({ page }) => {
await teamPage.deleteTeams([team1, team2]);
});
dashboardTest("DA-78 Team Invitations - open the form via Invitations tab",async ({ page }) => {
const teamPage = new TeamPage(page);
const team = random().concat('autotest');
dashboardTest(
"DA-78 Team Invitations - open the form via Invitations tab",
async ({ page }) => {
const teamPage = new TeamPage(page);
const team = random().concat("autotest");
await teamPage.createTeam(team);
await teamPage.isTeamSelected(team);
await teamPage.openInvitationsPageViaOptionsMenu();
await teamPage.clickInviteMembersToTeamButton();
await teamPage.isInviteMembersPopUpHeaderDisplayed(
"Invite members to the team"
);
await teamPage.deleteTeam(team);
}
await teamPage.createTeam(team);
await teamPage.isTeamSelected(team);
await teamPage.openInvitationsPageViaOptionsMenu();
await teamPage.clickInviteMembersToTeamButton();
await teamPage.isInviteMembersPopUpHeaderDisplayed(
"Invite members to the team",
);
await teamPage.deleteTeam(team);
},
);
dashboardTest("DA-79 Team Invitations - open the form via Team Hero",async ({ page }) => {
const teamPage = new TeamPage(page);
const team = random().concat('autotest');
dashboardTest(
"DA-79 Team Invitations - open the form via Team Hero",
async ({ page }) => {
const teamPage = new TeamPage(page);
const team = random().concat("autotest");
await teamPage.createTeam(team);
await teamPage.isTeamSelected(team);
await teamPage.clickInviteMembersTeamHeroButton();
await teamPage.isInviteMembersPopUpHeaderDisplayed("Invite members to the team");
await teamPage.deleteTeam(team);
}
await teamPage.createTeam(team);
await teamPage.isTeamSelected(team);
await teamPage.clickInviteMembersTeamHeroButton();
await teamPage.isInviteMembersPopUpHeaderDisplayed(
"Invite members to the team",
);
await teamPage.deleteTeam(team);
},
);
dashboardTest(
"DA-80 Team Invitations - invite via owner (single invitation, editor)",
async ({ page }) => {
const teamPage = new TeamPage(page);
const team = random().concat('autotest');
const team = random().concat("autotest");
await teamPage.createTeam(team);
await teamPage.isTeamSelected(team);
await teamPage.openInvitationsPageViaOptionsMenu();
await teamPage.clickInviteMembersToTeamButton();
await teamPage.isInviteMembersPopUpHeaderDisplayed(
"Invite members to the team"
"Invite members to the team",
);
await teamPage.enterEmailToInviteMembersPopUp("testeditor@test.com");
await teamPage.clickSendInvitationButton();
await teamPage.isSuccessMessageDisplayed("Invitation sent successfully");
await teamPage.isInvitationRecordDisplayed("testeditor@test.com", "Editor", "Pending");
await teamPage.isInvitationRecordDisplayed(
"testeditor@test.com",
"Editor",
"Pending",
);
await teamPage.deleteTeam(team);
}
},
);
dashboardTest(
"DA-81 Team Invitations - invite via owner (single invitation, admin)",
async ({ page }) => {
const team = random().concat('autotest');
const team = random().concat("autotest");
const teamPage = new TeamPage(page);
await teamPage.createTeam(team);
await teamPage.isTeamSelected(team);
await teamPage.openInvitationsPageViaOptionsMenu();
await teamPage.clickInviteMembersToTeamButton();
await teamPage.isInviteMembersPopUpHeaderDisplayed(
"Invite members to the team"
"Invite members to the team",
);
await teamPage.selectInvitationRoleInPopUp("Admin");
await teamPage.enterEmailToInviteMembersPopUp("testadmin@test.com");
await teamPage.clickSendInvitationButton();
await teamPage.isSuccessMessageDisplayed(
"Invitation sent successfully"
);
await teamPage.isSuccessMessageDisplayed("Invitation sent successfully");
await teamPage.isInvitationRecordDisplayed(
"testadmin@test.com",
"Admin",
"Pending"
"Pending",
);
await teamPage.deleteTeam(team);
}
},
);
dashboardTest("DA-89 Team.Invitations-fail to send invitation to existing team member",
dashboardTest(
"DA-89 Team.Invitations-fail to send invitation to existing team member",
async ({ page }) => {
const teamPage = new TeamPage(page);
const team = random().concat('autotest');
const team = random().concat("autotest");
await teamPage.createTeam(team);
await teamPage.isTeamSelected(team);
await teamPage.openInvitationsPageViaOptionsMenu();
await teamPage.clickInviteMembersToTeamButton();
await teamPage.isInviteMembersPopUpHeaderDisplayed("Invite members to the team");
await teamPage.isInviteMembersPopUpHeaderDisplayed(
"Invite members to the team",
);
await teamPage.enterEmailToInviteMembersPopUp(process.env.LOGIN_EMAIL);
await teamPage.isSendInvitationBtnDisabled();
await teamPage.isSendInvitationWarningExist(
"Some emails are from current team members. Their invitations will not be sent.")
"Some emails are from current team members. Their invitations will not be sent.",
);
await teamPage.deleteTeam(team);
});
},
);
dashboardTest(
"DA-90 Team Invitations - resend invitation via owner",
async ({ page }) => {
const teamPage = new TeamPage(page);
const team = random().concat('autotest');
const team = random().concat("autotest");
await teamPage.createTeam(team);
await teamPage.isTeamSelected(team);
await teamPage.openInvitationsPageViaOptionsMenu();
await teamPage.clickInviteMembersToTeamButton();
await teamPage.isInviteMembersPopUpHeaderDisplayed(
"Invite members to the team"
"Invite members to the team",
);
await teamPage.enterEmailToInviteMembersPopUp("testeditor@test.com");
await teamPage.clickSendInvitationButton();
await teamPage.isSuccessMessageDisplayed(
"Invitation sent successfully"
);
await teamPage.isSuccessMessageDisplayed("Invitation sent successfully");
await teamPage.isInvitationRecordDisplayed(
"testeditor@test.com",
"Editor",
"Pending"
"Pending",
);
await teamPage.resendInvitation();
await teamPage.isSuccessMessageDisplayed(
"Invitation sent successfully"
);
await teamPage.isSuccessMessageDisplayed("Invitation sent successfully");
await teamPage.deleteTeam(team);
}
},
);
dashboardTest(
"DA-92 Team Invitations - delete invitation via owner",
async ({ page }) => {
const teamPage = new TeamPage(page);
const team = random().concat('autotest');
const team = random().concat("autotest");
await teamPage.createTeam(team);
await teamPage.isTeamSelected(team);
await teamPage.openInvitationsPageViaOptionsMenu();
await teamPage.clickInviteMembersToTeamButton();
await teamPage.isInviteMembersPopUpHeaderDisplayed(
"Invite members to the team"
"Invite members to the team",
);
await teamPage.enterEmailToInviteMembersPopUp("testeditor@test.com");
await teamPage.clickSendInvitationButton();
await teamPage.isSuccessMessageDisplayed(
"Invitation sent successfully"
);
await teamPage.isSuccessMessageDisplayed("Invitation sent successfully");
await teamPage.isInvitationRecordDisplayed(
"testeditor@test.com",
"Editor",
"Pending"
"Pending",
);
await teamPage.deleteInvitation();
await teamPage.isInvitationRecordRemoved();
await teamPage.deleteTeam(team);
}
},
);
dashboardTest(
"DA-95 Team Invitations - change role in invitation via owner",
async ({ page }) => {
const teamPage = new TeamPage(page);
const team = random().concat('autotest');
const team = random().concat("autotest");
await teamPage.createTeam(team);
await teamPage.isTeamSelected(team);
await teamPage.openInvitationsPageViaOptionsMenu();
await teamPage.clickInviteMembersToTeamButton();
await teamPage.isInviteMembersPopUpHeaderDisplayed(
"Invite members to the team"
"Invite members to the team",
);
await teamPage.enterEmailToInviteMembersPopUp("testrole@test.com");
await teamPage.clickSendInvitationButton();
await teamPage.isSuccessMessageDisplayed(
"Invitation sent successfully"
);
await teamPage.isSuccessMessageDisplayed("Invitation sent successfully");
await teamPage.isInvitationRecordDisplayed(
"testrole@test.com",
"Editor",
"Pending"
"Pending",
);
await teamPage.selectInvitationRoleInInvitationRecord("Admin");
await teamPage.isInvitationRecordDisplayed(
"testrole@test.com",
"Admin",
"Pending"
"Pending",
);
await teamPage.deleteTeam(team);
}
},
);
dashboardTest(
"DA-114 Team Settings - upload team profile picture",
async ({ page }) => {
const team = random().concat('autotest');
const team = random().concat("autotest");
const teamPage = new TeamPage(page);
await teamPage.createTeam(team);
await teamPage.isTeamSelected(team);
@ -223,39 +228,45 @@ dashboardTest(
await teamPage.isInfoMessageDisplayed("Loading image…");
await teamPage.waitInfoMessageHidden();
await expect(teamPage.teamInfoSection).toHaveScreenshot(
"team-profile-image.png", {
mask: [teamPage.teamNameLabel]
}
"team-profile-image.png",
{
mask: [teamPage.teamNameLabel],
},
);
await teamPage.deleteTeam(team);
}
},
);
dashboardTest("DA-116 Team. Settings - check 'Team members' info",
dashboardTest(
"DA-116 Team. Settings - check 'Team members' info",
async ({ page }) => {
const team = random().concat('autotest');
const teamPage = new TeamPage(page);
const profilePage = new ProfilePage(page);
await profilePage.openYourAccountPage();
await profilePage.isHeaderDisplayed("Your account");
await profilePage.changeProfileName("QA Engineer");
await profilePage.uploadProfileImage("images/sample.jpeg");
await profilePage.waitInfoMessageHidden();
await profilePage.backToDashboardFromAccount();
await teamPage.createTeam(team);
await teamPage.isTeamSelected(team);
await teamPage.openTeamSettingsPageViaOptionsMenu();
const team = random().concat("autotest");
const teamPage = new TeamPage(page);
const profilePage = new ProfilePage(page);
await profilePage.openYourAccountPage();
await profilePage.isHeaderDisplayed("Your account");
await profilePage.changeProfileName("QA Engineer");
await profilePage.uploadProfileImage("images/sample.jpeg");
await profilePage.waitInfoMessageHidden();
await profilePage.backToDashboardFromAccount();
await teamPage.createTeam(team);
await teamPage.isTeamSelected(team);
await teamPage.openTeamSettingsPageViaOptionsMenu();
const teamOwner = await profilePage.getProfileFullName() + ' (Owner)';
await teamPage.isTeamOwnerInfoDisplayed(teamOwner);
await teamPage.isTeamMembersInfoDisplayed("1 members");
await expect(teamPage.teamOwnerSection).toHaveScreenshot("team-owner-block.png");
await teamPage.deleteTeam(team);
});
const teamOwner = (await profilePage.getProfileFullName()) + " (Owner)";
await teamPage.isTeamOwnerInfoDisplayed(teamOwner);
await teamPage.isTeamMembersInfoDisplayed("1 members");
await expect(teamPage.teamOwnerSection).toHaveScreenshot(
"team-owner-block.png",
);
await teamPage.deleteTeam(team);
},
);
dashboardTest("DA-117 Team. Settings - check 'Team projects' info",
dashboardTest(
"DA-117 Team. Settings - check 'Team projects' info",
async ({ page }) => {
const team = random().concat('autotest');
const team = random().concat("autotest");
const dashboardPage = new DashboardPage(page);
const teamPage = new TeamPage(page);
const mainPage = new MainPage(page);
@ -279,13 +290,16 @@ dashboardTest("DA-117 Team. Settings - check 'Team projects' info",
await teamPage.openTeamSettingsPageViaOptionsMenu();
await teamPage.isTeamProjectsInfoDisplayed("2 projects");
await teamPage.isTeamFilesInfoDisplayed("3 files");
await expect(teamPage.teamStatsSection).toHaveScreenshot("team-stats-block.png")
await expect(teamPage.teamStatsSection).toHaveScreenshot(
"team-stats-block.png",
);
await teamPage.deleteTeam(team);
});
},
);
dashboardTest("DA-119 Rename a team via owner", async ({ page }) => {
const team = random().concat('autotest');
const teamNew = random().concat('autotest');
const team = random().concat("autotest");
const teamNew = random().concat("autotest");
const teamPage = new TeamPage(page);
await teamPage.createTeam(team);
await teamPage.isTeamSelected(team);
@ -296,7 +310,7 @@ dashboardTest("DA-119 Rename a team via owner", async ({ page }) => {
dashboardTest("DA-122 Delete a team via owner", async ({ page }) => {
const teamPage = new TeamPage(page);
const team = random().concat('autotest');
const team = random().concat("autotest");
await teamPage.createTeam(team);
await teamPage.isTeamSelected(team);
await teamPage.deleteTeam(team);

View File

@ -40,6 +40,6 @@ test("ON-15 Login with incorrect password", async ({ page }) => {
await loginPage.enterPwd("11223344");
await loginPage.clickLoginButton();
await loginPage.isLoginErrorMessageDisplayed(
"Email or password is incorrect."
"Email or password is incorrect.",
);
});

View File

@ -5,9 +5,9 @@ const { test } = require("@playwright/test");
const { TeamPage } = require("../../pages/dashboard/team-page");
const { DashboardPage } = require("../../pages/dashboard/dashboard-page");
const teamName = random().concat('autotest');
const teamName = random().concat("autotest");
test.beforeEach( async ({ page }) => {
test.beforeEach(async ({ page }) => {
const teamPage = new TeamPage(page);
const dashboardPage = new DashboardPage(page);
const mainPage = new MainPage(page);

View File

@ -6,9 +6,9 @@ const { random } = require("../../helpers/string-generator");
const { TeamPage } = require("../../pages/dashboard/team-page");
const { DashboardPage } = require("../../pages/dashboard/dashboard-page");
const teamName = random().concat('autotest');
const teamName = random().concat("autotest");
test.beforeEach( async ({ page }) => {
test.beforeEach(async ({ page }) => {
const teamPage = new TeamPage(page);
const dashboardPage = new DashboardPage(page);
const mainPage = new MainPage(page);
@ -78,7 +78,7 @@ mainTest("PF-73 Change fill color for board", async ({ page }) => {
await mainPage.isFillHexCodeSet("FF0000");
await mainPage.isFillOpacitySet("100");
await expect(mainPage.createdLayer).toHaveScreenshot(
"board-changed-fill.png"
"board-changed-fill.png",
);
});
@ -96,7 +96,7 @@ mainTest("PF-74 Change fill color for shape", async ({ page }) => {
await mainPage.isFillHexCodeSet("FF0000");
await mainPage.isFillOpacitySet("100");
await expect(mainPage.createdLayer).toHaveScreenshot(
"rectangle-changed-fill.png"
"rectangle-changed-fill.png",
);
});
@ -133,7 +133,7 @@ mainTest("PF-78 Change fill opacity for board", async ({ page }) => {
await mainPage.isFillHexCodeSet("FFFFFF");
await mainPage.isFillOpacitySet("70");
await expect(mainPage.createdLayer).toHaveScreenshot(
"board-changed-opacity.png"
"board-changed-opacity.png",
);
});
@ -148,7 +148,7 @@ mainTest("PF-79 Change fill opacity for shape", async ({ page }) => {
await mainPage.isFillHexCodeSet("B1B2B5");
await mainPage.isFillOpacitySet("70");
await expect(mainPage.createdLayer).toHaveScreenshot(
"rectangle-changed-opacity.png"
"rectangle-changed-opacity.png",
);
});
@ -168,7 +168,7 @@ mainTest("PF-82 Change fill opacity for path", async ({ page }) => {
await mainPage.isFillHexCodeSet("B1B2B5");
await mainPage.isFillOpacitySet("70");
await expect(mainPage.createdLayer).toHaveScreenshot(
"path-changed-opacity.png"
"path-changed-opacity.png",
);
});
@ -181,7 +181,7 @@ mainTest("PF-93 Remove fill for board", async ({ page }) => {
await mainPage.clickRemoveFillButton();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.createdLayer).toHaveScreenshot(
"board-removed-fill.png"
"board-removed-fill.png",
);
});
@ -194,7 +194,7 @@ mainTest("PF-94 Remove fill for shape", async ({ page }) => {
await mainPage.clickRemoveFillButton();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.createdLayer).toHaveScreenshot(
"rectangle--removed-fill.png"
"rectangle--removed-fill.png",
);
});

View File

@ -1,13 +1,13 @@
const { mainTest } = require("../../fixtures");
const { MainPage } = require("../../pages/workspace/main-page");
const { test, expect} = require("@playwright/test");
const { test, expect } = require("@playwright/test");
const { random } = require("../../helpers/string-generator");
const { TeamPage } = require("../../pages/dashboard/team-page");
const { DashboardPage } = require("../../pages/dashboard/dashboard-page");
const teamName = random().concat('autotest');
const teamName = random().concat("autotest");
test.beforeEach( async ({ page }) => {
test.beforeEach(async ({ page }) => {
const teamPage = new TeamPage(page);
const dashboardPage = new DashboardPage(page);
const mainPage = new MainPage(page);
@ -24,7 +24,7 @@ test.afterEach(async ({ page }) => {
await teamPage.deleteTeam(teamName);
});
test.beforeEach(async ({ page}) => {
test.beforeEach(async ({ page }) => {
const mainPage = new MainPage(page);
await mainPage.clickCreateBoardButton();
await mainPage.clickViewportTwice();
@ -37,7 +37,7 @@ mainTest("PF-1 Set square grid", async ({ page }) => {
await mainPage.clickAddGridButton();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.createdLayer).toHaveScreenshot(
"square-grid-default.png"
"square-grid-default.png",
);
});
@ -49,7 +49,7 @@ mainTest("PF-2 Square grid - change size", async ({ page }) => {
await mainPage.clickViewportTwice();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.createdLayer).toHaveScreenshot(
"square-grid-changed-size.png"
"square-grid-changed-size.png",
);
});
@ -62,7 +62,7 @@ mainTest("PF-3 Square grid - change opacity", async ({ page }) => {
await mainPage.clickViewportTwice();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.createdLayer).toHaveScreenshot(
"square-grid-changed-opacity.png"
"square-grid-changed-opacity.png",
);
});
@ -77,28 +77,39 @@ mainTest("PF-4 Use default square grid", async ({ page }) => {
await mainPage.clickUseDefaultGridButton();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.createdLayer).toHaveScreenshot(
"square-grid-default.png"
"square-grid-default.png",
);
});
mainTest("PF-6 Hide and unhide square grid via Design panel",async ({ page }) => {
const mainPage = new MainPage(page);
await mainPage.clickAddGridButton();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.createdLayer).toHaveScreenshot("square-grid-default.png");
await mainPage.clickHideGridButton();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.createdLayer).toHaveScreenshot("square-grid-hide.png");
await mainPage.clickUnhideGridButton();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.createdLayer).toHaveScreenshot("square-grid-unhide.png");
});
mainTest(
"PF-6 Hide and unhide square grid via Design panel",
async ({ page }) => {
const mainPage = new MainPage(page);
await mainPage.clickAddGridButton();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.createdLayer).toHaveScreenshot(
"square-grid-default.png",
);
await mainPage.clickHideGridButton();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.createdLayer).toHaveScreenshot(
"square-grid-hide.png",
);
await mainPage.clickUnhideGridButton();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.createdLayer).toHaveScreenshot(
"square-grid-unhide.png",
);
},
);
mainTest("PF-7 Hide and unhide square grid via Main menu",async ({ page }) => {
mainTest("PF-7 Hide and unhide square grid via Main menu", async ({ page }) => {
const mainPage = new MainPage(page);
await mainPage.clickAddGridButton();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.createdLayer).toHaveScreenshot("square-grid-default.png");
await expect(mainPage.createdLayer).toHaveScreenshot(
"square-grid-default.png",
);
await mainPage.clickMainMenuButton();
await mainPage.clickViewMainMenuItem();
await mainPage.clickHideGridsMainMenuSubItem();
@ -108,7 +119,9 @@ mainTest("PF-7 Hide and unhide square grid via Main menu",async ({ page }) => {
await mainPage.clickViewMainMenuItem();
await mainPage.clickShowGridsMainMenuSubItem();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.createdLayer).toHaveScreenshot("square-grid-unhide.png");
await expect(mainPage.createdLayer).toHaveScreenshot(
"square-grid-unhide.png",
);
});
mainTest("PF-11 Remove square grid", async ({ page }) => {
@ -118,7 +131,7 @@ mainTest("PF-11 Remove square grid", async ({ page }) => {
await mainPage.clickRemoveGridButton();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.createdLayer).toHaveScreenshot(
"board-without-grid.png"
"board-without-grid.png",
);
});
@ -128,7 +141,7 @@ mainTest("PF-12 Set columns grid", async ({ page }) => {
await mainPage.selectGridType("Columns");
await mainPage.waitForChangeIsSaved();
await expect(mainPage.createdLayer).toHaveScreenshot(
"columns-grid-default.png"
"columns-grid-default.png",
);
});
@ -141,7 +154,7 @@ mainTest("PF-13 Columns grid - change columns number", async ({ page }) => {
await mainPage.clickViewportTwice();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.createdLayer).toHaveScreenshot(
"columns-grid-changed-columns.png"
"columns-grid-changed-columns.png",
);
});
@ -157,7 +170,7 @@ mainTest("PF-14 Columns grid - change width", async ({ page }) => {
await mainPage.clickViewportTwice();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.createdLayer).toHaveScreenshot(
"columns-grid-changed-width.png"
"columns-grid-changed-width.png",
);
});
@ -166,16 +179,22 @@ mainTest("PF-17 Columns grid - change opacity", async ({ page }) => {
await mainPage.clickAddGridButton();
await mainPage.selectGridType("Columns");
await mainPage.waitForChangeIsSaved();
await expect(mainPage.createdLayer).toHaveScreenshot("columns-grid-default.png");
await expect(mainPage.createdLayer).toHaveScreenshot(
"columns-grid-default.png",
);
await mainPage.clickGridActionsButton();
await mainPage.changeOpacityForGrid("50");
await mainPage.clickViewportTwice();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.createdLayer).toHaveScreenshot("columns-grid-opacity-50.png");
await expect(mainPage.createdLayer).toHaveScreenshot(
"columns-grid-opacity-50.png",
);
await mainPage.changeOpacityForGrid("100");
await mainPage.clickViewportTwice();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.createdLayer).toHaveScreenshot("columns-grid-opacity-100.png");
await expect(mainPage.createdLayer).toHaveScreenshot(
"columns-grid-opacity-100.png",
);
});
mainTest("PF-18 Use default columns grid", async ({ page }) => {
@ -189,23 +208,32 @@ mainTest("PF-18 Use default columns grid", async ({ page }) => {
await mainPage.clickViewportTwice();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.createdLayer).toHaveScreenshot(
"columns-grid-default.png"
"columns-grid-default.png",
);
});
mainTest("PF-20 Hide and unhide columns grid via Design panel", async ({ page }) => {
const mainPage = new MainPage(page);
await mainPage.clickAddGridButton();
await mainPage.selectGridType("Columns");
await mainPage.waitForChangeIsSaved();
await expect(mainPage.createdLayer).toHaveScreenshot("columns-grid-default.png");
await mainPage.clickHideGridButton();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.createdLayer).toHaveScreenshot("columns-grid-hide.png");
await mainPage.clickUnhideGridButton();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.createdLayer).toHaveScreenshot("columns-grid-unhide.png");
});
mainTest(
"PF-20 Hide and unhide columns grid via Design panel",
async ({ page }) => {
const mainPage = new MainPage(page);
await mainPage.clickAddGridButton();
await mainPage.selectGridType("Columns");
await mainPage.waitForChangeIsSaved();
await expect(mainPage.createdLayer).toHaveScreenshot(
"columns-grid-default.png",
);
await mainPage.clickHideGridButton();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.createdLayer).toHaveScreenshot(
"columns-grid-hide.png",
);
await mainPage.clickUnhideGridButton();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.createdLayer).toHaveScreenshot(
"columns-grid-unhide.png",
);
},
);
mainTest("PF-25 Remove columns grid", async ({ page }) => {
const mainPage = new MainPage(page);
@ -215,7 +243,7 @@ mainTest("PF-25 Remove columns grid", async ({ page }) => {
await mainPage.clickRemoveGridButton();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.createdLayer).toHaveScreenshot(
"board-without-grid.png"
"board-without-grid.png",
);
});
@ -236,11 +264,11 @@ mainTest("PF-27 Rows grid - change rows number", async ({ page }) => {
await mainPage.clickViewportTwice();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.createdLayer).toHaveScreenshot(
"rows-grid-changed-rows.png"
"rows-grid-changed-rows.png",
);
});
mainTest("PF-28 Rows grid - change height",async ({ page }) => {
mainTest("PF-28 Rows grid - change height", async ({ page }) => {
const mainPage = new MainPage(page);
await mainPage.clickAddGridButton();
await mainPage.selectGridType("Rows");
@ -252,7 +280,7 @@ mainTest("PF-28 Rows grid - change height",async ({ page }) => {
await mainPage.clickViewportTwice();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.createdLayer).toHaveScreenshot(
"rows-grid-changed-height.png"
"rows-grid-changed-height.png",
);
});
@ -266,11 +294,15 @@ mainTest("PF-31 Rows grid - change opacity", async ({ page }) => {
await mainPage.changeOpacityForGrid("50");
await mainPage.clickViewportTwice();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.createdLayer).toHaveScreenshot("rows-grid-opacity-50.png");
await expect(mainPage.createdLayer).toHaveScreenshot(
"rows-grid-opacity-50.png",
);
await mainPage.changeOpacityForGrid("100");
await mainPage.clickViewportTwice();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.createdLayer).toHaveScreenshot("rows-grid-opacity-100.png");
await expect(mainPage.createdLayer).toHaveScreenshot(
"rows-grid-opacity-100.png",
);
});
mainTest("PF-32 Use default rows grid", async ({ page }) => {
@ -286,7 +318,7 @@ mainTest("PF-32 Use default rows grid", async ({ page }) => {
await expect(mainPage.createdLayer).toHaveScreenshot("rows-grid-default.png");
});
mainTest("PF-35 Hide and unhide rows grid via Main menu",async ({ page }) => {
mainTest("PF-35 Hide and unhide rows grid via Main menu", async ({ page }) => {
const mainPage = new MainPage(page);
await mainPage.clickAddGridButton();
await mainPage.selectGridType("Rows");
@ -312,6 +344,6 @@ mainTest("PF-39 Remove rows grid", async ({ page }) => {
await mainPage.clickRemoveGridButton();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.createdLayer).toHaveScreenshot(
"board-without-grid.png"
"board-without-grid.png",
);
});

View File

@ -5,9 +5,9 @@ const { test } = require("@playwright/test");
const { TeamPage } = require("../../pages/dashboard/team-page");
const { DashboardPage } = require("../../pages/dashboard/dashboard-page");
const teamName = random().concat('autotest');
const teamName = random().concat("autotest");
test.beforeEach( async ({ page }) => {
test.beforeEach(async ({ page }) => {
const teamPage = new TeamPage(page);
const dashboardPage = new DashboardPage(page);
const mainPage = new MainPage(page);
@ -24,7 +24,7 @@ test.afterEach(async ({ page }) => {
await teamPage.deleteTeam(teamName);
});
mainTest("PF-156 Perform a change and check the status",async ({ page }) => {
mainTest("PF-156 Perform a change and check the status", async ({ page }) => {
const mainPage = new MainPage(page);
await mainPage.clickCreateEllipseButton();
await mainPage.clickViewportTwice();
@ -40,4 +40,3 @@ mainTest("PF-172 Open history panel with recent changes", async ({ page }) => {
await mainPage.clickHistoryPanelButton();
await mainPage.isActionDisplayedOnHistoryPanel("New board");
});

View File

@ -1,14 +1,14 @@
const { mainTest } = require("../../fixtures");
const { MainPage } = require("../../pages/workspace/main-page");
const { expect, test} = require("@playwright/test");
const { expect, test } = require("@playwright/test");
const { ColorPalettePopUp } = require("../../pages/workspace/color-palette-popup");
const { random } = require("../../helpers/string-generator");
const { TeamPage } = require("../../pages/dashboard/team-page");
const { DashboardPage } = require("../../pages/dashboard/dashboard-page");
const teamName = random().concat('autotest');
const teamName = random().concat("autotest");
test.beforeEach( async ({ page }) => {
test.beforeEach(async ({ page }) => {
const teamPage = new TeamPage(page);
const dashboardPage = new DashboardPage(page);
const mainPage = new MainPage(page);
@ -25,23 +25,32 @@ test.afterEach(async ({ page }) => {
await teamPage.deleteTeam(teamName);
});
mainTest("PF-99 Hide/show grids via shortcut CTRL '",async ({ page, browserName }) => {
const mainPage = new MainPage(page);
await mainPage.clickCreateBoardButton();
await mainPage.clickViewportTwice();
await mainPage.waitForChangeIsSaved();
await mainPage.isCreatedLayerVisible();
mainTest(
"PF-99 Hide/show grids via shortcut CTRL '",
async ({ page, browserName }) => {
const mainPage = new MainPage(page);
await mainPage.clickCreateBoardButton();
await mainPage.clickViewportTwice();
await mainPage.waitForChangeIsSaved();
await mainPage.isCreatedLayerVisible();
await mainPage.clickAddGridButton();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.createdLayer).toHaveScreenshot("square-grid-default.png");
await mainPage.pressHideShowGridsShortcut(browserName);
await mainPage.waitForChangeIsSaved();
await expect(mainPage.createdLayer).toHaveScreenshot("square-grid-hide.png");
await mainPage.pressHideShowGridsShortcut();
await mainPage.waitForChangeIsSaved(browserName);
await expect(mainPage.createdLayer).toHaveScreenshot("square-grid-unhide.png");
});
await mainPage.clickAddGridButton();
await mainPage.waitForChangeIsSaved();
await expect(mainPage.createdLayer).toHaveScreenshot(
"square-grid-default.png",
);
await mainPage.pressHideShowGridsShortcut(browserName);
await mainPage.waitForChangeIsSaved();
await expect(mainPage.createdLayer).toHaveScreenshot(
"square-grid-hide.png",
);
await mainPage.pressHideShowGridsShortcut();
await mainPage.waitForChangeIsSaved(browserName);
await expect(mainPage.createdLayer).toHaveScreenshot(
"square-grid-unhide.png",
);
},
);
mainTest("PF-98-1 Hide/show rulers via main menu", async ({ page }) => {
const mainPage = new MainPage(page);
@ -50,7 +59,7 @@ mainTest("PF-98-1 Hide/show rulers via main menu", async ({ page }) => {
await mainPage.clickHideRulersMainMenuSubItem();
await mainPage.clickViewportTwice();
await expect(mainPage.viewport).toHaveScreenshot(
"viewport-hidden-rulers.png"
"viewport-hidden-rulers.png",
);
await mainPage.clickMainMenuButton();
await mainPage.clickViewMainMenuItem();
@ -64,34 +73,41 @@ mainTest(
const mainPage = new MainPage(page);
await mainPage.clickViewportTwice();
await mainPage.pressHideShowRulersShortcut(browserName);
await expect(mainPage.viewport).toHaveScreenshot("viewport-hidden-rulers.png");
await expect(mainPage.viewport).toHaveScreenshot(
"viewport-hidden-rulers.png",
);
await mainPage.pressHideShowRulersShortcut(browserName);
await expect(mainPage.viewport).toHaveScreenshot("viewport-default.png");
}
},
);
mainTest("PF-101 Hide/show color palette - file library check",async ({ page }) => {
const mainPage = new MainPage(page);
const colorPalettePopUp = new ColorPalettePopUp(page);
await mainPage.clickAssetsTab();
await mainPage.clickAddFileLibraryColorButton();
await colorPalettePopUp.setHex("#ffff00");
await colorPalettePopUp.clickSaveColorStyleButton();
await mainPage.clickViewportOnce();
await mainPage.waitForChangeIsSaved();
mainTest(
"PF-101 Hide/show color palette - file library check",
async ({ page }) => {
const mainPage = new MainPage(page);
const colorPalettePopUp = new ColorPalettePopUp(page);
await mainPage.clickAssetsTab();
await mainPage.clickAddFileLibraryColorButton();
await colorPalettePopUp.setHex("#ffff00");
await colorPalettePopUp.clickSaveColorStyleButton();
await mainPage.clickViewportOnce();
await mainPage.waitForChangeIsSaved();
await mainPage.clickMainMenuButton();
await mainPage.clickViewMainMenuItem();
await mainPage.clickShowColorPaletteMainMenuSubItem();
await mainPage.isColorsPaletteDisplayed();
await colorPalettePopUp.openColorPaletteMenu();
await colorPalettePopUp.selectColorPaletteMenuOption("File library");
await expect(mainPage.colorsPalette).toHaveScreenshot("colors-file-library.png");
await mainPage.clickMainMenuButton();
await mainPage.clickViewMainMenuItem();
await mainPage.clickHideColorPaletteMainMenuSubItem();
await mainPage.isColorsPaletteNotDisplayed();
});
await mainPage.clickMainMenuButton();
await mainPage.clickViewMainMenuItem();
await mainPage.clickShowColorPaletteMainMenuSubItem();
await mainPage.isColorsPaletteDisplayed();
await colorPalettePopUp.openColorPaletteMenu();
await colorPalettePopUp.selectColorPaletteMenuOption("File library");
await expect(mainPage.colorsPalette).toHaveScreenshot(
"colors-file-library.png",
);
await mainPage.clickMainMenuButton();
await mainPage.clickViewMainMenuItem();
await mainPage.clickHideColorPaletteMainMenuSubItem();
await mainPage.isColorsPaletteNotDisplayed();
},
);
mainTest("PF-102 Hide/show board names", async ({ page }) => {
const mainPage = new MainPage(page);
@ -102,10 +118,9 @@ mainTest("PF-102 Hide/show board names", async ({ page }) => {
await mainPage.clickMainMenuButton();
await mainPage.clickViewMainMenuItem();
await mainPage.clickHideBoardNamesMainMenuSubItem();
await expect(mainPage.viewport).toHaveScreenshot(
"board-hide-name.png", {
mask: [mainPage.guides]
});
await expect(mainPage.viewport).toHaveScreenshot("board-hide-name.png", {
mask: [mainPage.guides],
});
await mainPage.clickMainMenuButton();
await mainPage.clickViewMainMenuItem();
await mainPage.clickShowBoardNamesMainMenuSubItem();
@ -117,19 +132,19 @@ mainTest("PF-103-1 Hide/show pixel grid via main menu", async ({ page }) => {
await mainPage.clickViewportTwice();
await mainPage.increaseZoom(10);
await expect(mainPage.viewport).toHaveScreenshot(
"canvas-show-pixel-grid.png"
"canvas-show-pixel-grid.png",
);
await mainPage.clickMainMenuButton();
await mainPage.clickViewMainMenuItem();
await mainPage.clickHidePixelGridMainMenuSubItem();
await expect(mainPage.viewport).toHaveScreenshot(
"canvas-hide-pixel-grid.png"
"canvas-hide-pixel-grid.png",
);
await mainPage.clickMainMenuButton();
await mainPage.clickViewMainMenuItem();
await mainPage.clickShowPixelGridMainMenuSubItem();
await expect(mainPage.viewport).toHaveScreenshot(
"canvas-show-pixel-grid.png"
"canvas-show-pixel-grid.png",
);
});
@ -140,17 +155,17 @@ mainTest(
await mainPage.clickViewportTwice();
await mainPage.increaseZoom(10);
await expect(mainPage.viewport).toHaveScreenshot(
"canvas-show-pixel-grid.png"
"canvas-show-pixel-grid.png",
);
await mainPage.pressHideShowPixelGridShortcut();
await expect(mainPage.viewport).toHaveScreenshot(
"canvas-hide-pixel-grid.png"
"canvas-hide-pixel-grid.png",
);
await mainPage.pressHideShowPixelGridShortcut();
await expect(mainPage.viewport).toHaveScreenshot(
"canvas-show-pixel-grid.png"
"canvas-show-pixel-grid.png",
);
}
},
);
mainTest(
@ -164,37 +179,47 @@ mainTest(
await expect(mainPage.viewport).toHaveScreenshot("canvas-hide-ui.png");
await mainPage.pressHideShowUIShortcut();
await expect(mainPage.viewport).toHaveScreenshot("canvas-show-ui.png");
}
},
);
mainTest("PF-109 Select all via main menu and shortcut CTRL A",
async ({ page, browserName}) => {
const mainPage = new MainPage(page);
await mainPage.createDefaultBoardByCoordinates(100, 200);
await mainPage.createDefaultRectangleByCoordinates(250, 350);
await mainPage.createDefaultEllipseByCoordinates(100, 600);
await expect(mainPage.viewport).toHaveScreenshot(
"layers-all-unselected.png", {
mask: [mainPage.guides]
});
await mainPage.clickMainMenuButton();
await mainPage.clickEditMainMenuItem();
await mainPage.clickSelectAllMainMenuSubItem();
await expect(mainPage.viewport).toHaveScreenshot(
"layers-all-selected.png", {
mask: [mainPage.guides]
});
await mainPage.clickViewportOnce();
mainTest(
"PF-109 Select all via main menu and shortcut CTRL A",
async ({ page, browserName }) => {
const mainPage = new MainPage(page);
await mainPage.createDefaultBoardByCoordinates(100, 200);
await mainPage.createDefaultRectangleByCoordinates(250, 350);
await mainPage.createDefaultEllipseByCoordinates(100, 600);
await expect(mainPage.viewport).toHaveScreenshot(
"layers-all-unselected.png", {
mask: [mainPage.guides]
});
await mainPage.pressSelectAllShortcut(browserName);
"layers-all-unselected.png",
{
mask: [mainPage.guides],
},
);
await mainPage.clickMainMenuButton();
await mainPage.clickEditMainMenuItem();
await mainPage.clickSelectAllMainMenuSubItem();
await expect(mainPage.viewport).toHaveScreenshot(
"layers-all-selected.png", {
mask: [mainPage.guides]
});
});
"layers-all-selected.png",
{
mask: [mainPage.guides],
},
);
await mainPage.clickViewportOnce();
await expect(mainPage.viewport).toHaveScreenshot(
"layers-all-unselected.png",
{
mask: [mainPage.guides],
},
);
await mainPage.pressSelectAllShortcut(browserName);
await expect(mainPage.viewport).toHaveScreenshot(
"layers-all-selected.png",
{
mask: [mainPage.guides],
},
);
},
);
mainTest("PF-111 Download penpot file .penpot", async ({ page }) => {
const mainPage = new MainPage(page);

View File

@ -5,9 +5,9 @@ const { random } = require("../../helpers/string-generator");
const { TeamPage } = require("../../pages/dashboard/team-page");
const { DashboardPage } = require("../../pages/dashboard/dashboard-page");
const teamName = random().concat('autotest');
const teamName = random().concat("autotest");
test.beforeEach( async ({ page }) => {
test.beforeEach(async ({ page }) => {
const teamPage = new TeamPage(page);
const dashboardPage = new DashboardPage(page);
const mainPage = new MainPage(page);
@ -32,7 +32,7 @@ mainTest("PF-114 Create new page", async ({ page }) => {
await mainPage.isFirstPageAddedToAssetsPanel();
await mainPage.isSecondPageAddedToAssetsPanel();
await expect(mainPage.assetsPanelPagesSection).toHaveScreenshot(
"page-1-and-page-2.png"
"page-1-and-page-2.png",
);
});
@ -79,13 +79,13 @@ mainTest("PF-118 Collapse/expand pages list", async ({ page }) => {
await mainPage.waitForChangeIsSaved();
await mainPage.clickMoveButton();
await expect(mainPage.assetsPanelPagesSection).toHaveScreenshot(
"hidden-pages.png"
"hidden-pages.png",
);
await mainPage.clickCollapseExpandPagesButton();
await mainPage.waitForChangeIsSaved();
await mainPage.clickMoveButton();
await expect(mainPage.assetsPanelPagesSection).toHaveScreenshot(
"page-1-and-page-2.png"
"page-1-and-page-2.png",
);
});
@ -100,7 +100,7 @@ mainTest("PF-119 Delete page", async ({ page }) => {
await mainPage.isFirstPageNameDisplayed("Page 1");
await mainPage.isSecondPageNameDisplayed("Page 3");
await expect(mainPage.assetsPanelPagesSection).toHaveScreenshot(
"page-1-and-page-3.png"
"page-1-and-page-3.png",
);
await mainPage.deleteSecondPageViaTrashIcon();
await mainPage.waitForChangeIsSaved();

View File

@ -5,9 +5,9 @@ const { random } = require("../../helpers/string-generator");
const { TeamPage } = require("../../pages/dashboard/team-page");
const { DashboardPage } = require("../../pages/dashboard/dashboard-page");
const teamName = random().concat('autotest');
const teamName = random().concat("autotest");
test.beforeEach( async ({ page }) => {
test.beforeEach(async ({ page }) => {
const teamPage = new TeamPage(page);
const dashboardPage = new DashboardPage(page);
const mainPage = new MainPage(page);
@ -31,7 +31,7 @@ mainTest(
await mainPage.clickCreateBoardButton();
await mainPage.clickViewportByCoordinates(900, 100);
await mainPage.waitForChangeIsSaved();
await mainPage.clickCreateBoardButton()
await mainPage.clickCreateBoardButton();
await mainPage.clickViewportByCoordinates(500, 200);
await mainPage.waitForChangeIsSaved();
await mainPage.clickPrototypeTab();
@ -42,9 +42,9 @@ mainTest(
"connector-between-board2-and-board1.png",
{
mask: [mainPage.usersSection],
}
},
);
}
},
);
mainTest("PF-143 Add Interaction via Prototype panel", async ({ page }) => {
@ -87,7 +87,7 @@ mainTest("PF-144 Remove Interaction via Prototype panel", async ({ page }) => {
"connector-between-board2-and-board1.png",
{
mask: [mainPage.usersSection],
}
},
);
});
@ -113,7 +113,7 @@ mainTest("PF-147 Change destination via Prototype panel", async ({ page }) => {
"connector-between-board2-and-board3.png",
{
mask: [mainPage.usersSection],
}
},
);
});

View File

@ -5,9 +5,9 @@ const { random } = require("../../helpers/string-generator");
const { TeamPage } = require("../../pages/dashboard/team-page");
const { DashboardPage } = require("../../pages/dashboard/dashboard-page");
const teamName = random().concat('autotest');
const teamName = random().concat("autotest");
test.beforeEach( async ({ page }) => {
test.beforeEach(async ({ page }) => {
const teamPage = new TeamPage(page);
const dashboardPage = new DashboardPage(page);
const mainPage = new MainPage(page);

View File

@ -22,20 +22,24 @@ dashboardTest("PR-9 Add profile picture jpeg", async ({ page }) => {
await profilePage.isInfoMessageDisplayed("Loading image…");
await profilePage.waitInfoMessageHidden();
await expect(profilePage.profileAvatarBlock).toHaveScreenshot(
"profile-avatar-block-png.png", {
mask: [profilePage.profileNameInput, profilePage.profileEmailInput]
});
"profile-avatar-block-png.png",
{
mask: [profilePage.profileNameInput, profilePage.profileEmailInput],
},
);
await profilePage.uploadProfileImage("images/sample.jpeg");
await profilePage.isInfoMessageDisplayed("Loading image…");
await profilePage.waitInfoMessageHidden();
await expect(profilePage.profileAvatarBlock).toHaveScreenshot(
"profile-avatar-block-jpeg.png", {
mask: [profilePage.profileNameInput, profilePage.profileEmailInput]
});
"profile-avatar-block-jpeg.png",
{
mask: [profilePage.profileNameInput, profilePage.profileEmailInput],
},
);
});
dashboardTest("PR-12 Change password to invalid", async ({ page }) => {
const newPassword = '1234567';
const newPassword = "1234567";
const profilePage = new ProfilePage(page);
await profilePage.openYourAccountPage();
@ -45,10 +49,13 @@ dashboardTest("PR-12 Change password to invalid", async ({ page }) => {
await profilePage.enterNewPassword(newPassword);
await profilePage.enterConfirmPassword(newPassword);
await profilePage.isUpdateSettingsBtnDisabled();
await profilePage.isPasswordInputErrorDisplayed("Password should at least be 8 characters");
await profilePage.isPasswordInputErrorDisplayed(
"Password should at least be 8 characters",
);
});
dashboardTest("PR-16 Fail to change password confirmation does not match",
dashboardTest(
"PR-16 Fail to change password confirmation does not match",
async ({ page }) => {
const profilePage = new ProfilePage(page);
@ -56,11 +63,14 @@ dashboardTest("PR-16 Fail to change password confirmation does not match",
await profilePage.isHeaderDisplayed("Your account");
await profilePage.openPasswordPageInAccount();
await profilePage.enterCurrentPassword(process.env.LOGIN_PWD);
await profilePage.enterNewPassword('test12345');
await profilePage.enterConfirmPassword('test54321');
await profilePage.enterNewPassword("test12345");
await profilePage.enterConfirmPassword("test54321");
await profilePage.isUpdateSettingsBtnDisabled();
await profilePage.isPasswordInputErrorDisplayed("Confirmation password must match");
});
await profilePage.isPasswordInputErrorDisplayed(
"Confirmation password must match",
);
},
);
dashboardTest("PR-19 Logout from Account", async ({ page }) => {
const profilePage = new ProfilePage(page);
@ -80,10 +90,10 @@ dashboardTest(
await profilePage.isSendFeedbackButtonDisabled();
await profilePage.clearSubjectInputInGiveFeedbackForm();
await profilePage.enterDescriptionToGiveFeedbackForm(
"This is a test feedback triggered by QA team"
"This is a test feedback triggered by QA team",
);
await profilePage.isSendFeedbackButtonDisabled();
}
},
);
dashboardTest("PR-22 Send feedback email with valid data", async ({ page }) => {
@ -92,7 +102,7 @@ dashboardTest("PR-22 Send feedback email with valid data", async ({ page }) => {
await profilePage.isHeaderDisplayed("Your account");
await profilePage.enterSubjectToGiveFeedbackForm("QA Test");
await profilePage.enterDescriptionToGiveFeedbackForm(
"This is a test feedback triggered by QA team"
"This is a test feedback triggered by QA team",
);
await profilePage.clickSendFeedbackButton();
await profilePage.isSuccessMessageDisplayed("Feedback sent");

View File

@ -1,6 +1,6 @@
const { test } = require("@playwright/test");
const { LoginPage } = require("../pages/login-page")
const { RegisterPage } = require("../pages/register-page")
const { LoginPage } = require("../pages/login-page");
const { RegisterPage } = require("../pages/register-page");
test("ON-5 Sign up with invalid email address", async ({ page }) => {
const loginPage = new LoginPage(page);
@ -8,9 +8,9 @@ test("ON-5 Sign up with invalid email address", async ({ page }) => {
await loginPage.goto();
await loginPage.clickOnCreateAccount();
await registerPage.isRegisterPageOpened();
await registerPage.enterEmail('test.com');
await registerPage.enterEmail("test.com");
await registerPage.enterPassword(process.env.LOGIN_PWD);
await registerPage.isEmailInputErrorDisplayed('Enter a valid email please');
await registerPage.isEmailInputErrorDisplayed("Enter a valid email please");
await registerPage.isCreateAccountBtnDisplayed();
await registerPage.isCreateAccountBtnDisabled();
});
@ -24,7 +24,9 @@ test("ON-6 Sign up with no password", async ({ page }) => {
await registerPage.enterEmail(process.env.LOGIN_EMAIL);
await registerPage.clickOnPasswordInput();
await registerPage.clickOnHeader();
await registerPage.isPasswordInputErrorDisplayed('Password should at least be 8 characters')
await registerPage.isPasswordInputErrorDisplayed(
"Password should at least be 8 characters",
);
await registerPage.isCreateAccountBtnDisplayed();
await registerPage.isCreateAccountBtnDisabled();
});
@ -36,10 +38,10 @@ test("ON-7 Sign up with incorrect password", async ({ page }) => {
await loginPage.clickOnCreateAccount();
await registerPage.isRegisterPageOpened();
await registerPage.enterEmail(process.env.LOGIN_EMAIL);
await registerPage.enterPassword('1234');
await registerPage.isPasswordInputErrorDisplayed('Password should at least be 8 characters')
await registerPage.enterPassword("1234");
await registerPage.isPasswordInputErrorDisplayed(
"Password should at least be 8 characters",
);
await registerPage.isCreateAccountBtnDisplayed();
await registerPage.isCreateAccountBtnDisabled();
});