import React, { useState } from "react"; import { useWorkflowStore } from "../store/workflowStore"; import { Play, FileText, Download, RotateCcw } from "lucide-react"; import { Button } from "./ui/button"; export const TestingPanel: React.FC = () => { const { currentWorkflow, executeWorkflow, isExecuting, executionResults } = useWorkflowStore(); const [testInput, setTestInput] = useState(""); const [testResults, setTestResults] = useState(null); const sampleInputs = [ { name: "Simple Text", data: "Hello, this is a test input for the workflow.", }, { name: "JSON Data", data: JSON.stringify( { message: "Test data", timestamp: new Date().toISOString() }, null, 2 ), }, { name: "URL", data: "https://example.com", }, { name: "CSV Data", data: "name,age,city\nJohn,30,New York\nJane,25,San Francisco", }, ]; const handleTestExecution = async () => { if (!currentWorkflow) return; setTestResults(null); try { console.log("Starting test execution:", { currentWorkflow: currentWorkflow.id, testInput, nodeCount: currentWorkflow.nodes.length, }); await executeWorkflow(testInput); // Wait a bit for the execution to complete and results to be processed await new Promise((resolve) => setTimeout(resolve, 100)); console.log("Execution completed, collecting results:", { executionResults, }); // Collect all results const results = currentWorkflow.nodes.map((node) => ({ nodeId: node.id, nodeLabel: node.data.label, status: executionResults[node.id]?.status || "idle", data: executionResults[node.id]?.data, error: executionResults[node.id]?.error, })); console.log("Collected results:", results); setTestResults(results); } catch (error) { console.error("Test execution failed:", error); // Set error results const errorResults = currentWorkflow.nodes.map((node) => ({ nodeId: node.id, nodeLabel: node.data.label, status: "error", data: null, error: error instanceof Error ? error.message : "Unknown error", })); setTestResults(errorResults); } }; const handleLoadSample = (sample: any) => { setTestInput(sample.data); }; const handleExportResults = () => { if (!testResults) return; const dataStr = JSON.stringify(testResults, null, 2); const dataBlob = new Blob([dataStr], { type: "application/json" }); const url = URL.createObjectURL(dataBlob); const link = document.createElement("a"); link.href = url; link.download = `workflow_test_results_${Date.now()}.json`; document.body.appendChild(link); link.click(); document.body.removeChild(link); URL.revokeObjectURL(url); }; const handleClearResults = () => { setTestResults(null); setTestInput(""); }; if (!currentWorkflow) return null; return (

Testing Panel