feat(tests): containment fields hidden until detected, required datetime validation
Aegis CI / lint-and-test (push) Has been cancelled
Snyk Security Scan / Python vulnerabilities (backend) (push) Has been cancelled
Snyk Security Scan / npm vulnerabilities (frontend) (push) Has been cancelled
Snyk Security Scan / Docker image vulnerabilities (backend) (push) Has been cancelled

This commit is contained in:
kitos
2026-06-25 09:40:28 +02:00
parent d7ad981b89
commit 006bdc60e1
2 changed files with 69 additions and 54 deletions
+11 -2
View File
@@ -471,7 +471,11 @@ export default function TestDetailPage() {
<div className="flex justify-end gap-3">
{canSaveRed && (
<button
onClick={() => saveRedMutation.mutate()}
onClick={() => {
if (!redDraft.execution_start_time) { showToast("Execution Start time is required", "error"); return; }
if (!redDraft.execution_end_time) { showToast("Execution End time is required", "error"); return; }
saveRedMutation.mutate();
}}
disabled={saveRedMutation.isPending}
className="flex items-center gap-1.5 rounded-lg bg-orange-600 px-4 py-2 text-sm font-medium text-white hover:bg-orange-500 disabled:opacity-50 transition-colors"
>
@@ -481,7 +485,12 @@ export default function TestDetailPage() {
)}
{canSaveBlue && (
<button
onClick={() => saveBlueMutation.mutate()}
onClick={() => {
const isDetected = blueDraft.detection_result === "detected" || blueDraft.detection_result === "partially_detected";
if (isDetected && !blueDraft.detection_time) { showToast("Detection Time is required", "error"); return; }
if (isDetected && !blueDraft.containment_time) { showToast("Containment Time is required", "error"); return; }
saveBlueMutation.mutate();
}}
disabled={saveBlueMutation.isPending}
className="flex items-center gap-1.5 rounded-lg bg-indigo-600 px-4 py-2 text-sm font-medium text-white hover:bg-indigo-500 disabled:opacity-50 transition-colors"
>