-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
6 changed files
with
126 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,12 +1,65 @@ | ||
import type { Page } from "@playwright/test"; | ||
import { URL_LIST } from "@data/url"; | ||
import { BasePage } from "@pages/basePage"; | ||
import { DeleteDialog } from "@pages/dialogs/deleteDialog"; | ||
|
||
export class PageTypesPage { | ||
export class PageTypesPage extends BasePage { | ||
readonly page: Page; | ||
readonly basePage: BasePage; | ||
readonly deletePageTypeDialog: DeleteDialog; | ||
|
||
constructor( | ||
page: Page, | ||
readonly createPageTypeButton = page.getByTestId("create-page-type"), | ||
readonly nameInput = page.locator("[name='name']"), | ||
readonly saveButton = page.getByTestId("button-bar-confirm"), | ||
readonly bulkDeleteButton = page.getByTestId("bulk-delete-page-types"), | ||
readonly pageTypeList = page.getByTestId("page-types-list"), | ||
readonly rowCheckbox = page.getByTestId("checkbox"), | ||
) { | ||
super(page); | ||
this.page = page; | ||
this.basePage = new BasePage(page); | ||
this.deletePageTypeDialog = new DeleteDialog(page); | ||
} | ||
|
||
async gotoPageTypeListPage() { | ||
await this.page.goto(URL_LIST.pageTypes); | ||
} | ||
|
||
async clickCreatePageTypeButton() { | ||
await this.createPageTypeButton.click(); | ||
} | ||
|
||
async typePageTypeName(name: string) { | ||
await this.nameInput.fill(name); | ||
} | ||
|
||
async updatePageTypeName(name: string) { | ||
await this.nameInput.clear(); | ||
await this.nameInput.fill(name); | ||
} | ||
|
||
async clickSaveButton() { | ||
await this.saveButton.click(); | ||
} | ||
|
||
async gotoExistingPageTypePage(pageTypeId: string) { | ||
const existingPageTypeUrl = URL_LIST.pageTypes + pageTypeId; | ||
await console.log( | ||
"Navigating to page type details: " + existingPageTypeUrl, | ||
); | ||
await this.page.goto(existingPageTypeUrl); | ||
} | ||
|
||
async clickBulkDeleteButton() { | ||
await this.bulkDeleteButton.click(); | ||
} | ||
|
||
async checkPageTypesOnList(listRows: string[]) { | ||
for (const row of listRows) { | ||
const rowLocator = this.page.getByTestId(`id-${row}`); | ||
await rowLocator.locator("input").click(); | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,63 @@ | ||
import * as faker from "faker"; | ||
import { PAGE_TYPES } from "@data/e2eTestData"; | ||
import { PageTypesPage } from "@pages/pageTypesPage"; | ||
import { test, expect } from "@playwright/test"; | ||
|
||
test.use({ storageState: "./playwright/.auth/admin.json" }); | ||
const pageTypeName = `e2e-page-type-${faker.datatype.number()}`; | ||
|
||
test("TC: SALEOR_187 As an admin user I can create page type @e2e @page-type", async ({ | ||
page, | ||
}) => { | ||
const pageTypePage = new PageTypesPage(page); | ||
|
||
await pageTypePage.gotoPageTypeListPage(); | ||
await pageTypePage.clickCreatePageTypeButton(); | ||
await pageTypePage.typePageTypeName(pageTypeName); | ||
await pageTypePage.clickSaveButton(); | ||
await pageTypePage.expectSuccessBanner(); | ||
}); | ||
|
||
|
||
test("TC: SALEOR_188 As an admin user I can update page type@e2e @page-type", async ({ | ||
page, | ||
}) => { | ||
const pageTypePage = new PageTypesPage(page); | ||
const updatedPageTypeName = `updated-e2e-page-type-${faker.datatype.number()}`; | ||
await pageTypePage.gotoExistingPageTypePage(PAGE_TYPES.pageTypeToBeEdited.id); | ||
await pageTypePage.updatePageTypeName(updatedPageTypeName); | ||
await pageTypePage.clickSaveButton(); | ||
await pageTypePage.expectSuccessBanner(); | ||
}); | ||
|
||
test("TC: SALEOR_189 As an admin user I can delete page type with assigned content@e2e @page-type", async ({ | ||
page, | ||
}) => { | ||
const pageTypePage = new PageTypesPage(page); | ||
const pageType = PAGE_TYPES.pageTypeToBeRemoved; | ||
|
||
await pageTypePage.gotoExistingPageTypePage(pageType.id); | ||
await pageTypePage.clickDeleteButton(); | ||
await pageTypePage.deletePageTypeDialog.clickConfirmDeletionCheckbox(); | ||
await pageTypePage.deletePageTypeDialog.clickConfirmDeleteButton(); | ||
await pageTypePage.expectSuccessBanner(); | ||
await pageTypePage.pageTypeList.waitFor({ state: "visible", timeout: 50000 }); | ||
await expect(pageTypePage.pageTypeList).not.toContainText(pageType.name); | ||
}); | ||
|
||
test("TC: SALEOR_190 As an admin user I can delete several page types@e2e @page-type", async ({ | ||
page, | ||
}) => { | ||
const pageTypePage = new PageTypesPage(page); | ||
const rowsToBeDeleted = PAGE_TYPES.pageTypesToBeBulkDeleted.ids; | ||
const pageTypeNames = PAGE_TYPES.pageTypesToBeBulkDeleted.names; | ||
|
||
await pageTypePage.gotoPageTypeListPage(); | ||
await expect(pageTypePage.pageTypeList).toBeVisible(); | ||
await pageTypePage.checkPageTypesOnList(rowsToBeDeleted); | ||
await pageTypePage.clickBulkDeleteButton(); | ||
await pageTypePage.deletePageTypeDialog.clickConfirmDeleteButton(); | ||
await pageTypePage.expectSuccessBanner(); | ||
await expect(pageTypePage.pageTypeList).not.toContainText(pageTypeNames[0]); | ||
await expect(pageTypePage.pageTypeList).not.toContainText(pageTypeNames[1]); | ||
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters