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"
/>
) : (