Skip to content

Commit 9517e35

Browse files
committed
fix: refactored tests (#4068)
1 parent 993148e commit 9517e35

File tree

3 files changed

+33
-18
lines changed

3 files changed

+33
-18
lines changed

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

+5-2
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import {
99
} from "../testFunctions";
1010
import { anvilFilters, anvilTabs, anvilTabTestOrder } from "./anvil-tabs";
1111

12-
test.describe.configure({ mode: "parallel" });
12+
test.describe.configure({ mode: "parallel", timeout: 60 * 1000 });
1313
const filter_index_list = [3, 4, 5, 7, 6, 2];
1414

1515
test("Check that all filters exist on the Datasets tab and are clickable", async ({
@@ -85,12 +85,15 @@ test("Check that filter checkboxes are persistent across pages on an arbitrary f
8585
test("Check that filter menu counts match actual counts on the Datasets tab", async ({
8686
page,
8787
}) => {
88-
await testFilterCounts(
88+
const result = await testFilterCounts(
8989
page,
9090
anvilTabs.datasets,
9191
filter_index_list.map((x) => anvilFilters[x]),
9292
25
9393
);
94+
if (!result) {
95+
test.fail();
96+
}
9497
});
9598

9699
test("Check that filter menu counts match actual counts on the Activities tab", async ({

explorer/e2e/testFunctions.ts

+27-15
Original file line numberDiff line numberDiff line change
@@ -272,15 +272,18 @@ export async function testFilterPersistence(
272272
await expect(getFirstElementTextLocator(page, 0)).toBeVisible();
273273
// For each tab, check that the selected filter is still checked
274274
for (const tab of tabOrder.slice(1)) {
275-
await page.getByRole("tab").getByText(tab.tabName).click();
275+
await page.getByRole("tab").getByText(tab.tabName, { exact: true }).click();
276276
await expect(page.getByText(filterRegex(testFilter))).toBeVisible();
277277
await page.getByText(filterRegex(testFilter)).click();
278278
const previously_selected = getNamedFilterButton(page, filterName);
279279
await expect(previously_selected.getByRole("checkbox")).toBeChecked();
280280
await page.locator("body").click();
281281
}
282282
// Return to the start tab and confirm that the filter stays checked and that some content is visible
283-
await page.getByRole("tab").getByText(tabOrder[0].tabName).click();
283+
await page
284+
.getByRole("tab")
285+
.getByText(tabOrder[0].tabName, { exact: true })
286+
.click();
284287
await expect(getFirstElementTextLocator(page, 0)).toBeVisible();
285288
await page.getByText(filterRegex(testFilter)).click();
286289
const previously_selected = getFirstFilterButton(page);
@@ -295,26 +298,32 @@ export async function testFilterCounts(
295298
tab: TabDescription,
296299
filters: string[],
297300
elements_per_page: number
298-
): Promise<void> {
301+
): Promise<boolean> {
299302
await page.goto(tab.url);
300303
// For each arbitrarily selected filter
301304
for (const filter of filters) {
302305
// Select the filter
303306
await page.getByText(filterRegex(filter)).click();
304307
// Get the number associated with the first filter button, and select it
305308
const filter_button = getFirstFilterButton(page);
306-
const filterNumber = Number(
307-
(await filter_button.innerText()).split("\n")[1]
308-
);
309+
const filter_numbers = (await filter_button.innerText()).split("\n");
310+
const filter_number =
311+
filter_numbers.map((x) => Number(x)).find((x) => !isNaN(x)) ?? -1;
312+
if (!filter_number) {
313+
return false;
314+
}
309315
await filter_button.getByRole("checkbox").setChecked(true);
310-
//
311316
await page.locator("body").click();
317+
await expect(page.getByRole("checkbox")).toHaveCount(0);
312318
const firstNumber =
313-
filterNumber <= elements_per_page ? filterNumber : elements_per_page;
319+
filter_number <= elements_per_page ? filter_number : elements_per_page;
320+
console.log("Results 1 - " + firstNumber + " of " + filter_number);
321+
314322
await expect(
315-
page.getByText("Results 1 - " + firstNumber + " of " + filterNumber)
323+
page.getByText("Results 1 - " + firstNumber + " of " + filter_number)
316324
).toBeVisible();
317325
}
326+
return true;
318327
}
319328

320329
export async function testFilterBubbles(
@@ -326,15 +335,18 @@ export async function testFilterBubbles(
326335
for (const filter of filters) {
327336
await page.getByText(filterRegex(filter)).click();
328337
const firstFilterButton = getFirstFilterButton(page);
329-
const firstFilterName = (await firstFilterButton.innerText()).split(
330-
"\n"
331-
)[0];
332-
await firstFilterButton.getByRole("checkbox").setChecked(true);
333-
await page.locator("body").click();
338+
const firstFilterName =
339+
(await firstFilterButton.innerText())
340+
.split("\n")
341+
.find((x) => x.length > 0) ?? "";
342+
await firstFilterButton.getByRole("checkbox").click();
343+
await page.keyboard.press("Escape");
344+
await expect(page.getByRole("checkbox")).toHaveCount(0);
334345
const filterBlueButton = page
335-
.getByRole("button")
346+
.locator("#sidebar-positioner")
336347
.getByText(firstFilterName);
337348
await expect(filterBlueButton).toBeVisible();
349+
await filterBlueButton.scrollIntoViewIfNeeded();
338350
await filterBlueButton.click();
339351
await expect(filterBlueButton).toHaveCount(0);
340352
}

explorer/playwright_anvil.config.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,6 @@ const config: PlaywrightTestConfig = {
3333
timeout: 240 * 1000,
3434
url: "http://localhost:3000/",
3535
},
36-
workers: "75%",
36+
workers: 1,
3737
};
3838
export default config;

0 commit comments

Comments
 (0)