+
+
+ #{testCase.id} {testCase.title}
+
+
+
+
+
{messages.description}
+
{testCase.description}
+
+
+
+
{messages.priority}
+
+
+
+
+
{messages.type}
+
{testTypeMessages[testTypes[testCase.type].uid]}
+
+
+
+
{messages.tags}
+
+ {testCase.Tags &&
+ testCase.Tags.length > 0 &&
+ testCase.Tags.map((tag) => (
+
+ {tag.name}
+
+ ))}
+
+
+
+ {templates[testCase.template].uid === 'text' ? (
+ <>
+
{messages.testDetail}
+
+ >
+ ) : (
+ <>
+
{messages.steps}
+ {testCase.Steps &&
+ testCase.Steps.length > 0 &&
+ testCase.Steps.map((step) => (
+
+ ))}
+ >
+ )}
+
+ );
+}
diff --git a/frontend/src/app/[locale]/projects/[projectId]/runs/[runId]/cases/[caseId]/DetailPane.tsx b/frontend/src/app/[locale]/projects/[projectId]/runs/[runId]/cases/[caseId]/DetailPane.tsx
new file mode 100644
index 0000000..a270371
--- /dev/null
+++ b/frontend/src/app/[locale]/projects/[projectId]/runs/[runId]/cases/[caseId]/DetailPane.tsx
@@ -0,0 +1,95 @@
+'use client';
+
+import { useEffect, useState, useContext } from 'react';
+import { Tabs, Tab, Chip } from '@heroui/react';
+import CaseDetail from './CaseDetail';
+import Comments from '@/components/Comments';
+import History from '@/components/History';
+import { TokenContext } from '@/utils/TokenProvider';
+import { fetchCase } from '@/utils/caseControl';
+import { logError } from '@/utils/errorHandler';
+import type { CaseType, StepType } from '@/types/case';
+import type { RunDetailMessages } from '@/types/run';
+import type { PriorityMessages } from '@/types/priority';
+import type { TestTypeMessages } from '@/types/testType';
+
+type Props = {
+ projectId: string;
+ locale: string;
+ caseId: string;
+ messages: RunDetailMessages;
+ testTypeMessages: TestTypeMessages;
+ priorityMessages: PriorityMessages;
+};
+
+export default function TestCaseDetailPane({
+ projectId,
+ locale,
+ caseId,
+ messages,
+ testTypeMessages,
+ priorityMessages,
+}: Props) {
+ const context = useContext(TokenContext);
+ const [isFetching, setIsFetching] = useState(false);
+ const [testCase, setTestCase] = useState