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 e1c1db8f36d Rationalize null and max-lines eslint rules (#66124)
e1c1db8f36d is described below

commit e1c1db8f36d7d247e184a677fb0218726945511a
Author: Brent Bovenzi <[email protected]>
AuthorDate: Thu Apr 30 13:48:54 2026 -0400

    Rationalize null and max-lines eslint rules (#66124)
    
    * Up max-lines and remove null check
    
    * Lint after rebasing
---
 airflow-core/src/airflow/ui/rules/core.js                     |  2 +-
 airflow-core/src/airflow/ui/rules/rem.js                      |  1 -
 airflow-core/src/airflow/ui/rules/typescript.js               |  4 +---
 airflow-core/src/airflow/ui/rules/unicorn.js                  |  4 ++--
 airflow-core/src/airflow/ui/src/components/BasicTooltip.tsx   |  1 -
 .../airflow/ui/src/components/DagActions/RunBackfillForm.tsx  |  2 --
 .../ui/src/components/FlexibleForm/FieldAdvancedArray.tsx     |  1 -
 .../airflow/ui/src/components/FlexibleForm/FieldDateTime.tsx  |  1 -
 .../ui/src/components/FlexibleForm/FieldDropdown.test.tsx     | 11 -----------
 .../airflow/ui/src/components/FlexibleForm/FieldDropdown.tsx  |  4 +---
 .../ui/src/components/FlexibleForm/FieldMultiSelect.tsx       |  1 -
 .../ui/src/components/FlexibleForm/FieldMultilineText.tsx     |  1 -
 .../airflow/ui/src/components/FlexibleForm/FieldNumber.tsx    |  1 -
 .../airflow/ui/src/components/FlexibleForm/FieldObject.tsx    |  1 -
 .../airflow/ui/src/components/FlexibleForm/FieldString.tsx    |  1 -
 .../ui/src/components/FlexibleForm/FieldStringArray.tsx       |  1 -
 .../src/airflow/ui/src/components/SearchDags/SearchDags.tsx   |  1 -
 .../airflow/ui/src/components/TaskInstanceTooltip.test.tsx    |  2 --
 airflow-core/src/airflow/ui/src/components/TeamSelector.tsx   |  1 -
 .../src/airflow/ui/src/components/renderStructuredLog.tsx     |  2 --
 airflow-core/src/airflow/ui/src/components/ui/ProgressBar.tsx |  1 -
 airflow-core/src/airflow/ui/src/constants/filterConfigs.tsx   |  2 --
 .../src/airflow/ui/src/layouts/Details/DetailsLayout.tsx      |  2 --
 .../ui/src/layouts/Details/Gantt/GanttTimeline.test.tsx       |  4 ----
 .../airflow/ui/src/layouts/Details/Gantt/GanttTimeline.tsx    |  4 ----
 .../src/airflow/ui/src/layouts/Details/Gantt/utils.test.ts    |  4 ----
 .../src/airflow/ui/src/layouts/Details/Gantt/utils.ts         |  2 --
 .../src/layouts/Details/Graph/useGraphFilteredNodes.test.ts   |  2 --
 .../ui/src/layouts/Details/Grid/useGridPagination.test.ts     |  2 --
 .../src/airflow/ui/src/layouts/Details/PanelButtons.tsx       |  2 --
 .../src/airflow/ui/src/layouts/Details/TaskStreamFilter.tsx   |  2 --
 airflow-core/src/airflow/ui/src/mocks/handlers/dag.ts         |  2 --
 airflow-core/src/airflow/ui/src/mocks/handlers/dag_runs.ts    |  2 --
 airflow-core/src/airflow/ui/src/mocks/handlers/log.ts         |  2 --
 .../src/airflow/ui/src/pages/Dag/Calendar/calendarUtils.ts    |  2 --
 airflow-core/src/airflow/ui/src/pages/Dag/Code/Code.tsx       |  2 --
 airflow-core/src/airflow/ui/src/pages/Dag/DagHeader.test.tsx  |  1 -
 airflow-core/src/airflow/ui/src/pages/Dag/Header.test.tsx     |  1 -
 airflow-core/src/airflow/ui/src/pages/DagRuns.tsx             |  2 --
 .../src/airflow/ui/src/pages/DagsList/DagCard.test.tsx        |  2 --
 airflow-core/src/airflow/ui/src/pages/DagsList/DagsList.tsx   |  2 --
 .../src/pages/Dashboard/HistoricalMetrics/MetricSection.tsx   |  1 -
 .../ui/src/pages/HITLTaskInstances/HITLResponseForm.test.tsx  |  2 --
 .../src/airflow/ui/src/pages/TaskInstance/Details.tsx         |  1 -
 .../src/airflow/ui/src/pages/TaskInstance/Logs/Logs.test.tsx  |  2 --
 .../src/airflow/ui/src/pages/TaskInstances/TaskInstances.tsx  |  2 --
 airflow-core/src/airflow/ui/src/queries/useEditConnection.tsx |  1 -
 airflow-core/src/airflow/ui/src/queries/useParamStore.ts      |  3 ---
 airflow-core/src/airflow/ui/src/queries/useTrigger.ts         |  3 ---
 airflow-core/src/airflow/ui/src/theme.ts                      |  2 --
 airflow-core/src/airflow/ui/src/utils/datetimeUtils.test.ts   |  3 ---
 airflow-core/src/airflow/ui/src/utils/logs.test.ts            |  1 -
 airflow-core/src/airflow/ui/tests/e2e/pages/DagsPage.ts       |  1 -
 53 files changed, 5 insertions(+), 105 deletions(-)

diff --git a/airflow-core/src/airflow/ui/rules/core.js 
b/airflow-core/src/airflow/ui/rules/core.js
index 195e5c5e3aa..55ee1533251 100644
--- a/airflow-core/src/airflow/ui/rules/core.js
+++ b/airflow-core/src/airflow/ui/rules/core.js
@@ -279,7 +279,7 @@ export const coreRules = /** @type {const} @satisfies 
{FlatConfig.Config} */ ({
      *
      * @see [max-lines](https://eslint.org/docs/latest/rules/max-lines)
      */
-    "max-lines": [ERROR, { max: 250, skipBlankLines: true, skipComments: true 
}],
+    "max-lines": [ERROR, { max: 500, skipBlankLines: true, skipComments: true 
}],
 
     /**
      * Enforce a maximum depth that callbacks can be nested to 3.
diff --git a/airflow-core/src/airflow/ui/rules/rem.js 
b/airflow-core/src/airflow/ui/rules/rem.js
index 404be4f3a6b..ab0199f3e87 100644
--- a/airflow-core/src/airflow/ui/rules/rem.js
+++ b/airflow-core/src/airflow/ui/rules/rem.js
@@ -104,7 +104,6 @@ export const remPlugin = {
                     return fixer.replaceText(attr.value.expression, 
fixedValue);
                   }
 
-                  // eslint-disable-next-line unicorn/no-null
                   return null;
                 },
                 messageId: "noRemInProps",
diff --git a/airflow-core/src/airflow/ui/rules/typescript.js 
b/airflow-core/src/airflow/ui/rules/typescript.js
index ed05e150897..71501b3db5d 100644
--- a/airflow-core/src/airflow/ui/rules/typescript.js
+++ b/airflow-core/src/airflow/ui/rules/typescript.js
@@ -1,5 +1,3 @@
-/* eslint-disable max-lines */
-
 /*!
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -504,7 +502,7 @@ export const typescriptRules = /** @type {const} @satisfies 
{FlatConfig.Config}
     [`${typescriptNamespace}/naming-convention`]: [
       ERROR,
       {
-        format: null, // eslint-disable-line unicorn/no-null
+        format: null,
         leadingUnderscore: "allow",
         selector: "default",
         trailingUnderscore: "forbid",
diff --git a/airflow-core/src/airflow/ui/rules/unicorn.js 
b/airflow-core/src/airflow/ui/rules/unicorn.js
index 4d8c28e84e7..e4d0d528876 100644
--- a/airflow-core/src/airflow/ui/rules/unicorn.js
+++ b/airflow-core/src/airflow/ui/rules/unicorn.js
@@ -22,7 +22,7 @@
  */
 import unicorn from "eslint-plugin-unicorn";
 
-import { ERROR, WARN } from "./levels.js";
+import { ERROR, OFF, WARN } from "./levels.js";
 
 /**
  * ESLint `unicorn` namespace.
@@ -455,7 +455,7 @@ export const unicornRules = /** @type {const} @satisfies 
{FlatConfig.Config} */
      * @see [Reasoning](https://lou.cx/articles/we-don-t-need-null/)
      * @see 
[unicorn/no-null](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-null.md)
      */
-    [`${unicornNamespace}/no-null`]: WARN,
+    [`${unicornNamespace}/no-null`]: OFF,
 
     /**
      * Disallow passing single-element arrays to Promise methods.
diff --git a/airflow-core/src/airflow/ui/src/components/BasicTooltip.tsx 
b/airflow-core/src/airflow/ui/src/components/BasicTooltip.tsx
index 93c8522be6b..fa1c2263a33 100644
--- a/airflow-core/src/airflow/ui/src/components/BasicTooltip.tsx
+++ b/airflow-core/src/airflow/ui/src/components/BasicTooltip.tsx
@@ -46,7 +46,6 @@ export const BasicTooltip = ({ children, content }: Props): 
ReactElement => {
   const handleMouseLeave = () => {
     if (timeoutRef.current) {
       clearTimeout(timeoutRef.current);
-      // eslint-disable-next-line unicorn/no-null
       timeoutRef.current = null;
     }
     setIsOpen(false);
diff --git 
a/airflow-core/src/airflow/ui/src/components/DagActions/RunBackfillForm.tsx 
b/airflow-core/src/airflow/ui/src/components/DagActions/RunBackfillForm.tsx
index c1873b9d352..15afb516202 100644
--- a/airflow-core/src/airflow/ui/src/components/DagActions/RunBackfillForm.tsx
+++ b/airflow-core/src/airflow/ui/src/components/DagActions/RunBackfillForm.tsx
@@ -1,5 +1,3 @@
-/* eslint-disable max-lines -- form aggregates date range, reprocess behavior, 
and param controls in a single UX flow */
-
 /*!
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
diff --git 
a/airflow-core/src/airflow/ui/src/components/FlexibleForm/FieldAdvancedArray.tsx
 
b/airflow-core/src/airflow/ui/src/components/FlexibleForm/FieldAdvancedArray.tsx
index eb37003504c..9d379b1c507 100644
--- 
a/airflow-core/src/airflow/ui/src/components/FlexibleForm/FieldAdvancedArray.tsx
+++ 
b/airflow-core/src/airflow/ui/src/components/FlexibleForm/FieldAdvancedArray.tsx
@@ -34,7 +34,6 @@ export const FieldAdvancedArray = ({ name, namespace = 
"default", onUpdate }: Fl
     if (value === "") {
       if (paramsDict[name]) {
         // "undefined" values are removed from params, so we set it to null to 
avoid falling back to DAG defaults.
-        // eslint-disable-next-line unicorn/no-null
         paramsDict[name].value = null;
       }
       setParamsDict(paramsDict);
diff --git 
a/airflow-core/src/airflow/ui/src/components/FlexibleForm/FieldDateTime.tsx 
b/airflow-core/src/airflow/ui/src/components/FlexibleForm/FieldDateTime.tsx
index d99eafd4639..9c6106d225c 100644
--- a/airflow-core/src/airflow/ui/src/components/FlexibleForm/FieldDateTime.tsx
+++ b/airflow-core/src/airflow/ui/src/components/FlexibleForm/FieldDateTime.tsx
@@ -34,7 +34,6 @@ export const FieldDateTime = ({
   const handleChange = (value: string) => {
     // "undefined" values are removed from params, so we set it to null to 
avoid falling back to DAG defaults.
     if (paramsDict[name]) {
-      // eslint-disable-next-line unicorn/no-null
       paramsDict[name].value = value === "" ? null : value;
     }
 
diff --git 
a/airflow-core/src/airflow/ui/src/components/FlexibleForm/FieldDropdown.test.tsx
 
b/airflow-core/src/airflow/ui/src/components/FlexibleForm/FieldDropdown.test.tsx
index 2fda9b292de..7849de17d75 100644
--- 
a/airflow-core/src/airflow/ui/src/components/FlexibleForm/FieldDropdown.test.tsx
+++ 
b/airflow-core/src/airflow/ui/src/components/FlexibleForm/FieldDropdown.test.tsx
@@ -30,7 +30,6 @@ const mockSetParamsDict = vi.fn();
 vi.mock("src/queries/useParamStore", () => ({
   paramPlaceholder: {
     schema: {},
-    // eslint-disable-next-line unicorn/no-null
     value: null,
   },
   useParamStore: () => ({
@@ -51,11 +50,9 @@ describe("FieldDropdown", () => {
   it("renders dropdown with null value in enum", () => {
     mockParamsDict.test_param = {
       schema: {
-        // eslint-disable-next-line unicorn/no-null
         enum: [1, 2, 3, null],
         type: ["number", "null"],
       },
-      // eslint-disable-next-line unicorn/no-null
       value: null,
     };
 
@@ -69,7 +66,6 @@ describe("FieldDropdown", () => {
   it("displays custom label for null value via values_display", () => {
     mockParamsDict.test_param = {
       schema: {
-        // eslint-disable-next-line unicorn/no-null
         enum: [1, 2, 3, null],
         type: ["number", "null"],
         values_display: {
@@ -92,7 +88,6 @@ describe("FieldDropdown", () => {
   it("handles string enum with null value", () => {
     mockParamsDict.test_param = {
       schema: {
-        // eslint-disable-next-line unicorn/no-null
         enum: ["option1", "option2", null],
         type: ["string", "null"],
       },
@@ -109,11 +104,9 @@ describe("FieldDropdown", () => {
   it("handles enum with only null value", () => {
     mockParamsDict.test_param = {
       schema: {
-        // eslint-disable-next-line unicorn/no-null
         enum: [null],
         type: ["null"],
       },
-      // eslint-disable-next-line unicorn/no-null
       value: null,
     };
 
@@ -127,11 +120,9 @@ describe("FieldDropdown", () => {
   it("renders when current value is null", () => {
     mockParamsDict.test_param = {
       schema: {
-        // eslint-disable-next-line unicorn/no-null
         enum: ["value1", "value2", "value3", null],
         type: ["string", "null"],
       },
-      // eslint-disable-next-line unicorn/no-null
       value: null,
     };
 
@@ -145,7 +136,6 @@ describe("FieldDropdown", () => {
   it("preserves numeric type when selecting a number enum value (prevents 400 
Bad Request)", () => {
     mockParamsDict.test_param = {
       schema: {
-        // eslint-disable-next-line unicorn/no-null
         enum: [1, 2, 3, 4, 5, 6, 7, 8, 9, null],
         type: ["number", "null"],
         values_display: {
@@ -153,7 +143,6 @@ describe("FieldDropdown", () => {
           "6": "Six",
         },
       },
-      // eslint-disable-next-line unicorn/no-null
       value: null,
     };
 
diff --git 
a/airflow-core/src/airflow/ui/src/components/FlexibleForm/FieldDropdown.tsx 
b/airflow-core/src/airflow/ui/src/components/FlexibleForm/FieldDropdown.tsx
index b8cf6ad1068..f5cf4fe7690 100644
--- a/airflow-core/src/airflow/ui/src/components/FlexibleForm/FieldDropdown.tsx
+++ b/airflow-core/src/airflow/ui/src/components/FlexibleForm/FieldDropdown.tsx
@@ -56,8 +56,7 @@ export const FieldDropdown = ({ name, namespace = "default", 
onUpdate }: Flexibl
       ? (options.find((opt) => opt.value === NULL_STRING_VALUE) ?? null)
       : enumTypes.includes(typeof param.value)
         ? (options.find((opt) => opt.value === String(param.value)) ?? null)
-        : // eslint-disable-next-line unicorn/no-null
-          null;
+        : null;
 
   const handleChange = (
     selected: SingleValue<{
@@ -67,7 +66,6 @@ export const FieldDropdown = ({ name, namespace = "default", 
onUpdate }: Flexibl
   ) => {
     if (paramsDict[name]) {
       if (!selected || selected.value === NULL_STRING_VALUE) {
-        // eslint-disable-next-line unicorn/no-null
         paramsDict[name].value = null;
       } else {
         // Map the string value back to the original typed enum value (e.g. 
number, string)
diff --git 
a/airflow-core/src/airflow/ui/src/components/FlexibleForm/FieldMultiSelect.tsx 
b/airflow-core/src/airflow/ui/src/components/FlexibleForm/FieldMultiSelect.tsx
index 6bc2442708b..f36539ba554 100644
--- 
a/airflow-core/src/airflow/ui/src/components/FlexibleForm/FieldMultiSelect.tsx
+++ 
b/airflow-core/src/airflow/ui/src/components/FlexibleForm/FieldMultiSelect.tsx
@@ -59,7 +59,6 @@ export const FieldMultiSelect = ({ name, namespace = 
"default", onUpdate }: Flex
     setSelectedOptions(updatedOptions);
 
     // "undefined" values are removed from params, so we set it to null to 
avoid falling back to DAG defaults.
-    // eslint-disable-next-line unicorn/no-null
     const newValueArray = updatedOptions.length ? updatedOptions.map((option) 
=> option.value) : null;
 
     if (paramsDict[name]) {
diff --git 
a/airflow-core/src/airflow/ui/src/components/FlexibleForm/FieldMultilineText.tsx
 
b/airflow-core/src/airflow/ui/src/components/FlexibleForm/FieldMultilineText.tsx
index 8306f125eb6..c3bce8dbcc8 100644
--- 
a/airflow-core/src/airflow/ui/src/components/FlexibleForm/FieldMultilineText.tsx
+++ 
b/airflow-core/src/airflow/ui/src/components/FlexibleForm/FieldMultilineText.tsx
@@ -28,7 +28,6 @@ export const FieldMultilineText = ({ name, namespace = 
"default", onUpdate }: Fl
   const handleChange = (value: string) => {
     if (paramsDict[name]) {
       // "undefined" values are removed from params, so we set it to null to 
avoid falling back to DAG defaults.
-      // eslint-disable-next-line unicorn/no-null
       paramsDict[name].value = value === "" ? null : value;
     }
 
diff --git 
a/airflow-core/src/airflow/ui/src/components/FlexibleForm/FieldNumber.tsx 
b/airflow-core/src/airflow/ui/src/components/FlexibleForm/FieldNumber.tsx
index 4e3989a3bf4..dd4beee927d 100644
--- a/airflow-core/src/airflow/ui/src/components/FlexibleForm/FieldNumber.tsx
+++ b/airflow-core/src/airflow/ui/src/components/FlexibleForm/FieldNumber.tsx
@@ -29,7 +29,6 @@ export const FieldNumber = ({ name, namespace = "default", 
onUpdate }: FlexibleF
       // If input is cleared, set the value to null or undefined
       if (paramsDict[name]) {
         // "undefined" values are removed from params, so we set it to null to 
avoid falling back to DAG defaults.
-        // eslint-disable-next-line unicorn/no-null
         paramsDict[name].value = null;
       }
     } else {
diff --git 
a/airflow-core/src/airflow/ui/src/components/FlexibleForm/FieldObject.tsx 
b/airflow-core/src/airflow/ui/src/components/FlexibleForm/FieldObject.tsx
index 658e84ea5b2..e6d72132575 100644
--- a/airflow-core/src/airflow/ui/src/components/FlexibleForm/FieldObject.tsx
+++ b/airflow-core/src/airflow/ui/src/components/FlexibleForm/FieldObject.tsx
@@ -28,7 +28,6 @@ export const FieldObject = ({ name, namespace = "default", 
onUpdate }: FlexibleF
   const handleChange = (value: string) => {
     try {
       // "undefined" values are removed from params, so we set it to null to 
avoid falling back to DAG defaults.
-      // eslint-disable-next-line unicorn/no-null
       const parsedValue = value === "" ? null : (JSON.parse(value) as JSON);
 
       if (paramsDict[name]) {
diff --git 
a/airflow-core/src/airflow/ui/src/components/FlexibleForm/FieldString.tsx 
b/airflow-core/src/airflow/ui/src/components/FlexibleForm/FieldString.tsx
index 77f10ea7f2a..90db115ad2a 100644
--- a/airflow-core/src/airflow/ui/src/components/FlexibleForm/FieldString.tsx
+++ b/airflow-core/src/airflow/ui/src/components/FlexibleForm/FieldString.tsx
@@ -30,7 +30,6 @@ export const FieldString = ({ name, namespace = "default", 
onUpdate }: FlexibleF
   const handleChange = (value: string) => {
     if (paramsDict[name]) {
       // "undefined" values are removed from params, so we set it to null to 
avoid falling back to DAG defaults.
-      // eslint-disable-next-line unicorn/no-null
       paramsDict[name].value = value === "" ? null : value;
     }
 
diff --git 
a/airflow-core/src/airflow/ui/src/components/FlexibleForm/FieldStringArray.tsx 
b/airflow-core/src/airflow/ui/src/components/FlexibleForm/FieldStringArray.tsx
index be93eb89057..d06645c1ea7 100644
--- 
a/airflow-core/src/airflow/ui/src/components/FlexibleForm/FieldStringArray.tsx
+++ 
b/airflow-core/src/airflow/ui/src/components/FlexibleForm/FieldStringArray.tsx
@@ -45,7 +45,6 @@ export const FieldStringArray = ({ name, namespace = 
"default", onUpdate }: Flex
     if (Array.isArray(currentValue) && currentValue.length === 1 && 
currentValue[0] === "") {
       if (paramsDict[name]) {
         // "undefined" values are removed from params, so we set it to null to 
avoid falling back to DAG defaults.
-        // eslint-disable-next-line unicorn/no-null
         paramsDict[name].value = null;
       }
 
diff --git 
a/airflow-core/src/airflow/ui/src/components/SearchDags/SearchDags.tsx 
b/airflow-core/src/airflow/ui/src/components/SearchDags/SearchDags.tsx
index b5533c5aa2b..76e42dde6f6 100644
--- a/airflow-core/src/airflow/ui/src/components/SearchDags/SearchDags.tsx
+++ b/airflow-core/src/airflow/ui/src/components/SearchDags/SearchDags.tsx
@@ -86,7 +86,6 @@ export const SearchDags = ({
         menuIsOpen
         onChange={onSelect}
         placeholder={translate("search.dags")}
-        // eslint-disable-next-line unicorn/no-null
         value={null} // null is required 
https://github.com/JedWatson/react-select/issues/3066
       />
     </Field.Root>
diff --git 
a/airflow-core/src/airflow/ui/src/components/TaskInstanceTooltip.test.tsx 
b/airflow-core/src/airflow/ui/src/components/TaskInstanceTooltip.test.tsx
index 3f3d17a95de..e131a129edb 100644
--- a/airflow-core/src/airflow/ui/src/components/TaskInstanceTooltip.test.tsx
+++ b/airflow-core/src/airflow/ui/src/components/TaskInstanceTooltip.test.tsx
@@ -1,5 +1,3 @@
-/* eslint-disable unicorn/no-null */
-
 /*!
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
diff --git a/airflow-core/src/airflow/ui/src/components/TeamSelector.tsx 
b/airflow-core/src/airflow/ui/src/components/TeamSelector.tsx
index 292f5c881d0..4a8917d591b 100644
--- a/airflow-core/src/airflow/ui/src/components/TeamSelector.tsx
+++ b/airflow-core/src/airflow/ui/src/components/TeamSelector.tsx
@@ -62,7 +62,6 @@ export const TeamSelector = <T extends FieldValues = 
FieldValues>({ control }: P
                 data-testid="team-selector"
                 isClearable
                 isDisabled={isLoading}
-                // eslint-disable-next-line unicorn/no-null
                 onChange={(val) => onChange(val?.value ?? null)}
                 options={options}
                 placeholder={translate("team.selector.placeHolder")}
diff --git a/airflow-core/src/airflow/ui/src/components/renderStructuredLog.tsx 
b/airflow-core/src/airflow/ui/src/components/renderStructuredLog.tsx
index 73d20bf46ef..153f9f21a24 100644
--- a/airflow-core/src/airflow/ui/src/components/renderStructuredLog.tsx
+++ b/airflow-core/src/airflow/ui/src/components/renderStructuredLog.tsx
@@ -16,8 +16,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
-/* eslint-disable max-lines */
 import { chakra, Code, Link } from "@chakra-ui/react";
 import type { TFunction } from "i18next";
 import type { JSX } from "react";
diff --git a/airflow-core/src/airflow/ui/src/components/ui/ProgressBar.tsx 
b/airflow-core/src/airflow/ui/src/components/ui/ProgressBar.tsx
index 4aad71c59d2..d26753203b8 100644
--- a/airflow-core/src/airflow/ui/src/components/ui/ProgressBar.tsx
+++ b/airflow-core/src/airflow/ui/src/components/ui/ProgressBar.tsx
@@ -21,7 +21,6 @@ import { forwardRef } from "react";
 
 export const ProgressBar = forwardRef<HTMLDivElement, 
ChakraProgress.RootProps>((props, ref) => (
   // default to indeterminate
-  // eslint-disable-next-line unicorn/no-null
   <ChakraProgress.Root value={null} {...props} ref={ref}>
     <ChakraProgress.Track>
       <ChakraProgress.Range />
diff --git a/airflow-core/src/airflow/ui/src/constants/filterConfigs.tsx 
b/airflow-core/src/airflow/ui/src/constants/filterConfigs.tsx
index 64a80f92ec3..10f2db57f60 100644
--- a/airflow-core/src/airflow/ui/src/constants/filterConfigs.tsx
+++ b/airflow-core/src/airflow/ui/src/constants/filterConfigs.tsx
@@ -16,8 +16,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
-/* eslint-disable max-lines */
 import { Flex } from "@chakra-ui/react";
 import { useTranslation } from "react-i18next";
 import { BiTargetLock } from "react-icons/bi";
diff --git a/airflow-core/src/airflow/ui/src/layouts/Details/DetailsLayout.tsx 
b/airflow-core/src/airflow/ui/src/layouts/Details/DetailsLayout.tsx
index d56442db38a..cca6fbe13d9 100644
--- a/airflow-core/src/airflow/ui/src/layouts/Details/DetailsLayout.tsx
+++ b/airflow-core/src/airflow/ui/src/layouts/Details/DetailsLayout.tsx
@@ -1,5 +1,3 @@
-/* eslint-disable max-lines */
-
 /*!
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
diff --git 
a/airflow-core/src/airflow/ui/src/layouts/Details/Gantt/GanttTimeline.test.tsx 
b/airflow-core/src/airflow/ui/src/layouts/Details/Gantt/GanttTimeline.test.tsx
index ad492249978..4ff527b5fd7 100644
--- 
a/airflow-core/src/airflow/ui/src/layouts/Details/Gantt/GanttTimeline.test.tsx
+++ 
b/airflow-core/src/airflow/ui/src/layouts/Details/Gantt/GanttTimeline.test.tsx
@@ -1,7 +1,3 @@
-/* eslint-disable max-lines */
-
-/* eslint-disable unicorn/no-null */
-
 /*!
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
diff --git 
a/airflow-core/src/airflow/ui/src/layouts/Details/Gantt/GanttTimeline.tsx 
b/airflow-core/src/airflow/ui/src/layouts/Details/Gantt/GanttTimeline.tsx
index fd5949e070f..48825715057 100644
--- a/airflow-core/src/airflow/ui/src/layouts/Details/Gantt/GanttTimeline.tsx
+++ b/airflow-core/src/airflow/ui/src/layouts/Details/Gantt/GanttTimeline.tsx
@@ -16,8 +16,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
-/* eslint-disable max-lines -- virtualized Gantt body markup is kept in one 
file for readability */
 import { Badge, Box, Flex, Text } from "@chakra-ui/react";
 import { useVirtualizer } from "@tanstack/react-virtual";
 import dayjs from "dayjs";
@@ -86,11 +84,9 @@ const toTooltipSummary = (
   }
 
   return {
-    // eslint-disable-next-line unicorn/no-null
     child_states: null,
     max_end_date: dayjs(segment.x[1]).toISOString(),
     min_start_date: dayjs(segment.x[0]).toISOString(),
-    // eslint-disable-next-line unicorn/no-null
     state: segment.state ?? null,
     task_display_name: segment.y,
     task_id: segment.taskId,
diff --git 
a/airflow-core/src/airflow/ui/src/layouts/Details/Gantt/utils.test.ts 
b/airflow-core/src/airflow/ui/src/layouts/Details/Gantt/utils.test.ts
index 1fc70a8a1ab..973ad2b7ed4 100644
--- a/airflow-core/src/airflow/ui/src/layouts/Details/Gantt/utils.test.ts
+++ b/airflow-core/src/airflow/ui/src/layouts/Details/Gantt/utils.test.ts
@@ -1,7 +1,3 @@
-/* eslint-disable max-lines */
-
-/* eslint-disable unicorn/no-null */
-
 /*!
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
diff --git a/airflow-core/src/airflow/ui/src/layouts/Details/Gantt/utils.ts 
b/airflow-core/src/airflow/ui/src/layouts/Details/Gantt/utils.ts
index d4cba954b62..ff281092add 100644
--- a/airflow-core/src/airflow/ui/src/layouts/Details/Gantt/utils.ts
+++ b/airflow-core/src/airflow/ui/src/layouts/Details/Gantt/utils.ts
@@ -16,8 +16,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
-/* eslint-disable max-lines -- Gantt transform, time range, links, and axis 
ticks share one module */
 import dayjs from "dayjs";
 import type { To } from "react-router-dom";
 
diff --git 
a/airflow-core/src/airflow/ui/src/layouts/Details/Graph/useGraphFilteredNodes.test.ts
 
b/airflow-core/src/airflow/ui/src/layouts/Details/Graph/useGraphFilteredNodes.test.ts
index 7f486ba0364..3ae56dc68f6 100644
--- 
a/airflow-core/src/airflow/ui/src/layouts/Details/Graph/useGraphFilteredNodes.test.ts
+++ 
b/airflow-core/src/airflow/ui/src/layouts/Details/Graph/useGraphFilteredNodes.test.ts
@@ -1,5 +1,3 @@
-/* eslint-disable max-lines */
-
 /*!
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
diff --git 
a/airflow-core/src/airflow/ui/src/layouts/Details/Grid/useGridPagination.test.ts
 
b/airflow-core/src/airflow/ui/src/layouts/Details/Grid/useGridPagination.test.ts
index 78e2a7463ff..b8fae1ed1f2 100644
--- 
a/airflow-core/src/airflow/ui/src/layouts/Details/Grid/useGridPagination.test.ts
+++ 
b/airflow-core/src/airflow/ui/src/layouts/Details/Grid/useGridPagination.test.ts
@@ -1,5 +1,3 @@
-/* eslint-disable unicorn/no-null -- GridRunsResponse uses null for optional 
API fields */
-
 /*!
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
diff --git a/airflow-core/src/airflow/ui/src/layouts/Details/PanelButtons.tsx 
b/airflow-core/src/airflow/ui/src/layouts/Details/PanelButtons.tsx
index b8d82510339..0ea9e142279 100644
--- a/airflow-core/src/airflow/ui/src/layouts/Details/PanelButtons.tsx
+++ b/airflow-core/src/airflow/ui/src/layouts/Details/PanelButtons.tsx
@@ -1,5 +1,3 @@
-/* eslint-disable max-lines */
-
 /*!
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
diff --git 
a/airflow-core/src/airflow/ui/src/layouts/Details/TaskStreamFilter.tsx 
b/airflow-core/src/airflow/ui/src/layouts/Details/TaskStreamFilter.tsx
index 4d9337eb729..cf670870bf7 100644
--- a/airflow-core/src/airflow/ui/src/layouts/Details/TaskStreamFilter.tsx
+++ b/airflow-core/src/airflow/ui/src/layouts/Details/TaskStreamFilter.tsx
@@ -1,5 +1,3 @@
-/* eslint-disable max-lines */
-
 /*!
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
diff --git a/airflow-core/src/airflow/ui/src/mocks/handlers/dag.ts 
b/airflow-core/src/airflow/ui/src/mocks/handlers/dag.ts
index cd4a0eaee43..7fbe561e454 100644
--- a/airflow-core/src/airflow/ui/src/mocks/handlers/dag.ts
+++ b/airflow-core/src/airflow/ui/src/mocks/handlers/dag.ts
@@ -16,8 +16,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
-/* eslint-disable unicorn/no-null */
 import { http, HttpResponse, type HttpHandler } from "msw";
 
 export const MOCK_DAG = {
diff --git a/airflow-core/src/airflow/ui/src/mocks/handlers/dag_runs.ts 
b/airflow-core/src/airflow/ui/src/mocks/handlers/dag_runs.ts
index fe9083a3d76..ed55e14b019 100644
--- a/airflow-core/src/airflow/ui/src/mocks/handlers/dag_runs.ts
+++ b/airflow-core/src/airflow/ui/src/mocks/handlers/dag_runs.ts
@@ -16,8 +16,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
-/* eslint-disable unicorn/no-null */
 import { http, HttpResponse, type HttpHandler } from "msw";
 
 const dagRunBeforeFilter = {
diff --git a/airflow-core/src/airflow/ui/src/mocks/handlers/log.ts 
b/airflow-core/src/airflow/ui/src/mocks/handlers/log.ts
index 08fe507b66f..36bd52960b5 100644
--- a/airflow-core/src/airflow/ui/src/mocks/handlers/log.ts
+++ b/airflow-core/src/airflow/ui/src/mocks/handlers/log.ts
@@ -16,8 +16,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
-/* eslint-disable unicorn/no-null,max-lines */
 import { http, HttpResponse, type HttpHandler } from "msw";
 
 const ti = {
diff --git 
a/airflow-core/src/airflow/ui/src/pages/Dag/Calendar/calendarUtils.ts 
b/airflow-core/src/airflow/ui/src/pages/Dag/Calendar/calendarUtils.ts
index 3d4fbaab846..4597ca78831 100644
--- a/airflow-core/src/airflow/ui/src/pages/Dag/Calendar/calendarUtils.ts
+++ b/airflow-core/src/airflow/ui/src/pages/Dag/Calendar/calendarUtils.ts
@@ -1,5 +1,3 @@
-/* eslint-disable max-lines */
-
 /*!
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
diff --git a/airflow-core/src/airflow/ui/src/pages/Dag/Code/Code.tsx 
b/airflow-core/src/airflow/ui/src/pages/Dag/Code/Code.tsx
index a3dd224f890..53dc2ba55e4 100644
--- a/airflow-core/src/airflow/ui/src/pages/Dag/Code/Code.tsx
+++ b/airflow-core/src/airflow/ui/src/pages/Dag/Code/Code.tsx
@@ -16,8 +16,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
-/* eslint-disable max-lines */
 import { Box, Button, Heading, HStack, Link, VStack } from "@chakra-ui/react";
 import Editor, { type EditorProps } from "@monaco-editor/react";
 import { useState } from "react";
diff --git a/airflow-core/src/airflow/ui/src/pages/Dag/DagHeader.test.tsx 
b/airflow-core/src/airflow/ui/src/pages/Dag/DagHeader.test.tsx
index b0c57f4a4f7..faf1d1bc4ba 100644
--- a/airflow-core/src/airflow/ui/src/pages/Dag/DagHeader.test.tsx
+++ b/airflow-core/src/airflow/ui/src/pages/Dag/DagHeader.test.tsx
@@ -56,7 +56,6 @@ describe("Dag Documentation Modal", () => {
   it("Do not display documentation button only doc_md is not present", () => {
     render(
       <Wrapper>
-        {/* eslint-disable-next-line unicorn/no-null */}
         <Header dag={{ ...MOCK_DAG, doc_md: null } as unknown as 
DAGDetailsResponse} />
       </Wrapper>,
     );
diff --git a/airflow-core/src/airflow/ui/src/pages/Dag/Header.test.tsx 
b/airflow-core/src/airflow/ui/src/pages/Dag/Header.test.tsx
index 9d68c7b8e85..10fbf3169ee 100644
--- a/airflow-core/src/airflow/ui/src/pages/Dag/Header.test.tsx
+++ b/airflow-core/src/airflow/ui/src/pages/Dag/Header.test.tsx
@@ -39,7 +39,6 @@ const mockDag = {
   is_stale: true,
   last_parse_duration: 0.23,
   // `null` matches the API response shape for DAGs without version metadata.
-  // eslint-disable-next-line unicorn/no-null
   latest_dag_version: null,
   next_dagrun_logical_date: "2024-08-22T00:00:00+00:00",
   next_dagrun_run_after: "2024-08-22T19:00:00+00:00",
diff --git a/airflow-core/src/airflow/ui/src/pages/DagRuns.tsx 
b/airflow-core/src/airflow/ui/src/pages/DagRuns.tsx
index b2212a889cd..11cb870f77c 100644
--- a/airflow-core/src/airflow/ui/src/pages/DagRuns.tsx
+++ b/airflow-core/src/airflow/ui/src/pages/DagRuns.tsx
@@ -16,8 +16,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
-/* eslint-disable max-lines */
 import { Flex, HStack, Link, Text } from "@chakra-ui/react";
 import type { ColumnDef } from "@tanstack/react-table";
 import type { TFunction } from "i18next";
diff --git a/airflow-core/src/airflow/ui/src/pages/DagsList/DagCard.test.tsx 
b/airflow-core/src/airflow/ui/src/pages/DagsList/DagCard.test.tsx
index fb47e19d8e3..f43e392b035 100644
--- a/airflow-core/src/airflow/ui/src/pages/DagsList/DagCard.test.tsx
+++ b/airflow-core/src/airflow/ui/src/pages/DagsList/DagCard.test.tsx
@@ -1,5 +1,3 @@
-/* eslint-disable unicorn/no-null */
-
 /*!
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
diff --git a/airflow-core/src/airflow/ui/src/pages/DagsList/DagsList.tsx 
b/airflow-core/src/airflow/ui/src/pages/DagsList/DagsList.tsx
index dd5e59ec88b..acbe61dd80a 100644
--- a/airflow-core/src/airflow/ui/src/pages/DagsList/DagsList.tsx
+++ b/airflow-core/src/airflow/ui/src/pages/DagsList/DagsList.tsx
@@ -1,5 +1,3 @@
-/* eslint-disable max-lines */
-
 /*!
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
diff --git 
a/airflow-core/src/airflow/ui/src/pages/Dashboard/HistoricalMetrics/MetricSection.tsx
 
b/airflow-core/src/airflow/ui/src/pages/Dashboard/HistoricalMetrics/MetricSection.tsx
index 7d80a83bbf4..e0cfff1f01c 100644
--- 
a/airflow-core/src/airflow/ui/src/pages/Dashboard/HistoricalMetrics/MetricSection.tsx
+++ 
b/airflow-core/src/airflow/ui/src/pages/Dashboard/HistoricalMetrics/MetricSection.tsx
@@ -65,7 +65,6 @@ export const MetricSection = ({
       <Flex justify="space-between">
         <HStack>
           <RouterLink to={`/${kind}?${searchParams.toString()}`}>
-            {/* eslint-disable-next-line unicorn/no-null */}
             <StateBadge fontSize="md" state={state === "no_status" ? null : 
state}>
               {}
               {capped ? `${runs}+` : runs}
diff --git 
a/airflow-core/src/airflow/ui/src/pages/HITLTaskInstances/HITLResponseForm.test.tsx
 
b/airflow-core/src/airflow/ui/src/pages/HITLTaskInstances/HITLResponseForm.test.tsx
index ef670430f48..09d9f0efc84 100644
--- 
a/airflow-core/src/airflow/ui/src/pages/HITLTaskInstances/HITLResponseForm.test.tsx
+++ 
b/airflow-core/src/airflow/ui/src/pages/HITLTaskInstances/HITLResponseForm.test.tsx
@@ -1,5 +1,3 @@
-/* eslint-disable unicorn/no-null */
-
 /*!
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
diff --git a/airflow-core/src/airflow/ui/src/pages/TaskInstance/Details.tsx 
b/airflow-core/src/airflow/ui/src/pages/TaskInstance/Details.tsx
index 8750cb850bd..646fc36cdd9 100644
--- a/airflow-core/src/airflow/ui/src/pages/TaskInstance/Details.tsx
+++ b/airflow-core/src/airflow/ui/src/pages/TaskInstance/Details.tsx
@@ -97,7 +97,6 @@ export const Details = () => {
       )}
       <ExtraLinks refetchInterval={isStatePending(tryInstance?.state) ? 
refetchInterval : false} />
       {taskInstance === undefined ||
-      // eslint-disable-next-line unicorn/no-null
       ![null, "queued", "scheduled"].includes(taskInstance.state) ? undefined 
: (
         <BlockingDeps
           refetchInterval={isStatePending(tryInstance?.state) ? 
refetchInterval : false}
diff --git 
a/airflow-core/src/airflow/ui/src/pages/TaskInstance/Logs/Logs.test.tsx 
b/airflow-core/src/airflow/ui/src/pages/TaskInstance/Logs/Logs.test.tsx
index 76643755fe5..6619dbfa37d 100644
--- a/airflow-core/src/airflow/ui/src/pages/TaskInstance/Logs/Logs.test.tsx
+++ b/airflow-core/src/airflow/ui/src/pages/TaskInstance/Logs/Logs.test.tsx
@@ -16,8 +16,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
-/* eslint-disable max-lines */
 import "@testing-library/jest-dom";
 import { fireEvent, render, screen, waitFor } from "@testing-library/react";
 import { describe, it, expect, beforeAll } from "vitest";
diff --git 
a/airflow-core/src/airflow/ui/src/pages/TaskInstances/TaskInstances.tsx 
b/airflow-core/src/airflow/ui/src/pages/TaskInstances/TaskInstances.tsx
index 7748a3b2a07..2f75a9ab0ca 100644
--- a/airflow-core/src/airflow/ui/src/pages/TaskInstances/TaskInstances.tsx
+++ b/airflow-core/src/airflow/ui/src/pages/TaskInstances/TaskInstances.tsx
@@ -16,8 +16,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
-/* eslint-disable max-lines */
 import { Flex, Link } from "@chakra-ui/react";
 import type { ColumnDef } from "@tanstack/react-table";
 import type { TFunction } from "i18next";
diff --git a/airflow-core/src/airflow/ui/src/queries/useEditConnection.tsx 
b/airflow-core/src/airflow/ui/src/queries/useEditConnection.tsx
index 0b7b9cefd0a..fb0ebe6ad73 100644
--- a/airflow-core/src/airflow/ui/src/queries/useEditConnection.tsx
+++ b/airflow-core/src/airflow/ui/src/queries/useEditConnection.tsx
@@ -102,7 +102,6 @@ export const useEditConnection = (
         conn_type: requestBody.conn_type,
         connection_id: initialConnection.connection_id,
         extra: requestBody.extra === "{}" ? undefined : requestBody.extra,
-        // eslint-disable-next-line unicorn/no-null
         port: requestBody.port === "" ? null : Number(requestBody.port),
         team_name: teamName,
       },
diff --git a/airflow-core/src/airflow/ui/src/queries/useParamStore.ts 
b/airflow-core/src/airflow/ui/src/queries/useParamStore.ts
index 484197f92e1..68b182b4ac9 100644
--- a/airflow-core/src/airflow/ui/src/queries/useParamStore.ts
+++ b/airflow-core/src/airflow/ui/src/queries/useParamStore.ts
@@ -21,7 +21,6 @@ import { create } from "zustand";
 import type { ParamsSpec, ParamSpec } from "src/queries/useDagParams";
 
 export const paramPlaceholder: ParamSpec = {
-  // eslint-disable-next-line unicorn/no-null
   description: null,
   schema: {
     const: undefined,
@@ -80,7 +79,6 @@ const createParamStore = () =>
             updatedParamsDictEntries.push([
               key,
               {
-                // eslint-disable-next-line unicorn/no-null
                 description: baseParam.description ?? null,
                 schema: baseParam.schema,
                 value: parsedConf[key],
@@ -97,7 +95,6 @@ const createParamStore = () =>
             updatedParamsDictEntries.push([
               key,
               {
-                // eslint-disable-next-line unicorn/no-null
                 description: existingParam?.description ?? null,
                 schema: existingParam?.schema ?? paramPlaceholder.schema,
                 value,
diff --git a/airflow-core/src/airflow/ui/src/queries/useTrigger.ts 
b/airflow-core/src/airflow/ui/src/queries/useTrigger.ts
index 447b843def4..b421810597a 100644
--- a/airflow-core/src/airflow/ui/src/queries/useTrigger.ts
+++ b/airflow-core/src/airflow/ui/src/queries/useTrigger.ts
@@ -68,19 +68,16 @@ export const useTrigger = ({ dagId, onSuccessConfirm }: { 
dagId: string; onSucce
     const parsedConfig = JSON.parse(dagRunRequestBody.conf) as Record<string, 
unknown>;
 
     const logicalDate = dagRunRequestBody.logicalDate ? new 
Date(dagRunRequestBody.logicalDate) : undefined;
-    // eslint-disable-next-line unicorn/no-null
     const formattedLogicalDate = logicalDate?.toISOString() ?? null;
 
     const dataIntervalStart = dagRunRequestBody.dataIntervalStart
       ? new Date(dagRunRequestBody.dataIntervalStart)
       : undefined;
-    // eslint-disable-next-line unicorn/no-null
     const formattedDataIntervalStart = dataIntervalStart?.toISOString() ?? 
null;
 
     const dataIntervalEnd = dagRunRequestBody.dataIntervalEnd
       ? new Date(dagRunRequestBody.dataIntervalEnd)
       : undefined;
-    // eslint-disable-next-line unicorn/no-null
     const formattedDataIntervalEnd = dataIntervalEnd?.toISOString() ?? null;
 
     const checkDagRunId = dagRunRequestBody.dagRunId === "" ? undefined : 
dagRunRequestBody.dagRunId;
diff --git a/airflow-core/src/airflow/ui/src/theme.ts 
b/airflow-core/src/airflow/ui/src/theme.ts
index 15b34dda2c9..eaea0edfcb5 100644
--- a/airflow-core/src/airflow/ui/src/theme.ts
+++ b/airflow-core/src/airflow/ui/src/theme.ts
@@ -18,8 +18,6 @@
  */
 
 /* eslint-disable perfectionist/sort-objects */
-
-/* eslint-disable max-lines */
 import {
   createSystem,
   defaultConfig,
diff --git a/airflow-core/src/airflow/ui/src/utils/datetimeUtils.test.ts 
b/airflow-core/src/airflow/ui/src/utils/datetimeUtils.test.ts
index a0a39211257..4b166c976aa 100644
--- a/airflow-core/src/airflow/ui/src/utils/datetimeUtils.test.ts
+++ b/airflow-core/src/airflow/ui/src/utils/datetimeUtils.test.ts
@@ -57,10 +57,8 @@ describe("getDuration", () => {
   });
 
   it("handles small, null or undefined values", () => {
-    // eslint-disable-next-line unicorn/no-null
     expect(getDuration(null, null)).toBe(undefined);
     expect(getDuration(undefined, undefined)).toBe(undefined);
-    // eslint-disable-next-line unicorn/no-null
     expect(getDuration(null, "2024-03-14T10:00:10.000Z")).toBe(undefined);
     expect(renderDuration(0.000_01)).toBe(undefined);
   });
@@ -71,7 +69,6 @@ describe("getDuration", () => {
 
     const start = "2024-03-14T10:00:00.000Z";
 
-    // eslint-disable-next-line unicorn/no-null
     expect(getDuration(start, null)).toBe("00:00:10.000");
     expect(getDuration(start, undefined)).toBe("00:00:10.000");
 
diff --git a/airflow-core/src/airflow/ui/src/utils/logs.test.ts 
b/airflow-core/src/airflow/ui/src/utils/logs.test.ts
index 0308937c28b..0d7db12ecd8 100644
--- a/airflow-core/src/airflow/ui/src/utils/logs.test.ts
+++ b/airflow-core/src/airflow/ui/src/utils/logs.test.ts
@@ -49,7 +49,6 @@ describe("parseStreamingLogContent", () => {
   });
 
   it("returns empty array for null data", () => {
-    // eslint-disable-next-line unicorn/no-null
     const data = null as unknown as TaskInstancesLogResponse;
 
     expect(parseStreamingLogContent(data)).toEqual([]);
diff --git a/airflow-core/src/airflow/ui/tests/e2e/pages/DagsPage.ts 
b/airflow-core/src/airflow/ui/tests/e2e/pages/DagsPage.ts
index 7faedcfdb84..137afa39833 100644
--- a/airflow-core/src/airflow/ui/tests/e2e/pages/DagsPage.ts
+++ b/airflow-core/src/airflow/ui/tests/e2e/pages/DagsPage.ts
@@ -427,7 +427,6 @@ export class DagsPage extends BasePage {
       // Response parsing failed — return null so caller can handle.
     }
 
-    // eslint-disable-next-line unicorn/no-null
     return null;
   }
 


Reply via email to