From e325958a6d07bfa9041a9827d0a28e2938314de9 Mon Sep 17 00:00:00 2001 From: Ankita Kinger Date: Fri, 29 Nov 2024 12:42:47 +0530 Subject: [PATCH 1/9] opening the response tab by default for APIs --- .../PluginActionResponse.tsx | 12 ++++++++++-- .../editorComponents/ApiResponseView.tsx | 18 ++++++++++++++++-- 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/app/client/src/PluginActionEditor/components/PluginActionResponse/PluginActionResponse.tsx b/app/client/src/PluginActionEditor/components/PluginActionResponse/PluginActionResponse.tsx index 45244f48010c..9866145ad7c8 100644 --- a/app/client/src/PluginActionEditor/components/PluginActionResponse/PluginActionResponse.tsx +++ b/app/client/src/PluginActionEditor/components/PluginActionResponse/PluginActionResponse.tsx @@ -12,6 +12,7 @@ import { usePluginActionContext } from "../../PluginActionContext"; import { doesPluginRequireDatasource } from "ee/entities/Engine/actionHelpers"; import useShowSchema from "./hooks/useShowSchema"; import { actionResponseDisplayDataFormats } from "pages/Editor/utils"; +import { PluginType } from "entities/Action"; function PluginActionResponse() { const dispatch = useDispatch(); @@ -55,7 +56,7 @@ function PluginActionResponse() { ); useEffect( - function openSchemaTabWhenNoTabIsSelected() { + function openDefaultTabWhenNoTabIsSelected() { if (showSchema && !selectedTab) { dispatch( setPluginActionEditorDebuggerState({ @@ -63,9 +64,16 @@ function PluginActionResponse() { selectedTab: DEBUGGER_TAB_KEYS.SCHEMA_TAB, }), ); + } else if (plugin.type === PluginType.API && !selectedTab) { + dispatch( + setPluginActionEditorDebuggerState({ + open: true, + selectedTab: DEBUGGER_TAB_KEYS.RESPONSE_TAB, + }), + ); } }, - [showSchema, selectedTab, dispatch], + [showSchema, selectedTab, dispatch, plugin.type], ); const toggleHide = useCallback( diff --git a/app/client/src/components/editorComponents/ApiResponseView.tsx b/app/client/src/components/editorComponents/ApiResponseView.tsx index ef01cbd7d9ce..4ecc730757ed 100644 --- a/app/client/src/components/editorComponents/ApiResponseView.tsx +++ b/app/client/src/components/editorComponents/ApiResponseView.tsx @@ -1,4 +1,4 @@ -import React, { useCallback } from "react"; +import React, { useCallback, useEffect } from "react"; import { useDispatch, useSelector } from "react-redux"; import type { ActionResponse } from "api/ActionAPI"; import { @@ -17,7 +17,7 @@ import EntityBottomTabs from "./EntityBottomTabs"; import { DEBUGGER_TAB_KEYS } from "./Debugger/constants"; import { getErrorCount } from "selectors/debuggerSelectors"; import { ActionExecutionResizerHeight } from "PluginActionEditor/components/PluginActionResponse/constants"; -import type { Action } from "entities/Action"; +import { PluginType, type Action } from "entities/Action"; import { EMPTY_RESPONSE } from "./emptyResponse"; import { getPluginActionDebuggerState, @@ -58,6 +58,20 @@ function ApiResponseView(props: Props) { const onDebugClick = useDebuggerTriggerClick(); + useEffect( + function openDefaultTabWhenNoTabIsSelected() { + if (currentActionConfig.pluginType === PluginType.API && !selectedTab) { + dispatch( + setPluginActionEditorDebuggerState({ + open: true, + selectedTab: DEBUGGER_TAB_KEYS.RESPONSE_TAB, + }), + ); + } + }, + [selectedTab, dispatch, currentActionConfig.pluginType], + ); + const onRunClick = () => { props.onRunClick(); AnalyticsUtil.logEvent("RESPONSE_TAB_RUN_ACTION_CLICK", { From adab9c502a99bfc85a98ed8fccf51bc2389f2621 Mon Sep 17 00:00:00 2001 From: Ankita Kinger Date: Fri, 29 Nov 2024 16:15:49 +0530 Subject: [PATCH 2/9] adding error message in API response tab --- .../PluginActionResponse/components/ApiResponse.tsx | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/app/client/src/PluginActionEditor/components/PluginActionResponse/components/ApiResponse.tsx b/app/client/src/PluginActionEditor/components/PluginActionResponse/components/ApiResponse.tsx index a33f161f4775..e67163dfc923 100644 --- a/app/client/src/PluginActionEditor/components/PluginActionResponse/components/ApiResponse.tsx +++ b/app/client/src/PluginActionEditor/components/PluginActionResponse/components/ApiResponse.tsx @@ -46,14 +46,14 @@ export const ResponseTabErrorContainer = styled.div` height: fit-content; background: var(--ads-v2-color-bg-error); border-bottom: 1px solid var(--ads-v2-color-border); + font-size: 12px; + line-height: 16px; `; export const ResponseTabErrorContent = styled.div` display: flex; align-items: flex-start; gap: 4px; - font-size: 12px; - line-height: 16px; `; export const ResponseTabErrorDefaultMessage = styled.div` @@ -93,7 +93,7 @@ export function ApiResponse(props: { ); } - const { messages, pluginErrorDetails, request } = props.actionResponse; + const { body, messages, pluginErrorDetails, request } = props.actionResponse; const runHasFailed = hasFailed(props.actionResponse); const requestWithTimestamp = getUpdateTimestamp(request); @@ -121,7 +121,7 @@ export function ApiResponse(props: { Your API failed to execute - {pluginErrorDetails && ":"} + {(pluginErrorDetails || body) && ":"} {pluginErrorDetails && ( <> @@ -142,6 +142,9 @@ export function ApiResponse(props: { source={actionSource} /> + {body && ( +
{body}
+ )} {requestWithTimestamp && ( From 78c6e44263aec99a70a8fe49921d29332b248b90 Mon Sep 17 00:00:00 2001 From: Ankita Kinger Date: Fri, 29 Nov 2024 16:46:49 +0530 Subject: [PATCH 3/9] opening the response tab when the execution has errored out --- .../PluginActionResponse.tsx | 22 ++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/app/client/src/PluginActionEditor/components/PluginActionResponse/PluginActionResponse.tsx b/app/client/src/PluginActionEditor/components/PluginActionResponse/PluginActionResponse.tsx index 9866145ad7c8..4dcc504442e3 100644 --- a/app/client/src/PluginActionEditor/components/PluginActionResponse/PluginActionResponse.tsx +++ b/app/client/src/PluginActionEditor/components/PluginActionResponse/PluginActionResponse.tsx @@ -1,4 +1,4 @@ -import React, { useCallback, useEffect } from "react"; +import React, { useCallback, useEffect, useMemo } from "react"; import { IDEBottomView, ViewHideBehaviour } from "IDE"; import { ActionExecutionResizerHeight } from "./constants"; import EntityBottomTabs from "components/editorComponents/EntityBottomTabs"; @@ -13,6 +13,7 @@ import { doesPluginRequireDatasource } from "ee/entities/Engine/actionHelpers"; import useShowSchema from "./hooks/useShowSchema"; import { actionResponseDisplayDataFormats } from "pages/Editor/utils"; import { PluginType } from "entities/Action"; +import { hasFailed } from "./utils"; function PluginActionResponse() { const dispatch = useDispatch(); @@ -31,6 +32,11 @@ function PluginActionResponse() { const { responseDisplayFormat } = actionResponseDisplayDataFormats(actionResponse); + const executionFailed = useMemo( + () => (actionResponse ? hasFailed(actionResponse) : false), + [actionResponse], + ); + // These useEffects are used to open the response tab by default for page load queries // as for page load queries, query response is available and can be shown in response tab useEffect( @@ -55,6 +61,20 @@ function PluginActionResponse() { ], ); + useEffect( + function openResponseTabOnError() { + if (executionFailed) { + dispatch( + setPluginActionEditorDebuggerState({ + open: true, + selectedTab: DEBUGGER_TAB_KEYS.RESPONSE_TAB, + }), + ); + } + }, + [executionFailed, dispatch], + ); + useEffect( function openDefaultTabWhenNoTabIsSelected() { if (showSchema && !selectedTab) { From bbd201fc1a010b376c4137ba8f571c035bf061ec Mon Sep 17 00:00:00 2001 From: Ankita Kinger Date: Fri, 29 Nov 2024 17:04:39 +0530 Subject: [PATCH 4/9] removing the debug button on the callout and response headers in the header tab --- .../components/ApiResponseHeaders.tsx | 39 +++++++------------ 1 file changed, 14 insertions(+), 25 deletions(-) diff --git a/app/client/src/PluginActionEditor/components/PluginActionResponse/components/ApiResponseHeaders.tsx b/app/client/src/PluginActionEditor/components/PluginActionResponse/components/ApiResponseHeaders.tsx index 7f055d5bc4f3..01abd8c20838 100644 --- a/app/client/src/PluginActionEditor/components/PluginActionResponse/components/ApiResponseHeaders.tsx +++ b/app/client/src/PluginActionEditor/components/PluginActionResponse/components/ApiResponseHeaders.tsx @@ -55,17 +55,6 @@ export function ApiResponseHeaders(props: { return headersTransformer(props.actionResponse?.headers); }, [props.actionResponse?.headers]); - const errorCalloutLinks = useMemo(() => { - return [ - { - children: "Debug", - endIcon: "bug", - onClick: props.onDebugClick, - to: "", - }, - ]; - }, [props.onDebugClick]); - const headersInput = useMemo(() => { return { value: !isEmpty(responseHeaders) @@ -91,21 +80,21 @@ export function ApiResponseHeaders(props: { return ( {runHasFailed && !props.isRunning && ( - - {createMessage(CHECK_REQUEST_BODY)} - + {createMessage(CHECK_REQUEST_BODY)} + )} + {!runHasFailed && ( + + {isEmpty(props.actionResponse.statusCode) ? ( + + ) : ( + + )} + )} - - {isEmpty(props.actionResponse.statusCode) ? ( - - ) : ( - - )} - ); } From cc42a5972c8c88012613416cd66cfbf475d3a275 Mon Sep 17 00:00:00 2001 From: Ankita Kinger Date: Sat, 30 Nov 2024 01:07:33 +0530 Subject: [PATCH 5/9] fix for instance breaking down when API errors out --- .../components/ApiResponse.tsx | 87 +++++++++++-------- 1 file changed, 51 insertions(+), 36 deletions(-) diff --git a/app/client/src/PluginActionEditor/components/PluginActionResponse/components/ApiResponse.tsx b/app/client/src/PluginActionEditor/components/PluginActionResponse/components/ApiResponse.tsx index e67163dfc923..4b92fcff6d62 100644 --- a/app/client/src/PluginActionEditor/components/PluginActionResponse/components/ApiResponse.tsx +++ b/app/client/src/PluginActionEditor/components/PluginActionResponse/components/ApiResponse.tsx @@ -21,6 +21,8 @@ import { getUpdateTimestamp } from "components/editorComponents/Debugger/ErrorLo import { ENTITY_TYPE } from "ee/entities/AppsmithConsole/utils"; import ApiFormatSegmentedResponse from "./ApiFormatSegmentedResponse"; import { NoResponse } from "./NoResponse"; +import { useSelector } from "react-redux"; +import { getFilteredErrors } from "selectors/debuggerSelectors"; const HelpSection = styled.div` padding-bottom: 5px; @@ -71,7 +73,19 @@ export function ApiResponse(props: { onRunClick: () => void; responseTabHeight: number; }) { - const { id, name } = props.action; + const { + action, + actionResponse, + isRunDisabled, + isRunning, + onRunClick, + responseTabHeight, + theme, + } = props; + const { id, name } = action; + + const errors = useSelector(getFilteredErrors); + const actionSource: SourceEntity = useMemo( () => ({ type: ENTITY_TYPE.ACTION, @@ -81,29 +95,26 @@ export function ApiResponse(props: { [name, id], ); - if (!props.actionResponse) { + if (!actionResponse) { return ( ); } - const { body, messages, pluginErrorDetails, request } = props.actionResponse; + const { body, messages, pluginErrorDetails, request } = actionResponse; - const runHasFailed = hasFailed(props.actionResponse); + const runHasFailed = hasFailed(actionResponse); const requestWithTimestamp = getUpdateTimestamp(request); return ( - + {Array.isArray(messages) && messages.length > 0 && ( {messages.map((message, i) => ( @@ -113,28 +124,35 @@ export function ApiResponse(props: { ))} )} - {props.isRunning && ( - + {isRunning && ( + )} - {runHasFailed && !props.isRunning ? ( + {runHasFailed && !isRunning ? ( Your API failed to execute - {(pluginErrorDetails || body) && ":"} + {actionResponse && (pluginErrorDetails || body) && ":"} - {pluginErrorDetails && ( - <> -
- {pluginErrorDetails.downstreamErrorMessage} -
- {pluginErrorDetails.downstreamErrorCode && ( - - )} - - )} + {actionResponse && + (pluginErrorDetails ? ( + <> +
+ {pluginErrorDetails.downstreamErrorMessage} +
+ {pluginErrorDetails.downstreamErrorCode && ( + + )} + + ) : ( + errors?.[action.id]?.messages?.[0].message.message && ( +
+ {errors?.[action.id]?.messages?.[0].message.message} +
+ ) + ))}
- {body && ( -
{body}
- )} {requestWithTimestamp && ( @@ -153,17 +168,17 @@ export function ApiResponse(props: {
) : ( - {isEmpty(props.actionResponse.statusCode) ? ( + {isEmpty(actionResponse.statusCode) ? ( ) : ( )} From 2985ea9ad523e6f7a26fc5e86239556923a1aa9c Mon Sep 17 00:00:00 2001 From: Ankita Kinger Date: Sun, 1 Dec 2024 19:50:15 +0530 Subject: [PATCH 6/9] fixing cypress tests --- .../ClientSide/OtherUIFeatures/ApiError_spec.ts | 4 ++-- .../ClientSide/OtherUIFeatures/EntityBottomBar_spec.ts | 8 ++++---- app/client/cypress/support/Pages/ApiPage.ts | 6 ++---- .../components/QueryResponseTab/styles.ts | 1 + 4 files changed, 9 insertions(+), 10 deletions(-) diff --git a/app/client/cypress/e2e/Regression/ClientSide/OtherUIFeatures/ApiError_spec.ts b/app/client/cypress/e2e/Regression/ClientSide/OtherUIFeatures/ApiError_spec.ts index 622e3eee2419..f489e2757d07 100644 --- a/app/client/cypress/e2e/Regression/ClientSide/OtherUIFeatures/ApiError_spec.ts +++ b/app/client/cypress/e2e/Regression/ClientSide/OtherUIFeatures/ApiError_spec.ts @@ -12,12 +12,12 @@ describe( // Create api that causes an error _.apiPage.CreateAndFillApi("https://fakeapi/user"); }); - it("it shows error message", () => { + it("it shows error message in response tab", () => { _.apiPage.RunAPI(false); _.debuggerHelper.AssertOpen(PageType.API); _.apiPage.ResponseStatusCheck("PE-RST-5000"); }); - it("it shows debug button and navigates", () => { + it("it shows error messages in error tab", () => { _.apiPage.DebugError(); _.debuggerHelper.AssertSelectedTab( Cypress.env("MESSAGES").DEBUGGER_ERRORS(), diff --git a/app/client/cypress/e2e/Regression/ClientSide/OtherUIFeatures/EntityBottomBar_spec.ts b/app/client/cypress/e2e/Regression/ClientSide/OtherUIFeatures/EntityBottomBar_spec.ts index 806170b30ff9..b60cf975d629 100644 --- a/app/client/cypress/e2e/Regression/ClientSide/OtherUIFeatures/EntityBottomBar_spec.ts +++ b/app/client/cypress/e2e/Regression/ClientSide/OtherUIFeatures/EntityBottomBar_spec.ts @@ -102,13 +102,13 @@ describe( //Create and run query. _.dataSources.EnterQuery( - "SELECT * FROM users ORDER BY id LIMIT 10;", + "SELECT * FROM public.users ORDER BY id LIMIT 10;", 1000, ); _.dataSources.RunQuery(); //Verify if bottom bar is open on executing query. _.debuggerHelper.AssertOpen(PageType.Query); - //Verify if response atb is selected on executing query. + //Verify if response tab is selected on executing query. _.debuggerHelper.AssertSelectedTab( Cypress.env("MESSAGES").DEBUGGER_RESPONSE(), ); @@ -140,13 +140,13 @@ describe( _.debuggerHelper.AssertClosed(); //Create and run query. _.dataSources.EnterQuery( - "SELECT * FROM users ORDER BY id LIMIT 10;", + "SELECT * FROM public.users ORDER BY id LIMIT 10;", 1000, ); _.dataSources.RunQuery(); //Verify if bottom bar is open on executing query. _.debuggerHelper.AssertOpen(PageType.Query); - //Verify if response atb is selected on executing query. + //Verify if response tab is selected on executing query. _.debuggerHelper.AssertSelectedTab( Cypress.env("MESSAGES").DEBUGGER_RESPONSE(), ); diff --git a/app/client/cypress/support/Pages/ApiPage.ts b/app/client/cypress/support/Pages/ApiPage.ts index 57b7d33abbb7..61e6d8e3c2a6 100644 --- a/app/client/cypress/support/Pages/ApiPage.ts +++ b/app/client/cypress/support/Pages/ApiPage.ts @@ -82,8 +82,7 @@ export class ApiPage { private _paginationTypeLabels = ".t--apiFormPaginationType label"; _saveAsDS = ".t--store-as-datasource"; _responseStatus = ".t--response-status-code"; - public _responseTabHeader = "[data-testid=t--tab-HEADERS_TAB]"; - public _headersTabContent = ".t--headers-tab"; + public _responseTabError = "[data-testid=t--tab-ERROR_TAB]"; public _autoGeneratedHeaderInfoIcon = (key: string) => `.t--auto-generated-${key}-info`; _nextCursorValue = ".t--apiFormPaginationNextCursorValue"; @@ -471,8 +470,7 @@ export class ApiPage { } DebugError() { - this.agHelper.GetNClick(this._responseTabHeader); - cy.get(this._headersTabContent).contains("Debug").click(); + this.agHelper.GetNClick(this._responseTabError); } public FillCurlNImport(value: string) { diff --git a/app/client/src/PluginActionEditor/components/PluginActionResponse/components/QueryResponseTab/styles.ts b/app/client/src/PluginActionEditor/components/PluginActionResponse/components/QueryResponseTab/styles.ts index a94fde58c5e1..9a132cdcd609 100644 --- a/app/client/src/PluginActionEditor/components/PluginActionResponse/components/QueryResponseTab/styles.ts +++ b/app/client/src/PluginActionEditor/components/PluginActionResponse/components/QueryResponseTab/styles.ts @@ -33,6 +33,7 @@ export const StatusBar = styled.div` padding: 8px; border-bottom: 1px solid var(--ads-v2-color-border); z-index: var(--ads-v2-z-index-1); + background: var(--ads-v2-color-bg); `; export const StatusBarInfo = styled.div` From 94ce98dfc615212134f7489f64c1c41f38a12574 Mon Sep 17 00:00:00 2001 From: Ankita Kinger Date: Sun, 1 Dec 2024 23:30:10 +0530 Subject: [PATCH 7/9] fixing cypress tests --- app/client/cypress/support/Pages/ApiPage.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/client/cypress/support/Pages/ApiPage.ts b/app/client/cypress/support/Pages/ApiPage.ts index 61e6d8e3c2a6..fc072b8dfc46 100644 --- a/app/client/cypress/support/Pages/ApiPage.ts +++ b/app/client/cypress/support/Pages/ApiPage.ts @@ -82,7 +82,7 @@ export class ApiPage { private _paginationTypeLabels = ".t--apiFormPaginationType label"; _saveAsDS = ".t--store-as-datasource"; _responseStatus = ".t--response-status-code"; - public _responseTabError = "[data-testid=t--tab-ERROR_TAB]"; + public _debugger = ".t--debugger-count"; public _autoGeneratedHeaderInfoIcon = (key: string) => `.t--auto-generated-${key}-info`; _nextCursorValue = ".t--apiFormPaginationNextCursorValue"; @@ -470,7 +470,7 @@ export class ApiPage { } DebugError() { - this.agHelper.GetNClick(this._responseTabError); + this.agHelper.GetNClick(this._debugger); } public FillCurlNImport(value: string) { From d6763ca031a3d2fbeffc2f1ff93cf710b923d356 Mon Sep 17 00:00:00 2001 From: Ankita Kinger Date: Mon, 2 Dec 2024 19:04:37 +0530 Subject: [PATCH 8/9] reverting the logic to show error messages in response tab --- .../components/ApiResponse.tsx | 88 ++++++++----------- 1 file changed, 35 insertions(+), 53 deletions(-) diff --git a/app/client/src/PluginActionEditor/components/PluginActionResponse/components/ApiResponse.tsx b/app/client/src/PluginActionEditor/components/PluginActionResponse/components/ApiResponse.tsx index 4b92fcff6d62..a33f161f4775 100644 --- a/app/client/src/PluginActionEditor/components/PluginActionResponse/components/ApiResponse.tsx +++ b/app/client/src/PluginActionEditor/components/PluginActionResponse/components/ApiResponse.tsx @@ -21,8 +21,6 @@ import { getUpdateTimestamp } from "components/editorComponents/Debugger/ErrorLo import { ENTITY_TYPE } from "ee/entities/AppsmithConsole/utils"; import ApiFormatSegmentedResponse from "./ApiFormatSegmentedResponse"; import { NoResponse } from "./NoResponse"; -import { useSelector } from "react-redux"; -import { getFilteredErrors } from "selectors/debuggerSelectors"; const HelpSection = styled.div` padding-bottom: 5px; @@ -48,14 +46,14 @@ export const ResponseTabErrorContainer = styled.div` height: fit-content; background: var(--ads-v2-color-bg-error); border-bottom: 1px solid var(--ads-v2-color-border); - font-size: 12px; - line-height: 16px; `; export const ResponseTabErrorContent = styled.div` display: flex; align-items: flex-start; gap: 4px; + font-size: 12px; + line-height: 16px; `; export const ResponseTabErrorDefaultMessage = styled.div` @@ -73,19 +71,7 @@ export function ApiResponse(props: { onRunClick: () => void; responseTabHeight: number; }) { - const { - action, - actionResponse, - isRunDisabled, - isRunning, - onRunClick, - responseTabHeight, - theme, - } = props; - const { id, name } = action; - - const errors = useSelector(getFilteredErrors); - + const { id, name } = props.action; const actionSource: SourceEntity = useMemo( () => ({ type: ENTITY_TYPE.ACTION, @@ -95,26 +81,29 @@ export function ApiResponse(props: { [name, id], ); - if (!actionResponse) { + if (!props.actionResponse) { return ( ); } - const { body, messages, pluginErrorDetails, request } = actionResponse; + const { messages, pluginErrorDetails, request } = props.actionResponse; - const runHasFailed = hasFailed(actionResponse); + const runHasFailed = hasFailed(props.actionResponse); const requestWithTimestamp = getUpdateTimestamp(request); return ( - + {Array.isArray(messages) && messages.length > 0 && ( {messages.map((message, i) => ( @@ -124,35 +113,28 @@ export function ApiResponse(props: { ))} )} - {isRunning && ( - + {props.isRunning && ( + )} - {runHasFailed && !isRunning ? ( + {runHasFailed && !props.isRunning ? ( Your API failed to execute - {actionResponse && (pluginErrorDetails || body) && ":"} + {pluginErrorDetails && ":"} - {actionResponse && - (pluginErrorDetails ? ( - <> -
- {pluginErrorDetails.downstreamErrorMessage} -
- {pluginErrorDetails.downstreamErrorCode && ( - - )} - - ) : ( - errors?.[action.id]?.messages?.[0].message.message && ( -
- {errors?.[action.id]?.messages?.[0].message.message} -
- ) - ))} + {pluginErrorDetails && ( + <> +
+ {pluginErrorDetails.downstreamErrorMessage} +
+ {pluginErrorDetails.downstreamErrorCode && ( + + )} + + )} ) : ( - {isEmpty(actionResponse.statusCode) ? ( + {isEmpty(props.actionResponse.statusCode) ? ( ) : ( )} From 0690211f800916c9708df871499a14bd3dc24a79 Mon Sep 17 00:00:00 2001 From: albinAppsmith <87797149+albinAppsmith@users.noreply.github.com> Date: Thu, 5 Dec 2024 12:29:42 +0530 Subject: [PATCH 9/9] fix: updated visual test for JSEditorIndent_spec.js --- .../formattedJSONBodyAfterSave.snap.png | Bin 23715 -> 23618 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/app/client/cypress/snapshots/Regression/ClientSide/VisualTests/JSEditorIndent_spec.js/formattedJSONBodyAfterSave.snap.png b/app/client/cypress/snapshots/Regression/ClientSide/VisualTests/JSEditorIndent_spec.js/formattedJSONBodyAfterSave.snap.png index 98487c154a1aeb333efac9f5974f6cabc383cdcf..e6cb6a8b13d3efd9a6053f3df0ae5f5123ad8e21 100644 GIT binary patch literal 23618 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 QdxIO`z5%>*+%F{m0;|zFlK=n! literal 23715 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