diff --git a/backend/src/core/startup.py b/backend/src/core/startup.py index 5b5abd1..3b0bc4c 100644 --- a/backend/src/core/startup.py +++ b/backend/src/core/startup.py @@ -17,6 +17,16 @@ async def initialize_database(self): """Initialize the database schema and seed data.""" try: db_manager = self.container.db_manager() + + # In test mode, clean up the database on startup + # This ensures tests don't affect each other + if APP_ENV == "test": + try: + logger.info("Test mode detected: Cleaning up database on startup") + await db_manager.drop_all() + logger.info("Test database cleaned up") + except Exception as e: + logger.error(f"Failed to clean up test database: {str(e)}") await db_manager.create_all() await initialize_data() @@ -55,17 +65,6 @@ async def shutdown(self): billing_worker.stop() logger.info("Billing worker stopped") - # In test mode, clean up the database on shutdown - # This ensures tests don't affect each other - if APP_ENV == "test": - try: - logger.info("Test mode detected: Cleaning up database on shutdown") - db_manager = self.container.db_manager() - await db_manager.drop_all() - logger.info("Test database cleaned up") - except Exception as e: - logger.error(f"Failed to clean up test database: {str(e)}") - # Close database connections try: db_manager = self.container.db_manager() diff --git a/frontend/src/components/Instance/Setting/AccessMenu.tsx b/frontend/src/components/Instance/Setting/AccessMenu.tsx index 847d17a..fb4ec1b 100644 --- a/frontend/src/components/Instance/Setting/AccessMenu.tsx +++ b/frontend/src/components/Instance/Setting/AccessMenu.tsx @@ -78,6 +78,7 @@ const AccessMenu: React.FC = () => { endIcon={showPassword ? : } onEndIconClick={togglePasswordVisibility} disabled={!isInstanceRunning} + data-testid="reset-root-password" /> @@ -97,6 +98,7 @@ const AccessMenu: React.FC = () => { variant="outline" icon={} disabled={!isInstanceRunning || !isPasswordValid(password)} + data-testid="reset-root-password" /> ) @@ -119,6 +121,7 @@ const AccessMenu: React.FC = () => { tabs={accessTabs} activeTab={accessType} setActiveTab={(id) => setAccessType(id as 'terminal' | 'console')} + data-testid="instance-access" />
diff --git a/frontend/src/components/Instance/Setting/DestroyMenu.tsx b/frontend/src/components/Instance/Setting/DestroyMenu.tsx index 5920f5b..7dac1e7 100644 --- a/frontend/src/components/Instance/Setting/DestroyMenu.tsx +++ b/frontend/src/components/Instance/Setting/DestroyMenu.tsx @@ -4,6 +4,7 @@ import { ExclamationTriangleIcon, TrashIcon } from "@heroicons/react/24/outline" import Section from "../../../components/Common/Section" import Button from "../../../components/Common/Button/Button" import { useInstanceSetting } from "../../../hooks/Instance/useInstanceSetting" +import InputField from "../../Common/InputField" const DestroyMenu: React.FC = () => { const [confirmText, setConfirmText] = useState("") @@ -47,12 +48,12 @@ const DestroyMenu: React.FC = () => { - setConfirmText(e.target.value)} - className="bg-[#23375F] border border-blue-800/30 text-white px-3 py-2 rounded w-full focus:outline-none focus:ring-2 focus:ring-red-500" + onChange={setConfirmText} placeholder={`Type ${instanceName} to confirm`} + data-testid="destroy-instance-input" />
@@ -63,6 +64,7 @@ const DestroyMenu: React.FC = () => { icon={} variant="purple" disabled={!isDeleteConfirmed || isLoading} + data-testid="destroy-instance" /> diff --git a/frontend/src/components/Instance/Setting/InstanceConsole.tsx b/frontend/src/components/Instance/Setting/InstanceConsole.tsx index 71d1067..4bb0f86 100644 --- a/frontend/src/components/Instance/Setting/InstanceConsole.tsx +++ b/frontend/src/components/Instance/Setting/InstanceConsole.tsx @@ -1,7 +1,6 @@ import React, { useEffect } from 'react' import { useConsoleWebSocket } from '../../../hooks/Instance/useConsoleConnection' import { useXTerm } from '../../../hooks/useXTerm' -import { ArrowPathIcon } from '@heroicons/react/24/outline' import { WS_URL } from '../../../config/api' import 'xterm/css/xterm.css' import { StatusHeader, StatusMessage, StatusFooter } from './InstanceStatus' @@ -79,6 +78,7 @@ const InstanceConsole: React.FC = ({ instanceName, isRunni
diff --git a/frontend/src/components/Instance/Setting/InstanceTerminal.tsx b/frontend/src/components/Instance/Setting/InstanceTerminal.tsx index f056fb3..03cb22b 100644 --- a/frontend/src/components/Instance/Setting/InstanceTerminal.tsx +++ b/frontend/src/components/Instance/Setting/InstanceTerminal.tsx @@ -74,6 +74,7 @@ const InstanceTerminal: React.FC = ({ instanceName, isRun
diff --git a/frontend/src/components/Instance/Setting/MonitorMenu.tsx b/frontend/src/components/Instance/Setting/MonitorMenu.tsx index f347723..dccf3ce 100644 --- a/frontend/src/components/Instance/Setting/MonitorMenu.tsx +++ b/frontend/src/components/Instance/Setting/MonitorMenu.tsx @@ -43,7 +43,7 @@ const MonitorMenu: React.FC = () => {
{cpu.usage.toFixed(1)}% - {cpu.cores} core{cpu.cores !== 1 ? 's' : ''} + {cpu.cores} core{cpu.cores !== 1 ? 's' : ''}
@@ -62,7 +62,7 @@ const MonitorMenu: React.FC = () => {
{memory.percentage.toFixed(1)}% - + {formatBytes(memory.used)} / {formatBytes(memory.total)}
diff --git a/frontend/src/components/Instance/Setting/PowerMenu.tsx b/frontend/src/components/Instance/Setting/PowerMenu.tsx index 7dd3364..3d34086 100644 --- a/frontend/src/components/Instance/Setting/PowerMenu.tsx +++ b/frontend/src/components/Instance/Setting/PowerMenu.tsx @@ -38,6 +38,7 @@ const PowerMenu: React.FC = () => { onClick={startInstance} variant="primary" icon={} + data-testid="start-instance" /> ) : (