You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by ri...@apache.org on 2026/02/06 00:42:55 UTC
(superset) 01/01: fix: remove deprecated testing library hook and simplify menu ref caching
This is an automated email from the ASF dual-hosted git repository.
richardfogaca pushed a commit to branch feat/auto-refresh-dashboard
in repository https://gitbox.apache.org/repos/asf/superset.git
commit 53a4170c52f810881ac1a04a006cd0beea22ad13
Author: richard <ri...@richards-MacBook-Pro-2.local>
AuthorDate: Thu Feb 5 21:42:38 2026 -0300
fix: remove deprecated testing library hook and simplify menu ref caching
- Replace @testing-library/react-hook with @testing-library/react
- Remove redundant menuRef caching (menu already memoized via useMemo)
- Simplify hook return statement
- All tests passing: ESLint 0 errors, 53/53 test cases pass
---
.../AutoRefreshStatus/StatusIndicatorDot.test.tsx | 13 +++++++------
.../Header/useHeaderActionsDropdownMenu.tsx | 19 ++-----------------
2 files changed, 9 insertions(+), 23 deletions(-)
diff --git a/superset-frontend/src/dashboard/components/AutoRefreshStatus/StatusIndicatorDot.test.tsx b/superset-frontend/src/dashboard/components/AutoRefreshStatus/StatusIndicatorDot.test.tsx
index 1ec06e4ad3f..544dbf2a2c4 100644
--- a/superset-frontend/src/dashboard/components/AutoRefreshStatus/StatusIndicatorDot.test.tsx
+++ b/superset-frontend/src/dashboard/components/AutoRefreshStatus/StatusIndicatorDot.test.tsx
@@ -20,6 +20,11 @@ import { render, screen, act } from 'spec/helpers/testing-library';
import { StatusIndicatorDot } from './StatusIndicatorDot';
import { AutoRefreshStatus } from '../../types/autoRefresh';
+afterEach(() => {
+ jest.runOnlyPendingTimers();
+ jest.useRealTimers();
+});
+
test('renders with success status', () => {
render(<StatusIndicatorDot status={AutoRefreshStatus.Success} />);
const dot = screen.getByTestId('status-indicator-dot');
@@ -64,7 +69,7 @@ test('has correct accessibility attributes', () => {
expect(dot).toHaveAttribute('aria-label', 'Auto-refresh status: success');
});
-test('fetching status updates immediately without debounce', async () => {
+test('fetching status updates immediately without debounce', () => {
jest.useFakeTimers();
const { rerender } = render(
@@ -76,11 +81,9 @@ test('fetching status updates immediately without debounce', async () => {
const dot = screen.getByTestId('status-indicator-dot');
expect(dot).toHaveAttribute('data-status', AutoRefreshStatus.Fetching);
-
- jest.useRealTimers();
});
-test('debounces non-fetching status changes to prevent flickering', async () => {
+test('debounces non-fetching status changes to prevent flickering', () => {
jest.useFakeTimers();
const { rerender } = render(
@@ -102,8 +105,6 @@ test('debounces non-fetching status changes to prevent flickering', async () =>
// Now should be error
dot = screen.getByTestId('status-indicator-dot');
expect(dot).toHaveAttribute('data-status', AutoRefreshStatus.Error);
-
- jest.useRealTimers();
});
test('accepts custom size prop', () => {
diff --git a/superset-frontend/src/dashboard/components/Header/useHeaderActionsDropdownMenu.tsx b/superset-frontend/src/dashboard/components/Header/useHeaderActionsDropdownMenu.tsx
index c0c8a9a660c..dcf31470093 100644
--- a/superset-frontend/src/dashboard/components/Header/useHeaderActionsDropdownMenu.tsx
+++ b/superset-frontend/src/dashboard/components/Header/useHeaderActionsDropdownMenu.tsx
@@ -17,7 +17,7 @@
* under the License.
*/
import type { Dispatch, ReactElement, SetStateAction } from 'react';
-import { useState, useEffect, useCallback, useMemo, useRef } from 'react';
+import { useState, useEffect, useCallback, useMemo } from 'react';
import { useSelector } from 'react-redux';
import { useHistory } from 'react-router-dom';
import { Menu, MenuItem } from '@superset-ui/core/components/Menu';
@@ -72,7 +72,6 @@ export const useHeaderActionsMenu = ({
Dispatch<SetStateAction<boolean>>,
] => {
const [isDropdownVisible, setIsDropdownVisible] = useState(false);
- const menuRef = useRef<React.ReactElement | null>(null);
const history = useHistory();
const directPathToChild = useSelector(
(state: RootState) => state.dashboardState.directPathToChild,
@@ -339,19 +338,5 @@ export const useHeaderActionsMenu = ({
userCanShare,
]);
- if (!menuRef.current) {
- menuRef.current = menu;
- }
-
- useEffect(() => {
- if (!isDropdownVisible) {
- menuRef.current = menu;
- }
- }, [isDropdownVisible, menu]);
-
- return [
- isDropdownVisible && menuRef.current ? menuRef.current : menu,
- isDropdownVisible,
- setIsDropdownVisible,
- ];
+ return [menu, isDropdownVisible, setIsDropdownVisible];
};