# Instructions - Following Playwright test failed. - Explain why, be concise, respect Playwright best practices. - Provide a snippet of code with the fix, if possible. # Test info - Name: ui/gitopsResource.test.ts >> Gitops Resource UI Test Suite >> Check gitops git link - Location: tests/ui/gitopsResource.test.ts:35:3 # Error details ``` Error: expect(locator).toBeVisible() failed Locator: locator('a[href*="github.com"]:has-text("View Source")') Expected: visible Timeout: 60000ms Error: element(s) not found Call log: - Expect "toBeVisible" with timeout 60000ms - waiting for locator('a[href*="github.com"]:has-text("View Source")') ``` # Page snapshot ```yaml - generic [ref=e2]: - generic [ref=e3]: - navigation [ref=e5]: - generic [ref=e6]: - link "Home" [ref=e8] [cursor=pointer]: - /url: / - img [ref=e9] - generic [ref=e18]: - img [ref=e20] - combobox "Search..." [ref=e22] - generic "Self-service" [ref=e25]: - link "Self-service" [ref=e26] [cursor=pointer]: - /url: /create - img [ref=e28] - button "Your starred items" [ref=e31] [cursor=pointer]: - img [ref=e32] - button "Application launcher" [ref=e35] [cursor=pointer]: - img [ref=e36] - button "Help" [ref=e39] [cursor=pointer]: - img [ref=e40] - separator [ref=e42] - button "Admin" [ref=e44] [cursor=pointer]: - generic [ref=e45]: - img [ref=e46] - paragraph [ref=e49]: Admin - img [ref=e50] - generic [ref=e53]: - navigation "sidebar nav": - generic [ref=e55]: - generic [ref=e58]: - link "Home" [ref=e60] [cursor=pointer]: - /url: / - img [ref=e64] - generic [ref=e66]: Home - link "Catalog" [ref=e68] [cursor=pointer]: - /url: /catalog - img [ref=e72] - generic [ref=e74]: Catalog - link "APIs" [ref=e76] [cursor=pointer]: - /url: /api-docs - img [ref=e80] - generic [ref=e82]: APIs - link "Learning Paths" [ref=e84] [cursor=pointer]: - /url: /learning-paths - img [ref=e88] - generic [ref=e90]: Learning Paths - separator [ref=e91] - link "Docs" [ref=e94] [cursor=pointer]: - /url: /docs - img [ref=e98] - generic [ref=e100]: Docs - generic [ref=e101]: - separator [ref=e102] - button "Administration" [ref=e103] [cursor=pointer]: - generic [ref=e104]: - img [ref=e108] - generic [ref=e111]: Administration - img [ref=e113] - main [ref=e115]: - generic [ref=e117]: - paragraph [ref=e118]: resource - heading "backend-tests-go-wijgfgsg-gitops" [level=1] [ref=e119]: - generic [ref=e121]: backend-tests-go-wijgfgsg-gitops - article [ref=e122]: - alert [ref=e123]: - 'button "Warning: Entity not found" [ref=e124] [cursor=pointer]': - generic [ref=e125]: - img [ref=e126] - 'heading "Warning: Entity not found" [level=6] [ref=e128]' - img [ref=e131] - generic [ref=e135]: - generic [ref=e136]: - generic [ref=e138]: - paragraph [ref=e139]: Let's get you started with Developer Hub - paragraph [ref=e140]: We'll guide you through a few quick steps - separator [ref=e141] - list [ref=e143]: - button "Expand Set up authentication details" [ref=e145] [cursor=pointer]: - img [ref=e148] - generic [ref=e154]: Set up authentication - button "Expand item" [ref=e155]: - img [ref=e156] - button "Expand Configure RBAC details" [ref=e159] [cursor=pointer]: - img [ref=e162] - generic [ref=e165]: Configure RBAC - button "Expand item" [ref=e166]: - img [ref=e167] - button "Expand Configure Git details" [ref=e170] [cursor=pointer]: - img [ref=e173] - generic [ref=e176]: Configure Git - button "Expand item" [ref=e177]: - img [ref=e178] - button "Expand Manage plugins details" [ref=e181] [cursor=pointer]: - img [ref=e184] - generic [ref=e187]: Manage plugins - button "Expand item" [ref=e188]: - img [ref=e189] - generic [ref=e191]: - progressbar [ref=e192] - generic [ref=e194]: - paragraph [ref=e195]: Not started - button "Hide" [ref=e196] [cursor=pointer]: Hide ``` # Test source ```ts 1 | import { expect, Locator, Page } from '@playwright/test'; 2 | import { Git } from '../../../rhtap/core/integration/git'; 3 | import { LoggerFactory } from '../../../logger/logger'; 4 | import type { Logger } from '../../../logger/logger'; 5 | 6 | export class GitUi { 7 | protected readonly logger: Logger; 8 | 9 | constructor( 10 | _git: Git 11 | ) { 12 | this.logger = LoggerFactory.getLogger(GitUi); 13 | } 14 | 15 | protected async checkGitLink(page: Page, gitLink: Locator): Promise { > 16 | await expect(gitLink).toBeVisible(); | ^ Error: expect(locator).toBeVisible() failed 17 | 18 | const linkHref = await gitLink.getAttribute('href'); 19 | expect(gitLink).toBeTruthy(); 20 | 21 | const isClickable = await gitLink.isEnabled(); 22 | expect(isClickable).toBe(true); 23 | 24 | const response = await page.request.head(linkHref!); 25 | const status = response.status(); 26 | expect(status).not.toBe(404); 27 | 28 | this.logger.debug(`Checked git link: ${linkHref}`); 29 | } 30 | } 31 | ```