diff --git a/src/main/js/components/header/breadcrumbs-overflow.js b/src/main/js/components/header/breadcrumbs-overflow.js index 21c0041bbb..edbaa130f7 100644 --- a/src/main/js/components/header/breadcrumbs-overflow.js +++ b/src/main/js/components/header/breadcrumbs-overflow.js @@ -18,7 +18,14 @@ export default function computeBreadcrumbs() { document.querySelectorAll(`[data-type="breadcrumb-item"]`), ); - const breadcrumbsOverflow = generateOverflowButton().querySelector("button"); + const overflowButton = generateOverflowButton(); + if (!overflowButton) { + return; + } + const breadcrumbsOverflow = overflowButton.querySelector("button"); + if (!breadcrumbsOverflow) { + return; + } while (breadcrumbsBarOverflows()) { const item = breadcrumbs.shift(); @@ -66,6 +73,9 @@ export default function computeBreadcrumbs() { function breadcrumbsBarOverflows() { const breadcrumbsBar = document.querySelector("#breadcrumbBar"); + if (!breadcrumbsBar) { + return false; + } return breadcrumbsBar.scrollWidth > breadcrumbsBar.offsetWidth; } @@ -80,6 +90,9 @@ function generateOverflowButton() { // Generate an overflow menu to store breadcrumbs const logo = document.querySelector(".jenkins-breadcrumbs__list-item"); + if (!logo) { + return null; + } const element = createElementFromHtml(`
  • + + + `; + + computeBreadcrumbs(); + + const overflowBtn = document.querySelector( + ".jenkins-breadcrumbs__list-item .jenkins-button", + ); + expect(overflowBtn).toBeNull(); + }); +}); diff --git a/vitest.config.mjs b/vitest.config.mjs index dcdb97d2e2..03272e6022 100644 --- a/vitest.config.mjs +++ b/vitest.config.mjs @@ -1,6 +1,15 @@ +import path from "node:path"; +import { fileURLToPath } from "node:url"; import { defineConfig } from "vitest/config"; +const __dirname = path.dirname(fileURLToPath(import.meta.url)); + export default defineConfig({ + resolve: { + alias: { + "@": path.resolve(__dirname, "src/main/js"), + }, + }, test: { environment: "jsdom", include: ["src/test/js/**/*.test.js"],