diff --git a/frontend/src/pages/TestDetailPage.tsx b/frontend/src/pages/TestDetailPage.tsx index 8582b39..b5895ab 100644 --- a/frontend/src/pages/TestDetailPage.tsx +++ b/frontend/src/pages/TestDetailPage.tsx @@ -2,7 +2,7 @@ import { useParams, useNavigate } from "react-router-dom"; import MarkdownText from "../components/MarkdownText"; import { useQuery, useMutation, useQueryClient } from "@tanstack/react-query"; import { useState, useEffect, useCallback } from "react"; -import { Loader2, AlertCircle, ArrowLeft } from "lucide-react"; +import { Loader2, AlertCircle, ArrowLeft, BookOpen, X, CheckCircle } from "lucide-react"; import { getTestById, @@ -30,6 +30,7 @@ import ValidationModal from "../components/test-detail/ValidationModal"; import ConfirmDialog from "../components/ConfirmDialog"; import JiraLinkPanel from "../components/JiraLinkPanel"; import TestPhaseTimeline from "../components/TestPhaseTimeline"; +import { createTemplate } from "../api/test-templates"; // ── Page Component ───────────────────────────────────────────────── @@ -361,6 +362,12 @@ export default function TestDetailPage() { test.state === "blue_evaluating" && (role === "blue_tech" || role === "blue_lead" || role === "admin"); + // Only leads and admins can create templates + const canSaveAsTemplate = + role === "red_lead" || role === "blue_lead" || role === "admin"; + + const [showTemplateModal, setShowTemplateModal] = useState(false); + // ── Render ───────────────────────────────────────────────────── return ( @@ -507,6 +514,18 @@ export default function TestDetailPage() { )} + + {canSaveAsTemplate && ( +