Skip to content

Commit 8bf35bf

Browse files
committed
fix: fixed typo that caused tests to fail, added clear all test (#4068)
1 parent 3e5c2a7 commit 8bf35bf

File tree

2 files changed

+60
-4
lines changed

2 files changed

+60
-4
lines changed

explorer/e2e/anvil/anvil-filters.spec.ts

+11
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { expect, test } from "@playwright/test";
22
import {
33
filterRegex,
44
getFirstElementTextLocator,
5+
testClearAll,
56
testFilterBubbles,
67
testFilterCounts,
78
testFilterPersistence,
@@ -126,3 +127,13 @@ test("Check that the blue filter bubbles match the selected filter for an arbitr
126127
filter_index_list.map((x) => anvilFilters[x])
127128
);
128129
});
130+
131+
test("Check that the clear all button functions on the files tab", async ({
132+
page,
133+
}) => {
134+
await testClearAll(
135+
page,
136+
anvilTabs.files,
137+
filter_index_list.map((x) => anvilFilters[x])
138+
);
139+
});

explorer/e2e/testFunctions.ts

+49-4
Original file line numberDiff line numberDiff line change
@@ -264,7 +264,7 @@ export async function testFilterPersistence(
264264
await page.getByText(filterRegex(testFilter)).click();
265265
const to_select = await getFirstFilterButton(page);
266266
await expect(to_select.getByRole("checkbox")).not.toBeChecked();
267-
await to_select.getByRole("checkbox").click;
267+
await to_select.getByRole("checkbox").click();
268268
const filterName = (await to_select.innerText()).split("\n")[0]; //MAY NEED TO ADD SOME CHECKING MECHANISM HERE
269269
await expect(to_select.getByRole("checkbox")).toBeChecked();
270270
await page.locator("body").click();
@@ -320,13 +320,15 @@ export async function testFilterCounts(
320320
console.log(filter_numbers.map((x) => Number(x)));
321321
return false;
322322
}
323+
// Check the filter
323324
await filter_button.getByRole("checkbox").dispatchEvent("click");
324325
await page.waitForLoadState("load");
326+
// Exit the filter menu
325327
await page.locator("body").click();
326328
await expect(page.getByRole("checkbox")).toHaveCount(0);
329+
// Expect the displayed count of elements to be 0
327330
const firstNumber =
328331
filter_number <= elements_per_page ? filter_number : elements_per_page;
329-
330332
await expect(
331333
page.getByText("Results 1 - " + firstNumber + " of " + filter_number)
332334
).toBeVisible();
@@ -341,25 +343,68 @@ export async function testFilterBubbles(
341343
): Promise<void> {
342344
page.goto(tab.url);
343345
for (const filter of filters) {
346+
// Select a filter
344347
await page.getByText(filterRegex(filter)).dispatchEvent("click");
345-
//await page.waitForTimeout(500);
346348
await page.waitForLoadState("load");
347349
const firstFilterButton = getFirstFilterButton(page);
350+
// Get the name of the selected filter
348351
const firstFilterName =
349352
(await firstFilterButton.innerText())
350353
.split("\n")
351354
.find((x) => x.length > 0) ?? "";
355+
// Click the selected filter and exit the filter menu
352356
await firstFilterButton.getByRole("checkbox").click();
353357
await page.waitForLoadState("load");
354-
await page.keyboard.press("Escape");
358+
await page.locator("body").click();
355359
await expect(page.getByRole("checkbox")).toHaveCount(0);
360+
// Click the blue button
356361
const filterBlueButton = page
357362
.locator("#sidebar-positioner")
358363
.getByText(firstFilterName);
359364
await expect(filterBlueButton).toBeVisible();
360365
await filterBlueButton.scrollIntoViewIfNeeded();
361366
await filterBlueButton.dispatchEvent("click");
367+
// Expect the blue button to disappear when clicked
362368
await expect(filterBlueButton).toHaveCount(0);
369+
// Expect the filter to be deselected in the filter menu
370+
await page.getByText(filterRegex(filter)).dispatchEvent("click");
371+
await expect(firstFilterButton.getByRole("checkbox")).not.toBeChecked();
372+
await page.locator("body").click();
373+
}
374+
}
375+
376+
export async function testClearAll(
377+
page: Page,
378+
tab: TabDescription,
379+
filters: string[]
380+
): Promise<void> {
381+
await page.goto(tab.url);
382+
const selected_filter_list = [];
383+
for (const filter of filters) {
384+
await page.getByText(filterRegex(filter)).dispatchEvent("click");
385+
await getFirstFilterButton(page).getByRole("checkbox").click();
386+
await expect(
387+
getFirstFilterButton(page).getByRole("checkbox")
388+
).toBeChecked();
389+
selected_filter_list.push(
390+
(await getFirstFilterButton(page).innerText())
391+
.split("\n")
392+
.find((x) => x.length > 0) ?? ""
393+
);
394+
await page.locator("body").click();
395+
}
396+
await page.getByText("Clear All").dispatchEvent("click");
397+
for (const filter of selected_filter_list) {
398+
await expect(
399+
page.locator("#sidebar-positioner").getByText(filter)
400+
).toHaveCount(0);
401+
}
402+
for (let i = 0; i < filters.length; i++) {
403+
await page.getByText(filterRegex(filters[i])).dispatchEvent("click");
404+
await expect(
405+
getNamedFilterButton(page, selected_filter_list[i]).getByRole("checkbox")
406+
).not.toBeChecked();
407+
await page.locator("body").click();
363408
}
364409
}
365410
/* eslint-enable sonarjs/no-duplicate-string -- Checking duplicate strings again*/

0 commit comments

Comments
 (0)