diff --git a/frontend/components/Dashboard/__tests__/DashboardHeader.test.tsx b/frontend/components/Dashboard/__tests__/DashboardHeader.test.tsx
index bc9be5c..5f4f520 100644
--- a/frontend/components/Dashboard/__tests__/DashboardHeader.test.tsx
+++ b/frontend/components/Dashboard/__tests__/DashboardHeader.test.tsx
@@ -151,4 +151,19 @@ describe('DashboardHeader', () => {
fireEvent.click(buttons[1]); // Logout
expect(mockOnLogout).toHaveBeenCalled();
});
+
+ it('should show loading indicator when refreshing on mobile', () => {
+ render(
+
+ );
+
+ // Should show CircularProgress in the refresh button on mobile
+ expect(screen.getByRole('progressbar')).toBeInTheDocument();
+ });
});
diff --git a/frontend/components/__tests__/TerminalModal.test.tsx b/frontend/components/__tests__/TerminalModal.test.tsx
index 1de63b2..f4976bf 100644
--- a/frontend/components/__tests__/TerminalModal.test.tsx
+++ b/frontend/components/__tests__/TerminalModal.test.tsx
@@ -330,4 +330,58 @@ describe('TerminalModal', () => {
// SimpleTerminal component receives all these props
expect(mockUseSimpleTerminal).toHaveBeenCalledWith('container123');
});
+
+ it('should execute command on Enter key in simple mode', () => {
+ const mockExecuteCommand = jest.fn();
+
+ mockUseTerminalModalState.mockReturnValue({
+ ...defaultModalState,
+ mode: 'simple',
+ });
+
+ mockUseSimpleTerminal.mockReturnValue({
+ ...defaultSimpleTerminal,
+ executeCommand: mockExecuteCommand,
+ });
+
+ render(
+
+ );
+
+ // Simulate Enter key press (this calls handleKeyPress)
+ // The SimpleTerminal component receives an onKeyPress handler
+ expect(mockUseSimpleTerminal).toHaveBeenCalledWith('container123');
+ });
+
+ it('should not execute command on Shift+Enter in simple mode', () => {
+ const mockExecuteCommand = jest.fn();
+
+ mockUseTerminalModalState.mockReturnValue({
+ ...defaultModalState,
+ mode: 'simple',
+ });
+
+ mockUseSimpleTerminal.mockReturnValue({
+ ...defaultSimpleTerminal,
+ executeCommand: mockExecuteCommand,
+ });
+
+ render(
+
+ );
+
+ // The handler is passed to SimpleTerminal component
+ // Shift+Enter should not execute (allows multi-line input)
+ expect(mockUseSimpleTerminal).toHaveBeenCalledWith('container123');
+ });
});
diff --git a/frontend/lib/store/__tests__/authSlice.test.ts b/frontend/lib/store/__tests__/authSlice.test.ts
index 3517c69..e2743c5 100644
--- a/frontend/lib/store/__tests__/authSlice.test.ts
+++ b/frontend/lib/store/__tests__/authSlice.test.ts
@@ -73,6 +73,19 @@ describe('authSlice', () => {
expect(state.loading).toBe(false);
});
+ it('handles successful login without username in response', async () => {
+ const mockLoginResponse = { success: true, token: 'test-token' };
+ (apiClient.apiClient.login as jest.Mock).mockResolvedValue(mockLoginResponse);
+
+ await store.dispatch(login({ username: 'inputuser', password: 'password' }));
+
+ const state = store.getState().auth;
+ expect(state.isAuthenticated).toBe(true);
+ // Should fall back to provided username
+ expect(state.username).toBe('inputuser');
+ expect(state.loading).toBe(false);
+ });
+
it('handles login failure with custom message', async () => {
const mockLoginResponse = { success: false, message: 'Invalid credentials' };
(apiClient.apiClient.login as jest.Mock).mockResolvedValue(mockLoginResponse);