Skip to content

Commit 85752ed

Browse files
committed
fix: updated variable names, created constants, fixed bug in persistence test on webkit (#4068)
1 parent a720f16 commit 85752ed

File tree

2 files changed

+49
-33
lines changed

2 files changed

+49
-33
lines changed

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

+4
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ test("Check that all filters exist on the Files tab and are clickable", async ({
6868
test("Check that the first filter on the Datasets tab creates at least one checkbox, and that checking up to the first five does not cause an error and does not cause there to be no entries in the table", async ({
6969
page,
7070
}) => {
71+
test.setTimeout(120000);
7172
// Goto the datasets tab
7273
await page.goto(anvilTabs.datasets.url);
7374
await expect(
@@ -98,6 +99,7 @@ test("Check that the first filter on the Datasets tab creates at least one check
9899
test("Check that filter checkboxes are persistent across pages on an arbitrary filter", async ({
99100
page,
100101
}) => {
102+
test.setTimeout(120000);
101103
await testFilterPersistence(
102104
page,
103105
anvilFilters[FILE_FORMAT_INDEX],
@@ -108,6 +110,7 @@ test("Check that filter checkboxes are persistent across pages on an arbitrary f
108110
test("Check that filter menu counts match actual counts on the Datasets tab", async ({
109111
page,
110112
}) => {
113+
test.setTimeout(120000);
111114
const result = await testFilterCounts(
112115
page,
113116
anvilTabs.datasets,
@@ -122,6 +125,7 @@ test("Check that filter menu counts match actual counts on the Datasets tab", as
122125
test("Check that filter menu counts match actual counts on the Activities tab", async ({
123126
page,
124127
}) => {
128+
test.setTimeout(120000);
125129
await testFilterCounts(
126130
page,
127131
anvilTabs.activities,

explorer/e2e/testFunctions.ts

+45-33
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { expect, Locator, Page } from "@playwright/test";
1+
import { expect, Locator, Page, test } from "@playwright/test";
22
import { TabDescription } from "./testInterfaces";
33

44
/* eslint-disable sonarjs/no-duplicate-string -- ignoring duplicate strings here */
@@ -238,15 +238,15 @@ export async function testFilterPresence(
238238
}
239239
}
240240

241-
export const getNamedFilterButton = (
241+
export const getNamedFilterButtonLocator = (
242242
page: Page,
243243
filterName: string
244244
): Locator => {
245245
return page
246246
.getByRole("button")
247247
.filter({ has: page.getByRole("checkbox"), hasText: filterName });
248248
};
249-
export const getFirstFilterButton = (page: Page): Locator => {
249+
export const getFirstFilterButtonLocator = (page: Page): Locator => {
250250
return page
251251
.getByRole("button")
252252
.filter({ has: page.getByRole("checkbox") })
@@ -262,11 +262,17 @@ export async function testFilterPersistence(
262262
await page.goto(tabOrder[0].url);
263263
// Select the first checkbox on the test filter
264264
await page.getByText(filterRegex(testFilter)).click();
265-
const toSelect = await getFirstFilterButton(page);
266-
await expect(toSelect.getByRole("checkbox")).not.toBeChecked();
267-
await toSelect.getByRole("checkbox").click();
268-
const filterName = (await toSelect.innerText()).split("\n")[0]; //MAY NEED TO ADD SOME CHECKING MECHANISM HERE
269-
await expect(toSelect.getByRole("checkbox")).toBeChecked();
265+
const filterToSelectLocator = await getFirstFilterButtonLocator(page);
266+
await expect(filterToSelectLocator.getByRole("checkbox")).not.toBeChecked();
267+
await filterToSelectLocator.getByRole("checkbox").click();
268+
const filterNameMatch = (await filterToSelectLocator.innerText()).match(
269+
/\.\S*/
270+
);
271+
if (filterNameMatch == null) {
272+
test.fail();
273+
}
274+
const filterName = (filterNameMatch ?? [""])[0];
275+
await expect(filterToSelectLocator.getByRole("checkbox")).toBeChecked();
270276
await page.locator("body").click();
271277
// Expect at least some text to still be visible
272278
await expect(getFirstElementTextLocator(page, 0)).toBeVisible();
@@ -279,7 +285,7 @@ export async function testFilterPersistence(
279285
await expect(page.getByText(filterRegex(testFilter))).toBeVisible();
280286
await page.getByText(filterRegex(testFilter)).dispatchEvent("click");
281287
await page.waitForLoadState("load");
282-
const previouslySelected = getNamedFilterButton(page, filterName);
288+
const previouslySelected = getNamedFilterButtonLocator(page, filterName);
283289
await expect(previouslySelected.getByRole("checkbox")).toBeChecked();
284290
await page.waitForLoadState("load");
285291
await page.locator("body").click();
@@ -291,7 +297,7 @@ export async function testFilterPersistence(
291297
.click();
292298
await expect(getFirstElementTextLocator(page, 0)).toBeVisible();
293299
await page.getByText(filterRegex(testFilter)).click();
294-
const previouslySelected = getFirstFilterButton(page);
300+
const previouslySelected = getFirstFilterButtonLocator(page);
295301
await expect(previouslySelected).toContainText(filterName, {
296302
useInnerText: true,
297303
});
@@ -311,7 +317,7 @@ export async function testFilterCounts(
311317
await page.getByText(filterRegex(filter)).dispatchEvent("click");
312318
// Get the number associated with the first filter button, and select it
313319
await page.waitForLoadState("load");
314-
const filterButton = getFirstFilterButton(page);
320+
const filterButton = getFirstFilterButtonLocator(page);
315321
const filterNumbers = (await filterButton.innerText()).split("\n");
316322
const filterNumber =
317323
filterNumbers.map((x) => Number(x)).find((x) => !isNaN(x) && x !== 0) ??
@@ -346,63 +352,69 @@ export async function testFilterBubbles(
346352
// Select a filter
347353
await page.getByText(filterRegex(filter)).dispatchEvent("click");
348354
await page.waitForLoadState("load");
349-
const firstFilterButton = getFirstFilterButton(page);
355+
const firstFilterButtonLocator = getFirstFilterButtonLocator(page);
350356
// Get the name of the selected filter
351357
const firstFilterName =
352-
(await firstFilterButton.innerText())
358+
(await firstFilterButtonLocator.innerText())
353359
.split("\n")
354360
.find((x) => x.length > 0) ?? "";
355361
// Click the selected filter and exit the filter menu
356-
await firstFilterButton.getByRole("checkbox").click();
362+
await firstFilterButtonLocator.getByRole("checkbox").click();
357363
await page.waitForLoadState("load");
358364
await page.locator("body").click();
359365
await expect(page.getByRole("checkbox")).toHaveCount(0);
360366
// Click the blue button
361-
const filterBlueButton = page
367+
const filterBlueButtonLocator = page
362368
.locator("#sidebar-positioner")
363369
.getByText(firstFilterName);
364-
await expect(filterBlueButton).toBeVisible();
365-
await filterBlueButton.scrollIntoViewIfNeeded();
366-
await filterBlueButton.dispatchEvent("click");
370+
await expect(filterBlueButtonLocator).toBeVisible();
371+
await filterBlueButtonLocator.scrollIntoViewIfNeeded();
372+
await filterBlueButtonLocator.dispatchEvent("click");
367373
// Expect the blue button to disappear when clicked
368-
await expect(filterBlueButton).toHaveCount(0);
374+
await expect(filterBlueButtonLocator).toHaveCount(0);
369375
// Expect the filter to be deselected in the filter menu
370376
await page.getByText(filterRegex(filter)).dispatchEvent("click");
371-
await expect(firstFilterButton.getByRole("checkbox")).not.toBeChecked();
377+
await expect(
378+
firstFilterButtonLocator.getByRole("checkbox")
379+
).not.toBeChecked();
372380
await page.locator("body").click();
373381
}
374382
}
375383

376384
export async function testClearAll(
377385
page: Page,
378386
tab: TabDescription,
379-
filters: string[]
387+
filterNames: string[]
380388
): Promise<void> {
381389
await page.goto(tab.url);
382-
const selectedFilterList = [];
383-
for (const filter of filters) {
384-
await page.getByText(filterRegex(filter)).dispatchEvent("click");
385-
await getFirstFilterButton(page).getByRole("checkbox").click();
390+
const selectedFilterNamesList = [];
391+
for (const filterName of filterNames) {
392+
// Select the passed filter names
393+
await page.getByText(filterRegex(filterName)).dispatchEvent("click");
394+
await getFirstFilterButtonLocator(page).getByRole("checkbox").click();
386395
await expect(
387-
getFirstFilterButton(page).getByRole("checkbox")
396+
getFirstFilterButtonLocator(page).getByRole("checkbox")
388397
).toBeChecked();
389-
selectedFilterList.push(
390-
(await getFirstFilterButton(page).innerText())
398+
selectedFilterNamesList.push(
399+
(await getFirstFilterButtonLocator(page).innerText())
391400
.split("\n")
392401
.find((x) => x.length > 0) ?? ""
393402
);
394403
await page.locator("body").click();
395404
}
405+
// Click the "Clear All" button
396406
await page.getByText("Clear All").dispatchEvent("click");
397-
for (const filter of selectedFilterList) {
407+
for (const filterName of selectedFilterNamesList) {
398408
await expect(
399-
page.locator("#sidebar-positioner").getByText(filter)
409+
page.locator("#sidebar-positioner").getByText(filterName)
400410
).toHaveCount(0);
401411
}
402-
for (let i = 0; i < filters.length; i++) {
403-
await page.getByText(filterRegex(filters[i])).dispatchEvent("click");
412+
for (let i = 0; i < filterNames.length; i++) {
413+
await page.getByText(filterRegex(filterNames[i])).dispatchEvent("click");
404414
await expect(
405-
getNamedFilterButton(page, selectedFilterList[i]).getByRole("checkbox")
415+
getNamedFilterButtonLocator(page, selectedFilterNamesList[i]).getByRole(
416+
"checkbox"
417+
)
406418
).not.toBeChecked();
407419
await page.locator("body").click();
408420
}

0 commit comments

Comments
 (0)