Skip to content

Commit 1dd567d

Browse files
committed
Add a test to event filters
1 parent 7d92c5d commit 1dd567d

File tree

1 file changed

+81
-1
lines changed

1 file changed

+81
-1
lines changed

test/e2e/community-events.spec.ts

Lines changed: 81 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ test("map matches screenshot", async ({ page }) => {
4343

4444
await expect(mapContainer.locator("canvas").first()).toHaveScreenshot(
4545
"meetups-map.png",
46-
{ timeout: 30_000 },
46+
{ timeout: 30_000, maxDiffPixelRatio: 0.015 },
4747
)
4848
})
4949

@@ -138,3 +138,83 @@ test("map tooltip appears on marker hover", async ({ page }) => {
138138
await expect(tooltip).toHaveText("London GraphQL", { timeout: 5000 })
139139
await expect(tooltip).toBeVisible()
140140
})
141+
142+
test("event type filters hide cards and lock the last active tag", async ({
143+
page,
144+
}) => {
145+
const pastEventsSection = page
146+
.locator("section")
147+
.filter({
148+
has: page.getByRole("heading", {
149+
level: 2,
150+
name: /Past events & meetups/i,
151+
}),
152+
})
153+
.first()
154+
155+
await pastEventsSection.scrollIntoViewIfNeeded()
156+
157+
const filterGroup = pastEventsSection.getByRole("group", {
158+
name: "Event type",
159+
})
160+
const conferenceFilter = filterGroup.getByRole("checkbox", {
161+
name: /conference/i,
162+
})
163+
const meetupFilter = filterGroup.getByRole("checkbox", { name: /meetup/i })
164+
const workingGroupFilter = filterGroup.getByRole("checkbox", {
165+
name: /working group/i,
166+
})
167+
const conferenceChip = filterGroup
168+
.locator("label")
169+
.filter({ hasText: /conference/i })
170+
.first()
171+
const meetupChip = filterGroup
172+
.locator("label")
173+
.filter({ hasText: /meetup/i })
174+
.first()
175+
const workingGroupChip = filterGroup
176+
.locator("label")
177+
.filter({ hasText: /working group/i })
178+
.first()
179+
180+
const tagBadge = (tag: RegExp) =>
181+
pastEventsSection.locator("a span:has(.Tag--bg)").filter({ hasText: tag })
182+
183+
const conferenceBadge = tagBadge(/^conference$/i)
184+
const meetupBadge = tagBadge(/^meetup$/i)
185+
const workingGroupBadge = tagBadge(/^working group$/i)
186+
187+
await expect(conferenceBadge.first()).toBeVisible()
188+
await expect(meetupBadge.first()).toBeVisible()
189+
await expect(workingGroupBadge.first()).toBeVisible()
190+
191+
await conferenceChip.click()
192+
await expect(conferenceFilter).not.toBeChecked()
193+
await expect(conferenceBadge).toHaveCount(0)
194+
await conferenceChip.click()
195+
await expect(conferenceFilter).toBeChecked()
196+
await expect(conferenceBadge.first()).toBeVisible()
197+
198+
await meetupChip.click()
199+
await expect(meetupFilter).not.toBeChecked()
200+
await expect(meetupBadge).toHaveCount(0)
201+
await meetupChip.click()
202+
await expect(meetupFilter).toBeChecked()
203+
await expect(meetupBadge.first()).toBeVisible()
204+
205+
await workingGroupChip.click()
206+
await expect(workingGroupFilter).not.toBeChecked()
207+
await expect(workingGroupBadge).toHaveCount(0)
208+
await workingGroupChip.click()
209+
await expect(workingGroupFilter).toBeChecked()
210+
await expect(workingGroupBadge.first()).toBeVisible()
211+
212+
await conferenceChip.click()
213+
await workingGroupChip.click()
214+
await expect(meetupFilter).toBeDisabled()
215+
await expect(meetupBadge.first()).toBeVisible()
216+
217+
await conferenceChip.click()
218+
await workingGroupChip.click()
219+
await expect(meetupFilter).toBeEnabled()
220+
})

0 commit comments

Comments
 (0)