Skip to content

Commit 2edfac3

Browse files
committed
Fix: Playwright test failures
Signed-off-by: mrrajan <[email protected].>
1 parent 23c8189 commit 2edfac3

File tree

13 files changed

+100
-43
lines changed

13 files changed

+100
-43
lines changed

e2e/tests/ui/pages/Table.ts

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,4 +110,31 @@ export class Table {
110110
name: tooltipMessage,
111111
});
112112
}
113+
114+
/**
115+
* Gets table rows that match specific cell value(s)
116+
* @param cellValues An object mapping column names to expected values
117+
* @returns A locator for all matching rows
118+
* @example
119+
* // Get rows where Name column contains "curl"
120+
* const rows = await table.getRowsByCellValue({ "Name": "curl" });
121+
*
122+
* // Get rows matching multiple criteria
123+
* const rows = await table.getRowsByCellValue({ "Name": "curl", "Version": "7.29.0" });
124+
*/
125+
getRowsByCellValue(cellValues: Record<string, string>): Locator {
126+
// Start with all table rows
127+
let rowLocator = this._table.locator("tbody tr");
128+
129+
// Filter rows based on each column-value pair
130+
for (const [columnName, value] of Object.entries(cellValues)) {
131+
rowLocator = rowLocator.filter({
132+
has: this._page.locator(`td[data-label="${columnName}"]`, {
133+
hasText: value,
134+
}),
135+
});
136+
}
137+
138+
return rowLocator;
139+
}
113140
}

e2e/tests/ui/pages/package-details/PackageDetailsPage.ts

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,22 +10,23 @@ export class PackageDetailsPage {
1010
this._layout = layout;
1111
}
1212

