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

bbovenzi pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git


The following commit(s) were added to refs/heads/main by this push:
     new 620838dd876 add missing logical date column. (#74340)
620838dd876 is described below

commit 620838dd876ee7228b17f7d18c3373ea2e1451ff
Author: Software Developer <[email protected]>
AuthorDate: Tue Oct 6 18:42:17 2026 +0200

    add missing logical date column. (#74340)
---
 .../airflow/ui/src/pages/DagRuns/DagRuns.test.tsx  | 31 +++++++++++++++++++++-
 .../src/airflow/ui/src/pages/DagRuns/DagRuns.tsx   |  6 +++++
 2 files changed, 36 insertions(+), 1 deletion(-)

diff --git a/airflow-core/src/airflow/ui/src/pages/DagRuns/DagRuns.test.tsx 
b/airflow-core/src/airflow/ui/src/pages/DagRuns/DagRuns.test.tsx
index 24ee1bc1847..e5eed19e8ce 100644
--- a/airflow-core/src/airflow/ui/src/pages/DagRuns/DagRuns.test.tsx
+++ b/airflow-core/src/airflow/ui/src/pages/DagRuns/DagRuns.test.tsx
@@ -17,7 +17,7 @@
  * under the License.
  */
 import "@testing-library/jest-dom";
-import { fireEvent, render, screen, waitFor } from "@testing-library/react";
+import { fireEvent, render, screen, waitFor, within } from 
"@testing-library/react";
 import { afterEach, describe, expect, it, vi } from "vitest";
 
 import { AppWrapper } from "src/utils/AppWrapper";
@@ -82,6 +82,35 @@ describe("DagRuns tags filter", () => {
   });
 });
 
+describe("DagRuns logical date column", () => {
+  afterEach(() => {
+    globalThis.localStorage.clear();
+  });
+
+  it("hides the logical date column by default", async () => {
+    render(<AppWrapper initialEntries={["/dag_runs"]} />);
+
+    await waitFor(() => 
expect(screen.getByText("run_in_range")).toBeInTheDocument());
+    
expect(screen.queryByTestId("table-cell-logical_date")).not.toBeInTheDocument();
+  });
+
+  it("renders the logical date once the column is enabled", async () => {
+    globalThis.localStorage.setItem(
+      "dataTable:common:dagRun:columnVisibility",
+      JSON.stringify({ logical_date: true }),
+    );
+
+    render(<AppWrapper initialEntries={["/dag_runs"]} />);
+
+    await waitFor(() => 
expect(screen.getByText("run_in_range")).toBeInTheDocument());
+
+    const cells = screen.getAllByTestId("table-cell-logical_date");
+
+    expect(cells.length).toBeGreaterThan(0);
+    expect(within(cells[0] as 
HTMLElement).getByTestId("time-display")).toBeInTheDocument();
+  });
+});
+
 describe("DagRuns conf expand/collapse", () => {
   // Relies on the conf column being visible by default, which is what renders 
the JSON viewer.
   // useTableURLState persists sorting to localStorage, so clear it between 
cases.
diff --git a/airflow-core/src/airflow/ui/src/pages/DagRuns/DagRuns.tsx 
b/airflow-core/src/airflow/ui/src/pages/DagRuns/DagRuns.tsx
index c84542dbbef..04497d2f4b5 100644
--- a/airflow-core/src/airflow/ui/src/pages/DagRuns/DagRuns.tsx
+++ b/airflow-core/src/airflow/ui/src/pages/DagRuns/DagRuns.tsx
@@ -142,6 +142,11 @@ const runColumns = ({ dagId, multiTeam, open, translate }: 
ColumnProps): Array<C
     ),
     header: translate("dagRun.runAfter"),
   },
+  {
+    accessorKey: "logical_date",
+    cell: ({ row: { original } }) => <Time datetime={original.logical_date} />,
+    header: translate("logicalDate"),
+  },
   {
     accessorKey: "state",
     cell: ({
@@ -253,6 +258,7 @@ export const DagRuns = () => {
     columnVisibility: {
       dag_version: false,
       end_date: false,
+      logical_date: false,
       partition_key: false,
     },
   });

Reply via email to