diff --git a/frontend/__tests__/unit/components/MetricsScoreCircle.test.tsx b/frontend/__tests__/unit/components/MetricsScoreCircle.test.tsx index 79c3d986ff..eac00857c1 100644 --- a/frontend/__tests__/unit/components/MetricsScoreCircle.test.tsx +++ b/frontend/__tests__/unit/components/MetricsScoreCircle.test.tsx @@ -1,4 +1,5 @@ import { render, screen, fireEvent } from '@testing-library/react' +import userEvent from '@testing-library/user-event' import React from 'react' import '@testing-library/jest-dom' import MetricsScoreCircle from 'components/MetricsScoreCircle' @@ -309,18 +310,20 @@ describe('MetricsScoreCircle', () => { expect(clickableElement).not.toBeInTheDocument() }) - it('handles keyboard navigation when clickable', () => { + it('handles keyboard navigation when clickable', async () => { const mockOnClick = jest.fn() render() const buttonElement = screen.getByRole('button') + const user = userEvent.setup() // Test Enter key - fireEvent.keyDown(buttonElement, { key: 'Enter' }) + buttonElement.focus() + await user.keyboard('{Enter}') expect(mockOnClick).toHaveBeenCalledTimes(1) // Test Space key - fireEvent.keyDown(buttonElement, { key: ' ' }) + await user.keyboard(' ') expect(mockOnClick).toHaveBeenCalledTimes(2) }) diff --git a/frontend/src/components/MetricsScoreCircle.tsx b/frontend/src/components/MetricsScoreCircle.tsx index b47d6f5b26..feec4ffb44 100644 --- a/frontend/src/components/MetricsScoreCircle.tsx +++ b/frontend/src/components/MetricsScoreCircle.tsx @@ -1,9 +1,9 @@ import { Tooltip } from '@heroui/tooltip' -import React, { FC, MouseEvent } from 'react' +import { FC, MouseEvent } from 'react' interface MetricsScoreCircleProps { score: number - onClick?: (e: MouseEvent) => void + onClick?: (e: MouseEvent) => void clickable?: boolean } @@ -15,12 +15,6 @@ const MetricsScoreCircle: FC = ({ score, onClick, click scoreStyle = 'bg-yellow-400/80 text-yellow-900/90' } - const handleClick = (e: MouseEvent) => { - if (clickable && onClick) { - onClick(e) - } - } - const baseClasses = `relative flex h-14 w-14 flex-col items-center justify-center rounded-full shadow-md transition-all duration-300 ${scoreStyle}` const groupClass = clickable ? 'group' : '' const clickableClasses = clickable ? 'hover:scale-105 hover:shadow-lg cursor-pointer' : '' @@ -28,41 +22,40 @@ const MetricsScoreCircle: FC = ({ score, onClick, click return ( -
) => { - if (e.key === 'Enter' || e.key === ' ') { - e.preventDefault() - // For keyboard navigation, call onClick directly since we don't need the event object - if (onClick) { - onClick(e as unknown as React.MouseEvent) - } - } - } - : undefined - } - > - {clickable && ( + {clickable ? ( + + ) : ( +
+
+ + Health + + {score} + + Score + +
+ + {score < 30 && ( +
+ )}
- {score < 30 && ( -
- )} -
+ )} ) }