This is an automated email from the ASF dual-hosted git repository.

rahulvats pushed a commit to branch v3-2-test
in repository https://gitbox.apache.org/repos/asf/airflow.git


The following commit(s) were added to refs/heads/v3-2-test by this push:
     new 981b576ffb5 [v3-2-test] Fix Docs menu REST API link visibility when 
API docs are disabled (#64359) (#64378)
981b576ffb5 is described below

commit 981b576ffb55df70c6c632b7a9dc46e24ed5b6be
Author: Jens Scheffler <[email protected]>
AuthorDate: Mon Mar 30 09:04:32 2026 +0200

    [v3-2-test] Fix Docs menu REST API link visibility when API docs are 
disabled (#64359) (#64378)
    
    (cherry picked from commit eab43f2db8b073b585149f2b3fdd4838f5e82187)
    
    Co-authored-by: Mayank Aggarwal <[email protected]>
    Co-authored-by: Rahul Vats <[email protected]>
---
 .../airflow/ui/src/layouts/Nav/DocsButton.test.tsx | 56 ++++++++++++++++++++++
 .../src/airflow/ui/src/layouts/Nav/DocsButton.tsx  |  2 +-
 2 files changed, 57 insertions(+), 1 deletion(-)

diff --git a/airflow-core/src/airflow/ui/src/layouts/Nav/DocsButton.test.tsx 
b/airflow-core/src/airflow/ui/src/layouts/Nav/DocsButton.test.tsx
new file mode 100644
index 00000000000..20b25b15938
--- /dev/null
+++ b/airflow-core/src/airflow/ui/src/layouts/Nav/DocsButton.test.tsx
@@ -0,0 +1,56 @@
+/*!
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+import "@testing-library/jest-dom";
+import { fireEvent, render, screen } from "@testing-library/react";
+import { beforeEach, describe, expect, it, vi } from "vitest";
+
+import { Wrapper } from "src/utils/Wrapper";
+
+import { DocsButton } from "./DocsButton";
+
+const mockConfig: Record<string, unknown> = {
+  enable_swagger_ui: true,
+};
+
+vi.mock("src/queries/useConfig", () => ({
+  useConfig: (key: string) => mockConfig[key],
+}));
+
+describe("DocsButton", () => {
+  beforeEach(() => {
+    mockConfig.enable_swagger_ui = true;
+  });
+
+  it("hides the REST API reference when API docs are disabled", async () => {
+    render(<DocsButton externalViews={[]} showAPI={false} />, { wrapper: 
Wrapper });
+
+    fireEvent.click(screen.getByRole("button", { name: /nav.docs/iu }));
+
+    expect(await screen.findByText("docs.documentation")).toBeInTheDocument();
+    expect(screen.queryByText("docs.restApiReference")).toBeNull();
+  });
+
+  it("shows the REST API reference when API docs are enabled", async () => {
+    render(<DocsButton externalViews={[]} showAPI />, { wrapper: Wrapper });
+
+    fireEvent.click(screen.getByRole("button", { name: /nav.docs/iu }));
+
+    expect(await 
screen.findByText("docs.restApiReference")).toBeInTheDocument();
+  });
+});
diff --git a/airflow-core/src/airflow/ui/src/layouts/Nav/DocsButton.tsx 
b/airflow-core/src/airflow/ui/src/layouts/Nav/DocsButton.tsx
index 3af4e7f93a6..9156f77a512 100644
--- a/airflow-core/src/airflow/ui/src/layouts/Nav/DocsButton.tsx
+++ b/airflow-core/src/airflow/ui/src/layouts/Nav/DocsButton.tsx
@@ -65,7 +65,7 @@ export const DocsButton = ({
       </Menu.Trigger>
       <Menu.Content>
         {links
-          .filter((link) => !(!showAPIDocs && link.href === "/docs"))
+          .filter((link) => !(!showAPIDocs && link.key === "restApiReference"))
           .map((link) => (
             <Menu.Item asChild key={link.key} 
value={translate(`docs.${link.key}`)}>
               <Link

Reply via email to