13-
static async build(page: Page, packageName: string) {
13+
static async build(page: Page, packageDetail: Record<string, string>) {
1414
const navigation = await Navigation.build(page);
1515
await navigation.goToSidebar("Packages");
1616

1717
const listPage = await PackageListPage.build(page);
1818
const toolbar = await listPage.getToolbar();
1919
const table = await listPage.getTable();
2020

21-
await toolbar.applyTextFilter("Filter text", packageName);
21+
await toolbar.applyTextFilter("Filter text", packageDetail.Name);
2222
await table.waitUntilDataIsLoaded();
23-
await table.verifyColumnContainsText("Name", packageName);
24-
25-
await page.getByRole("link", { name: packageName, exact: true }).click();
26-
23+
// Get rows matching the package name
24+
const matchingRows = table.getRowsByCellValue(packageDetail);
25+
await matchingRows
26+
.getByRole("link", { name: packageDetail.Name, exact: true })
27+
.click();
2728
const layout = await DetailsPageLayout.build(page);
28-
await layout.verifyPageHeader(packageName);
29+
await layout.verifyPageHeader(packageDetail.Name);
2930

3031
return new PackageDetailsPage(page, layout);
3132
}

e2e/tests/ui/pages/package-details/info/info.spec.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,12 @@ test.describe("Info Tab validations", { tag: "@tier1" }, () => {
99
await login(page);
1010
});
1111

12+
// here
1213
test("Info", async ({ page }) => {
13-
await PackageDetailsPage.build(page, "keycloak-core");
14+
await PackageDetailsPage.build(page, {
15+
Name: "keycloak-core",
16+
Version: "18.0.6.redhat-00001",
17+
});
1418

1519
// Verify version
1620
await expect(page.getByText("version: 18.0.6.redhat-00001")).toHaveCount(1);

e2e/tests/ui/pages/package-details/sboms/SbomsTab.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ export class SbomsTab {
1313
this._detailsPage = layout;
1414
}
1515

16-
static async build(page: Page, packageName: string) {
17-
const detailsPage = await PackageDetailsPage.build(page, packageName);
16+
static async build(page: Page, packageDetail: Record<string, string>) {
17+
const detailsPage = await PackageDetailsPage.build(page, packageDetail);
1818
await detailsPage._layout.selectTab("SBOMs using package");
1919

2020
return new SbomsTab(page, detailsPage);

e2e/tests/ui/pages/package-details/sboms/columns.spec.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,12 @@ test.describe("Columns validations", { tag: "@tier1" }, () => {
1111
await login(page);
1212
});
1313

14+
//here
1415
test("Columns", async ({ page }) => {
15-
const sbomTab = await SbomsTab.build(page, "keycloak-core");
16+
const sbomTab = await SbomsTab.build(page, {
17+
Name: "keycloak-core",
18+
Version: "18.0.6.redhat-00001",
19+
});
1620
const table = await sbomTab.getTable();
1721

1822
const ids = await table._table

e2e/tests/ui/pages/package-details/sboms/sort.spec.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,12 @@ test.describe("Sort validations", { tag: "@tier1" }, () => {
1010
await login(page);
1111
});
1212

13+
//here
1314
test("Sort", async ({ page }) => {
14-
const sbomTab = await SbomsTab.build(page, "keycloak-core");
15+
const sbomTab = await SbomsTab.build(page, {
16+
Name: "keycloak-core",
17+
Version: "18.0.6.redhat-00001",
18+
});
1519
const table = await sbomTab.getTable();
1620

1721
const columnNameSelector = table._table.locator(`td[data-label="Name"]`);

e2e/tests/ui/pages/package-details/vulnerabilities/VulnerabilitiesTab.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ export class VulnerabilitiesTab {
1313
this._detailsPage = layout;
1414
}
1515

16-
static async build(page: Page, packageName: string) {
17-
const detailsPage = await PackageDetailsPage.build(page, packageName);
16+
static async build(page: Page, packageDetail: Record<string, string>) {
17+
const detailsPage = await PackageDetailsPage.build(page, packageDetail);
1818
await detailsPage._layout.selectTab("Vulnerabilities");
1919

2020
return new VulnerabilitiesTab(page, detailsPage);

e2e/tests/ui/pages/package-details/vulnerabilities/columns.spec.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,12 @@ test.describe("Columns validations", { tag: "@tier1" }, () => {
1111
await login(page);
1212
});
1313

14+
//here
1415
test("Columns", async ({ page }) => {
15-
const vulnerabilitiesTab = await VulnerabilitiesTab.build(
16-
page,
17-
"keycloak-core",
18-
);
16+
const vulnerabilitiesTab = await VulnerabilitiesTab.build(page, {
17+
Name: "keycloak-core",
18+
Version: "18.0.6.redhat-00001",
19+
});
1920
const table = await vulnerabilitiesTab.getTable();
2021

2122
const ids = await table._table

e2e/tests/ui/pages/package-details/vulnerabilities/sort.spec.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,12 @@ test.describe("Sort validations", { tag: "@tier1" }, () => {
1010
await login(page);
1111
});
1212

13+
//here
1314
test("Sort", async ({ page }) => {
14-
const vulnerabilitiesTab = await VulnerabilitiesTab.build(
15-
page,
16-
"keycloak-core",
17-
);
15+
const vulnerabilitiesTab = await VulnerabilitiesTab.build(page, {
16+
Name: "keycloak-core",
17+
Version: "18.0.6.redhat-00001",
18+
});
1819
const table = await vulnerabilitiesTab.getTable();
1920

2021
const columnNameSelector = table._table.locator(`td[data-label="ID"]`);

e2e/tests/ui/pages/package-list/columns.spec.ts

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ test.describe("Columns validations", { tag: "@tier1" }, () => {
1111
await login(page);
1212
});
1313

14+
//here
1415
test("Columns", async ({ page }) => {
1516
const listPage = await PackageListPage.build(page);
1617

@@ -20,39 +21,42 @@ test.describe("Columns validations", { tag: "@tier1" }, () => {
2021
// Full search
2122
await toolbar.applyTextFilter("Filter text", "keycloak-core");
2223
await table.waitUntilDataIsLoaded();
23-
await table.verifyColumnContainsText("Name", "keycloak-core");
24+
const tableRow = table.getRowsByCellValue({
25+
Name: "keycloak-core",
26+
Version: "18.0.6.redhat-00001",
27+
});
2428

2529
// Namespace
26-
await expect(
27-
table._table.locator(`td[data-label="Namespace"]`),
28-
).toContainText("org.keycloak");
30+
await expect(tableRow.locator(`td[data-label="Namespace"]`)).toContainText(
31+
"org.keycloak",
32+
);
2933

3034
// Version
31-
await expect(
32-
table._table.locator(`td[data-label="Version"]`),
33-
).toContainText("18.0.6.redhat-00001");
35+
await expect(tableRow.locator(`td[data-label="Version"]`)).toContainText(
36+
"18.0.6.redhat-00001",
37+
);
3438

3539
// Type
36-
await expect(table._table.locator(`td[data-label="Type"]`)).toContainText(
40+
await expect(tableRow.locator(`td[data-label="Type"]`)).toContainText(
3741
"maven",
3842
);
3943

4044
// Qualifiers
41-
await expect(
42-
table._table.locator(`td[data-label="Qualifiers"]`),
43-
).toContainText("type=jar");
44-
await expect(
45-
table._table.locator(`td[data-label="Qualifiers"]`),
46-
).toContainText("repository_url=https://maven.repository.redhat.com/ga/");
45+
await expect(tableRow.locator(`td[data-label="Qualifiers"]`)).toContainText(
46+
"type=jar",
47+
);
48+
await expect(tableRow.locator(`td[data-label="Qualifiers"]`)).toContainText(
49+
"repository_url=https://maven.repository.redhat.com/ga/",
50+
);
4751

4852
// Vulnerabilities
4953
await expect(
50-
table._table
54+
tableRow
5155
.locator(`td[data-label="Vulnerabilities"]`)
5256
.locator("div[aria-label='total']"),
5357
).toContainText("1");
5458
await expect(
55-
table._table
59+
tableRow
5660
.locator(`td[data-label="Vulnerabilities"]`)
5761
.locator("div[aria-label='medium']"),
5862
).toContainText("1");

0 commit comments

Comments
 (0)