From 48d287612719fa1e3b545e3b7e89900f387b526b Mon Sep 17 00:00:00 2001 From: pierrejeambrun Date: Wed, 17 Aug 2022 15:21:42 +0200 Subject: [PATCH] Use cfg default_wrap value for grid logs (#25731) * Use cfg default_wrap value for grid logs * Use meta tag to pass default_wrap data to the grid --- .../details/taskInstance/Logs/index.test.tsx | 33 +++++++++++++++++++ .../dag/details/taskInstance/Logs/index.tsx | 4 ++- airflow/www/templates/airflow/grid.html | 1 + airflow/www/views.py | 1 + 4 files changed, 38 insertions(+), 1 deletion(-) diff --git a/airflow/www/static/js/dag/details/taskInstance/Logs/index.test.tsx b/airflow/www/static/js/dag/details/taskInstance/Logs/index.test.tsx index 6c11c59305787..d44f318b05cf3 100644 --- a/airflow/www/static/js/dag/details/taskInstance/Logs/index.test.tsx +++ b/airflow/www/static/js/dag/details/taskInstance/Logs/index.test.tsx @@ -23,6 +23,7 @@ import React from 'react'; import { render, fireEvent } from '@testing-library/react'; import type { UseQueryResult } from 'react-query'; +import * as utils from 'src/utils'; import * as useTaskLogModule from 'src/api/useTaskLog'; import Logs from './index'; @@ -88,6 +89,38 @@ describe('Test Logs Component.', () => { }); }); + test.each([ + { defaultWrap: 'True', shouldBeChecked: true }, + { defaultWrap: 'False', shouldBeChecked: false }, + { defaultWrap: '', shouldBeChecked: false }, + ])('Test wrap checkbox initial value $defaultWrap', ({ defaultWrap, shouldBeChecked }) => { + jest.spyOn(utils, 'getMetaValue').mockImplementation( + (meta) => { + if (meta === 'default_wrap') return defaultWrap; + return ''; + }, + ); + + const tryNumber = 2; + const { getByTestId } = render( + , + ); + + const wrapCheckbox = getByTestId('wrap-checkbox'); + if (shouldBeChecked) { + expect(wrapCheckbox).toHaveAttribute('data-checked'); + } else { + expect(wrapCheckbox.getAttribute('data-checked')).toBeNull(); + } + }); + test('Test Logs Content Mapped Task', () => { const tryNumber = 2; const { getByText } = render( diff --git a/airflow/www/static/js/dag/details/taskInstance/Logs/index.tsx b/airflow/www/static/js/dag/details/taskInstance/Logs/index.tsx index 9a2b33205a572..d6e8c5fcac71d 100644 --- a/airflow/www/static/js/dag/details/taskInstance/Logs/index.tsx +++ b/airflow/www/static/js/dag/details/taskInstance/Logs/index.tsx @@ -100,7 +100,7 @@ const Logs = ({ const [internalIndexes, externalIndexes] = getLinkIndexes(tryNumber); const [selectedAttempt, setSelectedAttempt] = useState(1); const [shouldRequestFullContent, setShouldRequestFullContent] = useState(false); - const [wrap, setWrap] = useState(false); + const [wrap, setWrap] = useState(getMetaValue('default_wrap') === 'True'); const [logLevelFilters, setLogLevelFilters] = useState>([]); const [fileSourceFilters, setFileSourceFilters] = useState>([]); const { timezone } = useTimezone(); @@ -216,8 +216,10 @@ const Logs = ({ setWrap((previousState) => !previousState)} px={4} + data-testid="wrap-checkbox" > Wrap diff --git a/airflow/www/templates/airflow/grid.html b/airflow/www/templates/airflow/grid.html index f72e0ed4f1704..94ce4bc23677b 100644 --- a/airflow/www/templates/airflow/grid.html +++ b/airflow/www/templates/airflow/grid.html @@ -26,6 +26,7 @@ + {% endblock %} {% block content %} diff --git a/airflow/www/views.py b/airflow/www/views.py index c47c7937f0ef2..0604437ad8868 100644 --- a/airflow/www/views.py +++ b/airflow/www/views.py @@ -2745,6 +2745,7 @@ def grid(self, dag_id, session=None): dag_model=dag_model, auto_refresh_interval=conf.getint('webserver', 'auto_refresh_interval'), default_dag_run_display_number=default_dag_run_display_number, + default_wrap=conf.getboolean('webserver', 'default_wrap'), filters_drop_down_values=htmlsafe_json_dumps( { "taskStates": [state.value for state in TaskInstanceState],