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,
},
});