Skip to content

[fullsend] E2E: bulk-import — NFS global header blocks sidebar navigation #3336

Description

@fullsend-ai-triage

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:

  1. Line 234 — Add page to the test's destructured fixtures:

    test("Verify Added Repositories Appear in the Catalog as Expected", async ({
      page,
      uiHelper,
    }) => {
  2. Line 237 — Replace await uiHelper.openSidebar("Catalog"); with direct navigation:

    await page.goto("/catalog");
  3. 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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions