Skip to content

Commit 8816698

Browse files
committed
feat(e2e): add search fixtures
1 parent f270ff2 commit 8816698

File tree

2 files changed

+39
-0
lines changed

2 files changed

+39
-0
lines changed

e2e/fixtures/base/base-page.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
import { CartDropdown } from "./cart-dropdown"
22
import { NavMenu } from "./nav-menu"
33
import { Page, Locator } from "@playwright/test"
4+
import { SearchModal } from "./search-modal"
45

56
export class BasePage {
67
page: Page
78
navMenu: NavMenu
89
cartDropdown: CartDropdown
10+
searchModal: SearchModal
911
accountLink: Locator
1012
searchLink: Locator
1113
storeLink: Locator
@@ -15,6 +17,7 @@ export class BasePage {
1517
this.page = page
1618
this.navMenu = new NavMenu(page)
1719
this.cartDropdown = new CartDropdown(page)
20+
this.searchModal = new SearchModal(page)
1821
this.accountLink = page.getByTestId("nav-account-link")
1922
this.storeLink = page.getByTestId("nav-store-link")
2023
this.searchLink = page.getByTestId("nav-search-link")

e2e/fixtures/base/search-modal.ts

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
import { Page, Locator } from "@playwright/test"
2+
import { BaseModal } from "./base-modal"
3+
import { NavMenu } from "./nav-menu"
4+
5+
export class SearchModal extends BaseModal {
6+
searchInput: Locator
7+
searchResults: Locator
8+
noSearchResultsContainer: Locator
9+
searchResult: Locator
10+
searchResultTitle: Locator
11+
12+
constructor(page: Page) {
13+
super(page, page.getByTestId("search-modal-container"))
14+
this.searchInput = this.container.getByTestId("search-input")
15+
this.searchResults = this.container.getByTestId("search-results")
16+
this.noSearchResultsContainer = this.container.getByTestId(
17+
"no-search-results-container"
18+
)
19+
this.searchResult = this.container.getByTestId("search-result")
20+
this.searchResultTitle = this.container.getByTestId("search-result-title")
21+
}
22+
23+
async open() {
24+
const menu = new NavMenu(this.page)
25+
await menu.open()
26+
await menu.searchLink.click()
27+
await this.container.waitFor({ state: "visible" })
28+
}
29+
30+
async close() {
31+
const viewport = this.page.viewportSize()
32+
const y = viewport ? viewport.height / 2 : 100
33+
await this.page.mouse.click(1, y, { clickCount: 2, delay: 100 })
34+
await this.container.waitFor({ state: "hidden" })
35+
}
36+
}

0 commit comments

Comments
 (0)