Skip to content

Commit 06161d9

Browse files
authored
ridp-4498 Verify Scaffolded link in components Dependencies and scaffoldedFrom relation in entity Raw Yaml failing mulitple times on different CI jobs (#2133)
RHIDP-4498 Verify Scaffolded link in components Dependencies and scaffoldedFrom relation in entity Raw Yaml failing mulitple times on different CI jobs Signed-off-by: Gustavo Lira <guga.java@gmail.com>
1 parent a686011 commit 06161d9

File tree

2 files changed

+94
-8
lines changed

2 files changed

+94
-8
lines changed

e2e-tests/playwright/e2e/catalog-scaffolded-from-link.spec.ts

+39-8
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Page, test } from "@playwright/test";
1+
import { expect, Page, test } from "@playwright/test";
22
import { UIhelper } from "../utils/ui-helper";
33
import { Common, setupBrowser } from "../utils/common";
44
import { CatalogImport } from "../support/pages/catalog-import";
@@ -7,7 +7,6 @@ import { GITHUB_API_ENDPOINTS } from "../utils/api-endpoints";
77

88
let page: Page;
99

10-
// TODO: replace skip with serial
1110
test.describe.serial("Link Scaffolded Templates to Catalog Items", () => {
1211
let uiHelper: UIhelper;
1312
let common: Common;
@@ -19,6 +18,7 @@ test.describe.serial("Link Scaffolded Templates to Catalog Items", () => {
1918
const reactAppDetails = {
2019
owner: "janus-qe/maintainers",
2120
componentName: `test-scaffoldedfromlink-${Date.now()}`,
21+
componentPartialName: `test-scaffoldedfromlink-`,
2222
description: "react app using template",
2323
repo: `test-scaffolded-${Date.now()}`,
2424
repoOwner: Buffer.from(
@@ -34,7 +34,7 @@ test.describe.serial("Link Scaffolded Templates to Catalog Items", () => {
3434
uiHelper = new UIhelper(page);
3535
catalogImport = new CatalogImport(page);
3636

37-
await common.loginAsKeycloakUser();
37+
await common.loginAsGuest();
3838
});
3939

4040
test("Register an Template", async () => {
@@ -82,13 +82,35 @@ test.describe.serial("Link Scaffolded Templates to Catalog Items", () => {
8282
await uiHelper.clickLink("Open in catalog");
8383
});
8484

85-
//FIXME
86-
test.skip("Verify Scaffolded link in components Dependencies and scaffoldedFrom relation in entity Raw Yaml ", async () => {
87-
await common.clickOnGHloginPopup();
85+
test("Verify Scaffolded link in components Dependencies and scaffoldedFrom relation in entity Raw Yaml ", async () => {
86+
await uiHelper.openSidebar("Catalog");
87+
await uiHelper.clickByDataTestId("user-picker-all");
88+
await uiHelper.searchInputPlaceholder("scaffoldedfromlink-\n");
89+
await clickOnScaffoldedFromLink();
90+
8891
await uiHelper.clickTab("Dependencies");
89-
await uiHelper.verifyText(
90-
`ownerOf / ownedByscaffoldedFromcomponent:${reactAppDetails.componentName}group:${reactAppDetails.owner}Create React App Template`,
92+
93+
// Define selectors for labels and nodes
94+
const labelSelector = 'g[data-testid="label"]'; // Selector for labels
95+
const nodeSelector = 'g[data-testid="node"]'; // Selector for nodes
96+
97+
// Verify text inside the 'label' selector
98+
await uiHelper.verifyTextInSelector(labelSelector, "ownerOf");
99+
await uiHelper.verifyTextInSelector(labelSelector, "/ ownedBy");
100+
await uiHelper.verifyTextInSelector(labelSelector, "scaffoldedFrom");
101+
102+
// Verify text inside the 'node' selector
103+
await uiHelper.verifyPartialTextInSelector(
104+
nodeSelector,
105+
reactAppDetails.componentPartialName,
91106
);
107+
108+
await uiHelper.verifyTextInSelector(
109+
nodeSelector,
110+
"Create React App Template",
111+
);
112+
113+
// Verify the scaffoldedFrom relation in the YAML view of the entity
92114
await catalogImport.inspectEntityAndVerifyYaml(
93115
`- type: scaffoldedFrom\n targetRef: template:default/create-react-app-template-with-timestamp-entityref\n target:\n kind: template\n namespace: default\n name: create-react-app-template-with-timestamp-entityref`,
94116
);
@@ -122,4 +144,13 @@ test.describe.serial("Link Scaffolded Templates to Catalog Items", () => {
122144
);
123145
await page.close();
124146
});
147+
148+
async function clickOnScaffoldedFromLink() {
149+
const selector =
150+
'a[href*="/catalog/default/component/test-scaffoldedfromlink-"]';
151+
await page.locator(selector).first().waitFor({ state: "visible" });
152+
const link = await page.locator(selector).first();
153+
await expect(link).toBeVisible();
154+
await link.click();
155+
}
125156
});

e2e-tests/playwright/utils/ui-helper.ts

+55
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,61 @@ export class UIhelper {
218218
await expect(elementLocator).toBeVisible();
219219
}
220220

221+
async verifyTextInSelector(selector: string, expectedText: string) {
222+
const elementLocator = this.page
223+
.locator(selector)
224+
.getByText(expectedText, { exact: true });
225+
226+
try {
227+
await elementLocator.waitFor({ state: "visible", timeout: 10000 });
228+
const actualText = (await elementLocator.textContent()) || "No content";
229+
230+
if (actualText.trim() !== expectedText.trim()) {
231+
console.error(
232+
`Verification failed for text: Expected "${expectedText}", but got "${actualText}"`,
233+
);
234+
throw new Error(
235+
`Expected text "${expectedText}" not found. Actual content: "${actualText}".`,
236+
);
237+
}
238+
console.log(
239+
`Text "${expectedText}" verified successfully in selector: ${selector}`,
240+
);
241+
} catch (error) {
242+
const allTextContent = await this.page
243+
.locator(selector)
244+
.allTextContents();
245+
console.error(
246+
`Verification failed for text: Expected "${expectedText}". Selector content: ${allTextContent.join(", ")}`,
247+
);
248+
throw error;
249+
}
250+
}
251+
252+
async verifyPartialTextInSelector(selector: string, partialText: string) {
253+
try {
254+
const elements = await this.page.locator(selector);
255+
const count = await elements.count();
256+
257+
for (let i = 0; i < count; i++) {
258+
const textContent = await elements.nth(i).textContent();
259+
if (textContent && textContent.includes(partialText)) {
260+
console.log(
261+
`Found partial text: ${partialText} in element: ${textContent}`,
262+
);
263+
return;
264+
}
265+
}
266+
267+
throw new Error(
268+
`Verification failed: Partial text "${partialText}" not found in any elements matching selector "${selector}".`,
269+
);
270+
} catch (error) {
271+
console.error(error.message);
272+
throw error;
273+
}
274+
}
275+
221276
async verifyColumnHeading(
222277
rowTexts: string[] | RegExp[],
223278
exact: boolean = true,

0 commit comments

Comments
 (0)