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