fullsend-tracking: workspace=bulk-import
fullsend-tracking: root-cause=nfs-sidebar-nav
fullsend-tracking: branch=main
Classification
fix_category: test_fix
Failed Tests
| Test |
Project |
Error |
| Verify Added Repositories Appear in the Catalog as Expected |
bulk-import-app-next |
TimeoutError: locator.click: Timeout 10000ms exceeded — nav a:has-text("Catalog") intercepted by global-header overlay |
| should interact with plugin features |
bulk-import-orchestrator |
expect(locator).toBeVisible() — getByRole('link', { name: 'PR_URL' }) not found (30s timeout) |
Root Cause
Failure 1 (bulk-import-app-next — test_fix): The NFS (New Frontend System) global-header plugin renders a sticky <nav id="global-header"> bar with class v5-MuiAppBar-positionSticky that physically overlaps the left sidebar. When uiHelper.openSidebar("Catalog") attempts to click the sidebar link via locator('nav a:has-text("Catalog")').first(), the global header's home logo (<img data-testid="home-logo">) intercepts all pointer events. Playwright retried the click 23 times over 10 seconds — each attempt blocked by the same element interception.
The same test passes in the legacy bulk-import project (non-NFS) where the global header plugin is not loaded. The screenshot confirms that "Catalog" is not present in the NFS sidebar at all — the sidebar has a different layout in NFS mode (shows Create, Search, Settings, Docs, Adoption Insights, Bulk import). The global-header plugin loaded successfully (backstage-backend.log: "Exposed dynamic frontend plugin '@red-hat-developer-hub/backstage-plugin-global-header-dynamic'").
Failure 2 (bulk-import-orchestrator — product_bug): The bulk-import-backend plugin crashes with TypeError: Cannot read properties of undefined (reading 'statusCode') at router.cjs.js:616:64 when processing the orchestrator workflow execution response. The workflow itself executed successfully (POST /api/orchestrator/v2/workflows/universal-pr/execute returned 200, instance 0aea5650-207f-42b7-a90f-183d951f5b45 created). But the backend's response handler throws, causing the frontend to lose the workflow instance ID and navigate to /orchestrator/instances/undefined — a 404 page. The backend log also shows Error: URL parsing failed at bulkImports.cjs.js:639 when findOrchestratorImportStatusByRepo receives a URL without the https:// scheme. This is a deterministic runtime bug in the released bulk-import-backend plugin.
Remediation
Target branch: main
Failure 1 — NFS sidebar navigation (test_fix):
In workspaces/bulk-import/e2e-tests/tests/specs/bulk-import.spec.ts:
-
Line 234 — Add page to the test's destructured fixtures:
test("Verify Added Repositories Appear in the Catalog as Expected", async ({
page,
uiHelper,
}) => {
-
Line 237 — Replace await uiHelper.openSidebar("Catalog"); with direct navigation:
await page.goto("/catalog");
-
Line 263 — In the next test ("Catalog-imported repo is in Catalog but absent from Bulk import"), remove await uiHelper.openSidebar("Catalog"); entirely — it is immediately followed by await page.goto(CATALOG_IMPORT_ROUTE); which navigates away, making the sidebar click redundant.
The subsequent test at line 247 already uses page.goto(CATALOG_IMPORT_ROUTE) for navigation, confirming this pattern works in NFS mode.
Failure 2 — Orchestrator backend TypeError (product_bug):
In workspaces/bulk-import/e2e-tests/tests/specs/bulk-import-orchestrator.spec.ts:
- Line 93 — Add
test.skip before the test body:
test("should interact with plugin features", async ({
page,
uiHelper,
loginHelper,
}) => {
test.skip(!!process.env.E2E_NIGHTLY_MODE, "bulk-import-backend TypeError: Cannot read properties of undefined (reading 'statusCode') at router.cjs.js:616 during orchestrator workflow response processing");
Artifacts
https://prow.ci.openshift.org/view/gs/test-platform-results/logs/periodic-ci-redhat-developer-rhdh-plugin-export-overlays-main-e2e-ocp-helm-nightly/2090288353546080256
Triggered by #3335
fullsend-tracking: workspace=bulk-importfullsend-tracking: root-cause=nfs-sidebar-navfullsend-tracking: branch=mainClassification
fix_category: test_fixFailed Tests
nav a:has-text("Catalog")intercepted by global-header overlaygetByRole('link', { name: 'PR_URL' })not found (30s timeout)Root Cause
Failure 1 (bulk-import-app-next — test_fix): The NFS (New Frontend System) global-header plugin renders a sticky
<nav id="global-header">bar with classv5-MuiAppBar-positionStickythat physically overlaps the left sidebar. WhenuiHelper.openSidebar("Catalog")attempts to click the sidebar link vialocator('nav a:has-text("Catalog")').first(), the global header's home logo (<img data-testid="home-logo">) intercepts all pointer events. Playwright retried the click 23 times over 10 seconds — each attempt blocked by the same element interception.The same test passes in the legacy
bulk-importproject (non-NFS) where the global header plugin is not loaded. The screenshot confirms that "Catalog" is not present in the NFS sidebar at all — the sidebar has a different layout in NFS mode (shows Create, Search, Settings, Docs, Adoption Insights, Bulk import). The global-header plugin loaded successfully (backstage-backend.log: "Exposed dynamic frontend plugin '@red-hat-developer-hub/backstage-plugin-global-header-dynamic'").Failure 2 (bulk-import-orchestrator — product_bug): The bulk-import-backend plugin crashes with
TypeError: Cannot read properties of undefined (reading 'statusCode')atrouter.cjs.js:616:64when processing the orchestrator workflow execution response. The workflow itself executed successfully (POST /api/orchestrator/v2/workflows/universal-pr/executereturned 200, instance0aea5650-207f-42b7-a90f-183d951f5b45created). But the backend's response handler throws, causing the frontend to lose the workflow instance ID and navigate to/orchestrator/instances/undefined— a 404 page. The backend log also showsError: URL parsing failedatbulkImports.cjs.js:639whenfindOrchestratorImportStatusByReporeceives a URL without thehttps://scheme. This is a deterministic runtime bug in the released bulk-import-backend plugin.Remediation
Target branch:
mainFailure 1 — NFS sidebar navigation (test_fix):
In
workspaces/bulk-import/e2e-tests/tests/specs/bulk-import.spec.ts:Line 234 — Add
pageto the test's destructured fixtures:Line 237 — Replace
await uiHelper.openSidebar("Catalog");with direct navigation:Line 263 — In the next test ("Catalog-imported repo is in Catalog but absent from Bulk import"), remove
await uiHelper.openSidebar("Catalog");entirely — it is immediately followed byawait page.goto(CATALOG_IMPORT_ROUTE);which navigates away, making the sidebar click redundant.The subsequent test at line 247 already uses
page.goto(CATALOG_IMPORT_ROUTE)for navigation, confirming this pattern works in NFS mode.Failure 2 — Orchestrator backend TypeError (product_bug):
In
workspaces/bulk-import/e2e-tests/tests/specs/bulk-import-orchestrator.spec.ts:test.skipbefore the test body:Artifacts
https://prow.ci.openshift.org/view/gs/test-platform-results/logs/periodic-ci-redhat-developer-rhdh-plugin-export-overlays-main-e2e-ocp-helm-nightly/2090288353546080256
Triggered by #3335