Skip to content

Commit c8b9ab5

Browse files
committed
test: init nav menu tests
1 parent aa7c4d8 commit c8b9ab5

File tree

2 files changed

+77
-0
lines changed

2 files changed

+77
-0
lines changed

e2e/models/navigation-menu.model.ts

+57
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
import { expect, type Page } from "@playwright/test"
2+
import { a11y } from "../_utils"
3+
import { Model } from "./model"
4+
5+
export class NavigationMenuModel extends Model {
6+
constructor(public page: Page) {
7+
super(page)
8+
}
9+
10+
goto(id?: "viewport" | "nested") {
11+
return this.page.goto(`/navigation-menu${id ? `-${id}` : ""}`)
12+
}
13+
14+
checkAccessibility(selector?: string): Promise<void> {
15+
return a11y(this.page, selector)
16+
}
17+
18+
getTrigger(value: string) {
19+
return this.page.locator(`[data-scope="navigation-menu"][data-part="trigger"][data-value="${value}"]`)
20+
}
21+
22+
getContent(value: string) {
23+
return this.page.locator(`[data-scope="navigation-menu"][data-part="content"][data-value="${value}"]`)
24+
}
25+
26+
getViewport() {
27+
return this.page.locator(`[data-scope="navigation-menu"][data-part="viewport"]`)
28+
}
29+
30+
getLink(value: string, text: string) {
31+
return this.getContent(value).locator("a", { hasText: text })
32+
}
33+
34+
async focusTrigger(value: string) {
35+
await this.getTrigger(value).focus()
36+
}
37+
38+
async clickTrigger(value: string) {
39+
await this.getTrigger(value).click()
40+
}
41+
42+
async hoverTrigger(value: string) {
43+
await this.getTrigger(value).hover()
44+
}
45+
46+
async seeTriggerIsFocused(value: string) {
47+
await expect(this.getTrigger(value)).toBeFocused()
48+
}
49+
50+
async seeContent(value: string) {
51+
await expect(this.getContent(value)).toBeVisible()
52+
}
53+
54+
async dontSeeContent(value: string) {
55+
await expect(this.getContent(value)).not.toBeVisible()
56+
}
57+
}

e2e/navigation-menu.e2e.ts

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import { test } from "@playwright/test"
2+
import { NavigationMenuModel } from "./models/navigation-menu.model"
3+
4+
let I: NavigationMenuModel
5+
6+
test.describe("navigation-menu", () => {
7+
test.beforeEach(async ({ page }) => {
8+
I = new NavigationMenuModel(page)
9+
await I.goto()
10+
})
11+
12+
test("should have no accessibility violation", async () => {
13+
await I.checkAccessibility()
14+
})
15+
16+
test("should open on hover", async () => {
17+
await I.hoverTrigger("products")
18+
await I.seeContent("products")
19+
})
20+
})

0 commit comments

Comments
 (0)