nextjs-starter-medusa
48 строк · 1.5 Кб
1import { Locator, Page } from "@playwright/test"2import { BasePage } from "./base/base-page"3
4export class CategoryPage extends BasePage {5container: Locator6sortByContainer: Locator7
8pageTitle: Locator9pagination: Locator10productsListLoader: Locator11productsList: Locator12productWrapper: Locator13
14constructor(page: Page) {15super(page)16this.container = page.getByTestId("category-container")17this.pageTitle = page.getByTestId("category-page-title")18this.sortByContainer = page.getByTestId("sort-by-container")19this.productsListLoader = this.container.getByTestId("products-list-loader")20this.productsList = this.container.getByTestId("products-list")21this.productWrapper = this.productsList.getByTestId("product-wrapper")22this.pagination = this.container.getByTestId("product-pagination")23}24
25async getProduct(name: string) {26const product = this.productWrapper.filter({ hasText: name })27return {28locator: product,29title: product.getByTestId("product-title"),30price: product.getByTestId("price"),31originalPrice: product.getByTestId("original-price"),32}33}34
35async sortBy(sortString: string) {36const link = this.sortByContainer.getByTestId("sort-by-link").filter({37hasText: sortString,38})39await link.click()40// wait for page change41await this.page.waitForFunction((linkElement) => {42if (!linkElement) {43return true44}45return linkElement.dataset.active === "true"46}, await link.elementHandle())47}48}
49