You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by mi...@apache.org on 2023/10/04 18:18:55 UTC

[superset] 03/03: chore: Expand error detail on screencapture (#25519)

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

michaelsmolina pushed a commit to branch 3.0
in repository https://gitbox.apache.org/repos/asf/superset.git

commit 220dc58fe07740a499cdb1d1c050dd53d06d2e8a
Author: JUST.in DO IT <ju...@airbnb.com>
AuthorDate: Wed Oct 4 11:06:22 2023 -0700

    chore: Expand error detail on screencapture (#25519)
    
    (cherry picked from commit ba541e802278bde10f77a543b66a9b4da3bc15cf)
---
 .../components/ErrorMessage/ErrorAlert.test.tsx    | 24 ++++++++++++++++++++++
 .../src/components/ErrorMessage/ErrorAlert.tsx     |  6 ++++--
 2 files changed, 28 insertions(+), 2 deletions(-)

diff --git a/superset-frontend/src/components/ErrorMessage/ErrorAlert.test.tsx b/superset-frontend/src/components/ErrorMessage/ErrorAlert.test.tsx
index 38006c2ec4..2c2f1c2349 100644
--- a/superset-frontend/src/components/ErrorMessage/ErrorAlert.test.tsx
+++ b/superset-frontend/src/components/ErrorMessage/ErrorAlert.test.tsx
@@ -21,6 +21,7 @@ import React from 'react';
 import userEvent from '@testing-library/user-event';
 import { render, screen } from 'spec/helpers/testing-library';
 import { supersetTheme } from '@superset-ui/core';
+import { isCurrentUserBot } from 'src/utils/isBot';
 import ErrorAlert from './ErrorAlert';
 import { ErrorLevel, ErrorSource } from './types';
 
@@ -31,6 +32,10 @@ jest.mock(
       <span role="img" aria-label={fileName.replace('_', '-')} />,
 );
 
+jest.mock('src/utils/isBot', () => ({
+  isCurrentUserBot: jest.fn(),
+}));
+
 const mockedProps = {
   body: 'Error body',
   level: 'warning' as ErrorLevel,
@@ -41,6 +46,14 @@ const mockedProps = {
   description: 'we are unable to connect db.',
 };
 
+beforeEach(() => {
+  (isCurrentUserBot as jest.Mock).mockReturnValue(false);
+});
+
+afterEach(() => {
+  jest.clearAllMocks();
+});
+
 test('should render', () => {
   const { container } = render(<ErrorAlert {...mockedProps} />);
   expect(container).toBeInTheDocument();
@@ -100,6 +113,17 @@ test('should render the See more button', () => {
   expect(screen.getByText('See more')).toBeInTheDocument();
 });
 
+test('should render the error subtitle and body defaultly for the screen capture request', () => {
+  const seemoreProps = {
+    ...mockedProps,
+    source: 'explore' as ErrorSource,
+  };
+  (isCurrentUserBot as jest.Mock).mockReturnValue(true);
+  render(<ErrorAlert {...seemoreProps} />);
+  expect(screen.getByText('Error subtitle')).toBeInTheDocument();
+  expect(screen.getByText('Error body')).toBeInTheDocument();
+});
+
 test('should render the modal', () => {
   render(<ErrorAlert {...mockedProps} />, { useRedux: true });
   const button = screen.getByText('See more');
diff --git a/superset-frontend/src/components/ErrorMessage/ErrorAlert.tsx b/superset-frontend/src/components/ErrorMessage/ErrorAlert.tsx
index cf2522b4e4..d61abea597 100644
--- a/superset-frontend/src/components/ErrorMessage/ErrorAlert.tsx
+++ b/superset-frontend/src/components/ErrorMessage/ErrorAlert.tsx
@@ -21,6 +21,7 @@ import { styled, useTheme, t } from '@superset-ui/core';
 import { noOp } from 'src/utils/common';
 import Modal from 'src/components/Modal';
 import Button from 'src/components/Button';
+import { isCurrentUserBot } from 'src/utils/isBot';
 
 import Icons from 'src/components/Icons';
 import { ErrorLevel, ErrorSource } from './types';
@@ -102,9 +103,10 @@ export default function ErrorAlert({
   const theme = useTheme();
 
   const [isModalOpen, setIsModalOpen] = useState(false);
-  const [isBodyExpanded, setIsBodyExpanded] = useState(false);
+  const [isBodyExpanded, setIsBodyExpanded] = useState(isCurrentUserBot());
 
-  const isExpandable = ['explore', 'sqllab'].includes(source);
+  const isExpandable =
+    isCurrentUserBot() || ['explore', 'sqllab'].includes(source);
   const iconColor = theme.colors[level].base;
 
   return (