{"numFailedTestSuites":1,"numFailedTests":5,"numPassedTestSuites":62,"numPassedTests":1700,"numPendingTestSuites":0,"numPendingTests":3,"numRuntimeErrorTestSuites":0,"numTodoTests":0,"numTotalTestSuites":63,"numTotalTests":1708,"openHandles":[],"snapshot":{"added":0,"didUpdate":false,"failure":false,"filesAdded":0,"filesRemoved":0,"filesRemovedList":[],"filesUnmatched":0,"filesUpdated":0,"matched":0,"total":0,"unchecked":0,"uncheckedKeysByFile":[],"unmatched":0,"updated":0},"startTime":1764343032010,"success":false,"testResults":[{"assertionResults":[{"ancestorTitles":["context-collector","getTaskOrder"],"duration":9,"failureDetails":[],"failureMessages":[],"fullName":"context-collector getTaskOrder should return numeric order for simple task","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should return numeric order for simple task"},{"ancestorTitles":["context-collector","getTaskOrder"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"context-collector getTaskOrder should handle subtask notation","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle subtask notation"},{"ancestorTitles":["context-collector","getTaskOrder"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"context-collector getTaskOrder should return 0 for invalid format","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should return 0 for invalid format"},{"ancestorTitles":["context-collector","getTaskFolders"],"duration":3,"failureDetails":[],"failureMessages":[],"fullName":"context-collector getTaskFolders should return empty array if folder does not exist","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return empty array if folder does not exist"},{"ancestorTitles":["context-collector","getTaskFolders"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"context-collector getTaskFolders should return sorted task folders","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return sorted task folders"},{"ancestorTitles":["context-collector","isTaskCompleted"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"context-collector isTaskCompleted should return false if TODO.md does not exist","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return false if TODO.md does not exist"},{"ancestorTitles":["context-collector","isTaskCompleted"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"context-collector isTaskCompleted should return true if TODO starts with \"Fully implemented: YES\"","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return true if TODO starts with \"Fully implemented: YES\""},{"ancestorTitles":["context-collector","isTaskCompleted"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"context-collector isTaskCompleted should return false if TODO starts with \"Fully implemented: NO\"","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return false if TODO starts with \"Fully implemented: NO\""},{"ancestorTitles":["context-collector","extractContextSummary"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"context-collector extractContextSummary should return null if file does not exist","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return null if file does not exist"},{"ancestorTitles":["context-collector","extractContextSummary"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"context-collector extractContextSummary should extract files modified and decisions","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should extract files modified and decisions"},{"ancestorTitles":["context-collector","extractContextSummaryAsync (with fallback)"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"context-collector extractContextSummaryAsync (with fallback) should return null if file does not exist","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return null if file does not exist"},{"ancestorTitles":["context-collector","extractContextSummaryAsync (with fallback)"],"duration":30,"failureDetails":[],"failureMessages":[],"fullName":"context-collector extractContextSummaryAsync (with fallback) should fallback to heuristic extraction when Ollama unavailable","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should fallback to heuristic extraction when Ollama unavailable"},{"ancestorTitles":["context-collector","extractContextSummaryAsync (with fallback)"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"context-collector extractContextSummaryAsync (with fallback) should include fullPath in result","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should include fullPath in result"},{"ancestorTitles":["context-collector","extractResearchPatterns"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"context-collector extractResearchPatterns should return null if file does not exist","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return null if file does not exist"},{"ancestorTitles":["context-collector","extractResearchPatterns"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"context-collector extractResearchPatterns should extract strategy, patterns, and topics","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"status":"passed","title":"should extract strategy, patterns, and topics"},{"ancestorTitles":["context-collector","extractResearchPatternsAsync (with fallback)"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"context-collector extractResearchPatternsAsync (with fallback) should return null if file does not exist","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return null if file does not exist"},{"ancestorTitles":["context-collector","extractResearchPatternsAsync (with fallback)"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"context-collector extractResearchPatternsAsync (with fallback) should fallback to heuristic extraction when Ollama unavailable","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"status":"passed","title":"should fallback to heuristic extraction when Ollama unavailable"},{"ancestorTitles":["context-collector","extractResearchPatternsAsync (with fallback)"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"context-collector extractResearchPatternsAsync (with fallback) should detect extended keyword list","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"status":"passed","title":"should detect extended keyword list"},{"ancestorTitles":["context-collector","extractResearchPatternsAsync (with fallback)"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"context-collector extractResearchPatternsAsync (with fallback) should include fullPath in result","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should include fullPath in result"},{"ancestorTitles":["context-collector","createAiPromptSummary"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"context-collector createAiPromptSummary should return empty string if file does not exist","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return empty string if file does not exist"},{"ancestorTitles":["context-collector","createAiPromptSummary"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"context-collector createAiPromptSummary should extract tech stack, architecture, and conventions","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"status":"passed","title":"should extract tech stack, architecture, and conventions"},{"ancestorTitles":["context-collector","createAiPromptSummary"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"context-collector createAiPromptSummary should return first 1500 chars if no sections found","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return first 1500 chars if no sections found"},{"ancestorTitles":["context-collector","extractCodebasePatterns"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"context-collector extractCodebasePatterns should detect Jest testing framework","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should detect Jest testing framework"},{"ancestorTitles":["context-collector","extractCodebasePatterns"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"context-collector extractCodebasePatterns should detect Python pytest framework","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should detect Python pytest framework"},{"ancestorTitles":["context-collector","extractCodebasePatterns"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"context-collector extractCodebasePatterns should detect CommonJS import style","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should detect CommonJS import style"},{"ancestorTitles":["context-collector","extractCodebasePatterns"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"context-collector extractCodebasePatterns should detect ESM import style","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should detect ESM import style"},{"ancestorTitles":["context-collector","extractCodebasePatterns"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"context-collector extractCodebasePatterns should detect test file naming convention","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should detect test file naming convention"},{"ancestorTitles":["context-collector","extractCodebasePatterns"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"context-collector extractCodebasePatterns should detect primary language from file extensions","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should detect primary language from file extensions"},{"ancestorTitles":["context-collector","extractCodebasePatterns"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"context-collector extractCodebasePatterns should detect key directories","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should detect key directories"},{"ancestorTitles":["context-collector","extractCodebasePatterns"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"context-collector extractCodebasePatterns should detect functional code style","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should detect functional code style"},{"ancestorTitles":["context-collector","extractCodebasePatterns"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"context-collector extractCodebasePatterns should return empty object for empty content","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return empty object for empty content"},{"ancestorTitles":["context-collector","getIncrementalContext"],"duration":3,"failureDetails":[],"failureMessages":[],"fullName":"context-collector getIncrementalContext should return AI prompt summary from cache if valid","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should return AI prompt summary from cache if valid"},{"ancestorTitles":["context-collector","getIncrementalContext"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"context-collector getIncrementalContext should generate new summary if AI prompt changed","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should generate new summary if AI prompt changed"},{"ancestorTitles":["context-collector","getIncrementalContext"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"context-collector getIncrementalContext should exclude current task from context","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should exclude current task from context"},{"ancestorTitles":["context-collector","buildConsolidatedContext"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"context-collector buildConsolidatedContext should build context string with all sections","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"status":"passed","title":"should build context string with all sections"},{"ancestorTitles":["context-collector","markTaskCompleted"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"context-collector markTaskCompleted should add task to cache with summary","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should add task to cache with summary"},{"ancestorTitles":["context-collector","getContextFilePaths"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"context-collector getContextFilePaths should return context file paths for completed tasks","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should return context file paths for completed tasks"},{"ancestorTitles":["context-collector","getContextFilePaths"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"context-collector getContextFilePaths should exclude incomplete tasks when onlyCompleted is true","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should exclude incomplete tasks when onlyCompleted is true"},{"ancestorTitles":["context-collector","getRelevantSymbols (with semantic search)"],"duration":68,"failureDetails":[],"failureMessages":[],"fullName":"context-collector getRelevantSymbols (with semantic search) should return null when code index is not available","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return null when code index is not available"},{"ancestorTitles":["context-collector","getRelevantSymbols (with semantic search)"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"context-collector getRelevantSymbols (with semantic search) should accept options for maxSymbols and kinds","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should accept options for maxSymbols and kinds"},{"ancestorTitles":["context-collector","getRelevantSymbols (with semantic search)"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"context-collector getRelevantSymbols (with semantic search) should accept useSemantic option","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should accept useSemantic option"},{"ancestorTitles":["context-collector","getRelevantSymbols (with semantic search)"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"context-collector getRelevantSymbols (with semantic search) should fallback to keyword search when useSemantic is false","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should fallback to keyword search when useSemantic is false"},{"ancestorTitles":["context-collector","getFileSummary"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"context-collector getFileSummary should return null when code index is not available","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return null when code index is not available"},{"ancestorTitles":["context-collector","buildConsolidatedContextAsync"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"context-collector buildConsolidatedContextAsync should return base context when no project folder provided","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return base context when no project folder provided"},{"ancestorTitles":["context-collector","buildConsolidatedContextAsync"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"context-collector buildConsolidatedContextAsync should include base context even when symbols not available","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should include base context even when symbols not available"}],"endTime":1764343032723,"message":"","name":"/Users/samuelfajreldines/Desenvolvimento/claudiomiro/src/shared/services/context-cache/context-collector.test.js","startTime":1764343032235,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["OllamaClient","constructor"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"OllamaClient constructor should use default values (no default model)","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should use default values (no default model)"},{"ancestorTitles":["OllamaClient","constructor"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"OllamaClient constructor should accept custom options","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should accept custom options"},{"ancestorTitles":["OllamaClient","constructor"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"OllamaClient constructor should read host from environment variables","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should read host from environment variables"},{"ancestorTitles":["OllamaClient","healthCheck"],"duration":3,"failureDetails":[],"failureMessages":[],"fullName":"OllamaClient healthCheck should return available: true when server responds","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should return available: true when server responds"},{"ancestorTitles":["OllamaClient","healthCheck"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"OllamaClient healthCheck should return available: false on connection error","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should return available: false on connection error"},{"ancestorTitles":["OllamaClient","generate"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"OllamaClient generate should send correct request","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should send correct request"},{"ancestorTitles":["OllamaClient","generate"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"OllamaClient generate should handle empty response","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle empty response"},{"ancestorTitles":["OllamaClient","generateJSON"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"OllamaClient generateJSON should parse JSON response","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should parse JSON response"},{"ancestorTitles":["OllamaClient","generateJSON"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"OllamaClient generateJSON should extract JSON from text response","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should extract JSON from text response"},{"ancestorTitles":["OllamaClient","generateJSON"],"duration":15,"failureDetails":[],"failureMessages":[],"fullName":"OllamaClient generateJSON should throw on invalid JSON","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should throw on invalid JSON"},{"ancestorTitles":["OllamaClient","classify"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"OllamaClient classify should return filtered topics","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should return filtered topics"},{"ancestorTitles":["OllamaClient","classify"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"OllamaClient classify should return empty array on error","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return empty array on error"},{"ancestorTitles":["OllamaClient","summarize"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"OllamaClient summarize should return summarized text","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return summarized text"},{"ancestorTitles":["OllamaClient","extractSection"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"OllamaClient extractSection should extract section content","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should extract section content"},{"ancestorTitles":["OllamaClient","extractSection"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"OllamaClient extractSection should return empty string for NOT_FOUND","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return empty string for NOT_FOUND"},{"ancestorTitles":["OllamaClient","analyzeDependencies"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"OllamaClient analyzeDependencies should return dependency analysis","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should return dependency analysis"},{"ancestorTitles":["OllamaClient","analyzeDependencies"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"OllamaClient analyzeDependencies should return default on error","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should return default on error"},{"ancestorTitles":["OllamaClient","checkCompletion"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"OllamaClient checkCompletion should return completion status","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should return completion status"},{"ancestorTitles":["OllamaClient","checkCompletion"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"OllamaClient checkCompletion should return default on error","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should return default on error"}],"endTime":1764343032815,"message":"","name":"/Users/samuelfajreldines/Desenvolvimento/claudiomiro/src/shared/services/local-llm/ollama-client.test.js","startTime":1764343032742,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["auto-update","getCurrentVersion"],"duration":6,"failureDetails":[],"failureMessages":[],"fullName":"auto-update getCurrentVersion should read and return current version from package.json","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should read and return current version from package.json"},{"ancestorTitles":["auto-update","getCurrentVersion"],"duration":6,"failureDetails":[],"failureMessages":[],"fullName":"auto-update getCurrentVersion should handle package.json with different version format","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle package.json with different version format"},{"ancestorTitles":["auto-update","getLatestVersion"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"auto-update getLatestVersion should return latest version from npm","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should return latest version from npm"},{"ancestorTitles":["auto-update","getLatestVersion"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"auto-update getLatestVersion should return null when npm command fails","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return null when npm command fails"},{"ancestorTitles":["auto-update","getLatestVersion"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"auto-update getLatestVersion should trim whitespace from npm output","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should trim whitespace from npm output"},{"ancestorTitles":["auto-update","checkForUpdates"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"auto-update checkForUpdates should return update available when versions differ","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return update available when versions differ"},{"ancestorTitles":["auto-update","checkForUpdates"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"auto-update checkForUpdates should show warning message when update is available and not silent","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should show warning message when update is available and not silent"},{"ancestorTitles":["auto-update","checkForUpdates"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"auto-update checkForUpdates should not show warning message when silent option is true","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should not show warning message when silent option is true"},{"ancestorTitles":["auto-update","checkForUpdates"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"auto-update checkForUpdates should return no update when versions are the same","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return no update when versions are the same"},{"ancestorTitles":["auto-update","checkForUpdates"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"auto-update checkForUpdates should return no update when latest version is null","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return no update when latest version is null"},{"ancestorTitles":["auto-update","checkForUpdates"],"duration":5,"failureDetails":[],"failureMessages":[],"fullName":"auto-update checkForUpdates should auto-update when autoUpdate option is true","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should auto-update when autoUpdate option is true"},{"ancestorTitles":["auto-update","checkForUpdates"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"auto-update checkForUpdates should handle auto-update failure gracefully","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle auto-update failure gracefully"},{"ancestorTitles":["auto-update","checkForUpdates"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"auto-update checkForUpdates should handle errors gracefully and return error info","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle errors gracefully and return error info"},{"ancestorTitles":["auto-update","checkForUpdates"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"auto-update checkForUpdates should use default package name when not provided","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should use default package name when not provided"},{"ancestorTitles":["auto-update","checkForUpdatesAsync"],"duration":102,"failureDetails":[],"failureMessages":[],"fullName":"auto-update checkForUpdatesAsync should execute checkForUpdates asynchronously without blocking","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should execute checkForUpdates asynchronously without blocking"},{"ancestorTitles":["auto-update","checkForUpdatesAsync"],"duration":101,"failureDetails":[],"failureMessages":[],"fullName":"auto-update checkForUpdatesAsync should not throw error when check fails","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should not throw error when check fails"},{"ancestorTitles":["auto-update","checkForUpdatesAsync"],"duration":116,"failureDetails":[],"failureMessages":[],"fullName":"auto-update checkForUpdatesAsync should use default options when not provided","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should use default options when not provided"},{"ancestorTitles":["auto-update","checkForUpdatesAsync"],"duration":102,"failureDetails":[],"failureMessages":[],"fullName":"auto-update checkForUpdatesAsync should silently catch errors and not crash","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should silently catch errors and not crash"}],"endTime":1764343033354,"message":"","name":"/Users/samuelfajreldines/Desenvolvimento/claudiomiro/src/shared/utils/auto-update.test.js","startTime":1764343032834,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["validation","isFullyImplemented","basic detection"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"validation isFullyImplemented basic detection should return true for exact match \"fully implemented: yes\"","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return true for exact match \"fully implemented: yes\""},{"ancestorTitles":["validation","isFullyImplemented","basic detection"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"validation isFullyImplemented basic detection should return true for \"fully implemented: yes\" with extra spacing","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return true for \"fully implemented: yes\" with extra spacing"},{"ancestorTitles":["validation","isFullyImplemented","basic detection"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"validation isFullyImplemented basic detection should return true for lowercase \"fully implemented: yes\"","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return true for lowercase \"fully implemented: yes\""},{"ancestorTitles":["validation","isFullyImplemented","basic detection"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"validation isFullyImplemented basic detection should return true for mixed case \"Fully Implemented: Yes\"","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return true for mixed case \"Fully Implemented: Yes\""},{"ancestorTitles":["validation","isFullyImplemented","basic detection"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"validation isFullyImplemented basic detection should return true for uppercase \"FULLY IMPLEMENTED: YES\"","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return true for uppercase \"FULLY IMPLEMENTED: YES\""},{"ancestorTitles":["validation","isFullyImplemented","basic detection"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"validation isFullyImplemented basic detection should return false for \"fully implemented: no\"","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return false for \"fully implemented: no\""},{"ancestorTitles":["validation","isFullyImplemented","basic detection"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"validation isFullyImplemented basic detection should return false for \"fully implemented: maybe\"","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return false for \"fully implemented: maybe\""},{"ancestorTitles":["validation","isFullyImplemented","task list filtering"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"validation isFullyImplemented task list filtering should ignore \"fully implemented: yes\" inside task items","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should ignore \"fully implemented: yes\" inside task items"},{"ancestorTitles":["validation","isFullyImplemented","task list filtering"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"validation isFullyImplemented task list filtering should ignore \"fully implemented: yes\" in checked task items","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should ignore \"fully implemented: yes\" in checked task items"},{"ancestorTitles":["validation","isFullyImplemented","task list filtering"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"validation isFullyImplemented task list filtering should detect \"fully implemented: yes\" that is not part of a task","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should detect \"fully implemented: yes\" that is not part of a task"},{"ancestorTitles":["validation","isFullyImplemented","task list filtering"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"validation isFullyImplemented task list filtering should ignore task items but detect standalone declaration","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should ignore task items but detect standalone declaration"},{"ancestorTitles":["validation","isFullyImplemented","first 10 lines limitation"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"validation isFullyImplemented first 10 lines limitation should detect \"fully implemented: yes\" within first 10 lines","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should detect \"fully implemented: yes\" within first 10 lines"},{"ancestorTitles":["validation","isFullyImplemented","first 10 lines limitation"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"validation isFullyImplemented first 10 lines limitation should not detect \"fully implemented: yes\" after line 10","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should not detect \"fully implemented: yes\" after line 10"},{"ancestorTitles":["validation","isFullyImplemented","first 10 lines limitation"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"validation isFullyImplemented first 10 lines limitation should check exactly first 10 lines only","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should check exactly first 10 lines only"},{"ancestorTitles":["validation","isFullyImplemented","first 10 lines limitation"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"validation isFullyImplemented first 10 lines limitation should handle files with fewer than 10 lines","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle files with fewer than 10 lines"},{"ancestorTitles":["validation","isFullyImplemented","edge cases and error handling"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"validation isFullyImplemented edge cases and error handling should handle empty file","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle empty file"},{"ancestorTitles":["validation","isFullyImplemented","edge cases and error handling"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"validation isFullyImplemented edge cases and error handling should handle file with only whitespace","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle file with only whitespace"},{"ancestorTitles":["validation","isFullyImplemented","edge cases and error handling"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"validation isFullyImplemented edge cases and error handling should handle file with only newlines","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle file with only newlines"},{"ancestorTitles":["validation","isFullyImplemented","edge cases and error handling"],"duration":9,"failureDetails":[],"failureMessages":[],"fullName":"validation isFullyImplemented edge cases and error handling should throw error for non-existent file","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should throw error for non-existent file"},{"ancestorTitles":["validation","isFullyImplemented","edge cases and error handling"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"validation isFullyImplemented edge cases and error handling should throw error for file read permission errors","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should throw error for file read permission errors"},{"ancestorTitles":["validation","isFullyImplemented","edge cases and error handling"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"validation isFullyImplemented edge cases and error handling should handle very long lines","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle very long lines"},{"ancestorTitles":["validation","isFullyImplemented","edge cases and error handling"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"validation isFullyImplemented edge cases and error handling should handle special characters","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle special characters"},{"ancestorTitles":["validation","isFullyImplemented","edge cases and error handling"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"validation isFullyImplemented edge cases and error handling should handle Unicode content","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle Unicode content"},{"ancestorTitles":["validation","isFullyImplemented","edge cases and error handling"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"validation isFullyImplemented edge cases and error handling should handle emoji in content","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle emoji in content"},{"ancestorTitles":["validation","isFullyImplemented","edge cases and error handling"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"validation isFullyImplemented edge cases and error handling should handle tabs and special whitespace","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle tabs and special whitespace"},{"ancestorTitles":["validation","isFullyImplemented","edge cases and error handling"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"validation isFullyImplemented edge cases and error handling should handle CRLF line endings","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle CRLF line endings"},{"ancestorTitles":["validation","isFullyImplemented","edge cases and error handling"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"validation isFullyImplemented edge cases and error handling should handle mixed line endings","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle mixed line endings"},{"ancestorTitles":["validation","isFullyImplemented","malformed content"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"validation isFullyImplemented malformed content should return false for partial match \"fully implemented:\"","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return false for partial match \"fully implemented:\""},{"ancestorTitles":["validation","isFullyImplemented","malformed content"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"validation isFullyImplemented malformed content should return false for \"fully: yes\"","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return false for \"fully: yes\""},{"ancestorTitles":["validation","isFullyImplemented","malformed content"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"validation isFullyImplemented malformed content should return false for \"implemented: yes\"","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return false for \"implemented: yes\""},{"ancestorTitles":["validation","isFullyImplemented","malformed content"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"validation isFullyImplemented malformed content should handle content without the marker","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle content without the marker"},{"ancestorTitles":["validation","isFullyImplemented","multi-line and formatting variations"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"validation isFullyImplemented multi-line and formatting variations should handle \"fully implemented: yes\" on first line","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle \"fully implemented: yes\" on first line"},{"ancestorTitles":["validation","isFullyImplemented","multi-line and formatting variations"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"validation isFullyImplemented multi-line and formatting variations should handle \"fully implemented: yes\" on last checked line (line 10)","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle \"fully implemented: yes\" on last checked line (line 10)"},{"ancestorTitles":["validation","isFullyImplemented","multi-line and formatting variations"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"validation isFullyImplemented multi-line and formatting variations should handle multiple occurrences within first 10 lines","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle multiple occurrences within first 10 lines"},{"ancestorTitles":["validation","isFullyImplemented","multi-line and formatting variations"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"validation isFullyImplemented multi-line and formatting variations should not match text before \"fully implemented: yes\" on same line","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should not match text before \"fully implemented: yes\" on same line"},{"ancestorTitles":["validation","isFullyImplemented","multi-line and formatting variations"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"validation isFullyImplemented multi-line and formatting variations should detect with various spacing around colon","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should detect with various spacing around colon"}],"endTime":1764343033412,"message":"","name":"/Users/samuelfajreldines/Desenvolvimento/claudiomiro/src/commands/task-executor/utils/validation.test.js","startTime":1764343033357,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["prompt-reader","getMultilineInput"],"duration":11,"failureDetails":[],"failureMessages":[],"fullName":"prompt-reader getMultilineInput should create readline interface with correct options","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should create readline interface with correct options"},{"ancestorTitles":["prompt-reader","getMultilineInput"],"duration":21,"failureDetails":[],"failureMessages":[],"fullName":"prompt-reader getMultilineInput should handle SIGINT cancellation","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should handle SIGINT cancellation"},{"ancestorTitles":["prompt-reader","getMultilineInput"],"duration":11,"failureDetails":[],"failureMessages":[],"fullName":"prompt-reader getMultilineInput should display formatted output","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should display formatted output"},{"ancestorTitles":["prompt-reader","getSimpleInput"],"duration":6,"failureDetails":[],"failureMessages":[],"fullName":"prompt-reader getSimpleInput should create readline interface and handle question","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should create readline interface and handle question"},{"ancestorTitles":["prompt-reader","getSimpleInput"],"duration":21,"failureDetails":[],"failureMessages":[],"fullName":"prompt-reader getSimpleInput should handle SIGINT cancellation","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should handle SIGINT cancellation"},{"ancestorTitles":["prompt-reader","getSimpleInput"],"duration":7,"failureDetails":[],"failureMessages":[],"fullName":"prompt-reader getSimpleInput should trim whitespace from answer","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should trim whitespace from answer"},{"ancestorTitles":["prompt-reader","askClarificationQuestions"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"prompt-reader askClarificationQuestions should process JSON string questions and collect answers","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should process JSON string questions and collect answers"},{"ancestorTitles":["prompt-reader","askClarificationQuestions"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"prompt-reader askClarificationQuestions should process object questions and collect answers","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should process object questions and collect answers"},{"ancestorTitles":["prompt-reader","askClarificationQuestions"],"duration":3,"failureDetails":[],"failureMessages":[],"fullName":"prompt-reader askClarificationQuestions should handle multiple questions","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should handle multiple questions"},{"ancestorTitles":["prompt-reader","askClarificationQuestions"],"duration":11,"failureDetails":[],"failureMessages":[],"fullName":"prompt-reader askClarificationQuestions should throw error for malformed JSON string","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should throw error for malformed JSON string"},{"ancestorTitles":["prompt-reader","askClarificationQuestions"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"prompt-reader askClarificationQuestions should throw error when questions is not an array","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should throw error when questions is not an array"},{"ancestorTitles":["prompt-reader","askClarificationQuestions"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"prompt-reader askClarificationQuestions should handle empty questions array","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle empty questions array"},{"ancestorTitles":["prompt-reader","askClarificationQuestions"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"prompt-reader askClarificationQuestions should handle questions with options","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle questions with options"},{"ancestorTitles":["prompt-reader","askClarificationQuestions"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"prompt-reader askClarificationQuestions should handle questions with currentPatterns","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle questions with currentPatterns"},{"ancestorTitles":["prompt-reader","askClarificationQuestions"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"prompt-reader askClarificationQuestions should handle Unicode content in questions and answers","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should handle Unicode content in questions and answers"},{"ancestorTitles":["prompt-reader","askClarificationQuestions"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"prompt-reader askClarificationQuestions should verify timestamp format in response","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should verify timestamp format in response"},{"ancestorTitles":["prompt-reader","askClarificationQuestions"],"duration":3,"failureDetails":[],"failureMessages":[],"fullName":"prompt-reader askClarificationQuestions should handle questions with missing required fields","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle questions with missing required fields"}],"endTime":1764343033709,"message":"","name":"/Users/samuelfajreldines/Desenvolvimento/claudiomiro/src/shared/services/prompt-reader.test.js","startTime":1764343033421,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["CodeIndex","IndexBuilder"],"duration":4,"failureDetails":[],"failureMessages":[],"fullName":"CodeIndex IndexBuilder should scan directory and find JavaScript files","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should scan directory and find JavaScript files"},{"ancestorTitles":["CodeIndex","IndexBuilder"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"CodeIndex IndexBuilder should ignore node_modules directory","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should ignore node_modules directory"},{"ancestorTitles":["CodeIndex","IndexBuilder"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"CodeIndex IndexBuilder should extract function declarations","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should extract function declarations"},{"ancestorTitles":["CodeIndex","IndexBuilder"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"CodeIndex IndexBuilder should extract class declarations","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should extract class declarations"},{"ancestorTitles":["CodeIndex","IndexBuilder"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"CodeIndex IndexBuilder should detect exported symbols","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should detect exported symbols"},{"ancestorTitles":["CodeIndex","IndexBuilder"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"CodeIndex IndexBuilder should calculate file hashes","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should calculate file hashes"},{"ancestorTitles":["CodeIndex","IndexBuilder"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"CodeIndex IndexBuilder should handle TypeScript files","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle TypeScript files"},{"ancestorTitles":["CodeIndex","IndexBuilder"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"CodeIndex IndexBuilder should handle empty directory","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle empty directory"},{"ancestorTitles":["CodeIndex","IndexBuilder"],"duration":6,"failureDetails":[],"failureMessages":[],"fullName":"CodeIndex IndexBuilder should respect maxFileSize option","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should respect maxFileSize option"},{"ancestorTitles":["CodeIndex","IndexBuilder"],"duration":3,"failureDetails":[],"failureMessages":[],"fullName":"CodeIndex IndexBuilder should perform incremental scan","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should perform incremental scan"},{"ancestorTitles":["CodeIndex","QueryEngine"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"CodeIndex QueryEngine should find symbol by ID","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should find symbol by ID"},{"ancestorTitles":["CodeIndex","QueryEngine"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"CodeIndex QueryEngine should return null for non-existent ID","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return null for non-existent ID"},{"ancestorTitles":["CodeIndex","QueryEngine"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"CodeIndex QueryEngine should find symbols by name","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should find symbols by name"},{"ancestorTitles":["CodeIndex","QueryEngine"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"CodeIndex QueryEngine should find symbols by partial name","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should find symbols by partial name"},{"ancestorTitles":["CodeIndex","QueryEngine"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"CodeIndex QueryEngine should find symbols by kind","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should find symbols by kind"},{"ancestorTitles":["CodeIndex","QueryEngine"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"CodeIndex QueryEngine should find symbols by file","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should find symbols by file"},{"ancestorTitles":["CodeIndex","QueryEngine"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"CodeIndex QueryEngine should find exported symbols","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should find exported symbols"},{"ancestorTitles":["CodeIndex","QueryEngine"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"CodeIndex QueryEngine should search with multiple filters","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should search with multiple filters"},{"ancestorTitles":["CodeIndex","QueryEngine"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"CodeIndex QueryEngine should get file dependencies","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should get file dependencies"},{"ancestorTitles":["CodeIndex","QueryEngine"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"CodeIndex QueryEngine should get file summary","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should get file summary"},{"ancestorTitles":["CodeIndex","QueryEngine"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"CodeIndex QueryEngine should get codebase summary","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should get codebase summary"},{"ancestorTitles":["CodeIndex","QueryEngine"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"CodeIndex QueryEngine should find symbols by topic","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should find symbols by topic"},{"ancestorTitles":["CodeIndex","QueryEngine"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"CodeIndex QueryEngine should format symbols for prompt","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should format symbols for prompt"},{"ancestorTitles":["CodeIndex","QueryEngine"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"CodeIndex QueryEngine should convert to handles","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"status":"passed","title":"should convert to handles"},{"ancestorTitles":["CodeIndex","QueryEngine"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"CodeIndex QueryEngine should build dependency graph","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should build dependency graph"},{"ancestorTitles":["CodeIndex","QueryEngine","semanticSearch (with fallback)"],"duration":4,"failureDetails":[],"failureMessages":[],"fullName":"CodeIndex QueryEngine semanticSearch (with fallback) should return keyword-matched results when Ollama unavailable","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should return keyword-matched results when Ollama unavailable"},{"ancestorTitles":["CodeIndex","QueryEngine","semanticSearch (with fallback)"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"CodeIndex QueryEngine semanticSearch (with fallback) should filter by kinds","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should filter by kinds"},{"ancestorTitles":["CodeIndex","QueryEngine","semanticSearch (with fallback)"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"CodeIndex QueryEngine semanticSearch (with fallback) should limit results by maxResults","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should limit results by maxResults"},{"ancestorTitles":["CodeIndex","QueryEngine","semanticSearch (with fallback)"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"CodeIndex QueryEngine semanticSearch (with fallback) should return empty array for no matches","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return empty array for no matches"},{"ancestorTitles":["CodeIndex","QueryEngine","getSmartContext (with fallback)"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"CodeIndex QueryEngine getSmartContext (with fallback) should return context object with symbols","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"status":"passed","title":"should return context object with symbols"},{"ancestorTitles":["CodeIndex","QueryEngine","getSmartContext (with fallback)"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"CodeIndex QueryEngine getSmartContext (with fallback) should include relevant symbols","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should include relevant symbols"},{"ancestorTitles":["CodeIndex","QueryEngine","getSmartContext (with fallback)"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"CodeIndex QueryEngine getSmartContext (with fallback) should track files in context","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should track files in context"},{"ancestorTitles":["CodeIndex","QueryEngine","getSmartContext (with fallback)"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"CodeIndex QueryEngine getSmartContext (with fallback) should return empty context for no matches","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return empty context for no matches"},{"ancestorTitles":["CodeIndex","QueryEngine","explainSymbol (with fallback)"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"CodeIndex QueryEngine explainSymbol (with fallback) should return explanation for valid symbol","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"status":"passed","title":"should return explanation for valid symbol"},{"ancestorTitles":["CodeIndex","QueryEngine","explainSymbol (with fallback)"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"CodeIndex QueryEngine explainSymbol (with fallback) should return null for non-existent symbol","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return null for non-existent symbol"},{"ancestorTitles":["CodeIndex","QueryEngine","explainSymbol (with fallback)"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"CodeIndex QueryEngine explainSymbol (with fallback) should generate basic description without LLM","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should generate basic description without LLM"},{"ancestorTitles":["CodeIndex","QueryEngine","explainSymbol (with fallback)"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"CodeIndex QueryEngine explainSymbol (with fallback) should include different descriptions for different kinds","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should include different descriptions for different kinds"},{"ancestorTitles":["CodeIndex","QueryEngine","rankSymbols (with fallback)"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"CodeIndex QueryEngine rankSymbols (with fallback) should rank symbols by relevance","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should rank symbols by relevance"},{"ancestorTitles":["CodeIndex","QueryEngine","rankSymbols (with fallback)"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"CodeIndex QueryEngine rankSymbols (with fallback) should return empty array for empty input","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return empty array for empty input"},{"ancestorTitles":["CodeIndex","QueryEngine","rankSymbols (with fallback)"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"CodeIndex QueryEngine rankSymbols (with fallback) should boost exported symbols","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should boost exported symbols"},{"ancestorTitles":["CodeIndex","QueryEngine","isLLMAvailable"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"CodeIndex QueryEngine isLLMAvailable should return false when LocalLLM not configured","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return false when LocalLLM not configured"},{"ancestorTitles":["CodeIndex","CodeIndex (Integration)"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"CodeIndex CodeIndex (Integration) should build index from directory","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should build index from directory"},{"ancestorTitles":["CodeIndex","CodeIndex (Integration)"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"CodeIndex CodeIndex (Integration) should cache index to disk","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should cache index to disk"},{"ancestorTitles":["CodeIndex","CodeIndex (Integration)"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"CodeIndex CodeIndex (Integration) should load index from cache","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should load index from cache"},{"ancestorTitles":["CodeIndex","CodeIndex (Integration)"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"CodeIndex CodeIndex (Integration) should clear cache","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should clear cache"},{"ancestorTitles":["CodeIndex","CodeIndex (Integration)"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"CodeIndex CodeIndex (Integration) should find relevant symbols","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should find relevant symbols"},{"ancestorTitles":["CodeIndex","CodeIndex (Integration)"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"CodeIndex CodeIndex (Integration) should get symbol context","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should get symbol context"},{"ancestorTitles":["CodeIndex","CodeIndex (Integration)"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"CodeIndex CodeIndex (Integration) should search with filters","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should search with filters"},{"ancestorTitles":["CodeIndex","CodeIndex (Integration)"],"duration":13,"failureDetails":[],"failureMessages":[],"fullName":"CodeIndex CodeIndex (Integration) should throw error when not built","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should throw error when not built"},{"ancestorTitles":["CodeIndex","CodeIndex (Integration)"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"CodeIndex CodeIndex (Integration) should format symbols for LLM prompt","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should format symbols for LLM prompt"},{"ancestorTitles":["CodeIndex","CodeIndex (Integration)","Ollama-Enhanced Methods"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"CodeIndex CodeIndex (Integration) Ollama-Enhanced Methods semanticSearch should work with fallback","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"semanticSearch should work with fallback"},{"ancestorTitles":["CodeIndex","CodeIndex (Integration)","Ollama-Enhanced Methods"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"CodeIndex CodeIndex (Integration) Ollama-Enhanced Methods getSmartContext should return context object","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"getSmartContext should return context object"},{"ancestorTitles":["CodeIndex","CodeIndex (Integration)","Ollama-Enhanced Methods"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"CodeIndex CodeIndex (Integration) Ollama-Enhanced Methods getSmartContext with includeCode should add code snippets","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"getSmartContext with includeCode should add code snippets"},{"ancestorTitles":["CodeIndex","CodeIndex (Integration)","Ollama-Enhanced Methods"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"CodeIndex CodeIndex (Integration) Ollama-Enhanced Methods explainSymbol should return explanation","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"explainSymbol should return explanation"},{"ancestorTitles":["CodeIndex","CodeIndex (Integration)","Ollama-Enhanced Methods"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"CodeIndex CodeIndex (Integration) Ollama-Enhanced Methods rankSymbols should rank by relevance","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"rankSymbols should rank by relevance"},{"ancestorTitles":["CodeIndex","CodeIndex (Integration)","Ollama-Enhanced Methods"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"CodeIndex CodeIndex (Integration) Ollama-Enhanced Methods isLLMAvailable should return boolean","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"isLLMAvailable should return boolean"},{"ancestorTitles":["CodeIndex","CodeIndex (Integration)","Ollama-Enhanced Methods"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"CodeIndex CodeIndex (Integration) Ollama-Enhanced Methods should throw error for Ollama methods when not built","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should throw error for Ollama methods when not built"},{"ancestorTitles":["Language Patterns"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Language Patterns should export SYMBOL_KINDS","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should export SYMBOL_KINDS"},{"ancestorTitles":["Language Patterns"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Language Patterns should export PATTERNS","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should export PATTERNS"},{"ancestorTitles":["Language Patterns"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Language Patterns should export FILE_EXTENSIONS","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should export FILE_EXTENSIONS"},{"ancestorTitles":["Language Patterns"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Language Patterns isReactComponentName should detect component names","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"isReactComponentName should detect component names"},{"ancestorTitles":["Language Patterns"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Language Patterns isReactHookName should detect hook names","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"status":"passed","title":"isReactHookName should detect hook names"},{"ancestorTitles":["Language Patterns"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Language Patterns inferKind should infer React component kind","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"inferKind should infer React component kind"},{"ancestorTitles":["Language Patterns"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Language Patterns inferKind should infer React hook kind","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"inferKind should infer React hook kind"},{"ancestorTitles":["Language Patterns"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Language Patterns extractParams should parse function parameters","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"extractParams should parse function parameters"}],"endTime":1764343033840,"message":"","name":"/Users/samuelfajreldines/Desenvolvimento/claudiomiro/src/shared/services/code-index/index.test.js","startTime":1764343033714,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["ParallelUIRenderer","Constructor"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"ParallelUIRenderer Constructor should initialize with TerminalRenderer","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should initialize with TerminalRenderer"},{"ancestorTitles":["ParallelUIRenderer","Constructor"],"duration":22,"failureDetails":[],"failureMessages":[],"fullName":"ParallelUIRenderer Constructor should throw error if TerminalRenderer is not provided","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should throw error if TerminalRenderer is not provided"},{"ancestorTitles":["ParallelUIRenderer","Constructor"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"ParallelUIRenderer Constructor should initialize with correct spinner types","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should initialize with correct spinner types"},{"ancestorTitles":["ParallelUIRenderer","getColorForStatus"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"ParallelUIRenderer getColorForStatus should return green for completed status","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return green for completed status"},{"ancestorTitles":["ParallelUIRenderer","getColorForStatus"],"duration":3,"failureDetails":[],"failureMessages":[],"fullName":"ParallelUIRenderer getColorForStatus should return yellow for running status","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return yellow for running status"},{"ancestorTitles":["ParallelUIRenderer","getColorForStatus"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"ParallelUIRenderer getColorForStatus should return red for failed status","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return red for failed status"},{"ancestorTitles":["ParallelUIRenderer","getColorForStatus"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"ParallelUIRenderer getColorForStatus should return gray for pending status","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return gray for pending status"},{"ancestorTitles":["ParallelUIRenderer","getColorForStatus"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"ParallelUIRenderer getColorForStatus should return gray for unknown status","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should return gray for unknown status"},{"ancestorTitles":["ParallelUIRenderer","getSpinnerFrame"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"ParallelUIRenderer getSpinnerFrame should return a frame from the specified spinner type","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should return a frame from the specified spinner type"},{"ancestorTitles":["ParallelUIRenderer","getSpinnerFrame"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"ParallelUIRenderer getSpinnerFrame should cycle through spinner frames","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should cycle through spinner frames"},{"ancestorTitles":["ParallelUIRenderer","getSpinnerFrame"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"ParallelUIRenderer getSpinnerFrame should fall back to dots spinner for unknown type","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should fall back to dots spinner for unknown type"},{"ancestorTitles":["ParallelUIRenderer","renderTaskLine"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"ParallelUIRenderer renderTaskLine should render task line with all components","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should render task line with all components"},{"ancestorTitles":["ParallelUIRenderer","renderTaskLine"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"ParallelUIRenderer renderTaskLine should render task line with only status","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should render task line with only status"},{"ancestorTitles":["ParallelUIRenderer","renderTaskLine"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"ParallelUIRenderer renderTaskLine should include spinner for running tasks","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should include spinner for running tasks"},{"ancestorTitles":["ParallelUIRenderer","renderTaskLine"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"ParallelUIRenderer renderTaskLine should not include spinner for non-running tasks","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should not include spinner for non-running tasks"},{"ancestorTitles":["ParallelUIRenderer","renderTaskLine"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"ParallelUIRenderer renderTaskLine should use different spinners for different task indices","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should use different spinners for different task indices"},{"ancestorTitles":["ParallelUIRenderer","renderTaskLine"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"ParallelUIRenderer renderTaskLine should sanitize multiline task data into single line","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should sanitize multiline task data into single line"},{"ancestorTitles":["ParallelUIRenderer","renderTaskLine"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"ParallelUIRenderer renderTaskLine should display Done for completed tasks without Claude message","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should display Done for completed tasks without Claude message"},{"ancestorTitles":["ParallelUIRenderer","truncateLine"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"ParallelUIRenderer truncateLine should not truncate lines shorter than max width","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should not truncate lines shorter than max width"},{"ancestorTitles":["ParallelUIRenderer","truncateLine"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"ParallelUIRenderer truncateLine should truncate lines exceeding max width","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should truncate lines exceeding max width"},{"ancestorTitles":["ParallelUIRenderer","truncateLine"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"ParallelUIRenderer truncateLine should handle lines with ANSI color codes","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle lines with ANSI color codes"},{"ancestorTitles":["ParallelUIRenderer","renderFrame"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"ParallelUIRenderer renderFrame should render header with progress percentage","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should render header with progress percentage"},{"ancestorTitles":["ParallelUIRenderer","renderFrame"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"ParallelUIRenderer renderFrame should render all task lines","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"status":"passed","title":"should render all task lines"},{"ancestorTitles":["ParallelUIRenderer","renderFrame"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"ParallelUIRenderer renderFrame should handle empty task states","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle empty task states"},{"ancestorTitles":["ParallelUIRenderer","renderFrame"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"ParallelUIRenderer renderFrame should handle null task states","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle null task states"},{"ancestorTitles":["ParallelUIRenderer","renderFrame"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"ParallelUIRenderer renderFrame should truncate lines to terminal width","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should truncate lines to terminal width"},{"ancestorTitles":["ParallelUIRenderer","renderFrame"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"ParallelUIRenderer renderFrame should handle tasks with missing fields","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle tasks with missing fields"},{"ancestorTitles":["ParallelUIRenderer","renderFrame"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"ParallelUIRenderer renderFrame should calculate progress based on step completion","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should calculate progress based on step completion"},{"ancestorTitles":["ParallelUIRenderer","start"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"ParallelUIRenderer start should throw error if stateManager is not provided","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should throw error if stateManager is not provided"},{"ancestorTitles":["ParallelUIRenderer","start"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"ParallelUIRenderer start should throw error if progressCalculator is not provided","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should throw error if progressCalculator is not provided"},{"ancestorTitles":["ParallelUIRenderer","start"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"ParallelUIRenderer start should hide cursor on start","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should hide cursor on start"},{"ancestorTitles":["ParallelUIRenderer","start"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"ParallelUIRenderer start should mark UI renderer as active when supported","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should mark UI renderer as active when supported"},{"ancestorTitles":["ParallelUIRenderer","start"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"ParallelUIRenderer start should stop logger spinner when starting","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should stop logger spinner when starting"},{"ancestorTitles":["ParallelUIRenderer","start"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"ParallelUIRenderer start should create interval with 200ms delay","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should create interval with 200ms delay"},{"ancestorTitles":["ParallelUIRenderer","start"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"ParallelUIRenderer start should call renderFrame and renderBlock on interval","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should call renderFrame and renderBlock on interval"},{"ancestorTitles":["ParallelUIRenderer","start"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"ParallelUIRenderer start should increment frame counter on each render","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should increment frame counter on each render"},{"ancestorTitles":["ParallelUIRenderer","stop"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"ParallelUIRenderer stop should clear interval","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should clear interval"},{"ancestorTitles":["ParallelUIRenderer","stop"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"ParallelUIRenderer stop should render final static frame","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should render final static frame"},{"ancestorTitles":["ParallelUIRenderer","stop"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"ParallelUIRenderer stop should show cursor after stop","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should show cursor after stop"},{"ancestorTitles":["ParallelUIRenderer","stop"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"ParallelUIRenderer stop should mark UI renderer as inactive when stopped","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should mark UI renderer as inactive when stopped"},{"ancestorTitles":["ParallelUIRenderer","stop"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"ParallelUIRenderer stop should handle stop when not started","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle stop when not started"},{"ancestorTitles":["ParallelUIRenderer","Edge Cases"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"ParallelUIRenderer Edge Cases should handle very long task names","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle very long task names"},{"ancestorTitles":["ParallelUIRenderer","Edge Cases"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"ParallelUIRenderer Edge Cases should handle special characters in task names","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle special characters in task names"},{"ancestorTitles":["ParallelUIRenderer","Edge Cases"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"ParallelUIRenderer Edge Cases should handle rapid start/stop cycles","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle rapid start/stop cycles"},{"ancestorTitles":["ParallelUIRenderer","Advanced Terminal Control and Animation Concurrency"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"ParallelUIRenderer Advanced Terminal Control and Animation Concurrency should handle real-time rendering with concurrent state changes","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should handle real-time rendering with concurrent state changes"},{"ancestorTitles":["ParallelUIRenderer","Advanced Terminal Control and Animation Concurrency"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"ParallelUIRenderer Advanced Terminal Control and Animation Concurrency should maintain cursor management under concurrent start/stop operations","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should maintain cursor management under concurrent start/stop operations"},{"ancestorTitles":["ParallelUIRenderer","Advanced Terminal Control and Animation Concurrency"],"duration":4,"failureDetails":[],"failureMessages":[],"fullName":"ParallelUIRenderer Advanced Terminal Control and Animation Concurrency should handle concurrent UI component rendering without interference","invocations":1,"location":null,"numPassingAsserts":18,"retryReasons":[],"status":"passed","title":"should handle concurrent UI component rendering without interference"},{"ancestorTitles":["ParallelUIRenderer","Advanced Terminal Control and Animation Concurrency"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"ParallelUIRenderer Advanced Terminal Control and Animation Concurrency should handle animation timing with precise frame progression","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should handle animation timing with precise frame progression"},{"ancestorTitles":["ParallelUIRenderer","Advanced Terminal Control and Animation Concurrency"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"ParallelUIRenderer Advanced Terminal Control and Animation Concurrency should validate ANSI color code handling under concurrent updates","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should validate ANSI color code handling under concurrent updates"},{"ancestorTitles":["ParallelUIRenderer","Memory Leak Detection and Resource Management"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"ParallelUIRenderer Memory Leak Detection and Resource Management should properly cleanup render intervals on stop","invocations":1,"location":null,"numPassingAsserts":13,"retryReasons":[],"status":"passed","title":"should properly cleanup render intervals on stop"},{"ancestorTitles":["ParallelUIRenderer","Memory Leak Detection and Resource Management"],"duration":8,"failureDetails":[],"failureMessages":[],"fullName":"ParallelUIRenderer Memory Leak Detection and Resource Management should handle extended rendering sessions without memory accumulation","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should handle extended rendering sessions without memory accumulation"},{"ancestorTitles":["ParallelUIRenderer","Memory Leak Detection and Resource Management"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"ParallelUIRenderer Memory Leak Detection and Resource Management should handle rapid terminal width changes during rendering","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"status":"passed","title":"should handle rapid terminal width changes during rendering"},{"ancestorTitles":["ParallelUIRenderer","Memory Leak Detection and Resource Management"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"ParallelUIRenderer Memory Leak Detection and Resource Management should prevent resource leaks under error conditions","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"status":"passed","title":"should prevent resource leaks under error conditions"},{"ancestorTitles":["ParallelUIRenderer","Performance Testing for High-Frequency UI Updates"],"duration":8,"failureDetails":[],"failureMessages":[],"fullName":"ParallelUIRenderer Performance Testing for High-Frequency UI Updates should maintain 200ms render intervals under high load","invocations":1,"location":null,"numPassingAsserts":102,"retryReasons":[],"status":"passed","title":"should maintain 200ms render intervals under high load"},{"ancestorTitles":["ParallelUIRenderer","Performance Testing for High-Frequency UI Updates"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"ParallelUIRenderer Performance Testing for High-Frequency UI Updates should handle efficient rendering of large task sets","invocations":1,"location":null,"numPassingAsserts":33,"retryReasons":[],"status":"passed","title":"should handle efficient rendering of large task sets"},{"ancestorTitles":["ParallelUIRenderer","Integration with ParallelStateManager"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"ParallelUIRenderer Integration with ParallelStateManager should coordinate end-to-end workflow with state manager","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"status":"passed","title":"should coordinate end-to-end workflow with state manager"},{"ancestorTitles":["ParallelUIRenderer","Integration with ParallelStateManager"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"ParallelUIRenderer Integration with ParallelStateManager should handle complex multi-task lifecycle scenarios","invocations":1,"location":null,"numPassingAsserts":8,"retryReasons":[],"status":"passed","title":"should handle complex multi-task lifecycle scenarios"},{"ancestorTitles":["ParallelUIRenderer","Integration with ParallelStateManager"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"ParallelUIRenderer Integration with ParallelStateManager should handle error recovery and state corruption scenarios","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should handle error recovery and state corruption scenarios"},{"ancestorTitles":["ParallelUIRenderer","Integration with ParallelStateManager"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"ParallelUIRenderer Integration with ParallelStateManager should validate end-to-end state synchronization consistency","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should validate end-to-end state synchronization consistency"}],"endTime":1764343033997,"message":"","name":"/Users/samuelfajreldines/Desenvolvimento/claudiomiro/src/commands/task-executor/services/parallel-ui-renderer.test.js","startTime":1764343033865,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["src/index.js","parseArgs()"],"duration":56,"failureDetails":[],"failureMessages":[],"fullName":"src/index.js parseArgs() should route to task-executor when no special flags are present","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"status":"passed","title":"should route to task-executor when no special flags are present"},{"ancestorTitles":["src/index.js","parseArgs()"],"duration":7,"failureDetails":[],"failureMessages":[],"fullName":"src/index.js parseArgs() should route to fix-command when --fix-command flag is present","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"status":"passed","title":"should route to fix-command when --fix-command flag is present"},{"ancestorTitles":["src/index.js","parseArgs()"],"duration":8,"failureDetails":[],"failureMessages":[],"fullName":"src/index.js parseArgs() should route to loop-fixes when --loop-fixes flag is present","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"status":"passed","title":"should route to loop-fixes when --loop-fixes flag is present"},{"ancestorTitles":["src/index.js","parseArgs()"],"duration":7,"failureDetails":[],"failureMessages":[],"fullName":"src/index.js parseArgs() should give --fix-command precedence over --loop-fixes","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should give --fix-command precedence over --loop-fixes"},{"ancestorTitles":["src/index.js","init()"],"duration":6,"failureDetails":[],"failureMessages":[],"fullName":"src/index.js init() should call logger.banner() first","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should call logger.banner() first"},{"ancestorTitles":["src/index.js","init()"],"duration":7,"failureDetails":[],"failureMessages":[],"fullName":"src/index.js init() should call checkForUpdatesAsync with \"claudiomiro\"","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should call checkForUpdatesAsync with \"claudiomiro\""},{"ancestorTitles":["src/index.js","init()"],"duration":9,"failureDetails":[],"failureMessages":[],"fullName":"src/index.js init() should pass all args to the command module","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should pass all args to the command module"},{"ancestorTitles":["src/index.js","init()"],"duration":6,"failureDetails":[],"failureMessages":[],"fullName":"src/index.js init() should handle empty args (defaults to task-executor)","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle empty args (defaults to task-executor)"},{"ancestorTitles":["src/index.js","exports"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"src/index.js exports should export init function","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should export init function"}],"endTime":1764343034144,"message":"","name":"/Users/samuelfajreldines/Desenvolvimento/claudiomiro/src/index.test.js","startTime":1764343034003,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["steps/index","module exports"],"duration":4,"failureDetails":[],"failureMessages":[],"fullName":"steps/index module exports should export all step functions","invocations":1,"location":null,"numPassingAsserts":11,"retryReasons":[],"status":"passed","title":"should export all step functions"},{"ancestorTitles":["steps/index","module exports"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"steps/index module exports should export exactly 9 step functions","invocations":1,"location":null,"numPassingAsserts":11,"retryReasons":[],"status":"passed","title":"should export exactly 9 step functions"},{"ancestorTitles":["steps/index","module exports"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"steps/index module exports should export functions with correct types","invocations":1,"location":null,"numPassingAsserts":9,"retryReasons":[],"status":"passed","title":"should export functions with correct types"},{"ancestorTitles":["steps/index","module exports"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"steps/index module exports should have all step functions in sequential order","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should have all step functions in sequential order"},{"ancestorTitles":["steps/index","module exports"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"steps/index module exports should export non-null step functions","invocations":1,"location":null,"numPassingAsserts":27,"retryReasons":[],"status":"passed","title":"should export non-null step functions"}],"endTime":1764343034253,"message":"","name":"/Users/samuelfajreldines/Desenvolvimento/claudiomiro/src/commands/task-executor/steps/index.test.js","startTime":1764343034149,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["git-status","gitStatus"],"duration":3,"failureDetails":[],"failureMessages":[],"fullName":"git-status gitStatus should spawn git status command with correct parameters","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should spawn git status command with correct parameters"},{"ancestorTitles":["git-status","gitStatus"],"duration":3,"failureDetails":[],"failureMessages":[],"fullName":"git-status gitStatus should handle git status output","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should handle git status output"},{"ancestorTitles":["git-status","gitStatus"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"git-status gitStatus should handle clean repository (no output)","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle clean repository (no output)"},{"ancestorTitles":["git-status","gitStatus"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"git-status gitStatus should handle git status error and reject","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle git status error and reject"},{"ancestorTitles":["git-status","gitStatus"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"git-status gitStatus should handle multiline git status output","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle multiline git status output"},{"ancestorTitles":["git-status","gitStatus"],"duration":22,"failureDetails":[],"failureMessages":[],"fullName":"git-status gitStatus should accumulate output from multiple stdout data events","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should accumulate output from multiple stdout data events"},{"ancestorTitles":["git-status","gitStatus"],"duration":21,"failureDetails":[],"failureMessages":[],"fullName":"git-status gitStatus should accumulate stderr and include it in error message","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should accumulate stderr and include it in error message"},{"ancestorTitles":["git-status","gitStatus"],"duration":22,"failureDetails":[],"failureMessages":[],"fullName":"git-status gitStatus should handle multiple stderr data events","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle multiple stderr data events"},{"ancestorTitles":["git-status","gitStatus"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"git-status gitStatus should handle empty stderr with non-zero exit code","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle empty stderr with non-zero exit code"},{"ancestorTitles":["git-status","gitStatus"],"duration":22,"failureDetails":[],"failureMessages":[],"fullName":"git-status gitStatus should handle large stderr output","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle large stderr output"},{"ancestorTitles":["git-status","gitStatus"],"duration":23,"failureDetails":[],"failureMessages":[],"fullName":"git-status gitStatus should handle git not initialized error","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle git not initialized error"},{"ancestorTitles":["git-status","gitStatus"],"duration":22,"failureDetails":[],"failureMessages":[],"fullName":"git-status gitStatus should handle permission denied error","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle permission denied error"}],"endTime":1764343034434,"message":"","name":"/Users/samuelfajreldines/Desenvolvimento/claudiomiro/src/shared/services/git-status.test.js","startTime":1764343034256,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["ParallelStateManager","Singleton Pattern"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"ParallelStateManager Singleton Pattern should return the same instance","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return the same instance"},{"ancestorTitles":["ParallelStateManager","Singleton Pattern"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"ParallelStateManager Singleton Pattern should maintain state across instances","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should maintain state across instances"},{"ancestorTitles":["ParallelStateManager","initialize"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"ParallelStateManager initialize should initialize with empty array","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should initialize with empty array"},{"ancestorTitles":["ParallelStateManager","initialize"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"ParallelStateManager initialize should initialize with single task","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should initialize with single task"},{"ancestorTitles":["ParallelStateManager","initialize"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"ParallelStateManager initialize should initialize with multiple tasks","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should initialize with multiple tasks"},{"ancestorTitles":["ParallelStateManager","initialize"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"ParallelStateManager initialize should clear previous state on re-initialization","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should clear previous state on re-initialization"},{"ancestorTitles":["ParallelStateManager","initialize"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"ParallelStateManager initialize should initialize from object preserving status","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should initialize from object preserving status"},{"ancestorTitles":["ParallelStateManager","initialize"],"duration":13,"failureDetails":[],"failureMessages":[],"fullName":"ParallelStateManager initialize should throw error for invalid input","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should throw error for invalid input"},{"ancestorTitles":["ParallelStateManager","updateTaskStatus"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"ParallelStateManager updateTaskStatus should update to pending","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should update to pending"},{"ancestorTitles":["ParallelStateManager","updateTaskStatus"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"ParallelStateManager updateTaskStatus should update to running","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should update to running"},{"ancestorTitles":["ParallelStateManager","updateTaskStatus"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"ParallelStateManager updateTaskStatus should update to completed","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should update to completed"},{"ancestorTitles":["ParallelStateManager","updateTaskStatus"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"ParallelStateManager updateTaskStatus should update to failed","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should update to failed"},{"ancestorTitles":["ParallelStateManager","updateTaskStatus"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"ParallelStateManager updateTaskStatus should throw error for invalid status","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should throw error for invalid status"},{"ancestorTitles":["ParallelStateManager","updateTaskStatus"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"ParallelStateManager updateTaskStatus should handle unknown task name gracefully","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle unknown task name gracefully"},{"ancestorTitles":["ParallelStateManager","updateTaskStatus"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"ParallelStateManager updateTaskStatus should allow multiple status transitions","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should allow multiple status transitions"},{"ancestorTitles":["ParallelStateManager","updateTaskStep"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"ParallelStateManager updateTaskStep should update step with string value","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should update step with string value"},{"ancestorTitles":["ParallelStateManager","updateTaskStep"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"ParallelStateManager updateTaskStep should update step with null value","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should update step with null value"},{"ancestorTitles":["ParallelStateManager","updateTaskStep"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"ParallelStateManager updateTaskStep should update step with undefined value","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should update step with undefined value"},{"ancestorTitles":["ParallelStateManager","updateTaskStep"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"ParallelStateManager updateTaskStep should handle unknown task name gracefully","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle unknown task name gracefully"},{"ancestorTitles":["ParallelStateManager","updateTaskStep"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"ParallelStateManager updateTaskStep should allow multiple step updates","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should allow multiple step updates"},{"ancestorTitles":["ParallelStateManager","updateClaudeMessage"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"ParallelStateManager updateClaudeMessage should store message under 100 characters","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should store message under 100 characters"},{"ancestorTitles":["ParallelStateManager","updateClaudeMessage"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"ParallelStateManager updateClaudeMessage should store message exactly 100 characters","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should store message exactly 100 characters"},{"ancestorTitles":["ParallelStateManager","updateClaudeMessage"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"ParallelStateManager updateClaudeMessage should truncate message over 100 characters","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should truncate message over 100 characters"},{"ancestorTitles":["ParallelStateManager","updateClaudeMessage"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"ParallelStateManager updateClaudeMessage should truncate long message with meaningful text","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should truncate long message with meaningful text"},{"ancestorTitles":["ParallelStateManager","updateClaudeMessage"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"ParallelStateManager updateClaudeMessage should handle null message","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle null message"},{"ancestorTitles":["ParallelStateManager","updateClaudeMessage"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"ParallelStateManager updateClaudeMessage should handle undefined message","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle undefined message"},{"ancestorTitles":["ParallelStateManager","updateClaudeMessage"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"ParallelStateManager updateClaudeMessage should handle empty string","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle empty string"},{"ancestorTitles":["ParallelStateManager","updateClaudeMessage"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"ParallelStateManager updateClaudeMessage should handle unknown task name gracefully","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle unknown task name gracefully"},{"ancestorTitles":["ParallelStateManager","updateClaudeMessage"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"ParallelStateManager updateClaudeMessage should allow multiple message updates","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should allow multiple message updates"},{"ancestorTitles":["ParallelStateManager","UI renderer state"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"ParallelStateManager UI renderer state should toggle UI renderer active flag","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should toggle UI renderer active flag"},{"ancestorTitles":["ParallelStateManager","UI renderer state"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"ParallelStateManager UI renderer state should coerce non-boolean values when toggling","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should coerce non-boolean values when toggling"},{"ancestorTitles":["ParallelStateManager","getAllTaskStates"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"ParallelStateManager getAllTaskStates should return empty object for uninitialized manager","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return empty object for uninitialized manager"},{"ancestorTitles":["ParallelStateManager","getAllTaskStates"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"ParallelStateManager getAllTaskStates should return all task states","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should return all task states"},{"ancestorTitles":["ParallelStateManager","getAllTaskStates"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"ParallelStateManager getAllTaskStates should return correct state format","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should return correct state format"},{"ancestorTitles":["ParallelStateManager","getAllTaskStates"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"ParallelStateManager getAllTaskStates should return updated states","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return updated states"},{"ancestorTitles":["ParallelStateManager","getAllTaskStates"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"ParallelStateManager getAllTaskStates should not expose internal state Map","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should not expose internal state Map"},{"ancestorTitles":["ParallelStateManager","Edge Cases and Error Handling"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"ParallelStateManager Edge Cases and Error Handling should not crash on null task name in updateTaskStatus","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should not crash on null task name in updateTaskStatus"},{"ancestorTitles":["ParallelStateManager","Edge Cases and Error Handling"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"ParallelStateManager Edge Cases and Error Handling should not crash on null task name in updateTaskStep","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should not crash on null task name in updateTaskStep"},{"ancestorTitles":["ParallelStateManager","Edge Cases and Error Handling"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"ParallelStateManager Edge Cases and Error Handling should not crash on null task name in updateClaudeMessage","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should not crash on null task name in updateClaudeMessage"},{"ancestorTitles":["ParallelStateManager","Edge Cases and Error Handling"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"ParallelStateManager Edge Cases and Error Handling should handle concurrent updates simulation","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"status":"passed","title":"should handle concurrent updates simulation"},{"ancestorTitles":["ParallelStateManager","Edge Cases and Error Handling"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"ParallelStateManager Edge Cases and Error Handling should handle special characters in messages","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle special characters in messages"},{"ancestorTitles":["ParallelStateManager","Edge Cases and Error Handling"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"ParallelStateManager Edge Cases and Error Handling should handle unicode characters in messages","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle unicode characters in messages"},{"ancestorTitles":["ParallelStateManager","Edge Cases and Error Handling"],"duration":3,"failureDetails":[],"failureMessages":[],"fullName":"ParallelStateManager Edge Cases and Error Handling should maintain state integrity across multiple operations","invocations":1,"location":null,"numPassingAsserts":9,"retryReasons":[],"status":"passed","title":"should maintain state integrity across multiple operations"},{"ancestorTitles":["ParallelStateManager","Integration Scenarios"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"ParallelStateManager Integration Scenarios should handle full task lifecycle","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"status":"passed","title":"should handle full task lifecycle"},{"ancestorTitles":["ParallelStateManager","Integration Scenarios"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"ParallelStateManager Integration Scenarios should handle multiple parallel tasks","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"status":"passed","title":"should handle multiple parallel tasks"},{"ancestorTitles":["ParallelStateManager","Advanced Concurrency Scenarios"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"ParallelStateManager Advanced Concurrency Scenarios should handle true concurrent access with Promise.all() and varied delays","invocations":1,"location":null,"numPassingAsserts":8,"retryReasons":[],"status":"passed","title":"should handle true concurrent access with Promise.all() and varied delays"},{"ancestorTitles":["ParallelStateManager","Advanced Concurrency Scenarios"],"duration":11,"failureDetails":[],"failureMessages":[],"fullName":"ParallelStateManager Advanced Concurrency Scenarios should maintain state consistency under high-frequency concurrent updates","invocations":1,"location":null,"numPassingAsserts":151,"retryReasons":[],"status":"passed","title":"should maintain state consistency under high-frequency concurrent updates"},{"ancestorTitles":["ParallelStateManager","Advanced Concurrency Scenarios"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"ParallelStateManager Advanced Concurrency Scenarios should handle singleton pattern race conditions with concurrent instantiation","invocations":1,"location":null,"numPassingAsserts":21,"retryReasons":[],"status":"passed","title":"should handle singleton pattern race conditions with concurrent instantiation"},{"ancestorTitles":["ParallelStateManager","Advanced Concurrency Scenarios"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"ParallelStateManager Advanced Concurrency Scenarios should validate state invariants under concurrent mixed operations","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"status":"passed","title":"should validate state invariants under concurrent mixed operations"},{"ancestorTitles":["ParallelStateManager","Advanced Concurrency Scenarios"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"ParallelStateManager Advanced Concurrency Scenarios should handle rapid re-initialization under concurrent access","invocations":1,"location":null,"numPassingAsserts":7,"retryReasons":[],"status":"passed","title":"should handle rapid re-initialization under concurrent access"},{"ancestorTitles":["ParallelStateManager","Advanced Concurrency Scenarios"],"duration":9,"failureDetails":[],"failureMessages":[],"fullName":"ParallelStateManager Advanced Concurrency Scenarios should ensure atomic state operations under concurrent stress","invocations":1,"location":null,"numPassingAsserts":202,"retryReasons":[],"status":"passed","title":"should ensure atomic state operations under concurrent stress"},{"ancestorTitles":["ParallelStateManager","Performance Regression Tests"],"duration":6,"failureDetails":[],"failureMessages":[],"fullName":"ParallelStateManager Performance Regression Tests should handle 100+ concurrent state updates within timing targets","invocations":1,"location":null,"numPassingAsserts":63,"retryReasons":[],"status":"passed","title":"should handle 100+ concurrent state updates within timing targets"},{"ancestorTitles":["ParallelStateManager","Performance Regression Tests"],"duration":7,"failureDetails":[],"failureMessages":[],"fullName":"ParallelStateManager Performance Regression Tests should maintain memory efficiency for large task sets","invocations":1,"location":null,"numPassingAsserts":52,"retryReasons":[],"status":"passed","title":"should maintain memory efficiency for large task sets"},{"ancestorTitles":["ParallelStateManager","Integration with ParallelUIRenderer"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"ParallelStateManager Integration with ParallelUIRenderer should coordinate UI renderer lifecycle with state changes","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should coordinate UI renderer lifecycle with state changes"},{"ancestorTitles":["ParallelStateManager","Integration with ParallelUIRenderer"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"ParallelStateManager Integration with ParallelUIRenderer should handle UI renderer activation with state synchronization","invocations":1,"location":null,"numPassingAsserts":10,"retryReasons":[],"status":"passed","title":"should handle UI renderer activation with state synchronization"},{"ancestorTitles":["ParallelStateManager","Integration with ParallelUIRenderer"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"ParallelStateManager Integration with ParallelUIRenderer should handle error recovery scenarios with UI coordination","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"status":"passed","title":"should handle error recovery scenarios with UI coordination"}],"endTime":1764343034553,"message":"","name":"/Users/samuelfajreldines/Desenvolvimento/claudiomiro/src/commands/task-executor/services/parallel-state-manager.test.js","startTime":1764343034438,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["review-code","file cleanup"],"duration":3,"failureDetails":[],"failureMessages":[],"fullName":"review-code file cleanup should remove existing CODE_REVIEW.md file","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should remove existing CODE_REVIEW.md file"},{"ancestorTitles":["review-code","file cleanup"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"review-code file cleanup should remove existing GITHUB_PR.md file","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should remove existing GITHUB_PR.md file"},{"ancestorTitles":["review-code","file cleanup"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"review-code file cleanup should not remove files that do not exist","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should not remove files that do not exist"},{"ancestorTitles":["review-code","context file collection"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"review-code context file collection should always include AI_PROMPT.md and INITIAL_PROMPT.md","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should always include AI_PROMPT.md and INITIAL_PROMPT.md"},{"ancestorTitles":["review-code","context file collection"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"review-code context file collection should include RESEARCH.md when it exists","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should include RESEARCH.md when it exists"},{"ancestorTitles":["review-code","context file collection"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"review-code context file collection should include CONTEXT.md when it exists","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should include CONTEXT.md when it exists"},{"ancestorTitles":["review-code","context file collection"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"review-code context file collection should skip RESEARCH.md and CONTEXT.md from context section when they do not exist","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"status":"passed","title":"should skip RESEARCH.md and CONTEXT.md from context section when they do not exist"},{"ancestorTitles":["review-code","context file collection"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"review-code context file collection should include context files from context-cache service","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should include context files from context-cache service"},{"ancestorTitles":["review-code","context file collection"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"review-code context file collection should call context-cache service with current task excluded","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should call context-cache service with current task excluded"},{"ancestorTitles":["review-code","context file collection"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"review-code context file collection should include each context file only once in reference list","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should include each context file only once in reference list"},{"ancestorTitles":["review-code","context file collection"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"review-code context file collection should handle empty task list gracefully","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle empty task list gracefully"},{"ancestorTitles":["review-code","context file collection"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"review-code context file collection should handle directory read errors gracefully","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle directory read errors gracefully"},{"ancestorTitles":["review-code","context file collection"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"review-code context file collection should handle statSync errors gracefully","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle statSync errors gracefully"},{"ancestorTitles":["review-code","prompt template loading and replacement"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"review-code prompt template loading and replacement should load prompt-review.md template","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should load prompt-review.md template"},{"ancestorTitles":["review-code","prompt template loading and replacement"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"review-code prompt template loading and replacement should replace all placeholders in template","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should replace all placeholders in template"},{"ancestorTitles":["review-code","prompt template loading and replacement"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"review-code prompt template loading and replacement should include researchSection when RESEARCH.md exists","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should include researchSection when RESEARCH.md exists"},{"ancestorTitles":["review-code","prompt template loading and replacement"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"review-code prompt template loading and replacement should have empty researchSection when RESEARCH.md does not exist","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should have empty researchSection when RESEARCH.md does not exist"},{"ancestorTitles":["review-code","executeClaude integration"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"review-code executeClaude integration should call executeClaude with built prompt","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should call executeClaude with built prompt"},{"ancestorTitles":["review-code","executeClaude integration"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"review-code executeClaude integration should return executeClaude result","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return executeClaude result"},{"ancestorTitles":["review-code","executeClaude integration"],"duration":7,"failureDetails":[],"failureMessages":[],"fullName":"review-code executeClaude integration should propagate executeClaude errors","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should propagate executeClaude errors"},{"ancestorTitles":["review-code","context section building"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"review-code context section building should build context section with consolidated context","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should build context section with consolidated context"},{"ancestorTitles":["review-code","context section building"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"review-code context section building should always include context summary section","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should always include context summary section"}],"endTime":1764343034626,"message":"","name":"/Users/samuelfajreldines/Desenvolvimento/claudiomiro/src/commands/task-executor/steps/step6/review-code.test.js","startTime":1764343034559,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["deep-seek-executor","executeDeepSeek"],"duration":5,"failureDetails":[],"failureMessages":[],"fullName":"deep-seek-executor executeDeepSeek should call runDeepSeek when executorType is not codex","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should call runDeepSeek when executorType is not codex"},{"ancestorTitles":["deep-seek-executor","executeDeepSeek"],"duration":null,"failureDetails":[],"failureMessages":[],"fullName":"deep-seek-executor executeDeepSeek should delegate to executeCodex when executorType is codex","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"status":"pending","title":"should delegate to executeCodex when executorType is codex"},{"ancestorTitles":["deep-seek-executor","runDeepSeek internal functionality"],"duration":13,"failureDetails":[],"failureMessages":[],"fullName":"deep-seek-executor runDeepSeek internal functionality should throw error when no prompt provided","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should throw error when no prompt provided"},{"ancestorTitles":["deep-seek-executor","runDeepSeek internal functionality"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"deep-seek-executor runDeepSeek internal functionality should create temporary file with prompt text","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should create temporary file with prompt text"},{"ancestorTitles":["deep-seek-executor","runDeepSeek internal functionality"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"deep-seek-executor runDeepSeek internal functionality should spawn DeepSeek process with correct command","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should spawn DeepSeek process with correct command"},{"ancestorTitles":["deep-seek-executor","runDeepSeek internal functionality"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"deep-seek-executor runDeepSeek internal functionality should create log stream with correct path","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should create log stream with correct path"},{"ancestorTitles":["deep-seek-executor","runDeepSeek internal functionality"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"deep-seek-executor runDeepSeek internal functionality should write log headers with timestamp","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should write log headers with timestamp"},{"ancestorTitles":["deep-seek-executor","runDeepSeek internal functionality"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"deep-seek-executor runDeepSeek internal functionality should handle stdout data processing","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle stdout data processing"},{"ancestorTitles":["deep-seek-executor","runDeepSeek internal functionality"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"deep-seek-executor runDeepSeek internal functionality should handle stderr data","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle stderr data"},{"ancestorTitles":["deep-seek-executor","runDeepSeek internal functionality"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"deep-seek-executor runDeepSeek internal functionality should update state manager when taskName provided","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should update state manager when taskName provided"},{"ancestorTitles":["deep-seek-executor","runDeepSeek internal functionality"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"deep-seek-executor runDeepSeek internal functionality should suppress streaming logs when UI renderer is active","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should suppress streaming logs when UI renderer is active"},{"ancestorTitles":["deep-seek-executor","runDeepSeek internal functionality"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"deep-seek-executor runDeepSeek internal functionality should handle process close with success code","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle process close with success code"},{"ancestorTitles":["deep-seek-executor","runDeepSeek internal functionality"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"deep-seek-executor runDeepSeek internal functionality should handle process close with error code","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle process close with error code"},{"ancestorTitles":["deep-seek-executor","runDeepSeek internal functionality"],"duration":3,"failureDetails":[],"failureMessages":[],"fullName":"deep-seek-executor runDeepSeek internal functionality should handle process error","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle process error"},{"ancestorTitles":["deep-seek-executor","runDeepSeek internal functionality"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"deep-seek-executor runDeepSeek internal functionality should cleanup temporary file on successful completion","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should cleanup temporary file on successful completion"},{"ancestorTitles":["deep-seek-executor","runDeepSeek internal functionality"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"deep-seek-executor runDeepSeek internal functionality should cleanup temporary file on error","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should cleanup temporary file on error"},{"ancestorTitles":["deep-seek-executor","runDeepSeek internal functionality"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"deep-seek-executor runDeepSeek internal functionality should handle cleanup error gracefully","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle cleanup error gracefully"},{"ancestorTitles":["deep-seek-executor","runDeepSeek internal functionality"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"deep-seek-executor runDeepSeek internal functionality should implement timeout mechanism","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should implement timeout mechanism"},{"ancestorTitles":["deep-seek-executor","runDeepSeek internal functionality"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"deep-seek-executor runDeepSeek internal functionality should reset timeout on data received","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should reset timeout on data received"},{"ancestorTitles":["deep-seek-executor","runDeepSeek internal functionality"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"deep-seek-executor runDeepSeek internal functionality should handle long text wrapping","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle long text wrapping"},{"ancestorTitles":["deep-seek-executor","runDeepSeek internal functionality"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"deep-seek-executor runDeepSeek internal functionality should handle empty processed message","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle empty processed message"},{"ancestorTitles":["deep-seek-executor","overwriteBlock function"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"deep-seek-executor overwriteBlock function should use ANSI escape sequences to move cursor and clear lines","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"status":"passed","title":"should use ANSI escape sequences to move cursor and clear lines"}],"endTime":1764343034737,"message":"","name":"/Users/samuelfajreldines/Desenvolvimento/claudiomiro/src/shared/executors/deep-seek-executor.test.js","startTime":1764343034630,"status":"focused","summary":""},{"assertionResults":[{"ancestorTitles":["file-manager","startFresh()","with existing folder + createFolder=false"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() with existing folder + createFolder=false should remove existing folder without recreating it","invocations":1,"location":null,"numPassingAsserts":7,"retryReasons":[],"status":"passed","title":"should remove existing folder without recreating it"},{"ancestorTitles":["file-manager","startFresh()","with existing folder + createFolder=false"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() with existing folder + createFolder=false should call logger methods in correct order","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should call logger methods in correct order"},{"ancestorTitles":["file-manager","startFresh()","with existing folder + createFolder=true"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() with existing folder + createFolder=true should remove existing folder and recreate it","invocations":1,"location":null,"numPassingAsserts":7,"retryReasons":[],"status":"passed","title":"should remove existing folder and recreate it"},{"ancestorTitles":["file-manager","startFresh()","with existing folder + createFolder=true"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() with existing folder + createFolder=true should call both rmSync and mkdirSync","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should call both rmSync and mkdirSync"},{"ancestorTitles":["file-manager","startFresh()","with existing folder + createFolder=true"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() with existing folder + createFolder=true should call logger methods in correct order","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should call logger methods in correct order"},{"ancestorTitles":["file-manager","startFresh()","when folder does not exist"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() when folder does not exist should not remove folder and should not create it when createFolder=false","invocations":1,"location":null,"numPassingAsserts":7,"retryReasons":[],"status":"passed","title":"should not remove folder and should not create it when createFolder=false"},{"ancestorTitles":["file-manager","startFresh()","when folder does not exist"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() when folder does not exist should create folder when createFolder=true","invocations":1,"location":null,"numPassingAsserts":7,"retryReasons":[],"status":"passed","title":"should create folder when createFolder=true"},{"ancestorTitles":["file-manager","startFresh()","when folder does not exist"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() when folder does not exist should call logger methods in correct order when createFolder=false","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should call logger methods in correct order when createFolder=false"},{"ancestorTitles":["file-manager","startFresh()","when folder does not exist"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() when folder does not exist should call logger methods in correct order when createFolder=true","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should call logger methods in correct order when createFolder=true"},{"ancestorTitles":["file-manager","startFresh()","error handling scenarios"],"duration":17,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() error handling scenarios should propagate error when fs.existsSync throws","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should propagate error when fs.existsSync throws"},{"ancestorTitles":["file-manager","startFresh()","error handling scenarios"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() error handling scenarios should propagate error when fs.rmSync throws","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should propagate error when fs.rmSync throws"},{"ancestorTitles":["file-manager","startFresh()","error handling scenarios"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() error handling scenarios should propagate error when fs.mkdirSync throws","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"status":"passed","title":"should propagate error when fs.mkdirSync throws"},{"ancestorTitles":["file-manager","startFresh()","error handling scenarios"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() error handling scenarios should propagate error when mkdirSync throws and folder does not exist","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"status":"passed","title":"should propagate error when mkdirSync throws and folder does not exist"},{"ancestorTitles":["file-manager","startFresh()","logger integration"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() logger integration should call task() at the beginning","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should call task() at the beginning"},{"ancestorTitles":["file-manager","startFresh()","logger integration"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() logger integration should call indent() after task()","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should call indent() after task()"},{"ancestorTitles":["file-manager","startFresh()","logger integration"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() logger integration should call success() after rmSync when folder exists","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should call success() after rmSync when folder exists"},{"ancestorTitles":["file-manager","startFresh()","logger integration"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() logger integration should call outdent() at the end","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should call outdent() at the end"},{"ancestorTitles":["file-manager","startFresh()","logger integration"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() logger integration should verify correct message format in success()","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should verify correct message format in success()"},{"ancestorTitles":["file-manager","startFresh()","logger integration"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() logger integration should call all logger methods in proper sequence for full flow","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"status":"passed","title":"should call all logger methods in proper sequence for full flow"},{"ancestorTitles":["file-manager","startFresh()","file system error scenarios","permission errors during folder removal"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() file system error scenarios permission errors during folder removal should handle EACCES permission denied during rmSync","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"status":"passed","title":"should handle EACCES permission denied during rmSync"},{"ancestorTitles":["file-manager","startFresh()","file system error scenarios","permission errors during folder removal"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() file system error scenarios permission errors during folder removal should handle EPERM operation not permitted during rmSync","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should handle EPERM operation not permitted during rmSync"},{"ancestorTitles":["file-manager","startFresh()","file system error scenarios","permission errors during folder creation"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() file system error scenarios permission errors during folder creation should handle EACCES permission denied during mkdirSync","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should handle EACCES permission denied during mkdirSync"},{"ancestorTitles":["file-manager","startFresh()","file system error scenarios","permission errors during folder creation"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() file system error scenarios permission errors during folder creation should handle EPERM operation not permitted during mkdirSync","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle EPERM operation not permitted during mkdirSync"},{"ancestorTitles":["file-manager","startFresh()","file system error scenarios","permission errors during folder creation"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() file system error scenarios permission errors during folder creation should handle ENOSPC no space left on device during mkdirSync","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle ENOSPC no space left on device during mkdirSync"},{"ancestorTitles":["file-manager","startFresh()","file system error scenarios","permission errors during folder creation"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() file system error scenarios permission errors during folder creation should handle ENOENT parent directory does not exist during mkdirSync","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle ENOENT parent directory does not exist during mkdirSync"},{"ancestorTitles":["file-manager","startFresh()","file system error scenarios","disk space and device errors"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() file system error scenarios disk space and device errors should handle ENOSPC during folder removal (disk full)","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle ENOSPC during folder removal (disk full)"},{"ancestorTitles":["file-manager","startFresh()","file system error scenarios","disk space and device errors"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() file system error scenarios disk space and device errors should handle EIO input/output error during file operations","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle EIO input/output error during file operations"},{"ancestorTitles":["file-manager","startFresh()","file system error scenarios","invalid path handling"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() file system error scenarios invalid path handling should handle invalid folder path during existsSync","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle invalid folder path during existsSync"},{"ancestorTitles":["file-manager","startFresh()","file system error scenarios","invalid path handling"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() file system error scenarios invalid path handling should handle ENAMETOOLONG path too long error","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle ENAMETOOLONG path too long error"},{"ancestorTitles":["file-manager","startFresh()","file system error scenarios","concurrent access and race conditions"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() file system error scenarios concurrent access and race conditions should handle EBUSY resource busy during rmSync","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle EBUSY resource busy during rmSync"},{"ancestorTitles":["file-manager","startFresh()","file system error scenarios","concurrent access and race conditions"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() file system error scenarios concurrent access and race conditions should handle ETIMEDOUT operation timed out during rmSync","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle ETIMEDOUT operation timed out during rmSync"},{"ancestorTitles":["file-manager","startFresh()","directory management edge cases","nested directory scenarios"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() directory management edge cases nested directory scenarios should handle deeply nested directory paths during removal","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should handle deeply nested directory paths during removal"},{"ancestorTitles":["file-manager","startFresh()","directory management edge cases","nested directory scenarios"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() directory management edge cases nested directory scenarios should handle deeply nested directory paths during creation","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle deeply nested directory paths during creation"},{"ancestorTitles":["file-manager","startFresh()","directory management edge cases","nested directory scenarios"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() directory management edge cases nested directory scenarios should remove and recreate deeply nested directories","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should remove and recreate deeply nested directories"},{"ancestorTitles":["file-manager","startFresh()","directory management edge cases","special directory names"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() directory management edge cases special directory names should handle directory names with spaces","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should handle directory names with spaces"},{"ancestorTitles":["file-manager","startFresh()","directory management edge cases","special directory names"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() directory management edge cases special directory names should handle directory names with special characters","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle directory names with special characters"},{"ancestorTitles":["file-manager","startFresh()","directory management edge cases","special directory names"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() directory management edge cases special directory names should handle unicode directory names","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle unicode directory names"},{"ancestorTitles":["file-manager","startFresh()","directory management edge cases","special directory names"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() directory management edge cases special directory names should handle emoji in directory names","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle emoji in directory names"},{"ancestorTitles":["file-manager","startFresh()","directory management edge cases","very long directory names"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() directory management edge cases very long directory names should handle long directory names within limits","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle long directory names within limits"},{"ancestorTitles":["file-manager","startFresh()","directory management edge cases","very long directory names"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() directory management edge cases very long directory names should handle extremely long but valid paths","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle extremely long but valid paths"},{"ancestorTitles":["file-manager","startFresh()","directory management edge cases","edge case path patterns"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() directory management edge cases edge case path patterns should handle paths ending with dots","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle paths ending with dots"},{"ancestorTitles":["file-manager","startFresh()","directory management edge cases","edge case path patterns"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() directory management edge cases edge case path patterns should handle paths with multiple consecutive slashes","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle paths with multiple consecutive slashes"},{"ancestorTitles":["file-manager","startFresh()","directory management edge cases","edge case path patterns"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() directory management edge cases edge case path patterns should handle paths with trailing slash","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle paths with trailing slash"},{"ancestorTitles":["file-manager","startFresh()","directory management edge cases","system-specific path scenarios"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() directory management edge cases system-specific path scenarios should handle Windows-style paths on Windows systems","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle Windows-style paths on Windows systems"},{"ancestorTitles":["file-manager","startFresh()","directory management edge cases","system-specific path scenarios"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() directory management edge cases system-specific path scenarios should handle relative paths","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle relative paths"},{"ancestorTitles":["file-manager","startFresh()","directory management edge cases","system-specific path scenarios"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() directory management edge cases system-specific path scenarios should handle parent directory references","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle parent directory references"},{"ancestorTitles":["file-manager","startFresh()","directory management edge cases","directory cleanup simulation"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() directory management edge cases directory cleanup simulation should simulate cleanup of directory with mixed content","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should simulate cleanup of directory with mixed content"},{"ancestorTitles":["file-manager","startFresh()","directory management edge cases","directory cleanup simulation"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() directory management edge cases directory cleanup simulation should handle cleanup of empty directory","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should handle cleanup of empty directory"},{"ancestorTitles":["file-manager","startFresh()","backup and restore functionality","backup creation scenarios"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() backup and restore functionality backup creation scenarios should create backup before removing existing directory","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should create backup before removing existing directory"},{"ancestorTitles":["file-manager","startFresh()","backup and restore functionality","backup creation scenarios"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() backup and restore functionality backup creation scenarios should handle backup creation failure gracefully","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle backup creation failure gracefully"},{"ancestorTitles":["file-manager","startFresh()","backup and restore functionality","backup creation scenarios"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() backup and restore functionality backup creation scenarios should create timestamped backup directories","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should create timestamped backup directories"},{"ancestorTitles":["file-manager","startFresh()","backup and restore functionality","backup version management"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() backup and restore functionality backup version management should handle multiple backup versions","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle multiple backup versions"},{"ancestorTitles":["file-manager","startFresh()","backup and restore functionality","backup version management"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() backup and restore functionality backup version management should clean up old backups when exceeding limit","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should clean up old backups when exceeding limit"},{"ancestorTitles":["file-manager","startFresh()","backup and restore functionality","backup version management"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() backup and restore functionality backup version management should preserve backup retention policy","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should preserve backup retention policy"},{"ancestorTitles":["file-manager","startFresh()","backup and restore functionality","restore functionality"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() backup and restore functionality restore functionality should prepare for restore operation logging","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should prepare for restore operation logging"},{"ancestorTitles":["file-manager","startFresh()","backup and restore functionality","restore functionality"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() backup and restore functionality restore functionality should handle restore from latest backup","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle restore from latest backup"},{"ancestorTitles":["file-manager","startFresh()","backup and restore functionality","restore functionality"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() backup and restore functionality restore functionality should validate backup integrity before restore","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should validate backup integrity before restore"},{"ancestorTitles":["file-manager","startFresh()","backup and restore functionality","backup storage management"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() backup and restore functionality backup storage management should handle backup storage space management","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle backup storage space management"},{"ancestorTitles":["file-manager","startFresh()","backup and restore functionality","backup storage management"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() backup and restore functionality backup storage management should compress large backups when configured","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should compress large backups when configured"},{"ancestorTitles":["file-manager","startFresh()","backup and restore functionality","backup storage management"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() backup and restore functionality backup storage management should handle backup path conflicts","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle backup path conflicts"},{"ancestorTitles":["file-manager","startFresh()","backup and restore functionality","backup logging and observability"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() backup and restore functionality backup logging and observability should log backup creation process","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should log backup creation process"},{"ancestorTitles":["file-manager","startFresh()","backup and restore functionality","backup logging and observability"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() backup and restore functionality backup logging and observability should report backup operation status","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should report backup operation status"},{"ancestorTitles":["file-manager","startFresh()","file existence validation","basic file existence scenarios"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() file existence validation basic file existence scenarios should handle directory existence validation","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle directory existence validation"},{"ancestorTitles":["file-manager","startFresh()","file existence validation","basic file existence scenarios"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() file existence validation basic file existence scenarios should handle non-existent directory validation","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle non-existent directory validation"},{"ancestorTitles":["file-manager","startFresh()","file existence validation","basic file existence scenarios"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() file existence validation basic file existence scenarios should handle file instead of directory scenario","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle file instead of directory scenario"},{"ancestorTitles":["file-manager","startFresh()","file existence validation","symbolic link handling"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() file existence validation symbolic link handling should handle valid symbolic links","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle valid symbolic links"},{"ancestorTitles":["file-manager","startFresh()","file existence validation","symbolic link handling"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() file existence validation symbolic link handling should handle broken symbolic links","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle broken symbolic links"},{"ancestorTitles":["file-manager","startFresh()","file existence validation","symbolic link handling"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() file existence validation symbolic link handling should handle symbolic link loops","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle symbolic link loops"},{"ancestorTitles":["file-manager","startFresh()","file existence validation","file accessibility validation"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() file existence validation file accessibility validation should handle read-only directories","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle read-only directories"},{"ancestorTitles":["file-manager","startFresh()","file existence validation","file accessibility validation"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() file existence validation file accessibility validation should handle directories with restricted permissions","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle directories with restricted permissions"},{"ancestorTitles":["file-manager","startFresh()","file existence validation","file accessibility validation"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() file existence validation file accessibility validation should handle directories owned by different users","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle directories owned by different users"},{"ancestorTitles":["file-manager","startFresh()","file existence validation","file integrity and validation"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() file existence validation file integrity and validation should handle corrupted directory structures","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle corrupted directory structures"},{"ancestorTitles":["file-manager","startFresh()","file existence validation","file integrity and validation"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() file existence validation file integrity and validation should handle directories with invalid entries","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle directories with invalid entries"},{"ancestorTitles":["file-manager","startFresh()","file existence validation","file integrity and validation"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() file existence validation file integrity and validation should handle directories with locked files","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle directories with locked files"},{"ancestorTitles":["file-manager","startFresh()","file existence validation","special file system scenarios"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() file existence validation special file system scenarios should handle network file system paths","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle network file system paths"},{"ancestorTitles":["file-manager","startFresh()","file existence validation","special file system scenarios"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() file existence validation special file system scenarios should handle virtual file system paths","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle virtual file system paths"},{"ancestorTitles":["file-manager","startFresh()","file existence validation","special file system scenarios"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() file existence validation special file system scenarios should handle temporary file system paths","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle temporary file system paths"},{"ancestorTitles":["file-manager","startFresh()","file existence validation","path traversal and security validation"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() file existence validation path traversal and security validation should handle path traversal attempts in validation","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle path traversal attempts in validation"},{"ancestorTitles":["file-manager","startFresh()","file existence validation","path traversal and security validation"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() file existence validation path traversal and security validation should handle null byte injection attempts","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle null byte injection attempts"},{"ancestorTitles":["file-manager","startFresh()","file existence validation","path traversal and security validation"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() file existence validation path traversal and security validation should handle extremely long path traversal","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle extremely long path traversal"},{"ancestorTitles":["file-manager","startFresh()","file existence validation","concurrent access validation"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() file existence validation concurrent access validation should handle directory modified during operation","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle directory modified during operation"},{"ancestorTitles":["file-manager","startFresh()","file existence validation","concurrent access validation"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() file existence validation concurrent access validation should handle directory locked by another process","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle directory locked by another process"},{"ancestorTitles":["file-manager","startFresh()","file existence validation","validation error handling"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() file existence validation validation error handling should handle validation system errors gracefully","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle validation system errors gracefully"},{"ancestorTitles":["file-manager","startFresh()","file existence validation","validation error handling"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"file-manager startFresh() file existence validation validation error handling should handle validation timeout scenarios","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle validation timeout scenarios"}],"endTime":1764343034934,"message":"","name":"/Users/samuelfajreldines/Desenvolvimento/claudiomiro/src/commands/task-executor/services/file-manager.test.js","startTime":1764343034742,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["step6","orchestration flow"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"step6 orchestration flow should call reviewCode and return result","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should call reviewCode and return result"},{"ancestorTitles":["step6","orchestration flow"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"step6 orchestration flow should call smartCommit when TODO is fully implemented","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should call smartCommit when TODO is fully implemented"},{"ancestorTitles":["step6","orchestration flow"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"step6 orchestration flow should call smartCommit without push when shouldPush is false","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should call smartCommit without push when shouldPush is false"},{"ancestorTitles":["step6","orchestration flow"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"step6 orchestration flow should not call smartCommit when TODO is not fully implemented","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should not call smartCommit when TODO is not fully implemented"},{"ancestorTitles":["step6","commit error handling"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"step6 commit error handling should continue execution when commit fails","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should continue execution when commit fails"},{"ancestorTitles":["step6","commit error handling"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"step6 commit error handling should not warn when commit succeeds","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should not warn when commit succeeds"},{"ancestorTitles":["step6","re-analysis logic"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"step6 re-analysis logic should call reanalyzeFailed on 3rd attempt when TODO not implemented","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should call reanalyzeFailed on 3rd attempt when TODO not implemented"},{"ancestorTitles":["step6","re-analysis logic"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"step6 re-analysis logic should call reanalyzeFailed on 6th attempt when TODO not implemented","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should call reanalyzeFailed on 6th attempt when TODO not implemented"},{"ancestorTitles":["step6","re-analysis logic"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"step6 re-analysis logic should not call reanalyzeFailed on 1st attempt when TODO not implemented","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should not call reanalyzeFailed on 1st attempt when TODO not implemented"},{"ancestorTitles":["step6","re-analysis logic"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"step6 re-analysis logic should not call reanalyzeFailed on 2nd attempt when TODO not implemented","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should not call reanalyzeFailed on 2nd attempt when TODO not implemented"},{"ancestorTitles":["step6","re-analysis logic"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"step6 re-analysis logic should not call reanalyzeFailed on 4th attempt when TODO not implemented","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should not call reanalyzeFailed on 4th attempt when TODO not implemented"},{"ancestorTitles":["step6","re-analysis logic"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"step6 re-analysis logic should not call reanalyzeFailed when TODO is implemented regardless of attempts","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should not call reanalyzeFailed when TODO is implemented regardless of attempts"},{"ancestorTitles":["step6","re-analysis logic"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"step6 re-analysis logic should not call reanalyzeFailed when info.json does not exist","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should not call reanalyzeFailed when info.json does not exist"},{"ancestorTitles":["step6","re-analysis logic"],"duration":5,"failureDetails":[],"failureMessages":[],"fullName":"step6 re-analysis logic should handle JSON parsing error gracefully","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle JSON parsing error gracefully"},{"ancestorTitles":["step6","edge cases"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"step6 edge cases should handle zero attempt count","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle zero attempt count"},{"ancestorTitles":["step6","edge cases"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"step6 edge cases should handle negative attempt count","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle negative attempt count"},{"ancestorTitles":["step6","default parameters"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"step6 default parameters should use shouldPush=true by default","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should use shouldPush=true by default"}],"endTime":1764343035025,"message":"","name":"/Users/samuelfajreldines/Desenvolvimento/claudiomiro/src/commands/task-executor/steps/step6/index.test.js","startTime":1764343034956,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["GLM Executor","executeGlm"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"GLM Executor executeGlm should call runGlm when executorType is not codex","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should call runGlm when executorType is not codex"},{"ancestorTitles":["GLM Executor","executeGlm"],"duration":null,"failureDetails":[],"failureMessages":[],"fullName":"GLM Executor executeGlm should delegate to executeCodex when executorType is codex","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"status":"pending","title":"should delegate to executeCodex when executorType is codex"},{"ancestorTitles":["GLM Executor","runGlm internal functionality"],"duration":10,"failureDetails":[],"failureMessages":[],"fullName":"GLM Executor runGlm internal functionality should throw error when no prompt provided","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should throw error when no prompt provided"},{"ancestorTitles":["GLM Executor","runGlm internal functionality"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"GLM Executor runGlm internal functionality should create temporary file with prompt text","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should create temporary file with prompt text"},{"ancestorTitles":["GLM Executor","runGlm internal functionality"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"GLM Executor runGlm internal functionality should spawn GLM process with correct command","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should spawn GLM process with correct command"},{"ancestorTitles":["GLM Executor","runGlm internal functionality"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"GLM Executor runGlm internal functionality should create log stream with correct path","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should create log stream with correct path"},{"ancestorTitles":["GLM Executor","runGlm internal functionality"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"GLM Executor runGlm internal functionality should write log headers with timestamp","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should write log headers with timestamp"},{"ancestorTitles":["GLM Executor","runGlm internal functionality"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"GLM Executor runGlm internal functionality should handle stdout data processing","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle stdout data processing"},{"ancestorTitles":["GLM Executor","runGlm internal functionality"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"GLM Executor runGlm internal functionality should handle stderr data","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle stderr data"},{"ancestorTitles":["GLM Executor","runGlm internal functionality"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"GLM Executor runGlm internal functionality should update state manager when taskName provided","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should update state manager when taskName provided"},{"ancestorTitles":["GLM Executor","runGlm internal functionality"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"GLM Executor runGlm internal functionality should suppress streaming logs when UI renderer is active","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should suppress streaming logs when UI renderer is active"},{"ancestorTitles":["GLM Executor","runGlm internal functionality"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"GLM Executor runGlm internal functionality should handle process close with success code","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle process close with success code"},{"ancestorTitles":["GLM Executor","runGlm internal functionality"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"GLM Executor runGlm internal functionality should handle process close with error code","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle process close with error code"},{"ancestorTitles":["GLM Executor","runGlm internal functionality"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"GLM Executor runGlm internal functionality should handle process error","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle process error"},{"ancestorTitles":["GLM Executor","runGlm internal functionality"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"GLM Executor runGlm internal functionality should cleanup temporary file on successful completion","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should cleanup temporary file on successful completion"},{"ancestorTitles":["GLM Executor","runGlm internal functionality"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"GLM Executor runGlm internal functionality should cleanup temporary file on error","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should cleanup temporary file on error"},{"ancestorTitles":["GLM Executor","runGlm internal functionality"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"GLM Executor runGlm internal functionality should handle cleanup error gracefully","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle cleanup error gracefully"},{"ancestorTitles":["GLM Executor","runGlm internal functionality"],"duration":null,"failureDetails":[],"failureMessages":[],"fullName":"GLM Executor runGlm internal functionality should implement timeout mechanism","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"status":"pending","title":"should implement timeout mechanism"},{"ancestorTitles":["GLM Executor","runGlm internal functionality"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"GLM Executor runGlm internal functionality should reset timeout on data received","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should reset timeout on data received"},{"ancestorTitles":["GLM Executor","runGlm internal functionality"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"GLM Executor runGlm internal functionality should handle long text wrapping","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle long text wrapping"},{"ancestorTitles":["GLM Executor","runGlm internal functionality"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"GLM Executor runGlm internal functionality should handle empty processed message","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle empty processed message"},{"ancestorTitles":["GLM Executor","overwriteBlock function"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"GLM Executor overwriteBlock function should use ANSI escape sequences correctly","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"status":"passed","title":"should use ANSI escape sequences correctly"},{"ancestorTitles":["GLM Executor","Edge cases and error handling"],"duration":3,"failureDetails":[],"failureMessages":[],"fullName":"GLM Executor Edge cases and error handling should handle JSON parsing errors gracefully","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle JSON parsing errors gracefully"},{"ancestorTitles":["GLM Executor","Edge cases and error handling"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"GLM Executor Edge cases and error handling should handle extremely long output","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle extremely long output"},{"ancestorTitles":["GLM Executor","Edge cases and error handling"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"GLM Executor Edge cases and error handling should handle multiple rapid stdout updates","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle multiple rapid stdout updates"},{"ancestorTitles":["GLM Executor","State management integration"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"GLM Executor State management integration should not update state manager when no taskName provided","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should not update state manager when no taskName provided"},{"ancestorTitles":["GLM Executor","State management integration"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"GLM Executor State management integration should handle state manager without isUIRendererActive method","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle state manager without isUIRendererActive method"}],"endTime":1764343035117,"message":"","name":"/Users/samuelfajreldines/Desenvolvimento/claudiomiro/src/shared/executors/glm-executor.test.js","startTime":1764343035030,"status":"focused","summary":""},{"assertionResults":[{"ancestorTitles":["Codex Executor","executeCodex"],"duration":20,"failureDetails":[],"failureMessages":[],"fullName":"Codex Executor executeCodex should throw error when no prompt provided","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should throw error when no prompt provided"},{"ancestorTitles":["Codex Executor","executeCodex"],"duration":3,"failureDetails":[],"failureMessages":[],"fullName":"Codex Executor executeCodex should create temporary file with prompt text","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should create temporary file with prompt text"},{"ancestorTitles":["Codex Executor","executeCodex"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"Codex Executor executeCodex should spawn Codex process with correct command","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should spawn Codex process with correct command"},{"ancestorTitles":["Codex Executor","executeCodex"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"Codex Executor executeCodex should create log stream with correct path","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should create log stream with correct path"},{"ancestorTitles":["Codex Executor","executeCodex"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"Codex Executor executeCodex should write log headers with timestamp","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should write log headers with timestamp"},{"ancestorTitles":["Codex Executor","executeCodex"],"duration":3,"failureDetails":[],"failureMessages":[],"fullName":"Codex Executor executeCodex should handle stdout data processing","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle stdout data processing"},{"ancestorTitles":["Codex Executor","executeCodex"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"Codex Executor executeCodex should handle stderr data","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle stderr data"},{"ancestorTitles":["Codex Executor","executeCodex"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Codex Executor executeCodex should update state manager when taskName provided","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should update state manager when taskName provided"},{"ancestorTitles":["Codex Executor","executeCodex"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"Codex Executor executeCodex should suppress streaming logs when UI renderer is active","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should suppress streaming logs when UI renderer is active"},{"ancestorTitles":["Codex Executor","executeCodex"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"Codex Executor executeCodex should handle process close with success code","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle process close with success code"},{"ancestorTitles":["Codex Executor","executeCodex"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Codex Executor executeCodex should handle process close with error code","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle process close with error code"},{"ancestorTitles":["Codex Executor","executeCodex"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"Codex Executor executeCodex should handle process error","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle process error"},{"ancestorTitles":["Codex Executor","executeCodex"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Codex Executor executeCodex should cleanup temporary file on successful completion","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should cleanup temporary file on successful completion"},{"ancestorTitles":["Codex Executor","executeCodex"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"Codex Executor executeCodex should cleanup temporary file on error","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should cleanup temporary file on error"},{"ancestorTitles":["Codex Executor","executeCodex"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"Codex Executor executeCodex should handle cleanup error gracefully","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle cleanup error gracefully"},{"ancestorTitles":["Codex Executor","executeCodex"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Codex Executor executeCodex should implement timeout mechanism","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should implement timeout mechanism"},{"ancestorTitles":["Codex Executor","executeCodex"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"Codex Executor executeCodex should handle long text wrapping","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle long text wrapping"},{"ancestorTitles":["Codex Executor","executeCodex"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Codex Executor executeCodex should handle empty processed event","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle empty processed event"},{"ancestorTitles":["Codex Executor","overwriteBlock function"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Codex Executor overwriteBlock function should use ANSI escape sequences correctly","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"status":"passed","title":"should use ANSI escape sequences correctly"},{"ancestorTitles":["Codex Executor","Edge cases and error handling"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Codex Executor Edge cases and error handling should handle JSON parsing errors gracefully","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle JSON parsing errors gracefully"},{"ancestorTitles":["Codex Executor","Edge cases and error handling"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"Codex Executor Edge cases and error handling should handle extremely long output","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle extremely long output"},{"ancestorTitles":["Codex Executor","Edge cases and error handling"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"Codex Executor Edge cases and error handling should handle multiple rapid stdout updates","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle multiple rapid stdout updates"},{"ancestorTitles":["Codex Executor","State management integration"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Codex Executor State management integration should not update state manager when no taskName provided","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should not update state manager when no taskName provided"},{"ancestorTitles":["Codex Executor","State management integration"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Codex Executor State management integration should handle state manager without isUIRendererActive method","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle state manager without isUIRendererActive method"},{"ancestorTitles":["Codex Executor","Codex-specific functionality"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"Codex Executor Codex-specific functionality should handle different Codex event types","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should handle different Codex event types"},{"ancestorTitles":["Codex Executor","Codex-specific functionality"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"Codex Executor Codex-specific functionality should handle Codex-specific output formatting","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle Codex-specific output formatting"}],"endTime":1764343035411,"message":"","name":"/Users/samuelfajreldines/Desenvolvimento/claudiomiro/src/shared/executors/codex-executor.test.js","startTime":1764343035163,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["test-local-llm command","printHeader"],"duration":3,"failureDetails":[],"failureMessages":[],"fullName":"test-local-llm command printHeader should display header with title","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should display header with title"},{"ancestorTitles":["test-local-llm command","printStatus"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"test-local-llm command printStatus should display connected status when available","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should display connected status when available"},{"ancestorTitles":["test-local-llm command","printStatus"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"test-local-llm command printStatus should display error when not available","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should display error when not available"},{"ancestorTitles":["test-local-llm command","printStatus"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"test-local-llm command printStatus should truncate long model list","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should truncate long model list"},{"ancestorTitles":["test-local-llm command","generateResponse"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"test-local-llm command generateResponse should generate and display response","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should generate and display response"},{"ancestorTitles":["test-local-llm command","generateResponse"],"duration":5,"failureDetails":[],"failureMessages":[],"fullName":"test-local-llm command generateResponse should display error on failure","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should display error on failure"},{"ancestorTitles":["test-local-llm command","run"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"test-local-llm command run should show instructions when LLM not enabled","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should show instructions when LLM not enabled"},{"ancestorTitles":["test-local-llm command","run"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"test-local-llm command run should exit with error when Ollama not available","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should exit with error when Ollama not available"},{"ancestorTitles":["test-local-llm command","run"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"test-local-llm command run should exit with error when model not installed","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should exit with error when model not installed"},{"ancestorTitles":["test-local-llm command","run"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"test-local-llm command run should use prompt from args","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should use prompt from args"},{"ancestorTitles":["test-local-llm command","run"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"test-local-llm command run should handle quoted prompt in args","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle quoted prompt in args"},{"ancestorTitles":["test-local-llm command","run"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"test-local-llm command run should ask for prompt interactively when not provided","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should ask for prompt interactively when not provided"},{"ancestorTitles":["test-local-llm command","run"],"duration":3,"failureDetails":[],"failureMessages":[],"fullName":"test-local-llm command run should handle empty prompt gracefully","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle empty prompt gracefully"}],"endTime":1764343035488,"message":"","name":"/Users/samuelfajreldines/Desenvolvimento/claudiomiro/src/commands/test-local-llm/index.test.js","startTime":1764343035421,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["GLM Logger","processGlmMessage"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"GLM Logger processGlmMessage should return null for invalid JSON","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"status":"passed","title":"should return null for invalid JSON"},{"ancestorTitles":["GLM Logger","processGlmMessage"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"GLM Logger processGlmMessage should return null for unknown message type","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return null for unknown message type"},{"ancestorTitles":["GLM Logger","Assistant Message Processing"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"GLM Logger Assistant Message Processing should process simple text message","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should process simple text message"},{"ancestorTitles":["GLM Logger","Assistant Message Processing"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"GLM Logger Assistant Message Processing should process tool_use with Bash tool","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should process tool_use with Bash tool"},{"ancestorTitles":["GLM Logger","Assistant Message Processing"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"GLM Logger Assistant Message Processing should process tool_use with Read tool","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should process tool_use with Read tool"},{"ancestorTitles":["GLM Logger","Assistant Message Processing"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"GLM Logger Assistant Message Processing should process tool_use with Write tool","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should process tool_use with Write tool"},{"ancestorTitles":["GLM Logger","Assistant Message Processing"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"GLM Logger Assistant Message Processing should process tool_use with Edit tool","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should process tool_use with Edit tool"},{"ancestorTitles":["GLM Logger","Assistant Message Processing"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"GLM Logger Assistant Message Processing should process tool_use without description","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should process tool_use without description"},{"ancestorTitles":["GLM Logger","Assistant Message Processing"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"GLM Logger Assistant Message Processing should process mixed text and tool_use content","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should process mixed text and tool_use content"},{"ancestorTitles":["GLM Logger","Assistant Message Processing"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"GLM Logger Assistant Message Processing should handle empty content array","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle empty content array"},{"ancestorTitles":["GLM Logger","Assistant Message Processing"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"GLM Logger Assistant Message Processing should handle missing message or content","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should handle missing message or content"},{"ancestorTitles":["GLM Logger","Assistant Message Processing"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"GLM Logger Assistant Message Processing should handle multiple tool_use calls","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle multiple tool_use calls"},{"ancestorTitles":["GLM Logger","Assistant Message Processing"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"GLM Logger Assistant Message Processing should handle unknown tool with default icon","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle unknown tool with default icon"},{"ancestorTitles":["GLM Logger","Assistant Message Processing"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"GLM Logger Assistant Message Processing should handle text with empty string","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle text with empty string"},{"ancestorTitles":["GLM Logger","Assistant Message Processing"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"GLM Logger Assistant Message Processing should handle file paths with directories","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle file paths with directories"},{"ancestorTitles":["GLM Logger","Assistant Message Processing"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"GLM Logger Assistant Message Processing should handle tool_use with different file operations","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should handle tool_use with different file operations"},{"ancestorTitles":["GLM Logger","User Message Processing"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"GLM Logger User Message Processing should return null for user messages","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return null for user messages"},{"ancestorTitles":["GLM Logger","User Message Processing"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"GLM Logger User Message Processing should return null for tool results","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return null for tool results"},{"ancestorTitles":["GLM Logger","System Message Processing"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"GLM Logger System Message Processing should handle init subtype","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle init subtype"},{"ancestorTitles":["GLM Logger","System Message Processing"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"GLM Logger System Message Processing should return null for other subtypes","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return null for other subtypes"},{"ancestorTitles":["GLM Logger","System Message Processing"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"GLM Logger System Message Processing should return null for system message without subtype","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return null for system message without subtype"},{"ancestorTitles":["GLM Logger","Result Message Processing"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"GLM Logger Result Message Processing should handle success with duration and cost","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle success with duration and cost"},{"ancestorTitles":["GLM Logger","Result Message Processing"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"GLM Logger Result Message Processing should handle success without cost","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle success without cost"},{"ancestorTitles":["GLM Logger","Result Message Processing"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"GLM Logger Result Message Processing should handle error message","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle error message"},{"ancestorTitles":["GLM Logger","Result Message Processing"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"GLM Logger Result Message Processing should handle error without message","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle error without message"},{"ancestorTitles":["GLM Logger","Result Message Processing"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"GLM Logger Result Message Processing should handle null cost","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle null cost"},{"ancestorTitles":["GLM Logger","Result Message Processing"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"GLM Logger Result Message Processing should handle very small duration","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle very small duration"},{"ancestorTitles":["GLM Logger","Result Message Processing"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"GLM Logger Result Message Processing should handle very large duration","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle very large duration"},{"ancestorTitles":["GLM Logger","Result Message Processing"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"GLM Logger Result Message Processing should format cost with 4 decimal places","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should format cost with 4 decimal places"},{"ancestorTitles":["GLM Logger","Result Message Processing"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"GLM Logger Result Message Processing should return null for unknown result subtype","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return null for unknown result subtype"},{"ancestorTitles":["GLM Logger","Tool Icon Mapping"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"GLM Logger Tool Icon Mapping should use correct icons for known tools","invocations":1,"location":null,"numPassingAsserts":10,"retryReasons":[],"status":"passed","title":"should use correct icons for known tools"},{"ancestorTitles":["GLM Logger","Tool Icon Mapping"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"GLM Logger Tool Icon Mapping should use default icon for unknown tools","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should use default icon for unknown tools"},{"ancestorTitles":["GLM Logger","Complex Scenarios"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"GLM Logger Complex Scenarios should handle workflow with all tool types","invocations":1,"location":null,"numPassingAsserts":7,"retryReasons":[],"status":"passed","title":"should handle workflow with all tool types"},{"ancestorTitles":["GLM Logger","Complex Scenarios"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"GLM Logger Complex Scenarios should handle empty text blocks correctly","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle empty text blocks correctly"},{"ancestorTitles":["GLM Logger","Complex Scenarios"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"GLM Logger Complex Scenarios should handle complex nested paths correctly","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle complex nested paths correctly"},{"ancestorTitles":["GLM Logger","Complex Scenarios"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"GLM Logger Complex Scenarios should handle mixed message flow","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should handle mixed message flow"},{"ancestorTitles":["GLM Logger","Error Handling"],"duration":3,"failureDetails":[],"failureMessages":[],"fullName":"GLM Logger Error Handling should handle malformed JSON gracefully","invocations":1,"location":null,"numPassingAsserts":7,"retryReasons":[],"status":"passed","title":"should handle malformed JSON gracefully"},{"ancestorTitles":["GLM Logger","Error Handling"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"GLM Logger Error Handling should handle JSON with missing required properties","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should handle JSON with missing required properties"},{"ancestorTitles":["GLM Logger","Chinese Language Model Features"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"GLM Logger Chinese Language Model Features should process Chinese text messages correctly","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should process Chinese text messages correctly"},{"ancestorTitles":["GLM Logger","Chinese Language Model Features"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"GLM Logger Chinese Language Model Features should handle mixed Chinese-English text in GLM responses","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle mixed Chinese-English text in GLM responses"},{"ancestorTitles":["GLM Logger","Chinese Language Model Features"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"GLM Logger Chinese Language Model Features should handle Chinese characters in GLM tool descriptions","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle Chinese characters in GLM tool descriptions"},{"ancestorTitles":["GLM Logger","Chinese Language Model Features"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"GLM Logger Chinese Language Model Features should process code with Chinese comments for GLM","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should process code with Chinese comments for GLM"},{"ancestorTitles":["GLM Logger","Chinese Language Model Features"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"GLM Logger Chinese Language Model Features should handle Chinese filenames in GLM tool operations","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle Chinese filenames in GLM tool operations"},{"ancestorTitles":["GLM Logger","Chinese Language Model Features"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"GLM Logger Chinese Language Model Features should handle mixed language GLM workflows","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"status":"passed","title":"should handle mixed language GLM workflows"},{"ancestorTitles":["GLM Logger","Chinese Language Model Features"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"GLM Logger Chinese Language Model Features should handle Chinese error messages in GLM results","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle Chinese error messages in GLM results"},{"ancestorTitles":["GLM Logger","Chinese Language Model Features"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"GLM Logger Chinese Language Model Features should handle mixed language error context in GLM","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle mixed language error context in GLM"},{"ancestorTitles":["GLM Logger","GLM-Specific Chinese Language Features"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"GLM Logger GLM-Specific Chinese Language Features should handle Chinese file paths with directory extraction","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle Chinese file paths with directory extraction"},{"ancestorTitles":["GLM Logger","GLM-Specific Chinese Language Features"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"GLM Logger GLM-Specific Chinese Language Features should handle unknown tools with Chinese names in GLM","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle unknown tools with Chinese names in GLM"},{"ancestorTitles":["GLM Logger","GLM-Specific Chinese Language Features"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"GLM Logger GLM-Specific Chinese Language Features should handle emoji and Chinese character combinations in GLM","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle emoji and Chinese character combinations in GLM"},{"ancestorTitles":["GLM Logger","GLM-Specific Chinese Language Features"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"GLM Logger GLM-Specific Chinese Language Features should handle complex Unicode sequences for GLM","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle complex Unicode sequences for GLM"},{"ancestorTitles":["GLM Logger","GLM-Specific Chinese Language Features"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"GLM Logger GLM-Specific Chinese Language Features should handle Chinese punctuation and special characters","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle Chinese punctuation and special characters"},{"ancestorTitles":["GLM Logger","GLM-Specific Chinese Language Features"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"GLM Logger GLM-Specific Chinese Language Features should handle both Traditional and Simplified Chinese in GLM","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle both Traditional and Simplified Chinese in GLM"},{"ancestorTitles":["GLM Logger","GLM-Specific Chinese Language Features"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"GLM Logger GLM-Specific Chinese Language Features should handle Chinese whitespace and formatting","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle Chinese whitespace and formatting"},{"ancestorTitles":["GLM Logger","GLM Multilingual Content Processing"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"GLM Logger GLM Multilingual Content Processing should handle complex multilingual GLM workflows","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"status":"passed","title":"should handle complex multilingual GLM workflows"},{"ancestorTitles":["GLM Logger","GLM Multilingual Content Processing"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"GLM Logger GLM Multilingual Content Processing should handle Chinese characters in complex nested GLM input objects","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle Chinese characters in complex nested GLM input objects"},{"ancestorTitles":["GLM Logger","GLM Multilingual Content Processing"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"GLM Logger GLM Multilingual Content Processing should preserve mixed language formatting integrity for GLM","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should preserve mixed language formatting integrity for GLM"},{"ancestorTitles":["GLM Logger","GLM-Specific Encoding and Performance Edge Cases"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"GLM Logger GLM-Specific Encoding and Performance Edge Cases should handle extremely long Chinese text content for GLM","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle extremely long Chinese text content for GLM"},{"ancestorTitles":["GLM Logger","GLM-Specific Encoding and Performance Edge Cases"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"GLM Logger GLM-Specific Encoding and Performance Edge Cases should handle Unicode and special characters in GLM tool descriptions","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle Unicode and special characters in GLM tool descriptions"},{"ancestorTitles":["GLM Logger","GLM-Specific Encoding and Performance Edge Cases"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"GLM Logger GLM-Specific Encoding and Performance Edge Cases should handle content with mixed language formatting in GLM","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle content with mixed language formatting in GLM"},{"ancestorTitles":["GLM Logger","GLM-Specific Encoding and Performance Edge Cases"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"GLM Logger GLM-Specific Encoding and Performance Edge Cases should handle GLM-specific model configuration messages","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle GLM-specific model configuration messages"},{"ancestorTitles":["GLM Logger","GLM-Specific Encoding and Performance Edge Cases"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"GLM Logger GLM-Specific Encoding and Performance Edge Cases should handle GLM response with mixed content types","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should handle GLM response with mixed content types"},{"ancestorTitles":["GLM Logger","GLM Model-Specific Error Handling"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"GLM Logger GLM Model-Specific Error Handling should handle GLM model-specific error messages","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle GLM model-specific error messages"},{"ancestorTitles":["GLM Logger","GLM Model-Specific Error Handling"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"GLM Logger GLM Model-Specific Error Handling should handle GLM token limit errors","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle GLM token limit errors"},{"ancestorTitles":["GLM Logger","GLM Model-Specific Error Handling"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"GLM Logger GLM Model-Specific Error Handling should handle GLM Chinese text processing errors","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle GLM Chinese text processing errors"},{"ancestorTitles":["GLM Logger","GLM Model-Specific Error Handling"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"GLM Logger GLM Model-Specific Error Handling should handle GLM success messages with Chinese context","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle GLM success messages with Chinese context"},{"ancestorTitles":["GLM Logger","GLM Model-Specific Error Handling"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"GLM Logger GLM Model-Specific Error Handling should handle Unicode characters in malformed GLM JSON safely","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle Unicode characters in malformed GLM JSON safely"},{"ancestorTitles":["GLM Logger","GLM Model-Specific Error Handling"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"GLM Logger GLM Model-Specific Error Handling should handle GLM-specific warning scenarios","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should handle GLM-specific warning scenarios"},{"ancestorTitles":["GLM Logger","GLM Advanced Multilingual Scenarios"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"GLM Logger GLM Advanced Multilingual Scenarios should handle GLM code generation with Chinese comments","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should handle GLM code generation with Chinese comments"},{"ancestorTitles":["GLM Logger","GLM Advanced Multilingual Scenarios"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"GLM Logger GLM Advanced Multilingual Scenarios should handle GLM data analysis with Chinese labels","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"status":"passed","title":"should handle GLM data analysis with Chinese labels"},{"ancestorTitles":["GLM Logger","GLM Advanced Multilingual Scenarios"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"GLM Logger GLM Advanced Multilingual Scenarios should handle GLM documentation generation in Chinese","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"status":"passed","title":"should handle GLM documentation generation in Chinese"}],"endTime":1764343035556,"message":"","name":"/Users/samuelfajreldines/Desenvolvimento/claudiomiro/src/shared/executors/glm-logger.test.js","startTime":1764343035492,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["step4/utils","findTaskFiles"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"step4/utils findTaskFiles should find TASK.md files recursively","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should find TASK.md files recursively"},{"ancestorTitles":["step4/utils","findTaskFiles"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"step4/utils findTaskFiles should return empty array for empty directory","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should return empty array for empty directory"},{"ancestorTitles":["step4/utils","findTaskFiles"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"step4/utils findTaskFiles should filter out non-directory entries and non-TASK.md files","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should filter out non-directory entries and non-TASK.md files"},{"ancestorTitles":["step4/utils","findTaskFiles"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"step4/utils findTaskFiles should handle nested directories correctly","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should handle nested directories correctly"},{"ancestorTitles":["step4/utils","findTaskFiles"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"step4/utils findTaskFiles should handle directory with only TASK.md files","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle directory with only TASK.md files"},{"ancestorTitles":["step4/utils","validateTodoQuality"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"step4/utils validateTodoQuality should return error when TODO.md does not exist","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should return error when TODO.md does not exist"},{"ancestorTitles":["step4/utils","validateTodoQuality"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"step4/utils validateTodoQuality should return error for content < 500 chars","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should return error for content < 500 chars"},{"ancestorTitles":["step4/utils","validateTodoQuality"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"step4/utils validateTodoQuality should return error when required sections are missing","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"status":"passed","title":"should return error when required sections are missing"},{"ancestorTitles":["step4/utils","validateTodoQuality"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"step4/utils validateTodoQuality should return error for insufficient context references (0/3)","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should return error for insufficient context references (0/3)"},{"ancestorTitles":["step4/utils","validateTodoQuality"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"step4/utils validateTodoQuality should return error for insufficient context references (1/3)","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should return error for insufficient context references (1/3)"},{"ancestorTitles":["step4/utils","validateTodoQuality"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"step4/utils validateTodoQuality should return error for insufficient context references (2/3)","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should return error for insufficient context references (2/3)"},{"ancestorTitles":["step4/utils","validateTodoQuality"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"step4/utils validateTodoQuality should return error when no file references with line numbers found","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should return error when no file references with line numbers found"},{"ancestorTitles":["step4/utils","validateTodoQuality"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"step4/utils validateTodoQuality should return error when Implementation Plan subsections missing","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should return error when Implementation Plan subsections missing"},{"ancestorTitles":["step4/utils","validateTodoQuality"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"step4/utils validateTodoQuality should return valid result with all validation rules passing","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return valid result with all validation rules passing"},{"ancestorTitles":["step4/utils","validateTodoQuality"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"step4/utils validateTodoQuality should calculate contextScore correctly (0)","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should calculate contextScore correctly (0)"},{"ancestorTitles":["step4/utils","validateTodoQuality"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"step4/utils validateTodoQuality should calculate contextScore correctly (1)","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should calculate contextScore correctly (1)"},{"ancestorTitles":["step4/utils","validateTodoQuality"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"step4/utils validateTodoQuality should calculate contextScore correctly (2)","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should calculate contextScore correctly (2)"},{"ancestorTitles":["step4/utils","validateTodoQuality"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"step4/utils validateTodoQuality should calculate contextScore correctly (3)","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should calculate contextScore correctly (3)"},{"ancestorTitles":["step4/utils","validateTodoQuality"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"step4/utils validateTodoQuality should handle file reference patterns with single line numbers","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle file reference patterns with single line numbers"},{"ancestorTitles":["step4/utils","validateTodoQuality"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"step4/utils validateTodoQuality should handle file reference patterns with ranges","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle file reference patterns with ranges"}],"endTime":1764343035607,"message":"","name":"/Users/samuelfajreldines/Desenvolvimento/claudiomiro/src/commands/task-executor/steps/step4/utils.test.js","startTime":1764343035572,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["Gemini Executor","executeGemini"],"duration":15,"failureDetails":[],"failureMessages":[],"fullName":"Gemini Executor executeGemini should throw error when no prompt provided","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should throw error when no prompt provided"},{"ancestorTitles":["Gemini Executor","executeGemini"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Gemini Executor executeGemini should create temporary file with prompt text","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should create temporary file with prompt text"},{"ancestorTitles":["Gemini Executor","executeGemini"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"Gemini Executor executeGemini should spawn Gemini process with correct command","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should spawn Gemini process with correct command"},{"ancestorTitles":["Gemini Executor","executeGemini"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"Gemini Executor executeGemini should handle stdout data processing","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle stdout data processing"},{"ancestorTitles":["Gemini Executor","executeGemini"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Gemini Executor executeGemini should handle process close with success code","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle process close with success code"},{"ancestorTitles":["Gemini Executor","executeGemini"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"Gemini Executor executeGemini should handle process close with error code","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle process close with error code"},{"ancestorTitles":["Gemini Executor","executeGemini"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"Gemini Executor executeGemini should handle process error","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle process error"},{"ancestorTitles":["Gemini Executor","executeGemini"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"Gemini Executor executeGemini should update state manager when taskName provided","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should update state manager when taskName provided"},{"ancestorTitles":["Gemini Executor","executeGemini"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"Gemini Executor executeGemini should cleanup temporary file on successful completion","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should cleanup temporary file on successful completion"},{"ancestorTitles":["Gemini Executor","executeGemini"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"Gemini Executor executeGemini should suppress streaming logs when UI renderer is active","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should suppress streaming logs when UI renderer is active"}],"endTime":1764343035729,"message":"","name":"/Users/samuelfajreldines/Desenvolvimento/claudiomiro/src/shared/executors/gemini-executor.test.js","startTime":1764343035610,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["src/commands/loop-fixes/executor.js","countPendingItems()"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"src/commands/loop-fixes/executor.js countPendingItems() should return 0 when file does not exist","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return 0 when file does not exist"},{"ancestorTitles":["src/commands/loop-fixes/executor.js","countPendingItems()"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"src/commands/loop-fixes/executor.js countPendingItems() should return 0 when file is empty","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return 0 when file is empty"},{"ancestorTitles":["src/commands/loop-fixes/executor.js","countPendingItems()"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"src/commands/loop-fixes/executor.js countPendingItems() should count pending items correctly","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should count pending items correctly"},{"ancestorTitles":["src/commands/loop-fixes/executor.js","countPendingItems()"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"src/commands/loop-fixes/executor.js countPendingItems() should return 0 when all items are completed","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return 0 when all items are completed"},{"ancestorTitles":["src/commands/loop-fixes/executor.js","countPendingItems()"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"src/commands/loop-fixes/executor.js countPendingItems() should handle read errors gracefully","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle read errors gracefully"},{"ancestorTitles":["src/commands/loop-fixes/executor.js","countCompletedItems()"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"src/commands/loop-fixes/executor.js countCompletedItems() should return 0 when file does not exist","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return 0 when file does not exist"},{"ancestorTitles":["src/commands/loop-fixes/executor.js","countCompletedItems()"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"src/commands/loop-fixes/executor.js countCompletedItems() should count completed items correctly","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should count completed items correctly"},{"ancestorTitles":["src/commands/loop-fixes/executor.js","countCompletedItems()"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"src/commands/loop-fixes/executor.js countCompletedItems() should handle case-insensitive [X] markers","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle case-insensitive [X] markers"},{"ancestorTitles":["src/commands/loop-fixes/executor.js","initializeFolder()"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"src/commands/loop-fixes/executor.js initializeFolder() should create .claudiomiro folder if it does not exist","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should create .claudiomiro folder if it does not exist"},{"ancestorTitles":["src/commands/loop-fixes/executor.js","initializeFolder()"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"src/commands/loop-fixes/executor.js initializeFolder() should not create folder if it already exists","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should not create folder if it already exists"},{"ancestorTitles":["src/commands/loop-fixes/executor.js","initializeFolder()"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"src/commands/loop-fixes/executor.js initializeFolder() should call state.setFolder if claudiomiroFolder is not defined","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should call state.setFolder if claudiomiroFolder is not defined"},{"ancestorTitles":["src/commands/loop-fixes/executor.js","loopFixes()"],"duration":15,"failureDetails":[],"failureMessages":[],"fullName":"src/commands/loop-fixes/executor.js loopFixes() should throw error when prompt is empty","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should throw error when prompt is empty"},{"ancestorTitles":["src/commands/loop-fixes/executor.js","loopFixes()"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"src/commands/loop-fixes/executor.js loopFixes() should throw error when prompt is null","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should throw error when prompt is null"},{"ancestorTitles":["src/commands/loop-fixes/executor.js","loopFixes()"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"src/commands/loop-fixes/executor.js loopFixes() should throw error when prompt is only whitespace","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should throw error when prompt is only whitespace"},{"ancestorTitles":["src/commands/loop-fixes/executor.js","loopFixes()"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"src/commands/loop-fixes/executor.js loopFixes() should throw error when prompt.md is not found","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should throw error when prompt.md is not found"},{"ancestorTitles":["src/commands/loop-fixes/executor.js","loopFixes()"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"src/commands/loop-fixes/executor.js loopFixes() should throw error when verification-prompt.md is not found","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should throw error when verification-prompt.md is not found"},{"ancestorTitles":["src/commands/loop-fixes/executor.js","loopFixes()"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"src/commands/loop-fixes/executor.js loopFixes() should complete successfully after verification passes (CRITICAL_REVIEW_OVERVIEW.md + CRITICAL_REVIEW_PASSED.md)","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should complete successfully after verification passes (CRITICAL_REVIEW_OVERVIEW.md + CRITICAL_REVIEW_PASSED.md)"},{"ancestorTitles":["src/commands/loop-fixes/executor.js","loopFixes()"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"src/commands/loop-fixes/executor.js loopFixes() should continue loop when verification finds new tasks","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should continue loop when verification finds new tasks"},{"ancestorTitles":["src/commands/loop-fixes/executor.js","loopFixes()"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"src/commands/loop-fixes/executor.js loopFixes() should iterate multiple times until CRITICAL_REVIEW_OVERVIEW.md is created then verify","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should iterate multiple times until CRITICAL_REVIEW_OVERVIEW.md is created then verify"},{"ancestorTitles":["src/commands/loop-fixes/executor.js","loopFixes()"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"src/commands/loop-fixes/executor.js loopFixes() should throw error when max iterations reached without completion","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should throw error when max iterations reached without completion"},{"ancestorTitles":["src/commands/loop-fixes/executor.js","loopFixes()"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"src/commands/loop-fixes/executor.js loopFixes() should throw error when max iterations reached during verification","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should throw error when max iterations reached during verification"},{"ancestorTitles":["src/commands/loop-fixes/executor.js","loopFixes()"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"src/commands/loop-fixes/executor.js loopFixes() should handle Claude execution failure","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle Claude execution failure"},{"ancestorTitles":["src/commands/loop-fixes/executor.js","loopFixes()"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"src/commands/loop-fixes/executor.js loopFixes() should replace placeholders in prompt template","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should replace placeholders in prompt template"},{"ancestorTitles":["src/commands/loop-fixes/executor.js","loopFixes()"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"src/commands/loop-fixes/executor.js loopFixes() should replace placeholders in verification prompt template","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should replace placeholders in verification prompt template"},{"ancestorTitles":["src/commands/loop-fixes/executor.js","loopFixes()"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"src/commands/loop-fixes/executor.js loopFixes() should handle unlimited iterations (Infinity)","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle unlimited iterations (Infinity)"},{"ancestorTitles":["src/commands/loop-fixes/executor.js","loopFixes()"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"src/commands/loop-fixes/executor.js loopFixes() should log iteration progress","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should log iteration progress"},{"ancestorTitles":["src/commands/loop-fixes/executor.js","loopFixes()"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"src/commands/loop-fixes/executor.js loopFixes() should log summary when issues were fixed","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should log summary when issues were fixed"},{"ancestorTitles":["src/commands/loop-fixes/executor.js","loopFixes()"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"src/commands/loop-fixes/executor.js loopFixes() should truncate long prompts in log output","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should truncate long prompts in log output"},{"ancestorTitles":["src/commands/loop-fixes/executor.js","loopFixes()"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"src/commands/loop-fixes/executor.js loopFixes() should display pending and completed counts during iteration","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should display pending and completed counts during iteration"},{"ancestorTitles":["src/commands/loop-fixes/executor.js","loopFixes()"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"src/commands/loop-fixes/executor.js loopFixes() should delete CRITICAL_REVIEW_OVERVIEW.md when entering verification mode","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should delete CRITICAL_REVIEW_OVERVIEW.md when entering verification mode"}],"endTime":1764343035947,"message":"","name":"/Users/samuelfajreldines/Desenvolvimento/claudiomiro/src/commands/loop-fixes/executor.test.js","startTime":1764343035731,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["fix-branch command","getLevelInstructions"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"fix-branch command getLevelInstructions should return blockers only instructions for level 1","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should return blockers only instructions for level 1"},{"ancestorTitles":["fix-branch command","getLevelInstructions"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"fix-branch command getLevelInstructions should return blockers + warnings instructions for level 2","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should return blockers + warnings instructions for level 2"},{"ancestorTitles":["fix-branch command","getLevelInstructions"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"fix-branch command getLevelInstructions should return all issues instructions for level 3","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should return all issues instructions for level 3"},{"ancestorTitles":["fix-branch command","getLevelName"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"fix-branch command getLevelName should return \"blockers only\" for level 1","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return \"blockers only\" for level 1"},{"ancestorTitles":["fix-branch command","getLevelName"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"fix-branch command getLevelName should return \"blockers + warnings\" for level 2","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return \"blockers + warnings\" for level 2"},{"ancestorTitles":["fix-branch command","getLevelName"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"fix-branch command getLevelName should return \"all issues\" for level 3","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return \"all issues\" for level 3"},{"ancestorTitles":["fix-branch command","getFixedPrompt"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"fix-branch command getFixedPrompt should read prompt from prompt.md file and append level 1 instructions by default","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should read prompt from prompt.md file and append level 1 instructions by default"},{"ancestorTitles":["fix-branch command","getFixedPrompt"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"fix-branch command getFixedPrompt should append level 2 instructions when level 2 is specified","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should append level 2 instructions when level 2 is specified"},{"ancestorTitles":["fix-branch command","getFixedPrompt"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"fix-branch command getFixedPrompt should append level 3 instructions when level 3 is specified","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should append level 3 instructions when level 3 is specified"},{"ancestorTitles":["fix-branch command","getFixedPrompt"],"duration":8,"failureDetails":[],"failureMessages":[],"fullName":"fix-branch command getFixedPrompt should throw error if prompt.md does not exist","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should throw error if prompt.md does not exist"},{"ancestorTitles":["fix-branch command","run"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"fix-branch command run should run with default max iterations (20) and level 1","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should run with default max iterations (20) and level 1"},{"ancestorTitles":["fix-branch command","run"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"fix-branch command run should use --limit argument when provided","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should use --limit argument when provided"},{"ancestorTitles":["fix-branch command","run"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"fix-branch command run should use Infinity when --no-limit is provided","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should use Infinity when --no-limit is provided"},{"ancestorTitles":["fix-branch command","run"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"fix-branch command run should set folder from positional argument","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should set folder from positional argument"},{"ancestorTitles":["fix-branch command","run"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"fix-branch command run should use process.cwd() when no folder provided","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should use process.cwd() when no folder provided"},{"ancestorTitles":["fix-branch command","run"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"fix-branch command run should ignore --limit when --no-limit is also provided","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should ignore --limit when --no-limit is also provided"},{"ancestorTitles":["fix-branch command","run"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"fix-branch command run should log start messages with level info","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should log start messages with level info"},{"ancestorTitles":["fix-branch command","run"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"fix-branch command run should handle folder with --limit option","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle folder with --limit option"},{"ancestorTitles":["fix-branch command","run"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"fix-branch command run should propagate errors from loopFixes","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should propagate errors from loopFixes"},{"ancestorTitles":["fix-branch command","run"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"fix-branch command run should throw error if prompt.md is missing","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should throw error if prompt.md is missing"},{"ancestorTitles":["fix-branch command","run","level argument"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"fix-branch command run level argument should use level 1 by default","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should use level 1 by default"},{"ancestorTitles":["fix-branch command","run","level argument"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"fix-branch command run level argument should parse --level=1 correctly","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should parse --level=1 correctly"},{"ancestorTitles":["fix-branch command","run","level argument"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"fix-branch command run level argument should parse --level=2 correctly","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should parse --level=2 correctly"},{"ancestorTitles":["fix-branch command","run","level argument"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"fix-branch command run level argument should parse --level=3 correctly","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should parse --level=3 correctly"},{"ancestorTitles":["fix-branch command","run","level argument"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"fix-branch command run level argument should throw error for invalid level","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should throw error for invalid level"},{"ancestorTitles":["fix-branch command","run","level argument"],"duration":4,"failureDetails":[],"failureMessages":[],"fullName":"fix-branch command run level argument should throw error for invalid level 0","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should throw error for invalid level 0"},{"ancestorTitles":["fix-branch command","run","level argument"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"fix-branch command run level argument should use --blockers-only shortcut","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should use --blockers-only shortcut"},{"ancestorTitles":["fix-branch command","run","level argument"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"fix-branch command run level argument should use --no-suggestions shortcut","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should use --no-suggestions shortcut"},{"ancestorTitles":["fix-branch command","run","level argument"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"fix-branch command run level argument should give --blockers-only precedence over --level","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should give --blockers-only precedence over --level"},{"ancestorTitles":["fix-branch command","run","level argument"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"fix-branch command run level argument should give --no-suggestions precedence over --level","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should give --no-suggestions precedence over --level"},{"ancestorTitles":["fix-branch command","run","level argument"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"fix-branch command run level argument should combine level with --limit","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should combine level with --limit"},{"ancestorTitles":["fix-branch command","run","level argument"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"fix-branch command run level argument should combine level with --no-limit","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should combine level with --no-limit"},{"ancestorTitles":["fix-branch command","run","level argument"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"fix-branch command run level argument should combine level with folder argument","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should combine level with folder argument"},{"ancestorTitles":["fix-branch command","run","level argument"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"fix-branch command run level argument should use --no-clear flag to set clearFolder to false","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should use --no-clear flag to set clearFolder to false"},{"ancestorTitles":["fix-branch command","run","level argument"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"fix-branch command run level argument should combine --no-clear with other options","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should combine --no-clear with other options"}],"endTime":1764343036022,"message":"","name":"/Users/samuelfajreldines/Desenvolvimento/claudiomiro/src/commands/fix-branch/index.test.js","startTime":1764343035952,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["DiffService","processOutput"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"DiffService processOutput should return success with no diffs when output has no diffs","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should return success with no diffs when output has no diffs"},{"ancestorTitles":["DiffService","processOutput"],"duration":4,"failureDetails":[],"failureMessages":[],"fullName":"DiffService processOutput should apply a simple diff from LLM output","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should apply a simple diff from LLM output"},{"ancestorTitles":["DiffService","processOutput"],"duration":3,"failureDetails":[],"failureMessages":[],"fullName":"DiffService processOutput should handle multiple diffs in output","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should handle multiple diffs in output"},{"ancestorTitles":["DiffService","processOutput"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"DiffService processOutput should handle new file creation","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should handle new file creation"},{"ancestorTitles":["DiffService","processOutput"],"duration":3,"failureDetails":[],"failureMessages":[],"fullName":"DiffService processOutput should dry run without modifying files","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should dry run without modifying files"},{"ancestorTitles":["DiffService","processOutput"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"DiffService processOutput should create backup files when backup option is true","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should create backup files when backup option is true"},{"ancestorTitles":["DiffService","processSingleDiff"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"DiffService processSingleDiff should apply a valid diff","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should apply a valid diff"},{"ancestorTitles":["DiffService","processSingleDiff"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"DiffService processSingleDiff should reject invalid diff","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should reject invalid diff"},{"ancestorTitles":["DiffService","processSingleDiff"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"DiffService processSingleDiff should handle missing file","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle missing file"},{"ancestorTitles":["DiffService","rollback"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"DiffService rollback should rollback applied changes","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should rollback applied changes"},{"ancestorTitles":["DiffService","cleanupBackups"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"DiffService cleanupBackups should remove backup files","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should remove backup files"},{"ancestorTitles":["DiffService","resolveFilePath"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"DiffService resolveFilePath should resolve path from newFileName","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should resolve path from newFileName"},{"ancestorTitles":["DiffService","resolveFilePath"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"DiffService resolveFilePath should resolve path from oldFileName when newFileName is /dev/null","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should resolve path from oldFileName when newFileName is /dev/null"},{"ancestorTitles":["DiffService","resolveFilePath"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"DiffService resolveFilePath should return null for invalid patch","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return null for invalid patch"},{"ancestorTitles":["DiffService","module exports"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"DiffService module exports should export processOutput function","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should export processOutput function"},{"ancestorTitles":["DiffService","module exports"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"DiffService module exports should export processSingleDiff function","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should export processSingleDiff function"}],"endTime":1764343036097,"message":"","name":"/Users/samuelfajreldines/Desenvolvimento/claudiomiro/src/shared/services/diff-service.test.js","startTime":1764343036029,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["src/commands/task-executor/index.js","run()"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"src/commands/task-executor/index.js run() should call init with provided args","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should call init with provided args"},{"ancestorTitles":["src/commands/task-executor/index.js","run()"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"src/commands/task-executor/index.js run() should call init with empty array when no args provided","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should call init with empty array when no args provided"},{"ancestorTitles":["src/commands/task-executor/index.js","run()"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"src/commands/task-executor/index.js run() should pass through all args to init","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should pass through all args to init"},{"ancestorTitles":["src/commands/task-executor/index.js","run()"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"src/commands/task-executor/index.js run() should return promise that resolves when init completes","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should return promise that resolves when init completes"},{"ancestorTitles":["src/commands/task-executor/index.js","run()"],"duration":3,"failureDetails":[],"failureMessages":[],"fullName":"src/commands/task-executor/index.js run() should propagate errors from init","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should propagate errors from init"},{"ancestorTitles":["src/commands/task-executor/index.js","exports"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"src/commands/task-executor/index.js exports should export run function","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should export run function"}],"endTime":1764343036140,"message":"","name":"/Users/samuelfajreldines/Desenvolvimento/claudiomiro/src/commands/task-executor/index.test.js","startTime":1764343036100,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["step5","step5"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"step5 step5 should execute successfully on first run","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"status":"passed","title":"should execute successfully on first run"},{"ancestorTitles":["step5","step5"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"step5 step5 should handle re-research after 3+ failed attempts","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should handle re-research after 3+ failed attempts"},{"ancestorTitles":["step5","step5"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"step5 step5 should use context-cache service to collect context from previous tasks","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"status":"passed","title":"should use context-cache service to collect context from previous tasks"},{"ancestorTitles":["step5","step5"],"duration":17,"failureDetails":[],"failureMessages":[],"fullName":"step5 step5 should handle executeClaude failure and update info.json with error","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"status":"passed","title":"should handle executeClaude failure and update info.json with error"},{"ancestorTitles":["step5","step5"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"step5 step5 should remove CODE_REVIEW.md if it exists","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should remove CODE_REVIEW.md if it exists"},{"ancestorTitles":["step5","step5"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"step5 step5 should handle missing RESEARCH.md in execution context","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle missing RESEARCH.md in execution context"},{"ancestorTitles":["step5","step5"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"step5 step5 should track execution history in info.json","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should track execution history in info.json"},{"ancestorTitles":["step5","step5"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"step5 step5 should create new info.json for first run","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should create new info.json for first run"}],"endTime":1764343036209,"message":"","name":"/Users/samuelfajreldines/Desenvolvimento/claudiomiro/src/commands/task-executor/steps/step5/index.test.js","startTime":1764343036145,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["reanalyze-failed","skip conditions"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"reanalyze-failed skip conditions should skip when TODO.old.md already exists","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should skip when TODO.old.md already exists"},{"ancestorTitles":["reanalyze-failed","backup and restore flow"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"reanalyze-failed backup and restore flow should create backup and timestamped backup before deleting TODO.md","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should create backup and timestamped backup before deleting TODO.md"},{"ancestorTitles":["reanalyze-failed","backup and restore flow"],"duration":6,"failureDetails":[],"failureMessages":[],"fullName":"reanalyze-failed backup and restore flow should restore TODO.md when creation fails","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should restore TODO.md when creation fails"},{"ancestorTitles":["reanalyze-failed","backup and restore flow"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"reanalyze-failed backup and restore flow should cleanup TODO.old.md after successful TODO.md creation","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should cleanup TODO.old.md after successful TODO.md creation"},{"ancestorTitles":["reanalyze-failed","context file collection"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"reanalyze-failed context file collection should include AI_PROMPT.md in context","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should include AI_PROMPT.md in context"},{"ancestorTitles":["reanalyze-failed","context file collection"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"reanalyze-failed context file collection should include RESEARCH.md when it exists","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should include RESEARCH.md when it exists"},{"ancestorTitles":["reanalyze-failed","context file collection"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"reanalyze-failed context file collection should handle missing RESEARCH.md gracefully","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle missing RESEARCH.md gracefully"},{"ancestorTitles":["reanalyze-failed","failure history processing"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"reanalyze-failed failure history processing should include failure history when info.json exists with errorHistory","invocations":1,"location":null,"numPassingAsserts":9,"retryReasons":[],"status":"passed","title":"should include failure history when info.json exists with errorHistory"},{"ancestorTitles":["reanalyze-failed","failure history processing"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"reanalyze-failed failure history processing should handle missing info.json gracefully","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle missing info.json gracefully"},{"ancestorTitles":["reanalyze-failed","failure history processing"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"reanalyze-failed failure history processing should handle info.json without errorHistory gracefully","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle info.json without errorHistory gracefully"},{"ancestorTitles":["reanalyze-failed","failure history processing"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"reanalyze-failed failure history processing should format last 3 errors from errorHistory","invocations":1,"location":null,"numPassingAsserts":7,"retryReasons":[],"status":"passed","title":"should format last 3 errors from errorHistory"},{"ancestorTitles":["reanalyze-failed","prompt template processing"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"reanalyze-failed prompt template processing should load reanalyze-prompt.md template","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should load reanalyze-prompt.md template"},{"ancestorTitles":["reanalyze-failed","prompt template processing"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"reanalyze-failed prompt template processing should replace all placeholders in template","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"status":"passed","title":"should replace all placeholders in template"},{"ancestorTitles":["reanalyze-failed","prompt template processing"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"reanalyze-failed prompt template processing should include TODO template from templates directory","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should include TODO template from templates directory"},{"ancestorTitles":["reanalyze-failed","executeClaude integration"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"reanalyze-failed executeClaude integration should call executeClaude with built prompt","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should call executeClaude with built prompt"},{"ancestorTitles":["reanalyze-failed","executeClaude integration"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"reanalyze-failed executeClaude integration should return executeClaude result","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return executeClaude result"},{"ancestorTitles":["reanalyze-failed","executeClaude integration"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"reanalyze-failed executeClaude integration should propagate executeClaude errors","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should propagate executeClaude errors"},{"ancestorTitles":["reanalyze-failed","timestamp generation"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"reanalyze-failed timestamp generation should use consistent timestamp for backup files","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should use consistent timestamp for backup files"}],"endTime":1764343036290,"message":"","name":"/Users/samuelfajreldines/Desenvolvimento/claudiomiro/src/commands/task-executor/steps/step6/reanalyze-failed.test.js","startTime":1764343036215,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["Codex Logger","processCodexEvent"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"Codex Logger processCodexEvent should return null for empty or whitespace input","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should return null for empty or whitespace input"},{"ancestorTitles":["Codex Logger","processCodexEvent"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Codex Logger processCodexEvent should return null for invalid JSON","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should return null for invalid JSON"},{"ancestorTitles":["Codex Logger","processCodexEvent"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Codex Logger processCodexEvent should return null for empty JSON object","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return null for empty JSON object"},{"ancestorTitles":["Codex Logger","processCodexEvent"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Codex Logger processCodexEvent should return item.text when present","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return item.text when present"},{"ancestorTitles":["Codex Logger","processCodexEvent"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Codex Logger processCodexEvent should return formatted command when item.command is present","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return formatted command when item.command is present"},{"ancestorTitles":["Codex Logger","processCodexEvent"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Codex Logger processCodexEvent should return prompt when present","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return prompt when present"},{"ancestorTitles":["Codex Logger","processCodexEvent"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Codex Logger processCodexEvent should return msg.text when present","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return msg.text when present"},{"ancestorTitles":["Codex Logger","processCodexEvent"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Codex Logger processCodexEvent should handle msg.type with token_count (should return null)","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle msg.type with token_count (should return null)"},{"ancestorTitles":["Codex Logger","processCodexEvent"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Codex Logger processCodexEvent should handle msg.type containing exec_command","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle msg.type containing exec_command"},{"ancestorTitles":["Codex Logger","processCodexEvent"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Codex Logger processCodexEvent should handle msg.type containing agent_reasoning","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle msg.type containing agent_reasoning"},{"ancestorTitles":["Codex Logger","processCodexEvent"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Codex Logger processCodexEvent should return msg.type for other message types","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return msg.type for other message types"},{"ancestorTitles":["Codex Logger","processCodexEvent"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Codex Logger processCodexEvent should prioritize item.text over other properties","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should prioritize item.text over other properties"},{"ancestorTitles":["Codex Logger","processCodexEvent"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Codex Logger processCodexEvent should return truncated JSON string for unrecognized structure","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should return truncated JSON string for unrecognized structure"},{"ancestorTitles":["Codex Logger","processCodexEvent"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Codex Logger processCodexEvent should handle short JSON strings without truncation","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle short JSON strings without truncation"},{"ancestorTitles":["Codex Logger","processCodexEvent"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Codex Logger processCodexEvent should handle malformed JSON gracefully","invocations":1,"location":null,"numPassingAsserts":8,"retryReasons":[],"status":"passed","title":"should handle malformed JSON gracefully"},{"ancestorTitles":["Codex Logger","processCodexEvent"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Codex Logger processCodexEvent should handle msg with missing text property","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle msg with missing text property"},{"ancestorTitles":["Codex Logger","processCodexEvent"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Codex Logger processCodexEvent should handle msg with empty text","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle msg with empty text"},{"ancestorTitles":["Codex Logger","processCodexEvent"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Codex Logger processCodexEvent should handle item with empty command","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle item with empty command"},{"ancestorTitles":["Codex Logger","processCodexEvent"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Codex Logger processCodexEvent should handle item with empty text","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle item with empty text"},{"ancestorTitles":["Codex Logger","processCodexEvent"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Codex Logger processCodexEvent should handle complex nested structures","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle complex nested structures"},{"ancestorTitles":["Codex Logger","processCodexEvent"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Codex Logger processCodexEvent should handle Unicode and special characters","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle Unicode and special characters"},{"ancestorTitles":["Codex Logger","processCodexEvent"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Codex Logger processCodexEvent should handle multiple message types correctly","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"status":"passed","title":"should handle multiple message types correctly"},{"ancestorTitles":["Codex Logger","format integration through processCodexEvent"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Codex Logger format integration through processCodexEvent should format command execution with exit code","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should format command execution with exit code"},{"ancestorTitles":["Codex Logger","format integration through processCodexEvent"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Codex Logger format integration through processCodexEvent should handle file operations","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle file operations"},{"ancestorTitles":["Codex Logger","format integration through processCodexEvent"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Codex Logger format integration through processCodexEvent should handle web search operations","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle web search operations"},{"ancestorTitles":["Codex Logger","format integration through processCodexEvent"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Codex Logger format integration through processCodexEvent should handle MCP tool calls","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle MCP tool calls"},{"ancestorTitles":["Codex Logger","Edge cases and error handling"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Codex Logger Edge cases and error handling should handle extremely long JSON strings","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle extremely long JSON strings"},{"ancestorTitles":["Codex Logger","Edge cases and error handling"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Codex Logger Edge cases and error handling should handle null and undefined values in JSON","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"status":"passed","title":"should handle null and undefined values in JSON"},{"ancestorTitles":["Codex Logger","Edge cases and error handling"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Codex Logger Edge cases and error handling should handle numeric values in JSON","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should handle numeric values in JSON"},{"ancestorTitles":["Codex Logger","Edge cases and error handling"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Codex Logger Edge cases and error handling should handle boolean values in JSON","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should handle boolean values in JSON"},{"ancestorTitles":["Codex Logger","Edge cases and error handling"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Codex Logger Edge cases and error handling should handle array values in JSON","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should handle array values in JSON"},{"ancestorTitles":["Codex Logger","OpenAI-Specific API Response Patterns"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Codex Logger OpenAI-Specific API Response Patterns should handle OpenAI token usage information","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should handle OpenAI token usage information"},{"ancestorTitles":["Codex Logger","OpenAI-Specific API Response Patterns"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Codex Logger OpenAI-Specific API Response Patterns should handle OpenAI cost tracking information","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should handle OpenAI cost tracking information"},{"ancestorTitles":["Codex Logger","OpenAI-Specific API Response Patterns"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Codex Logger OpenAI-Specific API Response Patterns should handle OpenAI function call format","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should handle OpenAI function call format"},{"ancestorTitles":["Codex Logger","OpenAI-Specific API Response Patterns"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Codex Logger OpenAI-Specific API Response Patterns should handle OpenAI tool result format","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should handle OpenAI tool result format"},{"ancestorTitles":["Codex Logger","OpenAI-Specific API Response Patterns"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Codex Logger OpenAI-Specific API Response Patterns should handle OpenAI streaming response chunks","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"status":"passed","title":"should handle OpenAI streaming response chunks"},{"ancestorTitles":["Codex Logger","OpenAI-Specific API Response Patterns"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Codex Logger OpenAI-Specific API Response Patterns should handle OpenAI API error responses","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should handle OpenAI API error responses"},{"ancestorTitles":["Codex Logger","OpenAI-Specific API Response Patterns"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Codex Logger OpenAI-Specific API Response Patterns should handle OpenAI invalid request error","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should handle OpenAI invalid request error"},{"ancestorTitles":["Codex Logger","Agent Reasoning and Complex Workflows"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Codex Logger Agent Reasoning and Complex Workflows should handle multi-step agent reasoning process","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should handle multi-step agent reasoning process"},{"ancestorTitles":["Codex Logger","Agent Reasoning and Complex Workflows"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Codex Logger Agent Reasoning and Complex Workflows should handle chain-of-thought reasoning","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should handle chain-of-thought reasoning"},{"ancestorTitles":["Codex Logger","Agent Reasoning and Complex Workflows"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"Codex Logger Agent Reasoning and Complex Workflows should handle complete conversation workflow","invocations":1,"location":null,"numPassingAsserts":12,"retryReasons":[],"status":"passed","title":"should handle complete conversation workflow"},{"ancestorTitles":["Codex Logger","MCP (Model Context Protocol) Integration"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Codex Logger MCP (Model Context Protocol) Integration should handle MCP tool call interactions","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"status":"passed","title":"should handle MCP tool call interactions"},{"ancestorTitles":["Codex Logger","MCP (Model Context Protocol) Integration"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Codex Logger MCP (Model Context Protocol) Integration should handle MCP tool results","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should handle MCP tool results"},{"ancestorTitles":["Codex Logger","Parallel Processing State Management"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Codex Logger Parallel Processing State Management should handle parallel task coordination","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle parallel task coordination"},{"ancestorTitles":["Codex Logger","Parallel Processing State Management"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Codex Logger Parallel Processing State Management should handle parallel task progress updates","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle parallel task progress updates"},{"ancestorTitles":["Codex Logger","Performance and Memory Edge Cases"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Codex Logger Performance and Memory Edge Cases should handle large payload processing","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should handle large payload processing"},{"ancestorTitles":["Codex Logger","Performance and Memory Edge Cases"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Codex Logger Performance and Memory Edge Cases should handle rapid event processing simulation","invocations":1,"location":null,"numPassingAsserts":10,"retryReasons":[],"status":"passed","title":"should handle rapid event processing simulation"},{"ancestorTitles":["Codex Logger","Performance and Memory Edge Cases"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Codex Logger Performance and Memory Edge Cases should handle complex nested JSON structures","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"status":"passed","title":"should handle complex nested JSON structures"},{"ancestorTitles":["Codex Logger","Critical Bug Fix Verification"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Codex Logger Critical Bug Fix Verification should correctly handle msg.text property (previously had typo bug)","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should correctly handle msg.text property (previously had typo bug)"},{"ancestorTitles":["Codex Logger","Critical Bug Fix Verification"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Codex Logger Critical Bug Fix Verification should handle msg.text with various content types","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should handle msg.text with various content types"}],"endTime":1764343036340,"message":"","name":"/Users/samuelfajreldines/Desenvolvimento/claudiomiro/src/shared/executors/codex-logger.test.js","startTime":1764343036293,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["LocalLLMService","initialization"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"LocalLLMService initialization should initialize successfully when Ollama is available","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should initialize successfully when Ollama is available"},{"ancestorTitles":["LocalLLMService","initialization"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"LocalLLMService initialization should fallback when Ollama is unavailable","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should fallback when Ollama is unavailable"},{"ancestorTitles":["LocalLLMService","initialization"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"LocalLLMService initialization should be disabled by default when CLAUDIOMIRO_LOCAL_LLM not set","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should be disabled by default when CLAUDIOMIRO_LOCAL_LLM not set"},{"ancestorTitles":["LocalLLMService","initialization"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"LocalLLMService initialization should be disabled when CLAUDIOMIRO_LOCAL_LLM is set to \"true\" (no default model)","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should be disabled when CLAUDIOMIRO_LOCAL_LLM is set to \"true\" (no default model)"},{"ancestorTitles":["LocalLLMService","initialization"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"LocalLLMService initialization should be enabled when CLAUDIOMIRO_LOCAL_LLM is set to model name","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should be enabled when CLAUDIOMIRO_LOCAL_LLM is set to model name"},{"ancestorTitles":["LocalLLMService","initialization"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"LocalLLMService initialization should only initialize once","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should only initialize once"},{"ancestorTitles":["LocalLLMService","classifyTopics"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"LocalLLMService classifyTopics should use LLM when available","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should use LLM when available"},{"ancestorTitles":["LocalLLMService","classifyTopics"],"duration":17,"failureDetails":[],"failureMessages":[],"fullName":"LocalLLMService classifyTopics should fallback to heuristics when LLM unavailable","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should fallback to heuristics when LLM unavailable"},{"ancestorTitles":["LocalLLMService","extractSection"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"LocalLLMService extractSection should use LLM when available","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should use LLM when available"},{"ancestorTitles":["LocalLLMService","extractSection"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"LocalLLMService extractSection should fallback to regex when LLM unavailable","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should fallback to regex when LLM unavailable"},{"ancestorTitles":["LocalLLMService","summarize"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"LocalLLMService summarize should use LLM when available","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should use LLM when available"},{"ancestorTitles":["LocalLLMService","summarize"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"LocalLLMService summarize should truncate when LLM unavailable","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should truncate when LLM unavailable"},{"ancestorTitles":["LocalLLMService","checkCompletion"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"LocalLLMService checkCompletion should use LLM when available","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should use LLM when available"},{"ancestorTitles":["LocalLLMService","checkCompletion"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"LocalLLMService checkCompletion should fallback to heuristics when LLM unavailable","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should fallback to heuristics when LLM unavailable"},{"ancestorTitles":["LocalLLMService","analyzeDependencies"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"LocalLLMService analyzeDependencies should use LLM when available","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should use LLM when available"},{"ancestorTitles":["LocalLLMService","analyzeDependencies"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"LocalLLMService analyzeDependencies should fallback to regex when LLM unavailable","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should fallback to regex when LLM unavailable"},{"ancestorTitles":["LocalLLMService","generate"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"LocalLLMService generate should return text when LLM available","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return text when LLM available"},{"ancestorTitles":["LocalLLMService","generate"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"LocalLLMService generate should return null when LLM unavailable","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return null when LLM unavailable"},{"ancestorTitles":["LocalLLMService","getStatus"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"LocalLLMService getStatus should return complete status","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should return complete status"},{"ancestorTitles":["LocalLLMService","singleton"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"LocalLLMService singleton should return same instance","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return same instance"},{"ancestorTitles":["LocalLLMService","singleton"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"LocalLLMService singleton should reset correctly","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should reset correctly"}],"endTime":1764343036408,"message":"","name":"/Users/samuelfajreldines/Desenvolvimento/claudiomiro/src/shared/services/local-llm/index.test.js","startTime":1764343036343,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["Gemini Logger","processGeminiMessage"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Gemini Logger processGeminiMessage should return plain text content","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return plain text content"},{"ancestorTitles":["Gemini Logger","processGeminiMessage"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Gemini Logger processGeminiMessage should skip empty lines","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should skip empty lines"},{"ancestorTitles":["Gemini Logger","processGeminiMessage"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Gemini Logger processGeminiMessage should skip whitespace-only lines","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should skip whitespace-only lines"},{"ancestorTitles":["Gemini Logger","processGeminiMessage"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Gemini Logger processGeminiMessage should skip deprecation warnings","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should skip deprecation warnings"},{"ancestorTitles":["Gemini Logger","processGeminiMessage"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Gemini Logger processGeminiMessage should skip help/option output","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should skip help/option output"},{"ancestorTitles":["Gemini Logger","processGeminiMessage"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"Gemini Logger processGeminiMessage should skip --help output","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should skip --help output"},{"ancestorTitles":["Gemini Logger","processGeminiMessage"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Gemini Logger processGeminiMessage should trim whitespace from valid content","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should trim whitespace from valid content"},{"ancestorTitles":["Gemini Logger","processGeminiMessage"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Gemini Logger processGeminiMessage should handle multi-line content","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle multi-line content"},{"ancestorTitles":["Gemini Logger","processGeminiMessage"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Gemini Logger processGeminiMessage should handle JSON input as plain text (not parse it)","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle JSON input as plain text (not parse it)"},{"ancestorTitles":["Gemini Logger","Google AI SDK Specific Output Filtering"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Gemini Logger Google AI SDK Specific Output Filtering should filter different Node.js deprecation warning codes","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should filter different Node.js deprecation warning codes"},{"ancestorTitles":["Gemini Logger","Google AI SDK Specific Output Filtering"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Gemini Logger Google AI SDK Specific Output Filtering should handle multiple deprecation warnings in single line","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle multiple deprecation warnings in single line"},{"ancestorTitles":["Gemini Logger","Google AI SDK Specific Output Filtering"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Gemini Logger Google AI SDK Specific Output Filtering should filter command line tool help output variations","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"status":"passed","title":"should filter command line tool help output variations"},{"ancestorTitles":["Gemini Logger","Google AI SDK Specific Output Filtering"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Gemini Logger Google AI SDK Specific Output Filtering should filter version information output","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should filter version information output"},{"ancestorTitles":["Gemini Logger","Google AI SDK Specific Output Filtering"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Gemini Logger Google AI SDK Specific Output Filtering should filter Google AI API debug messages","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"status":"passed","title":"should filter Google AI API debug messages"},{"ancestorTitles":["Gemini Logger","Google AI SDK Specific Output Filtering"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Gemini Logger Google AI SDK Specific Output Filtering should filter network retry and timeout messages","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should filter network retry and timeout messages"},{"ancestorTitles":["Gemini Logger","Google AI SDK Specific Output Filtering"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Gemini Logger Google AI SDK Specific Output Filtering should filter API key and quota warnings","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should filter API key and quota warnings"},{"ancestorTitles":["Gemini Logger","Real Gemini Output Patterns"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Gemini Logger Real Gemini Output Patterns should pass through legitimate Gemini responses with code blocks","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should pass through legitimate Gemini responses with code blocks"},{"ancestorTitles":["Gemini Logger","Real Gemini Output Patterns"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Gemini Logger Real Gemini Output Patterns should pass through responses with embedded tool calls","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should pass through responses with embedded tool calls"},{"ancestorTitles":["Gemini Logger","Real Gemini Output Patterns"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Gemini Logger Real Gemini Output Patterns should pass through partial streaming responses","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should pass through partial streaming responses"},{"ancestorTitles":["Gemini Logger","Real Gemini Output Patterns"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Gemini Logger Real Gemini Output Patterns should pass through error messages from Google AI API","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should pass through error messages from Google AI API"},{"ancestorTitles":["Gemini Logger","Real Gemini Output Patterns"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Gemini Logger Real Gemini Output Patterns should pass through response metadata and timing info","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should pass through response metadata and timing info"},{"ancestorTitles":["Gemini Logger","Unicode and Character Encoding Support"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Gemini Logger Unicode and Character Encoding Support should preserve Unicode content in different languages","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should preserve Unicode content in different languages"},{"ancestorTitles":["Gemini Logger","Unicode and Character Encoding Support"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Gemini Logger Unicode and Character Encoding Support should preserve emoji and special characters","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should preserve emoji and special characters"},{"ancestorTitles":["Gemini Logger","Unicode and Character Encoding Support"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Gemini Logger Unicode and Character Encoding Support should handle special characters and escape sequences","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle special characters and escape sequences"},{"ancestorTitles":["Gemini Logger","Unicode and Character Encoding Support"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Gemini Logger Unicode and Character Encoding Support should handle multi-byte character sequences","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle multi-byte character sequences"},{"ancestorTitles":["Gemini Logger","Unicode and Character Encoding Support"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Gemini Logger Unicode and Character Encoding Support should handle mathematical and scientific symbols","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle mathematical and scientific symbols"},{"ancestorTitles":["Gemini Logger","Edge Cases in Line Processing"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Gemini Logger Edge Cases in Line Processing should handle extremely long lines","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle extremely long lines"},{"ancestorTitles":["Gemini Logger","Edge Cases in Line Processing"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Gemini Logger Edge Cases in Line Processing should handle lines with only special characters","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle lines with only special characters"},{"ancestorTitles":["Gemini Logger","Edge Cases in Line Processing"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Gemini Logger Edge Cases in Line Processing should handle lines that look like warnings but are legitimate content","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should handle lines that look like warnings but are legitimate content"},{"ancestorTitles":["Gemini Logger","Edge Cases in Line Processing"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Gemini Logger Edge Cases in Line Processing should handle color codes and ANSI escape sequences","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle color codes and ANSI escape sequences"},{"ancestorTitles":["Gemini Logger","Edge Cases in Line Processing"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Gemini Logger Edge Cases in Line Processing should handle malformed UTF-8 sequences gracefully","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle malformed UTF-8 sequences gracefully"},{"ancestorTitles":["Gemini Logger","Edge Cases in Line Processing"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Gemini Logger Edge Cases in Line Processing should handle lines with null bytes and control characters","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle lines with null bytes and control characters"},{"ancestorTitles":["Gemini Logger","Integration and Performance Scenarios"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Gemini Logger Integration and Performance Scenarios should handle lines containing both content and system messages","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle lines containing both content and system messages"},{"ancestorTitles":["Gemini Logger","Integration and Performance Scenarios"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Gemini Logger Integration and Performance Scenarios should handle multi-line warning patterns that should not be filtered","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle multi-line warning patterns that should not be filtered"},{"ancestorTitles":["Gemini Logger","Integration and Performance Scenarios"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Gemini Logger Integration and Performance Scenarios should handle warnings with dynamic content (timestamps, PIDs)","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should handle warnings with dynamic content (timestamps, PIDs)"},{"ancestorTitles":["Gemini Logger","Integration and Performance Scenarios"],"duration":9,"failureDetails":[],"failureMessages":[],"fullName":"Gemini Logger Integration and Performance Scenarios should handle high-volume processing without memory leaks","invocations":1,"location":null,"numPassingAsserts":100,"retryReasons":[],"status":"passed","title":"should handle high-volume processing without memory leaks"},{"ancestorTitles":["Gemini Logger","Robustness and Error Handling"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Gemini Logger Robustness and Error Handling should handle non-string input gracefully","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"status":"passed","title":"should handle non-string input gracefully"},{"ancestorTitles":["Gemini Logger","Robustness and Error Handling"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Gemini Logger Robustness and Error Handling should handle empty strings and various whitespace combinations","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"status":"passed","title":"should handle empty strings and various whitespace combinations"},{"ancestorTitles":["Gemini Logger","Robustness and Error Handling"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Gemini Logger Robustness and Error Handling should handle input types that are not strings","invocations":1,"location":null,"numPassingAsserts":8,"retryReasons":[],"status":"passed","title":"should handle input types that are not strings"}],"endTime":1764343036471,"message":"","name":"/Users/samuelfajreldines/Desenvolvimento/claudiomiro/src/shared/executors/gemini-logger.test.js","startTime":1764343036412,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["step7","Skip Conditions"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"step7 Skip Conditions should skip if CRITICAL_REVIEW_PASSED.md already exists","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should skip if CRITICAL_REVIEW_PASSED.md already exists"},{"ancestorTitles":["step7","Skip Conditions"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"step7 Skip Conditions should skip if newbranch.txt does not exist (not Claudiomiro branch)","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"status":"passed","title":"should skip if newbranch.txt does not exist (not Claudiomiro branch)"},{"ancestorTitles":["step7","Skip Conditions"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"step7 Skip Conditions should skip if AI_PROMPT.md does not exist (incomplete session)","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"status":"passed","title":"should skip if AI_PROMPT.md does not exist (incomplete session)"},{"ancestorTitles":["step7","Skip Conditions"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"step7 Skip Conditions should skip if no code changes detected (git status clean + no commits)","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should skip if no code changes detected (git status clean + no commits)"},{"ancestorTitles":["step7","Skip Conditions"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"step7 Skip Conditions should skip if not a git repository (git commands fail)","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"status":"passed","title":"should skip if not a git repository (git commands fail)"},{"ancestorTitles":["step7","Git Operations"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"step7 Git Operations should proceed when git status shows uncommitted changes","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should proceed when git status shows uncommitted changes"},{"ancestorTitles":["step7","Git Operations"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"step7 Git Operations should proceed when git status is clean but commits exist","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should proceed when git status is clean but commits exist"},{"ancestorTitles":["step7","Git Operations"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"step7 Git Operations should handle repository with no commits correctly","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle repository with no commits correctly"},{"ancestorTitles":["step7","Git Operations"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"step7 Git Operations should handle git command failures gracefully","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle git command failures gracefully"},{"ancestorTitles":["step7","fix-branch Delegation"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"step7 fix-branch Delegation should call fix-branch with default iterations (20) and level 2","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should call fix-branch with default iterations (20) and level 2"},{"ancestorTitles":["step7","fix-branch Delegation"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"step7 fix-branch Delegation should call fix-branch with custom max iterations","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should call fix-branch with custom max iterations"},{"ancestorTitles":["step7","fix-branch Delegation"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"step7 fix-branch Delegation should call fix-branch with --no-limit when maxIterations is Infinity","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should call fix-branch with --no-limit when maxIterations is Infinity"},{"ancestorTitles":["step7","fix-branch Delegation"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"step7 fix-branch Delegation should always pass --no-clear to fix-branch","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should always pass --no-clear to fix-branch"},{"ancestorTitles":["step7","fix-branch Delegation"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"step7 fix-branch Delegation should log starting message with branch info","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should log starting message with branch info"},{"ancestorTitles":["step7","fix-branch Delegation"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"step7 fix-branch Delegation should log success when fix-branch completes","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should log success when fix-branch completes"},{"ancestorTitles":["step7","Error Handling"],"duration":10,"failureDetails":[],"failureMessages":[],"fullName":"step7 Error Handling should throw error when state.claudiomiroFolder is undefined","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should throw error when state.claudiomiroFolder is undefined"},{"ancestorTitles":["step7","Error Handling"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"step7 Error Handling should propagate fix-branch errors","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should propagate fix-branch errors"},{"ancestorTitles":["step7","Edge Cases"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"step7 Edge Cases should handle branch name being undefined","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle branch name being undefined"},{"ancestorTitles":["step7","Edge Cases"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"step7 Edge Cases should use default maxIterations (20) when not provided","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should use default maxIterations (20) when not provided"}],"endTime":1764343036544,"message":"","name":"/Users/samuelfajreldines/Desenvolvimento/claudiomiro/src/commands/task-executor/steps/step7/index.test.js","startTime":1764343036487,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["Claude Logger","Helper Functions - formatToolName"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger Helper Functions - formatToolName should return Bash with tool icon","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return Bash with tool icon"},{"ancestorTitles":["Claude Logger","Helper Functions - formatToolName"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger Helper Functions - formatToolName should return Read with tool icon","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return Read with tool icon"},{"ancestorTitles":["Claude Logger","Helper Functions - formatToolName"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger Helper Functions - formatToolName should return Write with tool icon","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return Write with tool icon"},{"ancestorTitles":["Claude Logger","Helper Functions - formatToolName"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger Helper Functions - formatToolName should return Edit with tool icon","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return Edit with tool icon"},{"ancestorTitles":["Claude Logger","Helper Functions - formatToolName"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger Helper Functions - formatToolName should return default icon for unknown tool","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return default icon for unknown tool"},{"ancestorTitles":["Claude Logger","Helper Functions - formatToolName"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger Helper Functions - formatToolName should handle Glob tool with icon","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle Glob tool with icon"},{"ancestorTitles":["Claude Logger","Helper Functions - formatToolName"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger Helper Functions - formatToolName should handle Grep tool with icon","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle Grep tool with icon"},{"ancestorTitles":["Claude Logger","Helper Functions - formatToolName"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger Helper Functions - formatToolName should handle Task tool with icon","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle Task tool with icon"},{"ancestorTitles":["Claude Logger","Helper Functions - formatToolName"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger Helper Functions - formatToolName should handle TodoWrite tool with icon","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle TodoWrite tool with icon"},{"ancestorTitles":["Claude Logger","Helper Functions - formatToolName"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger Helper Functions - formatToolName should handle WebFetch tool with icon","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle WebFetch tool with icon"},{"ancestorTitles":["Claude Logger","Helper Functions - formatToolName"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger Helper Functions - formatToolName should handle WebSearch tool with icon","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle WebSearch tool with icon"},{"ancestorTitles":["Claude Logger","Helper Functions - formatToolDescription"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger Helper Functions - formatToolDescription should format Bash description from input.description","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should format Bash description from input.description"},{"ancestorTitles":["Claude Logger","Helper Functions - formatToolDescription"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger Helper Functions - formatToolDescription should format Read description with filename","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should format Read description with filename"},{"ancestorTitles":["Claude Logger","Helper Functions - formatToolDescription"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger Helper Functions - formatToolDescription should format Write description with filename","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should format Write description with filename"},{"ancestorTitles":["Claude Logger","Helper Functions - formatToolDescription"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger Helper Functions - formatToolDescription should format Edit description with filename","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should format Edit description with filename"},{"ancestorTitles":["Claude Logger","Helper Functions - formatToolDescription"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger Helper Functions - formatToolDescription should return empty description for unknown tools","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return empty description for unknown tools"},{"ancestorTitles":["Claude Logger","Helper Functions - formatToolDescription"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger Helper Functions - formatToolDescription should handle Bash without description","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle Bash without description"},{"ancestorTitles":["Claude Logger","Helper Functions - formatToolDescription"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger Helper Functions - formatToolDescription should handle Read without file_path","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle Read without file_path"},{"ancestorTitles":["Claude Logger","Helper Functions - formatToolDescription"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger Helper Functions - formatToolDescription should handle Write without file_path","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle Write without file_path"},{"ancestorTitles":["Claude Logger","Helper Functions - formatToolDescription"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger Helper Functions - formatToolDescription should handle Edit without file_path","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle Edit without file_path"},{"ancestorTitles":["Claude Logger","processAssistantMessage"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger processAssistantMessage should process text message","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should process text message"},{"ancestorTitles":["Claude Logger","processAssistantMessage"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger processAssistantMessage should process tool_use message","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should process tool_use message"},{"ancestorTitles":["Claude Logger","processAssistantMessage"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger processAssistantMessage should process multiple content blocks","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should process multiple content blocks"},{"ancestorTitles":["Claude Logger","processAssistantMessage"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger processAssistantMessage should handle empty content array","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle empty content array"},{"ancestorTitles":["Claude Logger","processAssistantMessage"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger processAssistantMessage should handle null content","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle null content"},{"ancestorTitles":["Claude Logger","processAssistantMessage"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger processAssistantMessage should handle missing message","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle missing message"},{"ancestorTitles":["Claude Logger","processAssistantMessage"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger processAssistantMessage should format output with tool icons and descriptions","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should format output with tool icons and descriptions"},{"ancestorTitles":["Claude Logger","processAssistantMessage"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger processAssistantMessage should handle text content with empty string","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle text content with empty string"},{"ancestorTitles":["Claude Logger","processAssistantMessage"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger processAssistantMessage should handle mixed text and tool_use blocks","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should handle mixed text and tool_use blocks"},{"ancestorTitles":["Claude Logger","processUserMessage"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger processUserMessage should return null for user messages","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return null for user messages"},{"ancestorTitles":["Claude Logger","processUserMessage"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger processUserMessage should return null for tool results","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return null for tool results"},{"ancestorTitles":["Claude Logger","processSystemMessage"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger processSystemMessage should handle init subtype","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle init subtype"},{"ancestorTitles":["Claude Logger","processSystemMessage"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger processSystemMessage should return null for other subtypes","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return null for other subtypes"},{"ancestorTitles":["Claude Logger","processSystemMessage"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger processSystemMessage should return null for system message without subtype","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return null for system message without subtype"},{"ancestorTitles":["Claude Logger","processResultMessage"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger processResultMessage should handle success with duration and cost","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle success with duration and cost"},{"ancestorTitles":["Claude Logger","processResultMessage"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger processResultMessage should handle success without cost","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle success without cost"},{"ancestorTitles":["Claude Logger","processResultMessage"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger processResultMessage should handle error message","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle error message"},{"ancestorTitles":["Claude Logger","processResultMessage"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger processResultMessage should handle error without message","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle error without message"},{"ancestorTitles":["Claude Logger","processResultMessage"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger processResultMessage should handle null cost","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle null cost"},{"ancestorTitles":["Claude Logger","processResultMessage"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger processResultMessage should handle undefined cost","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle undefined cost"},{"ancestorTitles":["Claude Logger","processResultMessage"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger processResultMessage should handle very small duration","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle very small duration"},{"ancestorTitles":["Claude Logger","processResultMessage"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger processResultMessage should handle very large duration","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle very large duration"},{"ancestorTitles":["Claude Logger","processResultMessage"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger processResultMessage should format cost with 4 decimal places","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should format cost with 4 decimal places"},{"ancestorTitles":["Claude Logger","processResultMessage"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger processResultMessage should return null for unknown result subtype","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return null for unknown result subtype"},{"ancestorTitles":["Claude Logger","processClaudeMessage - Main Entry Point"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger processClaudeMessage - Main Entry Point should route to assistant processor","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should route to assistant processor"},{"ancestorTitles":["Claude Logger","processClaudeMessage - Main Entry Point"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger processClaudeMessage - Main Entry Point should route to user processor","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should route to user processor"},{"ancestorTitles":["Claude Logger","processClaudeMessage - Main Entry Point"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger processClaudeMessage - Main Entry Point should route to system processor","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should route to system processor"},{"ancestorTitles":["Claude Logger","processClaudeMessage - Main Entry Point"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger processClaudeMessage - Main Entry Point should route to result processor","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should route to result processor"},{"ancestorTitles":["Claude Logger","processClaudeMessage - Main Entry Point"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger processClaudeMessage - Main Entry Point should handle JSON parsing errors","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle JSON parsing errors"},{"ancestorTitles":["Claude Logger","processClaudeMessage - Main Entry Point"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger processClaudeMessage - Main Entry Point should handle malformed JSON","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle malformed JSON"},{"ancestorTitles":["Claude Logger","processClaudeMessage - Main Entry Point"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger processClaudeMessage - Main Entry Point should handle empty string input","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle empty string input"},{"ancestorTitles":["Claude Logger","processClaudeMessage - Main Entry Point"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger processClaudeMessage - Main Entry Point should handle unknown message type","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle unknown message type"},{"ancestorTitles":["Claude Logger","processClaudeMessage - Main Entry Point"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger processClaudeMessage - Main Entry Point should handle null input","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle null input"},{"ancestorTitles":["Claude Logger","processClaudeMessage - Main Entry Point"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger processClaudeMessage - Main Entry Point should handle array input","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle array input"},{"ancestorTitles":["Claude Logger","processClaudeMessage - Main Entry Point"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger processClaudeMessage - Main Entry Point should handle string input","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle string input"},{"ancestorTitles":["Claude Logger","processClaudeMessage - Main Entry Point"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger processClaudeMessage - Main Entry Point should handle number input","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle number input"},{"ancestorTitles":["Claude Logger","Complex Message Scenarios"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger Complex Message Scenarios should handle multiple tool uses in single message","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should handle multiple tool uses in single message"},{"ancestorTitles":["Claude Logger","Complex Message Scenarios"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger Complex Message Scenarios should handle mixed text and multiple tool_use content","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"status":"passed","title":"should handle mixed text and multiple tool_use content"},{"ancestorTitles":["Claude Logger","Complex Message Scenarios"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger Complex Message Scenarios should handle real-world message with path formatting","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle real-world message with path formatting"},{"ancestorTitles":["Claude Logger","Complex Message Scenarios"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger Complex Message Scenarios should concatenate output strings correctly","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should concatenate output strings correctly"},{"ancestorTitles":["Claude Logger","Complex Message Scenarios"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger Complex Message Scenarios should handle workflow with all tool types","invocations":1,"location":null,"numPassingAsserts":7,"retryReasons":[],"status":"passed","title":"should handle workflow with all tool types"},{"ancestorTitles":["Claude Logger","Complex Message Scenarios"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger Complex Message Scenarios should handle empty text blocks correctly","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle empty text blocks correctly"},{"ancestorTitles":["Claude Logger","Complex Message Scenarios"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger Complex Message Scenarios should handle tool_use without description gracefully","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle tool_use without description gracefully"},{"ancestorTitles":["Claude Logger","Complex Message Scenarios"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger Complex Message Scenarios should handle complex nested paths","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle complex nested paths"},{"ancestorTitles":["Claude Logger","Complex Message Scenarios"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger Complex Message Scenarios should handle messages with only tool uses (no text)","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle messages with only tool uses (no text)"},{"ancestorTitles":["Claude Logger","AI-Specific Streaming Scenarios"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger AI-Specific Streaming Scenarios should handle streaming message concatenation with partial chunks","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle streaming message concatenation with partial chunks"},{"ancestorTitles":["Claude Logger","AI-Specific Streaming Scenarios"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger AI-Specific Streaming Scenarios should handle complex nested tool workflows with reasoning","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"status":"passed","title":"should handle complex nested tool workflows with reasoning"},{"ancestorTitles":["Claude Logger","AI-Specific Streaming Scenarios"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger AI-Specific Streaming Scenarios should handle streaming tool use with dynamic content","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"status":"passed","title":"should handle streaming tool use with dynamic content"},{"ancestorTitles":["Claude Logger","Claude-Specific Response Format Edge Cases"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger Claude-Specific Response Format Edge Cases should handle tool_use with complex nested input objects","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle tool_use with complex nested input objects"},{"ancestorTitles":["Claude Logger","Claude-Specific Response Format Edge Cases"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger Claude-Specific Response Format Edge Cases should handle WebFetch and WebSearch tools properly","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle WebFetch and WebSearch tools properly"},{"ancestorTitles":["Claude Logger","Claude-Specific Response Format Edge Cases"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger Claude-Specific Response Format Edge Cases should handle unknown tools gracefully with default icon","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle unknown tools gracefully with default icon"},{"ancestorTitles":["Claude Logger","Claude-Specific Response Format Edge Cases"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger Claude-Specific Response Format Edge Cases should handle system initialization messages","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle system initialization messages"},{"ancestorTitles":["Claude Logger","Claude-Specific Response Format Edge Cases"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger Claude-Specific Response Format Edge Cases should handle result success messages with duration and cost","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle result success messages with duration and cost"},{"ancestorTitles":["Claude Logger","Claude-Specific Response Format Edge Cases"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger Claude-Specific Response Format Edge Cases should handle result success messages with duration only","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle result success messages with duration only"},{"ancestorTitles":["Claude Logger","Claude-Specific Response Format Edge Cases"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger Claude-Specific Response Format Edge Cases should handle result error messages","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle result error messages"},{"ancestorTitles":["Claude Logger","Claude-Specific Response Format Edge Cases"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger Claude-Specific Response Format Edge Cases should handle result error messages without error text","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle result error messages without error text"},{"ancestorTitles":["Claude Logger","Error Handling and Edge Cases"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger Error Handling and Edge Cases should handle extremely long text content gracefully","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle extremely long text content gracefully"},{"ancestorTitles":["Claude Logger","Error Handling and Edge Cases"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger Error Handling and Edge Cases should handle messages with null or undefined content blocks","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle messages with null or undefined content blocks"},{"ancestorTitles":["Claude Logger","Error Handling and Edge Cases"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger Error Handling and Edge Cases should handle tool_use with missing input property","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle tool_use with missing input property"},{"ancestorTitles":["Claude Logger","Error Handling and Edge Cases"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger Error Handling and Edge Cases should handle content blocks with missing type property","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle content blocks with missing type property"},{"ancestorTitles":["Claude Logger","Error Handling and Edge Cases"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger Error Handling and Edge Cases should handle malformed JSON gracefully","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle malformed JSON gracefully"},{"ancestorTitles":["Claude Logger","Error Handling and Edge Cases"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger Error Handling and Edge Cases should handle JSON injection attempts safely","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle JSON injection attempts safely"},{"ancestorTitles":["Claude Logger","Error Handling and Edge Cases"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger Error Handling and Edge Cases should handle Unicode and special characters in tool descriptions","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle Unicode and special characters in tool descriptions"},{"ancestorTitles":["Claude Logger","Error Handling and Edge Cases"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Claude Logger Error Handling and Edge Cases should handle content with newline characters and various whitespace","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle content with newline characters and various whitespace"}],"endTime":1764343036611,"message":"","name":"/Users/samuelfajreldines/Desenvolvimento/claudiomiro/src/shared/executors/claude-logger.test.js","startTime":1764343036548,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["step3","No tasks scenario"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"step3 No tasks scenario should log info and return early when no tasks found","invocations":1,"location":null,"numPassingAsserts":8,"retryReasons":[],"status":"passed","title":"should log info and return early when no tasks found"},{"ancestorTitles":["step3","Single task scenario (without dependencies)"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"step3 Single task scenario (without dependencies) should add empty dependencies to single task without @dependencies","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"status":"passed","title":"should add empty dependencies to single task without @dependencies"},{"ancestorTitles":["step3","Single task scenario (with dependencies)"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"step3 Single task scenario (with dependencies) should skip single task that already has @dependencies","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"status":"passed","title":"should skip single task that already has @dependencies"},{"ancestorTitles":["step3","Single task scenario (with dependencies)"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"step3 Single task scenario (with dependencies) should skip when single task TASK.md does not exist","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"status":"passed","title":"should skip when single task TASK.md does not exist"},{"ancestorTitles":["step3","Multiple tasks scenario"],"duration":13,"failureDetails":[],"failureMessages":[],"fullName":"step3 Multiple tasks scenario should execute full dependency analysis for multiple tasks","invocations":1,"location":null,"numPassingAsserts":7,"retryReasons":[],"status":"passed","title":"should execute full dependency analysis for multiple tasks"},{"ancestorTitles":["step3","Multiple tasks scenario"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"step3 Multiple tasks scenario should handle missing TASK.md and PROMPT.md files gracefully","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should handle missing TASK.md and PROMPT.md files gracefully"},{"ancestorTitles":["step3","Template processing"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"step3 Template processing should replace all placeholders correctly","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should replace all placeholders correctly"},{"ancestorTitles":["step3","Task sorting"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"step3 Task sorting should sort tasks numerically (TASK2 before TASK10)","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should sort tasks numerically (TASK2 before TASK10)"},{"ancestorTitles":["step3","Error handling"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"step3 Error handling should handle executeClaude failure gracefully","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should handle executeClaude failure gracefully"},{"ancestorTitles":["step3","File system integration"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"step3 File system integration should handle non-directory items in task folder","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle non-directory items in task folder"},{"ancestorTitles":["step3","Logger integration"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"step3 Logger integration should call logger methods in correct sequence","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"status":"passed","title":"should call logger methods in correct sequence"}],"endTime":1764343036697,"message":"","name":"/Users/samuelfajreldines/Desenvolvimento/claudiomiro/src/commands/task-executor/steps/step3/index.test.js","startTime":1764343036632,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["deadlock-resolver","detectCycles"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"deadlock-resolver detectCycles should detect simple circular dependency between two tasks","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should detect simple circular dependency between two tasks"},{"ancestorTitles":["deadlock-resolver","detectCycles"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"deadlock-resolver detectCycles should detect circular dependency among three tasks","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should detect circular dependency among three tasks"},{"ancestorTitles":["deadlock-resolver","detectCycles"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"deadlock-resolver detectCycles should return empty array when no cycles exist","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return empty array when no cycles exist"},{"ancestorTitles":["deadlock-resolver","detectCycles"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"deadlock-resolver detectCycles should handle tasks with no dependencies","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle tasks with no dependencies"},{"ancestorTitles":["deadlock-resolver","detectCycles"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"deadlock-resolver detectCycles should handle complex graph with multiple independent cycles","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle complex graph with multiple independent cycles"},{"ancestorTitles":["deadlock-resolver","detectCycles"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"deadlock-resolver detectCycles should handle self-referencing task","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle self-referencing task"},{"ancestorTitles":["deadlock-resolver","detectCycles"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"deadlock-resolver detectCycles should handle missing dependency references gracefully","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle missing dependency references gracefully"},{"ancestorTitles":["deadlock-resolver","detectCycles"],"duration":4,"failureDetails":[],"failureMessages":[],"fullName":"deadlock-resolver detectCycles should handle empty task graph","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle empty task graph"},{"ancestorTitles":["deadlock-resolver","detectCycles"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"deadlock-resolver detectCycles should detect cycle in diamond pattern with back-edge","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should detect cycle in diamond pattern with back-edge"},{"ancestorTitles":["deadlock-resolver","parseDependencies"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"deadlock-resolver parseDependencies should parse dependencies in bracket format","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should parse dependencies in bracket format"},{"ancestorTitles":["deadlock-resolver","parseDependencies"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"deadlock-resolver parseDependencies should parse dependencies without brackets","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should parse dependencies without brackets"},{"ancestorTitles":["deadlock-resolver","parseDependencies"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"deadlock-resolver parseDependencies should handle single dependency","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle single dependency"},{"ancestorTitles":["deadlock-resolver","parseDependencies"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"deadlock-resolver parseDependencies should return empty array when no dependencies","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return empty array when no dependencies"},{"ancestorTitles":["deadlock-resolver","parseDependencies"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"deadlock-resolver parseDependencies should handle @dependencies none","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle @dependencies none"},{"ancestorTitles":["deadlock-resolver","parseDependencies"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"deadlock-resolver parseDependencies should handle empty brackets","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle empty brackets"},{"ancestorTitles":["deadlock-resolver","parseDependencies"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"deadlock-resolver parseDependencies should trim whitespace from dependency names","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should trim whitespace from dependency names"},{"ancestorTitles":["deadlock-resolver","rebuildTaskGraphFromFiles"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"deadlock-resolver rebuildTaskGraphFromFiles should rebuild task graph from TASK.md files","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should rebuild task graph from TASK.md files"},{"ancestorTitles":["deadlock-resolver","rebuildTaskGraphFromFiles"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"deadlock-resolver rebuildTaskGraphFromFiles should skip tasks without TASK.md files","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should skip tasks without TASK.md files"},{"ancestorTitles":["deadlock-resolver","resolveDeadlock"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"deadlock-resolver resolveDeadlock should return true when AI successfully resolves deadlock","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should return true when AI successfully resolves deadlock"},{"ancestorTitles":["deadlock-resolver","resolveDeadlock"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"deadlock-resolver resolveDeadlock should return false when cycles still exist after AI resolution","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should return false when cycles still exist after AI resolution"},{"ancestorTitles":["deadlock-resolver","resolveDeadlock"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"deadlock-resolver resolveDeadlock should return false when executeClaude throws an error","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should return false when executeClaude throws an error"}],"endTime":1764343036767,"message":"","name":"/Users/samuelfajreldines/Desenvolvimento/claudiomiro/src/commands/task-executor/services/deadlock-resolver.test.js","startTime":1764343036702,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["Claude Executor","executeClaude"],"duration":14,"failureDetails":[],"failureMessages":[],"fullName":"Claude Executor executeClaude should throw error when no prompt provided","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should throw error when no prompt provided"},{"ancestorTitles":["Claude Executor","executeClaude"],"duration":3,"failureDetails":[],"failureMessages":[],"fullName":"Claude Executor executeClaude should create temporary file with prompt text","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should create temporary file with prompt text"},{"ancestorTitles":["Claude Executor","executeClaude"],"duration":3,"failureDetails":[],"failureMessages":[],"fullName":"Claude Executor executeClaude should spawn Claude process with correct command","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should spawn Claude process with correct command"},{"ancestorTitles":["Claude Executor","executeClaude"],"duration":3,"failureDetails":[],"failureMessages":[],"fullName":"Claude Executor executeClaude should handle stdout data processing","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle stdout data processing"},{"ancestorTitles":["Claude Executor","executeClaude"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"Claude Executor executeClaude should handle process close with success code","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle process close with success code"},{"ancestorTitles":["Claude Executor","executeClaude"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"Claude Executor executeClaude should handle process close with error code","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle process close with error code"},{"ancestorTitles":["Claude Executor","executeClaude"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"Claude Executor executeClaude should handle process error","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle process error"},{"ancestorTitles":["Claude Executor","executeClaude"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"Claude Executor executeClaude should update state manager when taskName provided","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should update state manager when taskName provided"},{"ancestorTitles":["Claude Executor","executeClaude"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"Claude Executor executeClaude should cleanup temporary file on successful completion","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should cleanup temporary file on successful completion"},{"ancestorTitles":["Claude Executor","executeClaude"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Claude Executor executeClaude should implement timeout mechanism","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should implement timeout mechanism"},{"ancestorTitles":["Claude Executor","executeClaude"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Claude Executor executeClaude should suppress streaming logs when UI renderer is active","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should suppress streaming logs when UI renderer is active"},{"ancestorTitles":["Claude Executor","executeClaude"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"Claude Executor executeClaude should handle stderr data logging","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle stderr data logging"},{"ancestorTitles":["Claude Executor","executeClaude"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"Claude Executor executeClaude should write log headers with timestamp","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should write log headers with timestamp"},{"ancestorTitles":["Claude Executor","Edge cases and error handling"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"Claude Executor Edge cases and error handling should handle cleanup error gracefully","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle cleanup error gracefully"},{"ancestorTitles":["Claude Executor","Edge cases and error handling"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Claude Executor Edge cases and error handling should handle extremely long output","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle extremely long output"}],"endTime":1764343036877,"message":"","name":"/Users/samuelfajreldines/Desenvolvimento/claudiomiro/src/shared/executors/claude-executor.test.js","startTime":1764343036772,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["DeepSeek Logger","processDeepSeekMessage"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"DeepSeek Logger processDeepSeekMessage should return null for invalid JSON","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"status":"passed","title":"should return null for invalid JSON"},{"ancestorTitles":["DeepSeek Logger","processDeepSeekMessage"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"DeepSeek Logger processDeepSeekMessage should return null for unknown message type","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return null for unknown message type"},{"ancestorTitles":["DeepSeek Logger","Assistant Message Processing"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"DeepSeek Logger Assistant Message Processing should process simple text message","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should process simple text message"},{"ancestorTitles":["DeepSeek Logger","Assistant Message Processing"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"DeepSeek Logger Assistant Message Processing should process tool_use with Bash tool","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should process tool_use with Bash tool"},{"ancestorTitles":["DeepSeek Logger","Assistant Message Processing"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"DeepSeek Logger Assistant Message Processing should process tool_use with Read tool","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should process tool_use with Read tool"},{"ancestorTitles":["DeepSeek Logger","Assistant Message Processing"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"DeepSeek Logger Assistant Message Processing should process tool_use with Write tool","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should process tool_use with Write tool"},{"ancestorTitles":["DeepSeek Logger","Assistant Message Processing"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"DeepSeek Logger Assistant Message Processing should process tool_use with Edit tool","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should process tool_use with Edit tool"},{"ancestorTitles":["DeepSeek Logger","Assistant Message Processing"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"DeepSeek Logger Assistant Message Processing should process tool_use without description","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should process tool_use without description"},{"ancestorTitles":["DeepSeek Logger","Assistant Message Processing"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"DeepSeek Logger Assistant Message Processing should process mixed text and tool_use content","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should process mixed text and tool_use content"},{"ancestorTitles":["DeepSeek Logger","Assistant Message Processing"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"DeepSeek Logger Assistant Message Processing should handle empty content array","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle empty content array"},{"ancestorTitles":["DeepSeek Logger","Assistant Message Processing"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"DeepSeek Logger Assistant Message Processing should handle missing message or content","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should handle missing message or content"},{"ancestorTitles":["DeepSeek Logger","Assistant Message Processing"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"DeepSeek Logger Assistant Message Processing should handle multiple tool_use calls","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle multiple tool_use calls"},{"ancestorTitles":["DeepSeek Logger","Assistant Message Processing"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"DeepSeek Logger Assistant Message Processing should handle unknown tool with default icon","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle unknown tool with default icon"},{"ancestorTitles":["DeepSeek Logger","Assistant Message Processing"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"DeepSeek Logger Assistant Message Processing should handle text with empty string","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle text with empty string"},{"ancestorTitles":["DeepSeek Logger","Assistant Message Processing"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"DeepSeek Logger Assistant Message Processing should handle file paths with directories","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle file paths with directories"},{"ancestorTitles":["DeepSeek Logger","Assistant Message Processing"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"DeepSeek Logger Assistant Message Processing should handle tool_use with different file operations","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should handle tool_use with different file operations"},{"ancestorTitles":["DeepSeek Logger","User Message Processing"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"DeepSeek Logger User Message Processing should return null for user messages","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return null for user messages"},{"ancestorTitles":["DeepSeek Logger","User Message Processing"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"DeepSeek Logger User Message Processing should return null for tool results","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return null for tool results"},{"ancestorTitles":["DeepSeek Logger","System Message Processing"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"DeepSeek Logger System Message Processing should handle init subtype","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle init subtype"},{"ancestorTitles":["DeepSeek Logger","System Message Processing"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"DeepSeek Logger System Message Processing should return null for other subtypes","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return null for other subtypes"},{"ancestorTitles":["DeepSeek Logger","System Message Processing"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"DeepSeek Logger System Message Processing should return null for system message without subtype","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return null for system message without subtype"},{"ancestorTitles":["DeepSeek Logger","Result Message Processing"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"DeepSeek Logger Result Message Processing should handle success with duration and cost","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle success with duration and cost"},{"ancestorTitles":["DeepSeek Logger","Result Message Processing"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"DeepSeek Logger Result Message Processing should handle success without cost","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle success without cost"},{"ancestorTitles":["DeepSeek Logger","Result Message Processing"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"DeepSeek Logger Result Message Processing should handle error message","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle error message"},{"ancestorTitles":["DeepSeek Logger","Result Message Processing"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"DeepSeek Logger Result Message Processing should handle error without message","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle error without message"},{"ancestorTitles":["DeepSeek Logger","Result Message Processing"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"DeepSeek Logger Result Message Processing should handle null cost","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle null cost"},{"ancestorTitles":["DeepSeek Logger","Result Message Processing"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"DeepSeek Logger Result Message Processing should handle very small duration","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle very small duration"},{"ancestorTitles":["DeepSeek Logger","Result Message Processing"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"DeepSeek Logger Result Message Processing should handle very large duration","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle very large duration"},{"ancestorTitles":["DeepSeek Logger","Result Message Processing"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"DeepSeek Logger Result Message Processing should format cost with 4 decimal places","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should format cost with 4 decimal places"},{"ancestorTitles":["DeepSeek Logger","Result Message Processing"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"DeepSeek Logger Result Message Processing should return null for unknown result subtype","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return null for unknown result subtype"},{"ancestorTitles":["DeepSeek Logger","Tool Icon Mapping"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"DeepSeek Logger Tool Icon Mapping should use correct icons for known tools","invocations":1,"location":null,"numPassingAsserts":10,"retryReasons":[],"status":"passed","title":"should use correct icons for known tools"},{"ancestorTitles":["DeepSeek Logger","Tool Icon Mapping"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"DeepSeek Logger Tool Icon Mapping should use default icon for unknown tools","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should use default icon for unknown tools"},{"ancestorTitles":["DeepSeek Logger","Complex Scenarios"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"DeepSeek Logger Complex Scenarios should handle workflow with all tool types","invocations":1,"location":null,"numPassingAsserts":7,"retryReasons":[],"status":"passed","title":"should handle workflow with all tool types"},{"ancestorTitles":["DeepSeek Logger","Complex Scenarios"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"DeepSeek Logger Complex Scenarios should handle empty text blocks correctly","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle empty text blocks correctly"},{"ancestorTitles":["DeepSeek Logger","Complex Scenarios"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"DeepSeek Logger Complex Scenarios should handle complex nested paths correctly","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle complex nested paths correctly"},{"ancestorTitles":["DeepSeek Logger","Complex Scenarios"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"DeepSeek Logger Complex Scenarios should handle mixed message flow","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should handle mixed message flow"},{"ancestorTitles":["DeepSeek Logger","Error Handling"],"duration":3,"failureDetails":[],"failureMessages":[],"fullName":"DeepSeek Logger Error Handling should handle malformed JSON gracefully","invocations":1,"location":null,"numPassingAsserts":7,"retryReasons":[],"status":"passed","title":"should handle malformed JSON gracefully"},{"ancestorTitles":["DeepSeek Logger","Error Handling"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"DeepSeek Logger Error Handling should handle JSON with missing required properties","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should handle JSON with missing required properties"},{"ancestorTitles":["DeepSeek Logger","Chinese/Multilingual Support"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"DeepSeek Logger Chinese/Multilingual Support should process Chinese text messages correctly","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should process Chinese text messages correctly"},{"ancestorTitles":["DeepSeek Logger","Chinese/Multilingual Support"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"DeepSeek Logger Chinese/Multilingual Support should handle mixed Chinese-English text","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle mixed Chinese-English text"},{"ancestorTitles":["DeepSeek Logger","Chinese/Multilingual Support"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"DeepSeek Logger Chinese/Multilingual Support should handle Chinese characters in tool descriptions","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle Chinese characters in tool descriptions"},{"ancestorTitles":["DeepSeek Logger","Chinese/Multilingual Support"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"DeepSeek Logger Chinese/Multilingual Support should process code with Chinese comments","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should process code with Chinese comments"},{"ancestorTitles":["DeepSeek Logger","Chinese/Multilingual Support"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"DeepSeek Logger Chinese/Multilingual Support should handle Chinese filenames in tool operations","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle Chinese filenames in tool operations"},{"ancestorTitles":["DeepSeek Logger","Chinese/Multilingual Support"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"DeepSeek Logger Chinese/Multilingual Support should handle mixed language tool workflows","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should handle mixed language tool workflows"},{"ancestorTitles":["DeepSeek Logger","Chinese/Multilingual Support"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"DeepSeek Logger Chinese/Multilingual Support should handle Chinese error messages in results","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle Chinese error messages in results"},{"ancestorTitles":["DeepSeek Logger","Chinese/Multilingual Support"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"DeepSeek Logger Chinese/Multilingual Support should handle mixed language error context","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle mixed language error context"},{"ancestorTitles":["DeepSeek Logger","Chinese/Multilingual Support"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"DeepSeek Logger Chinese/Multilingual Support should handle Unicode edge cases in malformed content","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle Unicode edge cases in malformed content"},{"ancestorTitles":["DeepSeek Logger","Chinese-Specific Tool Formatting Edge Cases"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"DeepSeek Logger Chinese-Specific Tool Formatting Edge Cases should handle Chinese file paths with directory extraction","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle Chinese file paths with directory extraction"},{"ancestorTitles":["DeepSeek Logger","Chinese-Specific Tool Formatting Edge Cases"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"DeepSeek Logger Chinese-Specific Tool Formatting Edge Cases should handle unknown tools with Chinese names","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle unknown tools with Chinese names"},{"ancestorTitles":["DeepSeek Logger","Chinese-Specific Tool Formatting Edge Cases"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"DeepSeek Logger Chinese-Specific Tool Formatting Edge Cases should handle emoji and Chinese character combinations","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle emoji and Chinese character combinations"},{"ancestorTitles":["DeepSeek Logger","Chinese-Specific Tool Formatting Edge Cases"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"DeepSeek Logger Chinese-Specific Tool Formatting Edge Cases should handle complex Unicode sequences","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle complex Unicode sequences"},{"ancestorTitles":["DeepSeek Logger","Chinese-Specific Tool Formatting Edge Cases"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"DeepSeek Logger Chinese-Specific Tool Formatting Edge Cases should handle Chinese punctuation and special characters","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle Chinese punctuation and special characters"},{"ancestorTitles":["DeepSeek Logger","Chinese-Specific Tool Formatting Edge Cases"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"DeepSeek Logger Chinese-Specific Tool Formatting Edge Cases should handle both Traditional and Simplified Chinese","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle both Traditional and Simplified Chinese"},{"ancestorTitles":["DeepSeek Logger","Chinese-Specific Tool Formatting Edge Cases"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"DeepSeek Logger Chinese-Specific Tool Formatting Edge Cases should handle Chinese whitespace correctly","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle Chinese whitespace correctly"},{"ancestorTitles":["DeepSeek Logger","Multilingual Content Processing"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"DeepSeek Logger Multilingual Content Processing should handle complex multilingual workflows","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"status":"passed","title":"should handle complex multilingual workflows"},{"ancestorTitles":["DeepSeek Logger","Multilingual Content Processing"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"DeepSeek Logger Multilingual Content Processing should handle Chinese characters in complex nested input objects","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle Chinese characters in complex nested input objects"},{"ancestorTitles":["DeepSeek Logger","Multilingual Content Processing"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"DeepSeek Logger Multilingual Content Processing should preserve mixed language formatting integrity","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should preserve mixed language formatting integrity"},{"ancestorTitles":["DeepSeek Logger","Encoding and Performance Edge Cases"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"DeepSeek Logger Encoding and Performance Edge Cases should handle extremely long Chinese text content gracefully","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle extremely long Chinese text content gracefully"},{"ancestorTitles":["DeepSeek Logger","Encoding and Performance Edge Cases"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"DeepSeek Logger Encoding and Performance Edge Cases should handle Unicode and special characters in Chinese tool descriptions","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle Unicode and special characters in Chinese tool descriptions"},{"ancestorTitles":["DeepSeek Logger","Encoding and Performance Edge Cases"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"DeepSeek Logger Encoding and Performance Edge Cases should handle content with mixed language newline characters and whitespace","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle content with mixed language newline characters and whitespace"},{"ancestorTitles":["DeepSeek Logger","Encoding and Performance Edge Cases"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"DeepSeek Logger Encoding and Performance Edge Cases should handle messages with null or undefined multilingual content blocks","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle messages with null or undefined multilingual content blocks"},{"ancestorTitles":["DeepSeek Logger","Chinese Model-Specific Error Handling"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"DeepSeek Logger Chinese Model-Specific Error Handling should handle Chinese error messages in system messages","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle Chinese error messages in system messages"},{"ancestorTitles":["DeepSeek Logger","Chinese Model-Specific Error Handling"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"DeepSeek Logger Chinese Model-Specific Error Handling should handle result success messages with Chinese cost tracking","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle result success messages with Chinese cost tracking"},{"ancestorTitles":["DeepSeek Logger","Chinese Model-Specific Error Handling"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"DeepSeek Logger Chinese Model-Specific Error Handling should handle mixed language error context gracefully","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle mixed language error context gracefully"},{"ancestorTitles":["DeepSeek Logger","Chinese Model-Specific Error Handling"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"DeepSeek Logger Chinese Model-Specific Error Handling should handle Unicode characters in malformed JSON safely","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle Unicode characters in malformed JSON safely"}],"endTime":1764343036945,"message":"","name":"/Users/samuelfajreldines/Desenvolvimento/claudiomiro/src/shared/executors/deep-seek-logger.test.js","startTime":1764343036881,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["topic-classifier","classifyTopics"],"duration":7,"failureDetails":[],"failureMessages":[],"fullName":"topic-classifier classifyTopics should classify authentication-related content","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should classify authentication-related content"},{"ancestorTitles":["topic-classifier","classifyTopics"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"topic-classifier classifyTopics should classify API-related content","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should classify API-related content"},{"ancestorTitles":["topic-classifier","classifyTopics"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"topic-classifier classifyTopics should classify database-related content","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should classify database-related content"},{"ancestorTitles":["topic-classifier","classifyTopics"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"topic-classifier classifyTopics should classify testing-related content","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should classify testing-related content"},{"ancestorTitles":["topic-classifier","classifyTopics"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"topic-classifier classifyTopics should classify multiple topics","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should classify multiple topics"},{"ancestorTitles":["topic-classifier","classifyTopics"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"topic-classifier classifyTopics should respect maxTopics limit","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should respect maxTopics limit"},{"ancestorTitles":["topic-classifier","classifyTopics"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"topic-classifier classifyTopics should return empty array for empty content","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should return empty array for empty content"},{"ancestorTitles":["topic-classifier","classifyTopics"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"topic-classifier classifyTopics should handle content with no matching topics","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle content with no matching topics"},{"ancestorTitles":["topic-classifier","classifyTopics"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"topic-classifier classifyTopics should be case-insensitive","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should be case-insensitive"},{"ancestorTitles":["topic-classifier","classifyTopics"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"topic-classifier classifyTopics should weight longer keywords higher","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should weight longer keywords higher"},{"ancestorTitles":["topic-classifier","getTopicSimilarity"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"topic-classifier getTopicSimilarity should return 1.0 for identical arrays","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return 1.0 for identical arrays"},{"ancestorTitles":["topic-classifier","getTopicSimilarity"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"topic-classifier getTopicSimilarity should return 0.0 for completely different arrays","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return 0.0 for completely different arrays"},{"ancestorTitles":["topic-classifier","getTopicSimilarity"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"topic-classifier getTopicSimilarity should return partial similarity for overlapping arrays","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return partial similarity for overlapping arrays"},{"ancestorTitles":["topic-classifier","getTopicSimilarity"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"topic-classifier getTopicSimilarity should return 0.0 for empty arrays","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should return 0.0 for empty arrays"},{"ancestorTitles":["topic-classifier","getTopicSimilarity"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"topic-classifier getTopicSimilarity should handle single element arrays","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle single element arrays"},{"ancestorTitles":["topic-classifier","TOPIC_KEYWORDS"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"topic-classifier TOPIC_KEYWORDS should have all expected topic categories","invocations":1,"location":null,"numPassingAsserts":54,"retryReasons":[],"status":"passed","title":"should have all expected topic categories"},{"ancestorTitles":["topic-classifier","TOPIC_KEYWORDS"],"duration":9,"failureDetails":[],"failureMessages":[],"fullName":"topic-classifier TOPIC_KEYWORDS should have keywords as strings","invocations":1,"location":null,"numPassingAsserts":261,"retryReasons":[],"status":"passed","title":"should have keywords as strings"}],"endTime":1764343037025,"message":"","name":"/Users/samuelfajreldines/Desenvolvimento/claudiomiro/src/shared/services/local-llm/fallbacks/topic-classifier.test.js","startTime":1764343036960,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["TerminalRenderer","constructor"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"TerminalRenderer constructor should initialize with lastLineCount of 0","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should initialize with lastLineCount of 0"},{"ancestorTitles":["TerminalRenderer","hideCursor"],"duration":3,"failureDetails":[],"failureMessages":[],"fullName":"TerminalRenderer hideCursor should write correct ANSI escape code to hide cursor","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should write correct ANSI escape code to hide cursor"},{"ancestorTitles":["TerminalRenderer","hideCursor"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"TerminalRenderer hideCursor should handle missing stdout gracefully","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle missing stdout gracefully"},{"ancestorTitles":["TerminalRenderer","hideCursor"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"TerminalRenderer hideCursor should handle missing write method gracefully","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle missing write method gracefully"},{"ancestorTitles":["TerminalRenderer","showCursor"],"duration":4,"failureDetails":[],"failureMessages":[],"fullName":"TerminalRenderer showCursor should write correct ANSI escape code to show cursor","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should write correct ANSI escape code to show cursor"},{"ancestorTitles":["TerminalRenderer","showCursor"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"TerminalRenderer showCursor should handle missing stdout gracefully","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle missing stdout gracefully"},{"ancestorTitles":["TerminalRenderer","showCursor"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"TerminalRenderer showCursor should handle missing write method gracefully","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle missing write method gracefully"},{"ancestorTitles":["TerminalRenderer","moveCursorUp"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"TerminalRenderer moveCursorUp should write correct ANSI code for moving cursor up 1 line","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should write correct ANSI code for moving cursor up 1 line"},{"ancestorTitles":["TerminalRenderer","moveCursorUp"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"TerminalRenderer moveCursorUp should write correct ANSI code for moving cursor up 5 lines","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should write correct ANSI code for moving cursor up 5 lines"},{"ancestorTitles":["TerminalRenderer","moveCursorUp"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"TerminalRenderer moveCursorUp should not write anything for count of 0","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should not write anything for count of 0"},{"ancestorTitles":["TerminalRenderer","moveCursorUp"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"TerminalRenderer moveCursorUp should not write anything for negative count","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should not write anything for negative count"},{"ancestorTitles":["TerminalRenderer","moveCursorUp"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"TerminalRenderer moveCursorUp should handle missing stdout gracefully","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle missing stdout gracefully"},{"ancestorTitles":["TerminalRenderer","getTerminalWidth"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"TerminalRenderer getTerminalWidth should return process.stdout.columns when available","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return process.stdout.columns when available"},{"ancestorTitles":["TerminalRenderer","getTerminalWidth"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"TerminalRenderer getTerminalWidth should return default 80 when stdout is null","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return default 80 when stdout is null"},{"ancestorTitles":["TerminalRenderer","getTerminalWidth"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"TerminalRenderer getTerminalWidth should return default 80 when columns is undefined","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return default 80 when columns is undefined"},{"ancestorTitles":["TerminalRenderer","getTerminalWidth"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"TerminalRenderer getTerminalWidth should return default 80 when columns is 0","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return default 80 when columns is 0"},{"ancestorTitles":["TerminalRenderer","getTerminalWidth"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"TerminalRenderer getTerminalWidth should return correct width for narrow terminal","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return correct width for narrow terminal"},{"ancestorTitles":["TerminalRenderer","getTerminalWidth"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"TerminalRenderer getTerminalWidth should return correct width for wide terminal","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return correct width for wide terminal"},{"ancestorTitles":["TerminalRenderer","clearLines"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"TerminalRenderer clearLines should clear 1 line correctly","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should clear 1 line correctly"},{"ancestorTitles":["TerminalRenderer","clearLines"],"duration":4,"failureDetails":[],"failureMessages":[],"fullName":"TerminalRenderer clearLines should clear 3 lines correctly","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"status":"passed","title":"should clear 3 lines correctly"},{"ancestorTitles":["TerminalRenderer","clearLines"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"TerminalRenderer clearLines should not write anything for count of 0","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should not write anything for count of 0"},{"ancestorTitles":["TerminalRenderer","clearLines"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"TerminalRenderer clearLines should not write anything for negative count","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should not write anything for negative count"},{"ancestorTitles":["TerminalRenderer","clearLines"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"TerminalRenderer clearLines should handle missing stdout gracefully","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle missing stdout gracefully"},{"ancestorTitles":["TerminalRenderer","clearLines"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"TerminalRenderer clearLines should handle missing write method gracefully","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle missing write method gracefully"},{"ancestorTitles":["TerminalRenderer","clearScreen"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"TerminalRenderer clearScreen should write correct ANSI codes to clear screen","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should write correct ANSI codes to clear screen"},{"ancestorTitles":["TerminalRenderer","clearScreen"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"TerminalRenderer clearScreen should handle missing stdout gracefully","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle missing stdout gracefully"},{"ancestorTitles":["TerminalRenderer","clearScreen"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"TerminalRenderer clearScreen should handle missing write method gracefully","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle missing write method gracefully"},{"ancestorTitles":["TerminalRenderer","renderBlock"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"TerminalRenderer renderBlock should render single line","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should render single line"},{"ancestorTitles":["TerminalRenderer","renderBlock"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"TerminalRenderer renderBlock should render multiple lines","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should render multiple lines"},{"ancestorTitles":["TerminalRenderer","renderBlock"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"TerminalRenderer renderBlock should clear previous content before rendering new content","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"status":"passed","title":"should clear previous content before rendering new content"},{"ancestorTitles":["TerminalRenderer","renderBlock"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"TerminalRenderer renderBlock should handle empty array","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle empty array"},{"ancestorTitles":["TerminalRenderer","renderBlock"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"TerminalRenderer renderBlock should handle null gracefully","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle null gracefully"},{"ancestorTitles":["TerminalRenderer","renderBlock"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"TerminalRenderer renderBlock should handle undefined gracefully","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle undefined gracefully"},{"ancestorTitles":["TerminalRenderer","renderBlock"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"TerminalRenderer renderBlock should handle non-array gracefully","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle non-array gracefully"},{"ancestorTitles":["TerminalRenderer","renderBlock"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"TerminalRenderer renderBlock should handle missing stdout gracefully","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle missing stdout gracefully"},{"ancestorTitles":["TerminalRenderer","renderBlock"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"TerminalRenderer renderBlock should handle missing write method gracefully","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle missing write method gracefully"},{"ancestorTitles":["TerminalRenderer","renderBlock"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"TerminalRenderer renderBlock should update state correctly across multiple renders","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should update state correctly across multiple renders"},{"ancestorTitles":["TerminalRenderer","renderBlock"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"TerminalRenderer renderBlock should handle render after clear","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"status":"passed","title":"should handle render after clear"},{"ancestorTitles":["TerminalRenderer","renderBlock"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"TerminalRenderer renderBlock should not move cursor on first render","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should not move cursor on first render"},{"ancestorTitles":["TerminalRenderer","renderBlock"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"TerminalRenderer renderBlock should handle lines with special characters","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle lines with special characters"},{"ancestorTitles":["TerminalRenderer","reset"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"TerminalRenderer reset should reset lastLineCount to 0","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should reset lastLineCount to 0"},{"ancestorTitles":["TerminalRenderer","reset"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"TerminalRenderer reset should allow fresh rendering after reset","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should allow fresh rendering after reset"},{"ancestorTitles":["TerminalRenderer","integration scenarios"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"TerminalRenderer integration scenarios should handle typical usage flow: hide cursor, render, show cursor","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle typical usage flow: hide cursor, render, show cursor"},{"ancestorTitles":["TerminalRenderer","integration scenarios"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"TerminalRenderer integration scenarios should handle clearing and re-rendering efficiently","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"status":"passed","title":"should handle clearing and re-rendering efficiently"},{"ancestorTitles":["TerminalRenderer","integration scenarios"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"TerminalRenderer integration scenarios should handle rapid successive renders","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle rapid successive renders"}],"endTime":1764343037144,"message":"","name":"/Users/samuelfajreldines/Desenvolvimento/claudiomiro/src/commands/task-executor/utils/terminal-renderer.test.js","startTime":1764343037029,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["step2","step2 function"],"duration":4,"failureDetails":[],"failureMessages":[],"fullName":"step2 step2 function should execute Claude with replaced prompt in test environment","invocations":1,"location":null,"numPassingAsserts":7,"retryReasons":[],"status":"passed","title":"should execute Claude with replaced prompt in test environment"},{"ancestorTitles":["step2","step2 function"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"step2 step2 function should validate task creation in non-test environment when TASK0 exists","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should validate task creation in non-test environment when TASK0 exists"},{"ancestorTitles":["step2","step2 function"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"step2 step2 function should validate task creation in non-test environment when TASK1 exists (TASK0 does not)","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"status":"passed","title":"should validate task creation in non-test environment when TASK1 exists (TASK0 does not)"},{"ancestorTitles":["step2","step2 function"],"duration":8,"failureDetails":[],"failureMessages":[],"fullName":"step2 step2 function should throw error when tasks not created in non-test environment","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should throw error when tasks not created in non-test environment"},{"ancestorTitles":["step2","step2 function"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"step2 step2 function should handle executeClaude failure","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should handle executeClaude failure"},{"ancestorTitles":["step2","step2 function"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"step2 step2 function should read prompt.md from correct path","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should read prompt.md from correct path"},{"ancestorTitles":["step2","step2 function"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"step2 step2 function should replace claudiomiroFolder placeholder in prompt","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should replace claudiomiroFolder placeholder in prompt"},{"ancestorTitles":["step2","step2 function"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"step2 step2 function should skip validation in test environment even when tasks do not exist","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should skip validation in test environment even when tasks do not exist"}],"endTime":1764343037213,"message":"","name":"/Users/samuelfajreldines/Desenvolvimento/claudiomiro/src/commands/task-executor/steps/step2/index.test.js","startTime":1764343037149,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["analyze-split","analyzeSplit"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"analyze-split analyzeSplit should skip when task is subtask (contains \".\")","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should skip when task is subtask (contains \".\")"},{"ancestorTitles":["analyze-split","analyzeSplit"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"analyze-split analyzeSplit should skip when split.txt already exists","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should skip when split.txt already exists"},{"ancestorTitles":["analyze-split","analyzeSplit"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"analyze-split analyzeSplit should execute analysis and create split.txt when TASK.md exists after execution","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"status":"passed","title":"should execute analysis and create split.txt when TASK.md exists after execution"},{"ancestorTitles":["analyze-split","analyzeSplit"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"analyze-split analyzeSplit should execute analysis but skip split.txt creation when task was split (TASK.md does not exist)","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should execute analysis but skip split.txt creation when task was split (TASK.md does not exist)"},{"ancestorTitles":["analyze-split","analyzeSplit"],"duration":4,"failureDetails":[],"failureMessages":[],"fullName":"analyze-split analyzeSplit should verify placeholder replacement in prompt","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"status":"passed","title":"should verify placeholder replacement in prompt"},{"ancestorTitles":["analyze-split","analyzeSplit"],"duration":4,"failureDetails":[],"failureMessages":[],"fullName":"analyze-split analyzeSplit should handle executeClaude failure","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should handle executeClaude failure"},{"ancestorTitles":["analyze-split","analyzeSplit"],"duration":4,"failureDetails":[],"failureMessages":[],"fullName":"analyze-split analyzeSplit should throw error when task is null","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should throw error when task is null"},{"ancestorTitles":["analyze-split","analyzeSplit"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"analyze-split analyzeSplit should throw error when task is non-string","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should throw error when task is non-string"},{"ancestorTitles":["analyze-split","analyzeSplit"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"analyze-split analyzeSplit should execute when task is empty string (passes subtask check)","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should execute when task is empty string (passes subtask check)"}],"endTime":1764343037277,"message":"","name":"/Users/samuelfajreldines/Desenvolvimento/claudiomiro/src/commands/task-executor/steps/step4/analyze-split.test.js","startTime":1764343037216,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["step0","step0"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"step0 step0 should execute successfully with valid task input and existing questions","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"status":"passed","title":"should execute successfully with valid task input and existing questions"},{"ancestorTitles":["step0","step0"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"step0 step0 should skip newbranch.txt creation when sameBranch=true","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should skip newbranch.txt creation when sameBranch=true"},{"ancestorTitles":["step0","step0"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"step0 step0 should generate clarification questions when they do not exist","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"status":"passed","title":"should generate clarification questions when they do not exist"},{"ancestorTitles":["step0","step0"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"step0 step0 should create empty answers file when no questions are generated","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should create empty answers file when no questions are generated"},{"ancestorTitles":["step0","step0"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"step0 step0 should handle error when answer collection fails","invocations":1,"location":null,"numPassingAsserts":8,"retryReasons":[],"status":"passed","title":"should handle error when answer collection fails"},{"ancestorTitles":["step0","step0"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"step0 step0 should remove PENDING_CLARIFICATION.flag when resuming","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should remove PENDING_CLARIFICATION.flag when resuming"},{"ancestorTitles":["step0","step0"],"duration":8,"failureDetails":[],"failureMessages":[],"fullName":"step0 step0 should exit when task is too short (< 10 characters)","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should exit when task is too short (< 10 characters)"},{"ancestorTitles":["step0","step0"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"step0 step0 should exit when task is empty","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should exit when task is empty"},{"ancestorTitles":["step0","step0"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"step0 step0 should exit when task has only whitespace","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should exit when task has only whitespace"},{"ancestorTitles":["step0","step0"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"step0 step0 should proceed with exactly 10 characters","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should proceed with exactly 10 characters"},{"ancestorTitles":["step0","step0"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"step0 step0 should handle git hooks verification","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle git hooks verification"}],"endTime":1764343037341,"message":"","name":"/Users/samuelfajreldines/Desenvolvimento/claudiomiro/src/commands/task-executor/steps/step0/index.test.js","startTime":1764343037281,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["Logger","Basic logging methods"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Logger Basic logging methods info() should log info messages","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"info() should log info messages"},{"ancestorTitles":["Logger","Basic logging methods"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Logger Basic logging methods success() should log success messages","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"success() should log success messages"},{"ancestorTitles":["Logger","Basic logging methods"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Logger Basic logging methods warning() should log warning messages","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"warning() should log warning messages"},{"ancestorTitles":["Logger","Basic logging methods"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Logger Basic logging methods error() should log error messages","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"error() should log error messages"},{"ancestorTitles":["Logger","Indentation"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Logger Indentation getIndent() should return empty string initially","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"getIndent() should return empty string initially"},{"ancestorTitles":["Logger","Indentation"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Logger Indentation indent() should increase indentation level","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"indent() should increase indentation level"},{"ancestorTitles":["Logger","Indentation"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Logger Indentation outdent() should decrease indentation level","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"outdent() should decrease indentation level"},{"ancestorTitles":["Logger","Indentation"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Logger Indentation outdent() should not go below zero indentation","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"outdent() should not go below zero indentation"},{"ancestorTitles":["Logger","Indentation"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Logger Indentation resetIndent() should reset indentation to zero","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"resetIndent() should reset indentation to zero"},{"ancestorTitles":["Logger","Indentation"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Logger Indentation logging methods should respect indentation","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"logging methods should respect indentation"},{"ancestorTitles":["Logger","Indentation"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Logger Indentation indented output should have correct format at multiple levels","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"indented output should have correct format at multiple levels"},{"ancestorTitles":["Logger","Indentation"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Logger Indentation path method should respect indentation","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"path method should respect indentation"},{"ancestorTitles":["Logger","Indentation"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Logger Indentation command method should respect indentation","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"command method should respect indentation"},{"ancestorTitles":["Logger","Indentation"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Logger Indentation task method should respect indentation","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"task method should respect indentation"},{"ancestorTitles":["Logger","Indentation"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Logger Indentation subtask method should respect indentation","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"subtask method should respect indentation"},{"ancestorTitles":["Logger","Indentation"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Logger Indentation progress method should respect indentation","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"progress method should respect indentation"},{"ancestorTitles":["Logger","Step logging"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Logger Step logging step() should log task and step information","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"step() should log task and step information"},{"ancestorTitles":["Logger","Special logging methods"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Logger Special logging methods task() should log task messages","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"task() should log task messages"},{"ancestorTitles":["Logger","Special logging methods"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Logger Special logging methods subtask() should log subtask messages","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"subtask() should log subtask messages"},{"ancestorTitles":["Logger","Special logging methods"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Logger Special logging methods path() should log path messages","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"path() should log path messages"},{"ancestorTitles":["Logger","Special logging methods"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Logger Special logging methods command() should log command messages","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"command() should log command messages"},{"ancestorTitles":["Logger","Parallel UI suppression"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Logger Parallel UI suppression should skip logging when UI renderer is active","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should skip logging when UI renderer is active"},{"ancestorTitles":["Logger","Parallel UI suppression"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Logger Parallel UI suppression should allow logging when UI renderer is inactive","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should allow logging when UI renderer is inactive"},{"ancestorTitles":["Logger","Progress bar"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Logger Progress bar createProgressBar() should create progress bar with correct percentage","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"createProgressBar() should create progress bar with correct percentage"},{"ancestorTitles":["Logger","Progress bar"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Logger Progress bar progress() should log progress with percentage","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"progress() should log progress with percentage"},{"ancestorTitles":["Logger","Progress bar"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Logger Progress bar progress() should handle 0 total gracefully","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"progress() should handle 0 total gracefully"},{"ancestorTitles":["Logger","Progress bar"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Logger Progress bar progress() should show 0% for 0 current","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"progress() should show 0% for 0 current"},{"ancestorTitles":["Logger","Progress bar"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Logger Progress bar progress() should show 100% for completed","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"progress() should show 100% for completed"},{"ancestorTitles":["Logger","Progress bar"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Logger Progress bar progress() should calculate percentage accurately","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"progress() should calculate percentage accurately"},{"ancestorTitles":["Logger","Utility methods"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Logger Utility methods separator() should log separator","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"separator() should log separator"},{"ancestorTitles":["Logger","Utility methods"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Logger Utility methods newline() should log empty line","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"newline() should log empty line"},{"ancestorTitles":["Logger","Utility methods"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"Logger Utility methods box() should create boxed output with default options","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"box() should create boxed output with default options"},{"ancestorTitles":["Logger","Utility methods"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Logger Utility methods box() should create boxed output with custom options","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"box() should create boxed output with custom options"},{"ancestorTitles":["Logger","Utility methods"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Logger Utility methods clear() should call console.clear","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"clear() should call console.clear"},{"ancestorTitles":["Logger","Spinner methods"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"Logger Spinner methods startSpinner() should create a spinner","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"startSpinner() should create a spinner"},{"ancestorTitles":["Logger","Spinner methods"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Logger Spinner methods updateSpinner() should update spinner text","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"updateSpinner() should update spinner text"},{"ancestorTitles":["Logger","Spinner methods"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Logger Spinner methods succeedSpinner() should stop spinner with success","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"succeedSpinner() should stop spinner with success"},{"ancestorTitles":["Logger","Spinner methods"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Logger Spinner methods failSpinner() should stop spinner with failure","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"failSpinner() should stop spinner with failure"},{"ancestorTitles":["Logger","Spinner methods"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Logger Spinner methods stopSpinner() should stop spinner","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"stopSpinner() should stop spinner"},{"ancestorTitles":["Logger","Spinner methods"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Logger Spinner methods updateSpinner() should do nothing when spinner is null","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"updateSpinner() should do nothing when spinner is null"},{"ancestorTitles":["Logger","Spinner methods"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Logger Spinner methods succeedSpinner() should do nothing when spinner is null","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"succeedSpinner() should do nothing when spinner is null"},{"ancestorTitles":["Logger","Spinner methods"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Logger Spinner methods failSpinner() should do nothing when spinner is null","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"failSpinner() should do nothing when spinner is null"},{"ancestorTitles":["Logger","Spinner methods"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Logger Spinner methods startSpinner() should stop existing spinner before creating new one","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"startSpinner() should stop existing spinner before creating new one"}],"endTime":1764343037407,"message":"","name":"/Users/samuelfajreldines/Desenvolvimento/claudiomiro/src/shared/utils/logger.test.js","startTime":1764343037345,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["step4","step4"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"step4 step4 should orchestrate generateTodo and analyzeSplit successfully","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"status":"passed","title":"should orchestrate generateTodo and analyzeSplit successfully"},{"ancestorTitles":["step4","step4"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"step4 step4 should handle TODO validation with errors and continue to analyzeSplit","invocations":1,"location":null,"numPassingAsserts":10,"retryReasons":[],"status":"passed","title":"should handle TODO validation with errors and continue to analyzeSplit"},{"ancestorTitles":["step4","step4"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"step4 step4 should handle validation with context score of 0","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"status":"passed","title":"should handle validation with context score of 0"},{"ancestorTitles":["step4","step4"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"step4 step4 should handle validation with context score of 2","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"status":"passed","title":"should handle validation with context score of 2"},{"ancestorTitles":["step4","step4"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"step4 step4 should handle validation with multiple errors","invocations":1,"location":null,"numPassingAsserts":8,"retryReasons":[],"status":"passed","title":"should handle validation with multiple errors"},{"ancestorTitles":["step4","step4"],"duration":9,"failureDetails":[],"failureMessages":[],"fullName":"step4 step4 should propagate error when generateTodo fails","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should propagate error when generateTodo fails"},{"ancestorTitles":["step4","step4"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"step4 step4 should propagate error when analyzeSplit fails","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should propagate error when analyzeSplit fails"},{"ancestorTitles":["step4","step4"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"step4 step4 should handle empty errors array with invalid validation","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should handle empty errors array with invalid validation"},{"ancestorTitles":["step4","step4"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"step4 step4 should work with different task identifiers","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should work with different task identifiers"},{"ancestorTitles":["step4","step4"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"step4 step4 should handle all valid context scores (0, 1, 2, 3)","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should handle all valid context scores (0, 1, 2, 3)"}],"endTime":1764343037469,"message":"","name":"/Users/samuelfajreldines/Desenvolvimento/claudiomiro/src/commands/task-executor/steps/step4/index.test.js","startTime":1764343037416,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["src/shared/executors/index.js","getExecutor()"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"src/shared/executors/index.js getExecutor() should return executeClaude for type \"claude\"","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return executeClaude for type \"claude\""},{"ancestorTitles":["src/shared/executors/index.js","getExecutor()"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"src/shared/executors/index.js getExecutor() should return executeCodex for type \"codex\"","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return executeCodex for type \"codex\""},{"ancestorTitles":["src/shared/executors/index.js","getExecutor()"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"src/shared/executors/index.js getExecutor() should return executeGemini for type \"gemini\"","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return executeGemini for type \"gemini\""},{"ancestorTitles":["src/shared/executors/index.js","getExecutor()"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"src/shared/executors/index.js getExecutor() should return executeDeepSeek for type \"deep-seek\"","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return executeDeepSeek for type \"deep-seek\""},{"ancestorTitles":["src/shared/executors/index.js","getExecutor()"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"src/shared/executors/index.js getExecutor() should return executeGlm for type \"glm\"","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return executeGlm for type \"glm\""},{"ancestorTitles":["src/shared/executors/index.js","getExecutor()"],"duration":3,"failureDetails":[],"failureMessages":[],"fullName":"src/shared/executors/index.js getExecutor() should throw error for unknown executor type","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should throw error for unknown executor type"},{"ancestorTitles":["src/shared/executors/index.js","getExecutor()"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"src/shared/executors/index.js getExecutor() should throw error with specific type name","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should throw error with specific type name"},{"ancestorTitles":["src/shared/executors/index.js","getExecutor()"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"src/shared/executors/index.js getExecutor() should throw error for empty string","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should throw error for empty string"},{"ancestorTitles":["src/shared/executors/index.js","getExecutor()"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"src/shared/executors/index.js getExecutor() should throw error for undefined","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should throw error for undefined"},{"ancestorTitles":["src/shared/executors/index.js","getExecutor()"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"src/shared/executors/index.js getExecutor() should throw error for null","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should throw error for null"},{"ancestorTitles":["src/shared/executors/index.js","direct exports"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"src/shared/executors/index.js direct exports should export executeClaude directly","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should export executeClaude directly"},{"ancestorTitles":["src/shared/executors/index.js","direct exports"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"src/shared/executors/index.js direct exports should export executeCodex directly","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should export executeCodex directly"},{"ancestorTitles":["src/shared/executors/index.js","direct exports"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"src/shared/executors/index.js direct exports should export executeGemini directly","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should export executeGemini directly"},{"ancestorTitles":["src/shared/executors/index.js","direct exports"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"src/shared/executors/index.js direct exports should export executeDeepSeek directly","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should export executeDeepSeek directly"},{"ancestorTitles":["src/shared/executors/index.js","direct exports"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"src/shared/executors/index.js direct exports should export executeGlm directly","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should export executeGlm directly"},{"ancestorTitles":["src/shared/executors/index.js","exports"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"src/shared/executors/index.js exports should export getExecutor function","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should export getExecutor function"},{"ancestorTitles":["src/shared/executors/index.js","exports"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"src/shared/executors/index.js exports should export all executor functions","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"status":"passed","title":"should export all executor functions"}],"endTime":1764343037519,"message":"","name":"/Users/samuelfajreldines/Desenvolvimento/claudiomiro/src/shared/executors/index.test.js","startTime":1764343037474,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["cache-manager","createEmptyCache"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"cache-manager createEmptyCache should create empty cache with correct structure","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"status":"passed","title":"should create empty cache with correct structure"},{"ancestorTitles":["cache-manager","computeFileHash"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"cache-manager computeFileHash should return null if file does not exist","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return null if file does not exist"},{"ancestorTitles":["cache-manager","computeFileHash"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"cache-manager computeFileHash should compute MD5 hash of file content","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should compute MD5 hash of file content"},{"ancestorTitles":["cache-manager","getCachePath"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"cache-manager getCachePath should create cache directory if not exists","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should create cache directory if not exists"},{"ancestorTitles":["cache-manager","getCachePath"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"cache-manager getCachePath should return correct cache file path","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return correct cache file path"},{"ancestorTitles":["cache-manager","loadCache"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"cache-manager loadCache should return empty cache if file does not exist","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should return empty cache if file does not exist"},{"ancestorTitles":["cache-manager","loadCache"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"cache-manager loadCache should load cache from file","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should load cache from file"},{"ancestorTitles":["cache-manager","loadCache"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"cache-manager loadCache should return empty cache if version mismatch","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should return empty cache if version mismatch"},{"ancestorTitles":["cache-manager","loadCache"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"cache-manager loadCache should return empty cache on parse error","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return empty cache on parse error"},{"ancestorTitles":["cache-manager","saveCache"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"cache-manager saveCache should write cache to file with updated timestamp","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should write cache to file with updated timestamp"},{"ancestorTitles":["cache-manager","hasAiPromptChanged"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"cache-manager hasAiPromptChanged should return true if hash is different","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return true if hash is different"},{"ancestorTitles":["cache-manager","hasAiPromptChanged"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"cache-manager hasAiPromptChanged should return false if hash is same","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return false if hash is same"},{"ancestorTitles":["cache-manager","updateAiPromptCache"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"cache-manager updateAiPromptCache should update AI prompt cache with hash and summary","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should update AI prompt cache with hash and summary"},{"ancestorTitles":["cache-manager","getCachedAiPromptSummary"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"cache-manager getCachedAiPromptSummary should return null if no summary cached","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return null if no summary cached"},{"ancestorTitles":["cache-manager","getCachedAiPromptSummary"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"cache-manager getCachedAiPromptSummary should return null if AI_PROMPT changed","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return null if AI_PROMPT changed"},{"ancestorTitles":["cache-manager","getCachedAiPromptSummary"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"cache-manager getCachedAiPromptSummary should return cached summary if valid","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return cached summary if valid"},{"ancestorTitles":["cache-manager","addCompletedTask"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"cache-manager addCompletedTask should add task to completed tasks","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should add task to completed tasks"},{"ancestorTitles":["cache-manager","getNewCompletedTasks"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"cache-manager getNewCompletedTasks should return all tasks if afterTask is null","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return all tasks if afterTask is null"},{"ancestorTitles":["cache-manager","getNewCompletedTasks"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"cache-manager getNewCompletedTasks should return only tasks after specified task","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return only tasks after specified task"},{"ancestorTitles":["cache-manager","getLastProcessedTask"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"cache-manager getLastProcessedTask should return last processed task from cache","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return last processed task from cache"},{"ancestorTitles":["cache-manager","clearCache"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"cache-manager clearCache should delete cache file if exists","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should delete cache file if exists"},{"ancestorTitles":["cache-manager","clearCache"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"cache-manager clearCache should do nothing if cache does not exist","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should do nothing if cache does not exist"},{"ancestorTitles":["cache-manager","getAllCompletedTasks"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"cache-manager getAllCompletedTasks should return all completed tasks","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return all completed tasks"},{"ancestorTitles":["cache-manager","storeCodebasePatterns"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"cache-manager storeCodebasePatterns should merge patterns into cache","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should merge patterns into cache"},{"ancestorTitles":["cache-manager","getCodebasePatterns"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"cache-manager getCodebasePatterns should return stored codebase patterns","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return stored codebase patterns"}],"endTime":1764343037580,"message":"","name":"/Users/samuelfajreldines/Desenvolvimento/claudiomiro/src/shared/services/context-cache/cache-manager.test.js","startTime":1764343037523,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["git-commit","commitOrFix"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"git-commit commitOrFix should execute Claude with enhanced prompt containing hard rules","invocations":1,"location":null,"numPassingAsserts":10,"retryReasons":[],"status":"passed","title":"should execute Claude with enhanced prompt containing hard rules"},{"ancestorTitles":["git-commit","commitOrFix"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"git-commit commitOrFix should work without taskName parameter","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should work without taskName parameter"},{"ancestorTitles":["git-commit","commitOrFix"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"git-commit commitOrFix should stop spinner and log appropriate messages","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"status":"passed","title":"should stop spinner and log appropriate messages"},{"ancestorTitles":["git-commit","commitOrFix"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"git-commit commitOrFix should handle Claude execution success","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle Claude execution success"},{"ancestorTitles":["git-commit","commitOrFix"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"git-commit commitOrFix should handle Claude execution failure gracefully","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle Claude execution failure gracefully"},{"ancestorTitles":["git-commit","commitOrFix"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"git-commit commitOrFix should handle empty prompt","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle empty prompt"},{"ancestorTitles":["git-commit","commitOrFix"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"git-commit commitOrFix should handle prompt with special characters","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle prompt with special characters"},{"ancestorTitles":["git-commit","commitOrFix"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"git-commit commitOrFix should handle very long prompts","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle very long prompts"},{"ancestorTitles":["git-commit","commitOrFix"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"git-commit commitOrFix should preserve original prompt in enhanced message","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should preserve original prompt in enhanced message"},{"ancestorTitles":["git-commit","commitOrFix"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"git-commit commitOrFix should format hard rules consistently","invocations":1,"location":null,"numPassingAsserts":9,"retryReasons":[],"status":"passed","title":"should format hard rules consistently"},{"ancestorTitles":["git-commit","commitOrFix"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"git-commit commitOrFix should pass through taskName parameter correctly","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should pass through taskName parameter correctly"},{"ancestorTitles":["git-commit","commitOrFix"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"git-commit commitOrFix should handle different task names","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should handle different task names"},{"ancestorTitles":["git-commit","commitOrFix"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"git-commit commitOrFix should handle execution errors with different error types","invocations":1,"location":null,"numPassingAsserts":8,"retryReasons":[],"status":"passed","title":"should handle execution errors with different error types"},{"ancestorTitles":["git-commit","commitOrFix"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"git-commit commitOrFix should call logger methods in correct order on success","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should call logger methods in correct order on success"},{"ancestorTitles":["git-commit","commitOrFix"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"git-commit commitOrFix should call logger methods in correct order on failure","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should call logger methods in correct order on failure"},{"ancestorTitles":["git-commit","commitOrFix"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"git-commit commitOrFix should handle multiline prompts","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle multiline prompts"},{"ancestorTitles":["git-commit","commitOrFix"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"git-commit commitOrFix should handle prompts with git commands","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle prompts with git commands"},{"ancestorTitles":["git-commit","commitOrFix"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"git-commit commitOrFix should maintain consistency across multiple calls","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"status":"passed","title":"should maintain consistency across multiple calls"},{"ancestorTitles":["git-commit","smartCommit","when no changes to commit"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"git-commit smartCommit when no changes to commit should return success with no changes message","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should return success with no changes message"},{"ancestorTitles":["git-commit","smartCommit","when git status fails"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"git-commit smartCommit when git status fails should fall back to Claude","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should fall back to Claude"},{"ancestorTitles":["git-commit","smartCommit","when local LLM is not available"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"git-commit smartCommit when local LLM is not available should fall back to Claude","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should fall back to Claude"},{"ancestorTitles":["git-commit","smartCommit","when local LLM is available"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"git-commit smartCommit when local LLM is available should commit via shell with Ollama message","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should commit via shell with Ollama message"},{"ancestorTitles":["git-commit","smartCommit","when local LLM is available"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"git-commit smartCommit when local LLM is available should stage all changes before commit","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should stage all changes before commit"},{"ancestorTitles":["git-commit","smartCommit","when local LLM is available"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"git-commit smartCommit when local LLM is available should include commit body when present","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should include commit body when present"},{"ancestorTitles":["git-commit","smartCommit","when local LLM is available"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"git-commit smartCommit when local LLM is available should push when shouldPush is true","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should push when shouldPush is true"},{"ancestorTitles":["git-commit","smartCommit","when local LLM is available"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"git-commit smartCommit when local LLM is available should not push when shouldPush is false","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should not push when shouldPush is false"},{"ancestorTitles":["git-commit","smartCommit","when local LLM is available"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"git-commit smartCommit when local LLM is available should fall back to Claude when push fails and createPR is true","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should fall back to Claude when push fails and createPR is true"},{"ancestorTitles":["git-commit","smartCommit","when local LLM is available"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"git-commit smartCommit when local LLM is available should return success when push fails but createPR is false","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return success when push fails but createPR is false"},{"ancestorTitles":["git-commit","smartCommit","when local LLM is available"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"git-commit smartCommit when local LLM is available should use Claude for PR creation","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should use Claude for PR creation"},{"ancestorTitles":["git-commit","smartCommit","when local LLM is available"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"git-commit smartCommit when local LLM is available should read TASK.md for task description","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should read TASK.md for task description"},{"ancestorTitles":["git-commit","smartCommit","when shell commit fails"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"git-commit smartCommit when shell commit fails should fall back to Claude","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should fall back to Claude"},{"ancestorTitles":["git-commit","smartCommit","default parameters"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"git-commit smartCommit default parameters should use defaults when no options provided","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should use defaults when no options provided"},{"ancestorTitles":["git-commit","smartCommit","default parameters"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"git-commit smartCommit default parameters should use taskName when provided","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should use taskName when provided"}],"endTime":1764343037658,"message":"","name":"/Users/samuelfajreldines/Desenvolvimento/claudiomiro/src/shared/services/git-commit.test.js","startTime":1764343037589,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["section-extractor","extractSection"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"section-extractor extractSection should extract h2 section by exact name","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should extract h2 section by exact name"},{"ancestorTitles":["section-extractor","extractSection"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"section-extractor extractSection should extract section case-insensitively","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should extract section case-insensitively"},{"ancestorTitles":["section-extractor","extractSection"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"section-extractor extractSection should extract section with prefix (e.g., \"Code Patterns\")","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should extract section with prefix (e.g., \"Code Patterns\")"},{"ancestorTitles":["section-extractor","extractSection"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"section-extractor extractSection should extract h3 sections","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should extract h3 sections"},{"ancestorTitles":["section-extractor","extractSection"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"section-extractor extractSection should extract bold-style sections","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should extract bold-style sections"},{"ancestorTitles":["section-extractor","extractSection"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"section-extractor extractSection should return empty string for missing section","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return empty string for missing section"},{"ancestorTitles":["section-extractor","extractSection"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"section-extractor extractSection should handle empty input","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should handle empty input"},{"ancestorTitles":["section-extractor","extractSection"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"section-extractor extractSection should handle section at end of document","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle section at end of document"},{"ancestorTitles":["section-extractor","extractAllSections"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"section-extractor extractAllSections should extract all h2 sections","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should extract all h2 sections"},{"ancestorTitles":["section-extractor","extractAllSections"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"section-extractor extractAllSections should return empty object for no sections","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return empty object for no sections"},{"ancestorTitles":["section-extractor","extractAllSections"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"section-extractor extractAllSections should handle empty input","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle empty input"},{"ancestorTitles":["section-extractor","hasSection"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"section-extractor hasSection should return true for existing section","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return true for existing section"},{"ancestorTitles":["section-extractor","hasSection"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"section-extractor hasSection should return false for missing section","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return false for missing section"},{"ancestorTitles":["section-extractor","extractCodeBlocks"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"section-extractor extractCodeBlocks should extract code blocks with language","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"status":"passed","title":"should extract code blocks with language"},{"ancestorTitles":["section-extractor","extractCodeBlocks"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"section-extractor extractCodeBlocks should handle code blocks without language","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should handle code blocks without language"},{"ancestorTitles":["section-extractor","extractCodeBlocks"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"section-extractor extractCodeBlocks should return empty array for no code blocks","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return empty array for no code blocks"},{"ancestorTitles":["section-extractor","extractCodeBlocks"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"section-extractor extractCodeBlocks should handle empty input","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle empty input"},{"ancestorTitles":["section-extractor","extractListItems"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"section-extractor extractListItems should extract bullet points with dash","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should extract bullet points with dash"},{"ancestorTitles":["section-extractor","extractListItems"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"section-extractor extractListItems should extract bullet points with asterisk","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should extract bullet points with asterisk"},{"ancestorTitles":["section-extractor","extractListItems"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"section-extractor extractListItems should extract numbered items","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should extract numbered items"},{"ancestorTitles":["section-extractor","extractListItems"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"section-extractor extractListItems should extract mixed list types","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should extract mixed list types"},{"ancestorTitles":["section-extractor","extractListItems"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"section-extractor extractListItems should return empty array for no lists","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return empty array for no lists"},{"ancestorTitles":["section-extractor","extractListItems"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"section-extractor extractListItems should handle indented list items","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle indented list items"}],"endTime":1764343037709,"message":"","name":"/Users/samuelfajreldines/Desenvolvimento/claudiomiro/src/shared/services/local-llm/fallbacks/section-extractor.test.js","startTime":1764343037663,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["help command","run"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"help command run should show help when called without version flags","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should show help when called without version flags"},{"ancestorTitles":["help command","run"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"help command run should show version when -v flag is passed","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should show version when -v flag is passed"},{"ancestorTitles":["help command","run"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"help command run should show version when --version flag is passed","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should show version when --version flag is passed"},{"ancestorTitles":["help command","run"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"help command run should show help when --help flag is passed","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should show help when --help flag is passed"},{"ancestorTitles":["help command","showHelp"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"help command showHelp should display header with version","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should display header with version"},{"ancestorTitles":["help command","showHelp"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"help command showHelp should display usage section","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should display usage section"},{"ancestorTitles":["help command","showHelp"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"help command showHelp should display commands section","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should display commands section"},{"ancestorTitles":["help command","showHelp"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"help command showHelp should display global options section","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should display global options section"},{"ancestorTitles":["help command","showHelp"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"help command showHelp should display examples section","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should display examples section"},{"ancestorTitles":["help command","showHelp"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"help command showHelp should display fix-branch level examples","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should display fix-branch level examples"},{"ancestorTitles":["help command","showVersion"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"help command showVersion should display version in correct format","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should display version in correct format"},{"ancestorTitles":["help command","COMMANDS constant"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"help command COMMANDS constant should have at least 3 commands defined","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should have at least 3 commands defined"},{"ancestorTitles":["help command","COMMANDS constant"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"help command COMMANDS constant should have name and description for each command","invocations":1,"location":null,"numPassingAsserts":24,"retryReasons":[],"status":"passed","title":"should have name and description for each command"},{"ancestorTitles":["help command","COMMANDS constant"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"help command COMMANDS constant should have task-executor command","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should have task-executor command"},{"ancestorTitles":["help command","COMMANDS constant"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"help command COMMANDS constant should have fix-command command","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should have fix-command command"},{"ancestorTitles":["help command","COMMANDS constant"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"help command COMMANDS constant should have loop-fixes command","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should have loop-fixes command"},{"ancestorTitles":["help command","COMMANDS constant"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"help command COMMANDS constant should have fix-branch command","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should have fix-branch command"},{"ancestorTitles":["help command","COMMANDS constant"],"duration":5,"failureDetails":[],"failureMessages":[],"fullName":"help command COMMANDS constant should have fix-branch --level option","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should have fix-branch --level option"},{"ancestorTitles":["help command","COMMANDS constant"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"help command COMMANDS constant should have fix-branch --blockers-only option","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should have fix-branch --blockers-only option"},{"ancestorTitles":["help command","COMMANDS constant"],"duration":6,"failureDetails":[],"failureMessages":[],"fullName":"help command COMMANDS constant should have fix-branch --no-suggestions option","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should have fix-branch --no-suggestions option"},{"ancestorTitles":["help command","COMMANDS constant"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"help command COMMANDS constant should have test-local-llm command","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should have test-local-llm command"},{"ancestorTitles":["help command","COMMANDS constant"],"duration":10,"failureDetails":[],"failureMessages":[],"fullName":"help command COMMANDS constant should have test-local-llm --prompt option","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should have test-local-llm --prompt option"},{"ancestorTitles":["help command","COMMANDS constant"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"help command COMMANDS constant should have config command","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should have config command"},{"ancestorTitles":["help command","COMMANDS constant"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"help command COMMANDS constant should have config KEY=VALUE option","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should have config KEY=VALUE option"},{"ancestorTitles":["help command","GLOBAL_OPTIONS constant"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"help command GLOBAL_OPTIONS constant should have help option","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should have help option"},{"ancestorTitles":["help command","GLOBAL_OPTIONS constant"],"duration":20,"failureDetails":[],"failureMessages":[],"fullName":"help command GLOBAL_OPTIONS constant should have version option","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should have version option"}],"endTime":1764343037857,"message":"","name":"/Users/samuelfajreldines/Desenvolvimento/claudiomiro/src/commands/help/index.test.js","startTime":1764343037714,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["DiffApplier","parseDiff"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"DiffApplier parseDiff should parse a simple unified diff","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should parse a simple unified diff"},{"ancestorTitles":["DiffApplier","parseDiff"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"DiffApplier parseDiff should handle empty diff","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle empty diff"},{"ancestorTitles":["DiffApplier","parseDiff"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"DiffApplier parseDiff should parse multi-file diff","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should parse multi-file diff"},{"ancestorTitles":["DiffApplier","applyPatch"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"DiffApplier applyPatch should apply a simple addition patch","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should apply a simple addition patch"},{"ancestorTitles":["DiffApplier","applyPatch"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"DiffApplier applyPatch should apply a simple removal patch","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should apply a simple removal patch"},{"ancestorTitles":["DiffApplier","applyPatch"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"DiffApplier applyPatch should apply a replacement patch","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should apply a replacement patch"},{"ancestorTitles":["DiffApplier","applyPatch"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"DiffApplier applyPatch should handle empty patch","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should handle empty patch"},{"ancestorTitles":["DiffApplier","applyPatch"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"DiffApplier applyPatch should return error for mismatched context","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should return error for mismatched context"},{"ancestorTitles":["DiffApplier","applyPatch"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"DiffApplier applyPatch should use fuzzFactor for approximate matching","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should use fuzzFactor for approximate matching"},{"ancestorTitles":["DiffApplier","applyMultiFilePatch"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"DiffApplier applyMultiFilePatch should apply patches to multiple files","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"status":"passed","title":"should apply patches to multiple files"},{"ancestorTitles":["DiffApplier","applyMultiFilePatch"],"duration":8,"failureDetails":[],"failureMessages":[],"fullName":"DiffApplier applyMultiFilePatch should handle new file creation","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should handle new file creation"},{"ancestorTitles":["DiffApplier","applyMultiFilePatch"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"DiffApplier applyMultiFilePatch should report errors for missing files without new content","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should report errors for missing files without new content"},{"ancestorTitles":["DiffApplier","extractFilePath"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"DiffApplier extractFilePath should remove a/ prefix","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should remove a/ prefix"},{"ancestorTitles":["DiffApplier","extractFilePath"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"DiffApplier extractFilePath should remove b/ prefix","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should remove b/ prefix"},{"ancestorTitles":["DiffApplier","extractFilePath"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"DiffApplier extractFilePath should handle paths without prefix","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle paths without prefix"},{"ancestorTitles":["DiffApplier","extractFilePath"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"DiffApplier extractFilePath should return null for null input","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return null for null input"},{"ancestorTitles":["DiffApplier","extractFilePath"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"DiffApplier extractFilePath should return empty string for empty input","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return empty string for empty input"},{"ancestorTitles":["DiffApplier","extractDiffsFromOutput"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"DiffApplier extractDiffsFromOutput should extract diff from code block","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should extract diff from code block"},{"ancestorTitles":["DiffApplier","extractDiffsFromOutput"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"DiffApplier extractDiffsFromOutput should extract multiple diff blocks","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should extract multiple diff blocks"},{"ancestorTitles":["DiffApplier","extractDiffsFromOutput"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"DiffApplier extractDiffsFromOutput should handle patch code blocks","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle patch code blocks"},{"ancestorTitles":["DiffApplier","extractDiffsFromOutput"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"DiffApplier extractDiffsFromOutput should return empty array for output without diffs","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return empty array for output without diffs"},{"ancestorTitles":["DiffApplier","extractDiffsFromOutput"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"DiffApplier extractDiffsFromOutput should extract raw diff without code blocks","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should extract raw diff without code blocks"},{"ancestorTitles":["DiffApplier","validateDiff"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"DiffApplier validateDiff should validate a correct diff","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should validate a correct diff"},{"ancestorTitles":["DiffApplier","validateDiff"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"DiffApplier validateDiff should reject diff without header","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should reject diff without header"},{"ancestorTitles":["DiffApplier","validateDiff"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"DiffApplier validateDiff should reject diff without hunks","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should reject diff without hunks"},{"ancestorTitles":["DiffApplier","validateDiff"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"DiffApplier validateDiff should reject empty diff","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should reject empty diff"},{"ancestorTitles":["DiffApplier","validateDiff"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"DiffApplier validateDiff should reject non-string input","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should reject non-string input"},{"ancestorTitles":["DiffApplier","createDiff"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"DiffApplier createDiff should create diff for added content","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should create diff for added content"},{"ancestorTitles":["DiffApplier","createDiff"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"DiffApplier createDiff should create diff for removed content","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should create diff for removed content"},{"ancestorTitles":["DiffApplier","createDiff"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"DiffApplier createDiff should create diff for replaced content","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should create diff for replaced content"},{"ancestorTitles":["DiffApplier","createDiff"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"DiffApplier createDiff should create empty diff for identical content","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should create empty diff for identical content"},{"ancestorTitles":["DiffApplier","reconstructPatchString"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"DiffApplier reconstructPatchString should reconstruct valid patch string from parsed patch","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should reconstruct valid patch string from parsed patch"},{"ancestorTitles":["DiffApplier","createNewFileFromPatch"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"DiffApplier createNewFileFromPatch should create file content from new file patch","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should create file content from new file patch"},{"ancestorTitles":["DiffApplier","createNewFileFromPatch"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"DiffApplier createNewFileFromPatch should handle empty patch","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle empty patch"},{"ancestorTitles":["DiffApplier","Class instantiation"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"DiffApplier Class instantiation should be able to create new instances","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should be able to create new instances"},{"ancestorTitles":["DiffApplier","Class instantiation"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"DiffApplier Class instantiation singleton should be instance of DiffApplier","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"singleton should be instance of DiffApplier"},{"ancestorTitles":["DiffApplier","Integration scenarios"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"DiffApplier Integration scenarios should handle real-world LLM output with explanation and diff","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should handle real-world LLM output with explanation and diff"},{"ancestorTitles":["DiffApplier","Integration scenarios"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"DiffApplier Integration scenarios should handle simple single-hunk patch","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle simple single-hunk patch"},{"ancestorTitles":["DiffApplier","Integration scenarios"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"DiffApplier Integration scenarios should create diff and re-apply it","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should create diff and re-apply it"}],"endTime":1764343037946,"message":"","name":"/Users/samuelfajreldines/Desenvolvimento/claudiomiro/src/shared/utils/diff-applier.test.js","startTime":1764343037862,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["generate-todo","generateTodo"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"generate-todo generateTodo should load TODO.md template and call executeClaude with processed prompt","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should load TODO.md template and call executeClaude with processed prompt"},{"ancestorTitles":["generate-todo","generateTodo"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"generate-todo generateTodo should include AI_PROMPT.md in reference files section","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should include AI_PROMPT.md in reference files section"},{"ancestorTitles":["generate-todo","generateTodo"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"generate-todo generateTodo should use context-cache service to get completed task files","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should use context-cache service to get completed task files"},{"ancestorTitles":["generate-todo","generateTodo"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"generate-todo generateTodo should include files returned by context-cache service","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should include files returned by context-cache service"},{"ancestorTitles":["generate-todo","generateTodo"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"generate-todo generateTodo should use context-cache service (which excludes standard files internally)","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should use context-cache service (which excludes standard files internally)"},{"ancestorTitles":["generate-todo","generateTodo"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"generate-todo generateTodo should replace all placeholders in prompt template","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"status":"passed","title":"should replace all placeholders in prompt template"},{"ancestorTitles":["generate-todo","generateTodo"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"generate-todo generateTodo should handle empty context when no previous TASK folders exist","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle empty context when no previous TASK folders exist"},{"ancestorTitles":["generate-todo","generateTodo"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"generate-todo generateTodo should only include files from completed tasks (via context-cache)","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should only include files from completed tasks (via context-cache)"},{"ancestorTitles":["generate-todo","generateTodo"],"duration":11,"failureDetails":[],"failureMessages":[],"fullName":"generate-todo generateTodo should handle error when TODO.md template is missing","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle error when TODO.md template is missing"},{"ancestorTitles":["generate-todo","generateTodo"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"generate-todo generateTodo should handle error when prompt template is missing","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle error when prompt template is missing"},{"ancestorTitles":["generate-todo","generateTodo"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"generate-todo generateTodo should pass task identifier correctly to executeClaude","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should pass task identifier correctly to executeClaude"},{"ancestorTitles":["generate-todo","generateTodo"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"generate-todo generateTodo should include custom files returned by context-cache (excluding standard files)","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should include custom files returned by context-cache (excluding standard files)"}],"endTime":1764343038031,"message":"","name":"/Users/samuelfajreldines/Desenvolvimento/claudiomiro/src/commands/task-executor/steps/step4/generate-todo.test.js","startTime":1764343037950,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["src/commands/loop-fixes/index.js","parsePromptArg()"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"src/commands/loop-fixes/index.js parsePromptArg() should return null when --prompt= is not provided","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return null when --prompt= is not provided"},{"ancestorTitles":["src/commands/loop-fixes/index.js","parsePromptArg()"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"src/commands/loop-fixes/index.js parsePromptArg() should parse simple prompt","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should parse simple prompt"},{"ancestorTitles":["src/commands/loop-fixes/index.js","parsePromptArg()"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"src/commands/loop-fixes/index.js parsePromptArg() should handle prompt with double quotes","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle prompt with double quotes"},{"ancestorTitles":["src/commands/loop-fixes/index.js","parsePromptArg()"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"src/commands/loop-fixes/index.js parsePromptArg() should handle prompt with single quotes","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle prompt with single quotes"},{"ancestorTitles":["src/commands/loop-fixes/index.js","parsePromptArg()"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"src/commands/loop-fixes/index.js parsePromptArg() should handle prompt with equals sign","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle prompt with equals sign"},{"ancestorTitles":["src/commands/loop-fixes/index.js","parsePromptArg()"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"src/commands/loop-fixes/index.js parsePromptArg() should handle prompt with multiple equals signs","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle prompt with multiple equals signs"},{"ancestorTitles":["src/commands/loop-fixes/index.js","parsePromptArg()"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"src/commands/loop-fixes/index.js parsePromptArg() should return null for empty prompt value","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return null for empty prompt value"},{"ancestorTitles":["src/commands/loop-fixes/index.js","run()"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"src/commands/loop-fixes/index.js run() should log \"Running loop-fixes\" with iteration limit","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should log \"Running loop-fixes\" with iteration limit"},{"ancestorTitles":["src/commands/loop-fixes/index.js","run()"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"src/commands/loop-fixes/index.js run() should parse --limit=5 correctly","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should parse --limit=5 correctly"},{"ancestorTitles":["src/commands/loop-fixes/index.js","run()"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"src/commands/loop-fixes/index.js run() should default maxIterations to 20 when no limit flag","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should default maxIterations to 20 when no limit flag"},{"ancestorTitles":["src/commands/loop-fixes/index.js","run()"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"src/commands/loop-fixes/index.js run() should show \"no limit\" when --no-limit is passed","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should show \"no limit\" when --no-limit is passed"},{"ancestorTitles":["src/commands/loop-fixes/index.js","run()"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"src/commands/loop-fixes/index.js run() should set folder from args","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should set folder from args"},{"ancestorTitles":["src/commands/loop-fixes/index.js","run()"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"src/commands/loop-fixes/index.js run() should default folder to process.cwd() when not provided","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should default folder to process.cwd() when not provided"},{"ancestorTitles":["src/commands/loop-fixes/index.js","run()"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"src/commands/loop-fixes/index.js run() should handle multiple flags correctly","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should handle multiple flags correctly"},{"ancestorTitles":["src/commands/loop-fixes/index.js","run()"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"src/commands/loop-fixes/index.js run() should call loopFixes with parsed prompt","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should call loopFixes with parsed prompt"},{"ancestorTitles":["src/commands/loop-fixes/index.js","run()"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"src/commands/loop-fixes/index.js run() should use interactive input when --prompt= is not provided","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should use interactive input when --prompt= is not provided"},{"ancestorTitles":["src/commands/loop-fixes/index.js","run()"],"duration":6,"failureDetails":[],"failureMessages":[],"fullName":"src/commands/loop-fixes/index.js run() should throw error when no prompt is provided and interactive input is empty","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should throw error when no prompt is provided and interactive input is empty"},{"ancestorTitles":["src/commands/loop-fixes/index.js","run()"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"src/commands/loop-fixes/index.js run() should throw error when no prompt is provided and interactive input is whitespace","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should throw error when no prompt is provided and interactive input is whitespace"},{"ancestorTitles":["src/commands/loop-fixes/index.js","run()"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"src/commands/loop-fixes/index.js run() should handle prompt with special characters","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle prompt with special characters"},{"ancestorTitles":["src/commands/loop-fixes/index.js","run()"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"src/commands/loop-fixes/index.js run() should handle prompt with newlines (from shell escaping)","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle prompt with newlines (from shell escaping)"},{"ancestorTitles":["src/commands/loop-fixes/index.js","exports"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"src/commands/loop-fixes/index.js exports should export run function","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should export run function"},{"ancestorTitles":["src/commands/loop-fixes/index.js","exports"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"src/commands/loop-fixes/index.js exports should export parsePromptArg function","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should export parsePromptArg function"}],"endTime":1764343038092,"message":"","name":"/Users/samuelfajreldines/Desenvolvimento/claudiomiro/src/commands/loop-fixes/index.test.js","startTime":1764343038036,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["config command","CONFIG_FILE and PACKAGE_ROOT"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"config command CONFIG_FILE and PACKAGE_ROOT should use package root for config file","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should use package root for config file"},{"ancestorTitles":["config command","CONFIG_SCHEMA"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"config command CONFIG_SCHEMA should define CLAUDIOMIRO_LOCAL_LLM","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should define CLAUDIOMIRO_LOCAL_LLM"},{"ancestorTitles":["config command","CONFIG_SCHEMA"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"config command CONFIG_SCHEMA should define OLLAMA_HOST","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should define OLLAMA_HOST"},{"ancestorTitles":["config command","CONFIG_SCHEMA"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"config command CONFIG_SCHEMA should define OLLAMA_PORT","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should define OLLAMA_PORT"},{"ancestorTitles":["config command","CONFIG_SCHEMA"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"config command CONFIG_SCHEMA should define CLAUDIOMIRO_EXECUTOR","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should define CLAUDIOMIRO_EXECUTOR"},{"ancestorTitles":["config command","loadConfig"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"config command loadConfig should return empty object when file does not exist","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return empty object when file does not exist"},{"ancestorTitles":["config command","loadConfig"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"config command loadConfig should return parsed config when file exists","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return parsed config when file exists"},{"ancestorTitles":["config command","loadConfig"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"config command loadConfig should return empty object on parse error","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return empty object on parse error"},{"ancestorTitles":["config command","saveConfig"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"config command saveConfig should write config as JSON to package root","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should write config as JSON to package root"},{"ancestorTitles":["config command","applyConfigToEnv"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"config command applyConfigToEnv should set environment variables from config","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should set environment variables from config"},{"ancestorTitles":["config command","applyConfigToEnv"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"config command applyConfigToEnv should skip empty values","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should skip empty values"},{"ancestorTitles":["config command","applyConfigToEnv"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"config command applyConfigToEnv should convert numbers to strings","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should convert numbers to strings"},{"ancestorTitles":["config command","run"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"config command run should display header","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should display header"},{"ancestorTitles":["config command","run"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"config command run should handle quick set via args","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle quick set via args"},{"ancestorTitles":["config command","run"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"config command run should view configuration","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should view configuration"},{"ancestorTitles":["config command","run"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"config command run should export configuration","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should export configuration"},{"ancestorTitles":["config command","run"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"config command run should reset configuration","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should reset configuration"},{"ancestorTitles":["config command","run"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"config command run should not reset if not confirmed","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should not reset if not confirmed"},{"ancestorTitles":["config command","run"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"config command run should edit configuration","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should edit configuration"},{"ancestorTitles":["config command","run"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"config command run should handle Ctrl+C gracefully","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle Ctrl+C gracefully"}],"endTime":1764343038164,"message":"","name":"/Users/samuelfajreldines/Desenvolvimento/claudiomiro/src/commands/config/index.test.js","startTime":1764343038098,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["research-indexer","createEmptyIndex"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"research-indexer createEmptyIndex should create empty index with correct structure","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should create empty index with correct structure"},{"ancestorTitles":["research-indexer","getIndexPath"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"research-indexer getIndexPath should create cache directory if not exists","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should create cache directory if not exists"},{"ancestorTitles":["research-indexer","getIndexPath"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"research-indexer getIndexPath should return correct index file path","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return correct index file path"},{"ancestorTitles":["research-indexer","loadResearchIndex"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"research-indexer loadResearchIndex should return empty index if file does not exist","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return empty index if file does not exist"},{"ancestorTitles":["research-indexer","loadResearchIndex"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"research-indexer loadResearchIndex should load index from file","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should load index from file"},{"ancestorTitles":["research-indexer","saveResearchIndex"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"research-indexer saveResearchIndex should write index to file with timestamp","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should write index to file with timestamp"},{"ancestorTitles":["research-indexer","extractTopics"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"research-indexer extractTopics should extract authentication topics","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should extract authentication topics"},{"ancestorTitles":["research-indexer","extractTopics"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"research-indexer extractTopics should extract multiple topics","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should extract multiple topics"},{"ancestorTitles":["research-indexer","extractTopics"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"research-indexer extractTopics should return empty array for irrelevant content","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return empty array for irrelevant content"},{"ancestorTitles":["research-indexer","extractTopics"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"research-indexer extractTopics should not have duplicate topics","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should not have duplicate topics"},{"ancestorTitles":["research-indexer","calculateSimilarity"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"research-indexer calculateSimilarity should return 1 for identical topics","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return 1 for identical topics"},{"ancestorTitles":["research-indexer","calculateSimilarity"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"research-indexer calculateSimilarity should return 0 for no overlap","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return 0 for no overlap"},{"ancestorTitles":["research-indexer","calculateSimilarity"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"research-indexer calculateSimilarity should return partial similarity for partial overlap","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return partial similarity for partial overlap"},{"ancestorTitles":["research-indexer","calculateSimilarity"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"research-indexer calculateSimilarity should return 0 for empty arrays","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should return 0 for empty arrays"},{"ancestorTitles":["research-indexer","indexResearch"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"research-indexer indexResearch should index task research with topics","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should index task research with topics"},{"ancestorTitles":["research-indexer","findSimilarResearch"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"research-indexer findSimilarResearch should return null if no research indexed","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return null if no research indexed"},{"ancestorTitles":["research-indexer","findSimilarResearch"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"research-indexer findSimilarResearch should find similar research based on topics","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should find similar research based on topics"},{"ancestorTitles":["research-indexer","findSimilarResearch"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"research-indexer findSimilarResearch should return null if similarity below threshold","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return null if similarity below threshold"},{"ancestorTitles":["research-indexer","getReusableResearch"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"research-indexer getReusableResearch should return null if no similar research","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return null if no similar research"},{"ancestorTitles":["research-indexer","getReusableResearch"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"research-indexer getReusableResearch should return research with adaptation note if highly similar","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"status":"passed","title":"should return research with adaptation note if highly similar"},{"ancestorTitles":["research-indexer","clearResearchIndex"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"research-indexer clearResearchIndex should delete index file if exists","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should delete index file if exists"},{"ancestorTitles":["research-indexer","clearResearchIndex"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"research-indexer clearResearchIndex should do nothing if index does not exist","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should do nothing if index does not exist"}],"endTime":1764343038216,"message":"","name":"/Users/samuelfajreldines/Desenvolvimento/claudiomiro/src/shared/services/research-manager/research-indexer.test.js","startTime":1764343038168,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["step8","step8"],"duration":3,"failureDetails":[],"failureMessages":[],"fullName":"step8 step8 should execute commit/push and exit successfully","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"status":"passed","title":"should execute commit/push and exit successfully"},{"ancestorTitles":["step8","step8"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"step8 step8 should call smartCommit without push and PR when shouldPush is false","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should call smartCommit without push and PR when shouldPush is false"},{"ancestorTitles":["step8","step8"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"step8 step8 should call smartCommit with push and PR when shouldPush is true","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should call smartCommit with push and PR when shouldPush is true"},{"ancestorTitles":["step8","step8"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"step8 step8 should create done.txt with correct content","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should create done.txt with correct content"},{"ancestorTitles":["step8","step8"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"step8 step8 should log success message with folder path","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should log success message with folder path"},{"ancestorTitles":["step8","step8"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"step8 step8 should log shell method when commit via shell","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should log shell method when commit via shell"},{"ancestorTitles":["step8","step8"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"step8 step8 should log claude method when commit via Claude","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should log claude method when commit via Claude"},{"ancestorTitles":["step8","step8"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"step8 step8 should warn and continue when smartCommit fails","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should warn and continue when smartCommit fails"},{"ancestorTitles":["step8","step8"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"step8 step8 should call process.exit with code 0","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should call process.exit with code 0"},{"ancestorTitles":["step8","step8"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"step8 step8 should NOT write done.txt when commit fails","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should NOT write done.txt when commit fails"},{"ancestorTitles":["step8","step8"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"step8 step8 should handle tasks parameter (even though not used)","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should handle tasks parameter (even though not used)"}],"endTime":1764343038287,"message":"","name":"/Users/samuelfajreldines/Desenvolvimento/claudiomiro/src/commands/task-executor/steps/step8/index.test.js","startTime":1764343038227,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["dependency-parser","parseDependencies"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"dependency-parser parseDependencies should parse @dependencies with brackets","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should parse @dependencies with brackets"},{"ancestorTitles":["dependency-parser","parseDependencies"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"dependency-parser parseDependencies should parse @dependencies without brackets","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should parse @dependencies without brackets"},{"ancestorTitles":["dependency-parser","parseDependencies"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"dependency-parser parseDependencies should be case-insensitive","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should be case-insensitive"},{"ancestorTitles":["dependency-parser","parseDependencies"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"dependency-parser parseDependencies should handle \"none\" value","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle \"none\" value"},{"ancestorTitles":["dependency-parser","parseDependencies"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"dependency-parser parseDependencies should handle empty brackets","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle empty brackets"},{"ancestorTitles":["dependency-parser","parseDependencies"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"dependency-parser parseDependencies should filter invalid task names","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should filter invalid task names"},{"ancestorTitles":["dependency-parser","parseDependencies"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"dependency-parser parseDependencies should handle subtask format","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle subtask format"},{"ancestorTitles":["dependency-parser","parseDependencies"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"dependency-parser parseDependencies should return empty array for no dependencies","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return empty array for no dependencies"},{"ancestorTitles":["dependency-parser","parseDependencies"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"dependency-parser parseDependencies should handle empty content","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle empty content"},{"ancestorTitles":["dependency-parser","parseDependsOn"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"dependency-parser parseDependsOn should parse \"Depends on:\" format","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should parse \"Depends on:\" format"},{"ancestorTitles":["dependency-parser","parseDependsOn"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"dependency-parser parseDependsOn should parse \"Dependencies:\" format","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should parse \"Dependencies:\" format"},{"ancestorTitles":["dependency-parser","parseDependsOn"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"dependency-parser parseDependsOn should parse \"Requires:\" format","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should parse \"Requires:\" format"},{"ancestorTitles":["dependency-parser","parseDependsOn"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"dependency-parser parseDependsOn should parse \"Blocked by:\" format","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should parse \"Blocked by:\" format"},{"ancestorTitles":["dependency-parser","parseDependsOn"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"dependency-parser parseDependsOn should deduplicate results","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should deduplicate results"},{"ancestorTitles":["dependency-parser","extractTaskReferences"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"dependency-parser extractTaskReferences should find all TASK references","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should find all TASK references"},{"ancestorTitles":["dependency-parser","extractTaskReferences"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"dependency-parser extractTaskReferences should deduplicate references","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should deduplicate references"},{"ancestorTitles":["dependency-parser","extractTaskReferences"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"dependency-parser extractTaskReferences should handle subtask format","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle subtask format"},{"ancestorTitles":["dependency-parser","getAllDependencies"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"dependency-parser getAllDependencies should combine explicit dependencies","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should combine explicit dependencies"},{"ancestorTitles":["dependency-parser","getAllDependencies"],"duration":13,"failureDetails":[],"failureMessages":[],"fullName":"dependency-parser getAllDependencies should separate explicit and inferred","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should separate explicit and inferred"},{"ancestorTitles":["dependency-parser","validateDependencyGraph"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"dependency-parser validateDependencyGraph should validate acyclic graph","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should validate acyclic graph"},{"ancestorTitles":["dependency-parser","validateDependencyGraph"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"dependency-parser validateDependencyGraph should detect simple cycle","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should detect simple cycle"},{"ancestorTitles":["dependency-parser","validateDependencyGraph"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"dependency-parser validateDependencyGraph should detect complex cycle","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should detect complex cycle"},{"ancestorTitles":["dependency-parser","validateDependencyGraph"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"dependency-parser validateDependencyGraph should handle empty graph","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle empty graph"},{"ancestorTitles":["dependency-parser","validateDependencyGraph"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"dependency-parser validateDependencyGraph should handle self-dependency","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle self-dependency"},{"ancestorTitles":["dependency-parser","getTopologicalOrder"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"dependency-parser getTopologicalOrder should return correct order for linear dependencies","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should return correct order for linear dependencies"},{"ancestorTitles":["dependency-parser","getTopologicalOrder"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"dependency-parser getTopologicalOrder should return correct order for diamond dependencies","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"status":"passed","title":"should return correct order for diamond dependencies"},{"ancestorTitles":["dependency-parser","getTopologicalOrder"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"dependency-parser getTopologicalOrder should return null for cyclic graph","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return null for cyclic graph"},{"ancestorTitles":["dependency-parser","getTopologicalOrder"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"dependency-parser getTopologicalOrder should handle independent tasks","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle independent tasks"}],"endTime":1764343038361,"message":"","name":"/Users/samuelfajreldines/Desenvolvimento/claudiomiro/src/shared/services/local-llm/fallbacks/dependency-parser.test.js","startTime":1764343038298,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["generate-context","generateContextFile"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"generate-context generateContextFile should skip if TODO.md does not exist","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should skip if TODO.md does not exist"},{"ancestorTitles":["generate-context","generateContextFile"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"generate-context generateContextFile should skip if task is not fully implemented","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should skip if task is not fully implemented"},{"ancestorTitles":["generate-context","generateContextFile"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"generate-context generateContextFile should generate CONTEXT.md when task is fully implemented","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should generate CONTEXT.md when task is fully implemented"},{"ancestorTitles":["generate-context","generateContextFile"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"generate-context generateContextFile should extract modified files from TODO.md","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should extract modified files from TODO.md"},{"ancestorTitles":["generate-context","generateContextFile"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"generate-context generateContextFile should include RESEARCH.md strategy if available","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should include RESEARCH.md strategy if available"},{"ancestorTitles":["generate-context","generateContextFile"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"generate-context generateContextFile should handle missing info.json gracefully","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle missing info.json gracefully"}],"endTime":1764343038421,"message":"","name":"/Users/samuelfajreldines/Desenvolvimento/claudiomiro/src/commands/task-executor/steps/step5/generate-context.test.js","startTime":1764343038378,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["calculateProgress","Edge Cases"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"calculateProgress Edge Cases returns 0 for zero tasks (empty object)","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"returns 0 for zero tasks (empty object)"},{"ancestorTitles":["calculateProgress","Edge Cases"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"calculateProgress Edge Cases returns 0 for null input","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"returns 0 for null input"},{"ancestorTitles":["calculateProgress","Edge Cases"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"calculateProgress Edge Cases returns 0 for undefined input","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"returns 0 for undefined input"},{"ancestorTitles":["calculateProgress","Edge Cases"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"calculateProgress Edge Cases returns 0 for non-object input","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"returns 0 for non-object input"},{"ancestorTitles":["calculateProgress","Step-based progress"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"calculateProgress Step-based progress returns 0% when no steps completed","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"returns 0% when no steps completed"},{"ancestorTitles":["calculateProgress","Step-based progress"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"calculateProgress Step-based progress counts steps completed for running tasks","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"counts steps completed for running tasks"},{"ancestorTitles":["calculateProgress","Step-based progress"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"calculateProgress Step-based progress counts completed tasks as all steps finished","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"counts completed tasks as all steps finished"},{"ancestorTitles":["calculateProgress","Step-based progress"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"calculateProgress Step-based progress counts failed tasks based on the last recorded step","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"counts failed tasks based on the last recorded step"},{"ancestorTitles":["calculateProgress","Step-based progress"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"calculateProgress Step-based progress returns 100% when every task is completed","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"returns 100% when every task is completed"},{"ancestorTitles":["calculateProgress","Step-based progress"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"calculateProgress Step-based progress ignores steps that are not recognised","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"ignores steps that are not recognised"},{"ancestorTitles":["calculateProgress","Rounding behavior"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"calculateProgress Rounding behavior rounds down when fractional part is under .5","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"rounds down when fractional part is under .5"},{"ancestorTitles":["calculateProgress","Rounding behavior"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"calculateProgress Rounding behavior rounds up when fractional part is .5 or higher","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"rounds up when fractional part is .5 or higher"},{"ancestorTitles":["calculateProgress","Pure function behaviour"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"calculateProgress Pure function behaviour does not modify input object","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"does not modify input object"},{"ancestorTitles":["calculateProgress","Pure function behaviour"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"calculateProgress Pure function behaviour returns same result for repeated calls with same input","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"returns same result for repeated calls with same input"},{"ancestorTitles":["calculateProgress","Single task scenarios"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"calculateProgress Single task scenarios returns 100% for a completed task","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"returns 100% for a completed task"},{"ancestorTitles":["calculateProgress","Single task scenarios"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"calculateProgress Single task scenarios returns 67% for a task running Step 4","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"returns 67% for a task running Step 4"},{"ancestorTitles":["calculateProgress","Single task scenarios"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"calculateProgress Single task scenarios returns 33% for a task at Step 3","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"returns 33% for a task at Step 3"},{"ancestorTitles":["calculateProgress","Single task scenarios"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"calculateProgress Single task scenarios returns 0% for a task at Step 2","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"returns 0% for a task at Step 2"},{"ancestorTitles":["calculateProgress","Single task scenarios"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"calculateProgress Single task scenarios returns 0% for a pending task","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"returns 0% for a pending task"}],"endTime":1764343038476,"message":"","name":"/Users/samuelfajreldines/Desenvolvimento/claudiomiro/src/commands/task-executor/utils/progress-calculator.test.js","startTime":1764343038423,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["generate-research","generateResearchFile"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"generate-research generateResearchFile should skip if RESEARCH.md already exists","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should skip if RESEARCH.md already exists"},{"ancestorTitles":["generate-research","generateResearchFile"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"generate-research generateResearchFile should skip if TODO.md does not exist","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should skip if TODO.md does not exist"},{"ancestorTitles":["generate-research","generateResearchFile"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"generate-research generateResearchFile should generate RESEARCH.md when TODO.md exists and RESEARCH.md does not","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should generate RESEARCH.md when TODO.md exists and RESEARCH.md does not"},{"ancestorTitles":["generate-research","generateResearchFile"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"generate-research generateResearchFile should validate RESEARCH.md was created","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should validate RESEARCH.md was created"},{"ancestorTitles":["generate-research","generateResearchFile"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"generate-research generateResearchFile should validate RESEARCH.md has minimum content","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should validate RESEARCH.md has minimum content"},{"ancestorTitles":["generate-research","generateResearchFile"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"generate-research generateResearchFile should warn and continue if research fails","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should warn and continue if research fails"}],"endTime":1764343038536,"message":"","name":"/Users/samuelfajreldines/Desenvolvimento/claudiomiro/src/commands/task-executor/steps/step5/generate-research.test.js","startTime":1764343038480,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["step1","step1"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"step1 step1 should skip if AI_PROMPT.md already exists","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should skip if AI_PROMPT.md already exists"},{"ancestorTitles":["step1","step1"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"step1 step1 should generate AI_PROMPT.md when it does not exist","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"status":"passed","title":"should generate AI_PROMPT.md when it does not exist"},{"ancestorTitles":["step1","step1"],"duration":9,"failureDetails":[],"failureMessages":[],"fullName":"step1 step1 should throw error if AI_PROMPT.md not created after execution","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"status":"passed","title":"should throw error if AI_PROMPT.md not created after execution"},{"ancestorTitles":["step1","step1"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"step1 step1 should handle branch step parameter (sameBranch = true)","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should handle branch step parameter (sameBranch = true)"},{"ancestorTitles":["step1","step1"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"step1 step1 should handle missing INITIAL_PROMPT.md gracefully","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle missing INITIAL_PROMPT.md gracefully"}],"endTime":1764343038615,"message":"","name":"/Users/samuelfajreldines/Desenvolvimento/claudiomiro/src/commands/task-executor/steps/step1/index.test.js","startTime":1764343038540,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["State","setFolder"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"State setFolder should set folder and claudiomiro folder paths","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should set folder and claudiomiro folder paths"},{"ancestorTitles":["State","setFolder"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"State setFolder should resolve relative paths","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should resolve relative paths"},{"ancestorTitles":["State","cacheFolder"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"State cacheFolder should return cache folder path","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return cache folder path"},{"ancestorTitles":["State","initializeCache"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"State initializeCache should do nothing if claudiomiro folder not set","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should do nothing if claudiomiro folder not set"},{"ancestorTitles":["State","initializeCache"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"State initializeCache should create cache folder if it does not exist","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should create cache folder if it does not exist"},{"ancestorTitles":["State","initializeCache"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"State initializeCache should not create cache folder if it already exists","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should not create cache folder if it already exists"},{"ancestorTitles":["State","hasCacheFolder"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"State hasCacheFolder should return true if cache folder exists","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should return true if cache folder exists"},{"ancestorTitles":["State","hasCacheFolder"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"State hasCacheFolder should return false if cache folder does not exist","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return false if cache folder does not exist"},{"ancestorTitles":["State","setExecutorType"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"State setExecutorType should set valid executor type","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"status":"passed","title":"should set valid executor type"},{"ancestorTitles":["State","setExecutorType"],"duration":4,"failureDetails":[],"failureMessages":[],"fullName":"State setExecutorType should throw error for invalid executor type","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should throw error for invalid executor type"},{"ancestorTitles":["State","executorType"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"State executorType should default to claude","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should default to claude"}],"endTime":1764343038666,"message":"","name":"/Users/samuelfajreldines/Desenvolvimento/claudiomiro/src/shared/config/state.test.js","startTime":1764343038619,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["completion-detector","isFullyImplemented"],"duration":6,"failureDetails":[],"failureMessages":[],"fullName":"completion-detector isFullyImplemented should return true for \"Fully implemented: YES\"","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return true for \"Fully implemented: YES\""},{"ancestorTitles":["completion-detector","isFullyImplemented"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"completion-detector isFullyImplemented should return true for \"Fully implemented: yes\" (lowercase)","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return true for \"Fully implemented: yes\" (lowercase)"},{"ancestorTitles":["completion-detector","isFullyImplemented"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"completion-detector isFullyImplemented should return true for \"Status: Complete\"","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return true for \"Status: Complete\""},{"ancestorTitles":["completion-detector","isFullyImplemented"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"completion-detector isFullyImplemented should return true for \"Status: Done\"","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return true for \"Status: Done\""},{"ancestorTitles":["completion-detector","isFullyImplemented"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"completion-detector isFullyImplemented should return true for \"[x] Fully implemented\" checkbox","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return true for \"[x] Fully implemented\" checkbox"},{"ancestorTitles":["completion-detector","isFullyImplemented"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"completion-detector isFullyImplemented should return false for \"Fully implemented: NO\"","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return false for \"Fully implemented: NO\""},{"ancestorTitles":["completion-detector","isFullyImplemented"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"completion-detector isFullyImplemented should return false for \"Status: Pending\"","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return false for \"Status: Pending\""},{"ancestorTitles":["completion-detector","isFullyImplemented"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"completion-detector isFullyImplemented should return false for \"Status: In Progress\"","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return false for \"Status: In Progress\""},{"ancestorTitles":["completion-detector","isFullyImplemented"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"completion-detector isFullyImplemented should return false for empty content","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should return false for empty content"},{"ancestorTitles":["completion-detector","isFullyImplemented"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"completion-detector isFullyImplemented should check only first 20 lines for status","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should check only first 20 lines for status"},{"ancestorTitles":["completion-detector","hasApprovedCodeReview"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"completion-detector hasApprovedCodeReview should return true for approved status section","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return true for approved status section"},{"ancestorTitles":["completion-detector","hasApprovedCodeReview"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"completion-detector hasApprovedCodeReview should return true for LGTM in status","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return true for LGTM in status"},{"ancestorTitles":["completion-detector","hasApprovedCodeReview"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"completion-detector hasApprovedCodeReview should return true for \"Verdict: Approved\"","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return true for \"Verdict: Approved\""},{"ancestorTitles":["completion-detector","hasApprovedCodeReview"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"completion-detector hasApprovedCodeReview should return false for rejected status","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return false for rejected status"},{"ancestorTitles":["completion-detector","hasApprovedCodeReview"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"completion-detector hasApprovedCodeReview should return false for failed status","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return false for failed status"},{"ancestorTitles":["completion-detector","hasApprovedCodeReview"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"completion-detector hasApprovedCodeReview should return false for empty content","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should return false for empty content"},{"ancestorTitles":["completion-detector","getCheckboxCompletion"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"completion-detector getCheckboxCompletion should count checked and unchecked boxes","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should count checked and unchecked boxes"},{"ancestorTitles":["completion-detector","getCheckboxCompletion"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"completion-detector getCheckboxCompletion should return 100% for all checked","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return 100% for all checked"},{"ancestorTitles":["completion-detector","getCheckboxCompletion"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"completion-detector getCheckboxCompletion should return 0% for none checked","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return 0% for none checked"},{"ancestorTitles":["completion-detector","getCheckboxCompletion"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"completion-detector getCheckboxCompletion should handle no checkboxes","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle no checkboxes"},{"ancestorTitles":["completion-detector","getCheckboxCompletion"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"completion-detector getCheckboxCompletion should handle empty content","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle empty content"},{"ancestorTitles":["completion-detector","hasPendingTodos"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"completion-detector hasPendingTodos should detect TODO markers","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should detect TODO markers"},{"ancestorTitles":["completion-detector","hasPendingTodos"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"completion-detector hasPendingTodos should detect FIXME markers","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should detect FIXME markers"},{"ancestorTitles":["completion-detector","hasPendingTodos"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"completion-detector hasPendingTodos should detect unchecked checkboxes","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should detect unchecked checkboxes"},{"ancestorTitles":["completion-detector","hasPendingTodos"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"completion-detector hasPendingTodos should detect \"pending\" keyword","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should detect \"pending\" keyword"},{"ancestorTitles":["completion-detector","hasPendingTodos"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"completion-detector hasPendingTodos should detect \"not implemented\" phrase","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should detect \"not implemented\" phrase"},{"ancestorTitles":["completion-detector","hasPendingTodos"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"completion-detector hasPendingTodos should return false for completed content","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return false for completed content"},{"ancestorTitles":["completion-detector","hasPendingTodos"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"completion-detector hasPendingTodos should handle empty content","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle empty content"},{"ancestorTitles":["completion-detector","analyzeCompletion"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"completion-detector analyzeCompletion should return high confidence for completed task","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should return high confidence for completed task"},{"ancestorTitles":["completion-detector","analyzeCompletion"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"completion-detector analyzeCompletion should return low confidence for incomplete task","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should return low confidence for incomplete task"},{"ancestorTitles":["completion-detector","analyzeCompletion"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"completion-detector analyzeCompletion should include reason","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should include reason"}],"endTime":1764343038723,"message":"","name":"/Users/samuelfajreldines/Desenvolvimento/claudiomiro/src/shared/services/local-llm/fallbacks/completion-detector.test.js","startTime":1764343038668,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["src/commands/fix-command/index.js","run()"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"src/commands/fix-command/index.js run() should parse --fix-command=\"npm test\" correctly","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should parse --fix-command=\"npm test\" correctly"},{"ancestorTitles":["src/commands/fix-command/index.js","run()"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"src/commands/fix-command/index.js run() should parse --fix-command with equals sign in command","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should parse --fix-command with equals sign in command"},{"ancestorTitles":["src/commands/fix-command/index.js","run()"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"src/commands/fix-command/index.js run() should parse --limit=5 correctly","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should parse --limit=5 correctly"},{"ancestorTitles":["src/commands/fix-command/index.js","run()"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"src/commands/fix-command/index.js run() should set maxAttempts to Infinity when --no-limit is passed","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should set maxAttempts to Infinity when --no-limit is passed"},{"ancestorTitles":["src/commands/fix-command/index.js","run()"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"src/commands/fix-command/index.js run() should default maxAttempts to 20 when no limit flag is provided","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should default maxAttempts to 20 when no limit flag is provided"},{"ancestorTitles":["src/commands/fix-command/index.js","run()"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"src/commands/fix-command/index.js run() should default folder to process.cwd() when not provided","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should default folder to process.cwd() when not provided"},{"ancestorTitles":["src/commands/fix-command/index.js","run()"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"src/commands/fix-command/index.js run() should extract folder from args correctly","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should extract folder from args correctly"},{"ancestorTitles":["src/commands/fix-command/index.js","run()"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"src/commands/fix-command/index.js run() should log info about the command being fixed","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should log info about the command being fixed"},{"ancestorTitles":["src/commands/fix-command/index.js","run()"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"src/commands/fix-command/index.js run() should log \"no limit\" when --no-limit is passed","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should log \"no limit\" when --no-limit is passed"},{"ancestorTitles":["src/commands/fix-command/index.js","run()"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"src/commands/fix-command/index.js run() should handle null fixCommandText gracefully","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle null fixCommandText gracefully"},{"ancestorTitles":["src/commands/fix-command/index.js","run()"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"src/commands/fix-command/index.js run() should strip quotes from command text","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should strip quotes from command text"},{"ancestorTitles":["src/commands/fix-command/index.js","exports"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"src/commands/fix-command/index.js exports should export run function","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should export run function"}],"endTime":1764343038780,"message":"","name":"/Users/samuelfajreldines/Desenvolvimento/claudiomiro/src/commands/fix-command/index.test.js","startTime":1764343038726,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["fix-command","executeCommand"],"duration":5,"failureDetails":[],"failureMessages":[],"fullName":"fix-command executeCommand should spawn command with correct parameters on Linux","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should spawn command with correct parameters on Linux"},{"ancestorTitles":["fix-command","executeCommand"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"fix-command executeCommand should spawn command with correct parameters on Windows","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should spawn command with correct parameters on Windows"},{"ancestorTitles":["fix-command","executeCommand"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"fix-command executeCommand should initialize state folder if not set","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should initialize state folder if not set"},{"ancestorTitles":["fix-command","executeCommand"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"fix-command executeCommand should create claudiomiro folder if it does not exist","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should create claudiomiro folder if it does not exist"},{"ancestorTitles":["fix-command","executeCommand"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"fix-command executeCommand should create log stream with correct path","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should create log stream with correct path"},{"ancestorTitles":["fix-command","executeCommand"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"fix-command executeCommand should write log headers with timestamp","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should write log headers with timestamp"},{"ancestorTitles":["fix-command","executeCommand"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"fix-command executeCommand should handle stdout data","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should handle stdout data"},{"ancestorTitles":["fix-command","executeCommand"],"duration":3,"failureDetails":[],"failureMessages":[],"fullName":"fix-command executeCommand should handle stderr data","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should handle stderr data"},{"ancestorTitles":["fix-command","executeCommand"],"duration":30005,"failureDetails":[{},{"message":"thrown: \"Exceeded timeout of 30000 ms for a test.\nAdd a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout.\""}],"failureMessages":["ReferenceError: logger is not defined\n    at logger (/Users/samuelfajreldines/Desenvolvimento/claudiomiro/src/commands/fix-command/executor.test.js:273:28)\n    at processTicksAndRejections (node:internal/process/task_queues:105:5)","Error: thrown: \"Exceeded timeout of 30000 ms for a test.\nAdd a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout.\"\n    at test (/Users/samuelfajreldines/Desenvolvimento/claudiomiro/src/commands/fix-command/executor.test.js:262:9)\n    at _dispatchDescribe (/Users/samuelfajreldines/Desenvolvimento/claudiomiro/node_modules/jest-circus/build/index.js:91:26)\n    at describe (/Users/samuelfajreldines/Desenvolvimento/claudiomiro/node_modules/jest-circus/build/index.js:55:5)\n    at describe (/Users/samuelfajreldines/Desenvolvimento/claudiomiro/src/commands/fix-command/executor.test.js:130:5)\n    at _dispatchDescribe (/Users/samuelfajreldines/Desenvolvimento/claudiomiro/node_modules/jest-circus/build/index.js:91:26)\n    at describe (/Users/samuelfajreldines/Desenvolvimento/claudiomiro/node_modules/jest-circus/build/index.js:55:5)\n    at Object.describe (/Users/samuelfajreldines/Desenvolvimento/claudiomiro/src/commands/fix-command/executor.test.js:27:1)\n    at Runtime._execModule (/Users/samuelfajreldines/Desenvolvimento/claudiomiro/node_modules/jest-runtime/build/index.js:1439:24)\n    at Runtime._loadModule (/Users/samuelfajreldines/Desenvolvimento/claudiomiro/node_modules/jest-runtime/build/index.js:1022:12)\n    at Runtime.requireModule (/Users/samuelfajreldines/Desenvolvimento/claudiomiro/node_modules/jest-runtime/build/index.js:882:12)\n    at jestAdapter (/Users/samuelfajreldines/Desenvolvimento/claudiomiro/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:77:13)\n    at processTicksAndRejections (node:internal/process/task_queues:105:5)\n    at runTestInternal (/Users/samuelfajreldines/Desenvolvimento/claudiomiro/node_modules/jest-runner/build/runTest.js:367:16)\n    at runTest (/Users/samuelfajreldines/Desenvolvimento/claudiomiro/node_modules/jest-runner/build/runTest.js:444:34)\n    at Object.worker (/Users/samuelfajreldines/Desenvolvimento/claudiomiro/node_modules/jest-runner/build/testWorker.js:106:12)"],"fullName":"fix-command executeCommand should handle successful command execution","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"status":"failed","title":"should handle successful command execution"},{"ancestorTitles":["fix-command","executeCommand"],"duration":30015,"failureDetails":[{},{"message":"thrown: \"Exceeded timeout of 30000 ms for a test.\nAdd a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout.\""}],"failureMessages":["ReferenceError: logger is not defined\n    at logger (/Users/samuelfajreldines/Desenvolvimento/claudiomiro/src/commands/fix-command/executor.test.js:292:28)","Error: thrown: \"Exceeded timeout of 30000 ms for a test.\nAdd a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout.\"\n    at test (/Users/samuelfajreldines/Desenvolvimento/claudiomiro/src/commands/fix-command/executor.test.js:281:9)\n    at _dispatchDescribe (/Users/samuelfajreldines/Desenvolvimento/claudiomiro/node_modules/jest-circus/build/index.js:91:26)\n    at describe (/Users/samuelfajreldines/Desenvolvimento/claudiomiro/node_modules/jest-circus/build/index.js:55:5)\n    at describe (/Users/samuelfajreldines/Desenvolvimento/claudiomiro/src/commands/fix-command/executor.test.js:130:5)\n    at _dispatchDescribe (/Users/samuelfajreldines/Desenvolvimento/claudiomiro/node_modules/jest-circus/build/index.js:91:26)\n    at describe (/Users/samuelfajreldines/Desenvolvimento/claudiomiro/node_modules/jest-circus/build/index.js:55:5)\n    at Object.describe (/Users/samuelfajreldines/Desenvolvimento/claudiomiro/src/commands/fix-command/executor.test.js:27:1)\n    at Runtime._execModule (/Users/samuelfajreldines/Desenvolvimento/claudiomiro/node_modules/jest-runtime/build/index.js:1439:24)\n    at Runtime._loadModule (/Users/samuelfajreldines/Desenvolvimento/claudiomiro/node_modules/jest-runtime/build/index.js:1022:12)\n    at Runtime.requireModule (/Users/samuelfajreldines/Desenvolvimento/claudiomiro/node_modules/jest-runtime/build/index.js:882:12)\n    at jestAdapter (/Users/samuelfajreldines/Desenvolvimento/claudiomiro/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:77:13)\n    at processTicksAndRejections (node:internal/process/task_queues:105:5)\n    at runTestInternal (/Users/samuelfajreldines/Desenvolvimento/claudiomiro/node_modules/jest-runner/build/runTest.js:367:16)\n    at runTest (/Users/samuelfajreldines/Desenvolvimento/claudiomiro/node_modules/jest-runner/build/runTest.js:444:34)\n    at Object.worker (/Users/samuelfajreldines/Desenvolvimento/claudiomiro/node_modules/jest-runner/build/testWorker.js:106:12)"],"fullName":"fix-command executeCommand should handle failed command execution","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"status":"failed","title":"should handle failed command execution"},{"ancestorTitles":["fix-command","executeCommand"],"duration":30003,"failureDetails":[{},{"message":"thrown: \"Exceeded timeout of 30000 ms for a test.\nAdd a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout.\""}],"failureMessages":["ReferenceError: logger is not defined\n    at logger (/Users/samuelfajreldines/Desenvolvimento/claudiomiro/src/commands/fix-command/executor.test.js:311:28)","Error: thrown: \"Exceeded timeout of 30000 ms for a test.\nAdd a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout.\"\n    at test (/Users/samuelfajreldines/Desenvolvimento/claudiomiro/src/commands/fix-command/executor.test.js:300:9)\n    at _dispatchDescribe (/Users/samuelfajreldines/Desenvolvimento/claudiomiro/node_modules/jest-circus/build/index.js:91:26)\n    at describe (/Users/samuelfajreldines/Desenvolvimento/claudiomiro/node_modules/jest-circus/build/index.js:55:5)\n    at describe (/Users/samuelfajreldines/Desenvolvimento/claudiomiro/src/commands/fix-command/executor.test.js:130:5)\n    at _dispatchDescribe (/Users/samuelfajreldines/Desenvolvimento/claudiomiro/node_modules/jest-circus/build/index.js:91:26)\n    at describe (/Users/samuelfajreldines/Desenvolvimento/claudiomiro/node_modules/jest-circus/build/index.js:55:5)\n    at Object.describe (/Users/samuelfajreldines/Desenvolvimento/claudiomiro/src/commands/fix-command/executor.test.js:27:1)\n    at Runtime._execModule (/Users/samuelfajreldines/Desenvolvimento/claudiomiro/node_modules/jest-runtime/build/index.js:1439:24)\n    at Runtime._loadModule (/Users/samuelfajreldines/Desenvolvimento/claudiomiro/node_modules/jest-runtime/build/index.js:1022:12)\n    at Runtime.requireModule (/Users/samuelfajreldines/Desenvolvimento/claudiomiro/node_modules/jest-runtime/build/index.js:882:12)\n    at jestAdapter (/Users/samuelfajreldines/Desenvolvimento/claudiomiro/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:77:13)\n    at processTicksAndRejections (node:internal/process/task_queues:105:5)\n    at runTestInternal (/Users/samuelfajreldines/Desenvolvimento/claudiomiro/node_modules/jest-runner/build/runTest.js:367:16)\n    at runTest (/Users/samuelfajreldines/Desenvolvimento/claudiomiro/node_modules/jest-runner/build/runTest.js:444:34)\n    at Object.worker (/Users/samuelfajreldines/Desenvolvimento/claudiomiro/node_modules/jest-runner/build/testWorker.js:106:12)"],"fullName":"fix-command executeCommand should handle process error","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"status":"failed","title":"should handle process error"},{"ancestorTitles":["fix-command","executeCommand"],"duration":3,"failureDetails":[],"failureMessages":[],"fullName":"fix-command executeCommand should wrap long lines correctly","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should wrap long lines correctly"},{"ancestorTitles":["fix-command","executeCommand"],"duration":30011,"failureDetails":[{},{"message":"thrown: \"Exceeded timeout of 30000 ms for a test.\nAdd a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout.\""}],"failureMessages":["ReferenceError: logger is not defined\n    at logger (/Users/samuelfajreldines/Desenvolvimento/claudiomiro/src/commands/fix-command/executor.test.js:359:28)","Error: thrown: \"Exceeded timeout of 30000 ms for a test.\nAdd a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout.\"\n    at test (/Users/samuelfajreldines/Desenvolvimento/claudiomiro/src/commands/fix-command/executor.test.js:348:9)\n    at _dispatchDescribe (/Users/samuelfajreldines/Desenvolvimento/claudiomiro/node_modules/jest-circus/build/index.js:91:26)\n    at describe (/Users/samuelfajreldines/Desenvolvimento/claudiomiro/node_modules/jest-circus/build/index.js:55:5)\n    at describe (/Users/samuelfajreldines/Desenvolvimento/claudiomiro/src/commands/fix-command/executor.test.js:130:5)\n    at _dispatchDescribe (/Users/samuelfajreldines/Desenvolvimento/claudiomiro/node_modules/jest-circus/build/index.js:91:26)\n    at describe (/Users/samuelfajreldines/Desenvolvimento/claudiomiro/node_modules/jest-circus/build/index.js:55:5)\n    at Object.describe (/Users/samuelfajreldines/Desenvolvimento/claudiomiro/src/commands/fix-command/executor.test.js:27:1)\n    at Runtime._execModule (/Users/samuelfajreldines/Desenvolvimento/claudiomiro/node_modules/jest-runtime/build/index.js:1439:24)\n    at Runtime._loadModule (/Users/samuelfajreldines/Desenvolvimento/claudiomiro/node_modules/jest-runtime/build/index.js:1022:12)\n    at Runtime.requireModule (/Users/samuelfajreldines/Desenvolvimento/claudiomiro/node_modules/jest-runtime/build/index.js:882:12)\n    at jestAdapter (/Users/samuelfajreldines/Desenvolvimento/claudiomiro/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:77:13)\n    at processTicksAndRejections (node:internal/process/task_queues:105:5)\n    at runTestInternal (/Users/samuelfajreldines/Desenvolvimento/claudiomiro/node_modules/jest-runner/build/runTest.js:367:16)\n    at runTest (/Users/samuelfajreldines/Desenvolvimento/claudiomiro/node_modules/jest-runner/build/runTest.js:444:34)\n    at Object.worker (/Users/samuelfajreldines/Desenvolvimento/claudiomiro/node_modules/jest-runner/build/testWorker.js:106:12)"],"fullName":"fix-command executeCommand should stop spinner and log command execution","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"status":"failed","title":"should stop spinner and log command execution"},{"ancestorTitles":["fix-command","fixCommand"],"duration":8,"failureDetails":[],"failureMessages":[],"fullName":"fix-command fixCommand should succeed on first attempt and exit","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should succeed on first attempt and exit"},{"ancestorTitles":["fix-command","fixCommand"],"duration":28,"failureDetails":[{}],"failureMessages":["ReferenceError: logger is not defined\n    at Object.logger (/Users/samuelfajreldines/Desenvolvimento/claudiomiro/src/commands/fix-command/executor.test.js:463:20)"],"fullName":"fix-command fixCommand should attempt to fix command on failure","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"failed","title":"should attempt to fix command on failure"},{"ancestorTitles":["fix-command","fixCommand"],"duration":12,"failureDetails":[],"failureMessages":[],"fullName":"fix-command fixCommand should create claudiomiro folder if it does not exist","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should create claudiomiro folder if it does not exist"},{"ancestorTitles":["fix-command","fixCommand"],"duration":12,"failureDetails":[],"failureMessages":[],"fullName":"fix-command fixCommand should handle Claude execution error gracefully","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle Claude execution error gracefully"},{"ancestorTitles":["fix-command","fixCommand"],"duration":32,"failureDetails":[],"failureMessages":[],"fullName":"fix-command fixCommand should respect maxAttempts parameter","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should respect maxAttempts parameter"},{"ancestorTitles":["fix-command","fixCommand"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"fix-command fixCommand should handle zero maxAttempts","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle zero maxAttempts"},{"ancestorTitles":["fix-command","fixCommand"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"fix-command fixCommand should use correct command in error message","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should use correct command in error message"},{"ancestorTitles":["fix-command","fixCommand"],"duration":12,"failureDetails":[],"failureMessages":[],"fullName":"fix-command fixCommand should handle special characters in command","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle special characters in command"},{"ancestorTitles":["fix-command","fixCommand"],"duration":12,"failureDetails":[],"failureMessages":[],"fullName":"fix-command fixCommand should handle very long commands","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle very long commands"},{"ancestorTitles":["fix-command","Edge cases and error handling"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Edge cases and error handling should handle empty command","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle empty command"},{"ancestorTitles":["fix-command","Edge cases and error handling"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Edge cases and error handling should handle command with only whitespace","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle command with only whitespace"},{"ancestorTitles":["fix-command","Edge cases and error handling"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Edge cases and error handling should handle executeCommand throwing exception","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle executeCommand throwing exception"},{"ancestorTitles":["fix-command","Edge cases and error handling"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Edge cases and error handling should handle undefined/null command gracefully","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle undefined/null command gracefully"},{"ancestorTitles":["fix-command","Enhanced Platform-Specific Testing","Shell Selection and Command Formatting"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Enhanced Platform-Specific Testing Shell Selection and Command Formatting should use bash on Linux platform","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should use bash on Linux platform"},{"ancestorTitles":["fix-command","Enhanced Platform-Specific Testing","Shell Selection and Command Formatting"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Enhanced Platform-Specific Testing Shell Selection and Command Formatting should use bash on macOS platform","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should use bash on macOS platform"},{"ancestorTitles":["fix-command","Enhanced Platform-Specific Testing","Shell Selection and Command Formatting"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Enhanced Platform-Specific Testing Shell Selection and Command Formatting should use cmd.exe on Windows platform","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should use cmd.exe on Windows platform"},{"ancestorTitles":["fix-command","Enhanced Platform-Specific Testing","Shell Selection and Command Formatting"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Enhanced Platform-Specific Testing Shell Selection and Command Formatting should handle Windows path separators correctly","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle Windows path separators correctly"},{"ancestorTitles":["fix-command","Enhanced Platform-Specific Testing","Shell Selection and Command Formatting"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Enhanced Platform-Specific Testing Shell Selection and Command Formatting should handle Unix path separators correctly","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle Unix path separators correctly"},{"ancestorTitles":["fix-command","Enhanced Platform-Specific Testing","Platform-Specific Command Quoting"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Enhanced Platform-Specific Testing Platform-Specific Command Quoting should handle commands with single quotes on Unix systems","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle commands with single quotes on Unix systems"},{"ancestorTitles":["fix-command","Enhanced Platform-Specific Testing","Platform-Specific Command Quoting"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Enhanced Platform-Specific Testing Platform-Specific Command Quoting should handle commands with double quotes on Windows","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle commands with double quotes on Windows"},{"ancestorTitles":["fix-command","Enhanced Platform-Specific Testing","Platform-Specific Command Quoting"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Enhanced Platform-Specific Testing Platform-Specific Command Quoting should handle commands with escaped quotes on Unix","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle commands with escaped quotes on Unix"},{"ancestorTitles":["fix-command","Enhanced Platform-Specific Testing","Platform-Specific Command Quoting"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Enhanced Platform-Specific Testing Platform-Specific Command Quoting should handle environment variable syntax differences","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle environment variable syntax differences"},{"ancestorTitles":["fix-command","Enhanced Platform-Specific Testing","Platform-Specific Command Quoting"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Enhanced Platform-Specific Testing Platform-Specific Command Quoting should handle Windows environment variable syntax","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle Windows environment variable syntax"},{"ancestorTitles":["fix-command","Enhanced Platform-Specific Testing","Executable Handling and File Extensions"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Enhanced Platform-Specific Testing Executable Handling and File Extensions should handle Windows executable extensions","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle Windows executable extensions"},{"ancestorTitles":["fix-command","Enhanced Platform-Specific Testing","Executable Handling and File Extensions"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Enhanced Platform-Specific Testing Executable Handling and File Extensions should handle Unix executables without extensions","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle Unix executables without extensions"},{"ancestorTitles":["fix-command","Enhanced Platform-Specific Testing","Executable Handling and File Extensions"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Enhanced Platform-Specific Testing Executable Handling and File Extensions should handle shell script execution on Unix systems","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle shell script execution on Unix systems"},{"ancestorTitles":["fix-command","Enhanced Platform-Specific Testing","Executable Handling and File Extensions"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Enhanced Platform-Specific Testing Executable Handling and File Extensions should handle batch file execution on Windows","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle batch file execution on Windows"},{"ancestorTitles":["fix-command","Enhanced Platform-Specific Testing","Working Directory Handling"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Enhanced Platform-Specific Testing Working Directory Handling should handle Windows-style working directory paths","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle Windows-style working directory paths"},{"ancestorTitles":["fix-command","Enhanced Platform-Specific Testing","Working Directory Handling"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Enhanced Platform-Specific Testing Working Directory Handling should handle Unix-style working directory paths","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle Unix-style working directory paths"},{"ancestorTitles":["fix-command","Enhanced Platform-Specific Testing","Working Directory Handling"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Enhanced Platform-Specific Testing Working Directory Handling should handle relative working directories","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle relative working directories"},{"ancestorTitles":["fix-command","Enhanced Platform-Specific Testing","Platform-Specific Error Handling"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Enhanced Platform-Specific Testing Platform-Specific Error Handling should handle Windows file not found errors","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle Windows file not found errors"},{"ancestorTitles":["fix-command","Enhanced Platform-Specific Testing","Platform-Specific Error Handling"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Enhanced Platform-Specific Testing Platform-Specific Error Handling should handle Unix file not found errors","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle Unix file not found errors"},{"ancestorTitles":["fix-command","Enhanced Platform-Specific Testing","Platform-Specific Error Handling"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Enhanced Platform-Specific Testing Platform-Specific Error Handling should handle Windows permission denied errors","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle Windows permission denied errors"},{"ancestorTitles":["fix-command","Enhanced Platform-Specific Testing","Platform-Specific Error Handling"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Enhanced Platform-Specific Testing Platform-Specific Error Handling should handle Unix permission denied errors","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle Unix permission denied errors"},{"ancestorTitles":["fix-command","Complex Command Reconstruction Tests","Multi-Argument Commands with Flags"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Complex Command Reconstruction Tests Multi-Argument Commands with Flags should handle commands with multiple flags and arguments","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle commands with multiple flags and arguments"},{"ancestorTitles":["fix-command","Complex Command Reconstruction Tests","Multi-Argument Commands with Flags"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Complex Command Reconstruction Tests Multi-Argument Commands with Flags should handle commands with short and long flag combinations","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle commands with short and long flag combinations"},{"ancestorTitles":["fix-command","Complex Command Reconstruction Tests","Multi-Argument Commands with Flags"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Complex Command Reconstruction Tests Multi-Argument Commands with Flags should handle npm scripts with complex arguments","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle npm scripts with complex arguments"},{"ancestorTitles":["fix-command","Complex Command Reconstruction Tests","Nested and Escaped Quotes"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Complex Command Reconstruction Tests Nested and Escaped Quotes should handle commands with nested single quotes inside double quotes","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle commands with nested single quotes inside double quotes"},{"ancestorTitles":["fix-command","Complex Command Reconstruction Tests","Nested and Escaped Quotes"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Complex Command Reconstruction Tests Nested and Escaped Quotes should handle commands with escaped double quotes","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle commands with escaped double quotes"},{"ancestorTitles":["fix-command","Complex Command Reconstruction Tests","Nested and Escaped Quotes"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Complex Command Reconstruction Tests Nested and Escaped Quotes should handle commands with backticks","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle commands with backticks"},{"ancestorTitles":["fix-command","Complex Command Reconstruction Tests","Nested and Escaped Quotes"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Complex Command Reconstruction Tests Nested and Escaped Quotes should handle commands with complex nested quoting","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle commands with complex nested quoting"},{"ancestorTitles":["fix-command","Complex Command Reconstruction Tests","Special Characters and Symbols"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Complex Command Reconstruction Tests Special Characters and Symbols should handle commands with environment variable expansions","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle commands with environment variable expansions"},{"ancestorTitles":["fix-command","Complex Command Reconstruction Tests","Special Characters and Symbols"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Complex Command Reconstruction Tests Special Characters and Symbols should handle commands with redirection operators","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle commands with redirection operators"},{"ancestorTitles":["fix-command","Complex Command Reconstruction Tests","Special Characters and Symbols"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Complex Command Reconstruction Tests Special Characters and Symbols should handle commands with pipes and chaining","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle commands with pipes and chaining"},{"ancestorTitles":["fix-command","Complex Command Reconstruction Tests","Special Characters and Symbols"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Complex Command Reconstruction Tests Special Characters and Symbols should handle commands with wildcard patterns","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle commands with wildcard patterns"},{"ancestorTitles":["fix-command","Complex Command Reconstruction Tests","Special Characters and Symbols"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Complex Command Reconstruction Tests Special Characters and Symbols should handle commands with special shell characters","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle commands with special shell characters"},{"ancestorTitles":["fix-command","Complex Command Reconstruction Tests","Very Long Commands and Line Wrapping"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Complex Command Reconstruction Tests Very Long Commands and Line Wrapping should handle extremely long commands without breaking syntax","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle extremely long commands without breaking syntax"},{"ancestorTitles":["fix-command","Complex Command Reconstruction Tests","Very Long Commands and Line Wrapping"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Complex Command Reconstruction Tests Very Long Commands and Line Wrapping should handle commands with long file paths","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle commands with long file paths"},{"ancestorTitles":["fix-command","Complex Command Reconstruction Tests","Very Long Commands and Line Wrapping"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Complex Command Reconstruction Tests Very Long Commands and Line Wrapping should properly wrap long commands in console output","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should properly wrap long commands in console output"},{"ancestorTitles":["fix-command","Complex Command Reconstruction Tests","Command Sanitization and Security"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Complex Command Reconstruction Tests Command Sanitization and Security should handle potentially dangerous command characters safely","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle potentially dangerous command characters safely"},{"ancestorTitles":["fix-command","Complex Command Reconstruction Tests","Command Sanitization and Security"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Complex Command Reconstruction Tests Command Sanitization and Security should handle commands with command substitution","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle commands with command substitution"},{"ancestorTitles":["fix-command","Complex Command Reconstruction Tests","Command Sanitization and Security"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Complex Command Reconstruction Tests Command Sanitization and Security should handle arithmetic expressions","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle arithmetic expressions"},{"ancestorTitles":["fix-command","Complex Command Reconstruction Tests","Multi-line Commands and Scripts"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Complex Command Reconstruction Tests Multi-line Commands and Scripts should handle commands with line continuations","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle commands with line continuations"},{"ancestorTitles":["fix-command","Complex Command Reconstruction Tests","Multi-line Commands and Scripts"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Complex Command Reconstruction Tests Multi-line Commands and Scripts should handle commands with semicolon separators","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle commands with semicolon separators"},{"ancestorTitles":["fix-command","Complex Command Reconstruction Tests","Multi-line Commands and Scripts"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Complex Command Reconstruction Tests Multi-line Commands and Scripts should handle logical operators in commands","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle logical operators in commands"},{"ancestorTitles":["fix-command","Enhanced Retry Logic Testing","Retry Success Patterns"],"duration":33,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Enhanced Retry Logic Testing Retry Success Patterns should succeed after initial failure","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should succeed after initial failure"},{"ancestorTitles":["fix-command","Enhanced Retry Logic Testing","Retry Success Patterns"],"duration":55,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Enhanced Retry Logic Testing Retry Success Patterns should succeed after multiple failures","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should succeed after multiple failures"},{"ancestorTitles":["fix-command","Enhanced Retry Logic Testing","Retry Success Patterns"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Enhanced Retry Logic Testing Retry Success Patterns should succeed on last possible attempt","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should succeed on last possible attempt"},{"ancestorTitles":["fix-command","Enhanced Retry Logic Testing","Maximum Attempts Limit Enforcement"],"duration":34,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Enhanced Retry Logic Testing Maximum Attempts Limit Enforcement should stop after maxAttempts when all attempts fail","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should stop after maxAttempts when all attempts fail"},{"ancestorTitles":["fix-command","Enhanced Retry Logic Testing","Maximum Attempts Limit Enforcement"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Enhanced Retry Logic Testing Maximum Attempts Limit Enforcement should handle zero maxAttempts","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should handle zero maxAttempts"},{"ancestorTitles":["fix-command","Enhanced Retry Logic Testing","Maximum Attempts Limit Enforcement"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Enhanced Retry Logic Testing Maximum Attempts Limit Enforcement should handle negative maxAttempts gracefully","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle negative maxAttempts gracefully"},{"ancestorTitles":["fix-command","Enhanced Retry Logic Testing","Maximum Attempts Limit Enforcement"],"duration":110,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Enhanced Retry Logic Testing Maximum Attempts Limit Enforcement should respect large maxAttempts values","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should respect large maxAttempts values"},{"ancestorTitles":["fix-command","Enhanced Retry Logic Testing","Different Failure Types and Patterns"],"duration":21,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Enhanced Retry Logic Testing Different Failure Types and Patterns should handle command not found errors repeatedly","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should handle command not found errors repeatedly"},{"ancestorTitles":["fix-command","Enhanced Retry Logic Testing","Different Failure Types and Patterns"],"duration":33,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Enhanced Retry Logic Testing Different Failure Types and Patterns should handle permission denied errors repeatedly","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should handle permission denied errors repeatedly"},{"ancestorTitles":["fix-command","Enhanced Retry Logic Testing","Different Failure Types and Patterns"],"duration":22,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Enhanced Retry Logic Testing Different Failure Types and Patterns should handle timeout scenarios","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should handle timeout scenarios"},{"ancestorTitles":["fix-command","Enhanced Retry Logic Testing","Different Failure Types and Patterns"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Enhanced Retry Logic Testing Different Failure Types and Patterns should handle intermittent failures","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should handle intermittent failures"},{"ancestorTitles":["fix-command","Enhanced Retry Logic Testing","Different Failure Types and Patterns"],"duration":41,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Enhanced Retry Logic Testing Different Failure Types and Patterns should handle different error messages for same command","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should handle different error messages for same command"},{"ancestorTitles":["fix-command","Enhanced Retry Logic Testing","Claude Executor Interaction During Retries"],"duration":22,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Enhanced Retry Logic Testing Claude Executor Interaction During Retries should handle Claude executor success but command still failing","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should handle Claude executor success but command still failing"},{"ancestorTitles":["fix-command","Enhanced Retry Logic Testing","Claude Executor Interaction During Retries"],"duration":26,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Enhanced Retry Logic Testing Claude Executor Interaction During Retries should handle Claude executor failures during retries","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should handle Claude executor failures during retries"},{"ancestorTitles":["fix-command","Enhanced Retry Logic Testing","Claude Executor Interaction During Retries"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Enhanced Retry Logic Testing Claude Executor Interaction During Retries should continue retries even if Claude executor fails","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should continue retries even if Claude executor fails"},{"ancestorTitles":["fix-command","Enhanced Retry Logic Testing","State Management During Retries"],"duration":23,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Enhanced Retry Logic Testing State Management During Retries should maintain command integrity across retries","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"status":"passed","title":"should maintain command integrity across retries"},{"ancestorTitles":["fix-command","Enhanced Retry Logic Testing","State Management During Retries"],"duration":22,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Enhanced Retry Logic Testing State Management During Retries should handle concurrent fixCommand calls independently","invocations":1,"location":null,"numPassingAsserts":8,"retryReasons":[],"status":"passed","title":"should handle concurrent fixCommand calls independently"},{"ancestorTitles":["fix-command","Enhanced Retry Logic Testing","Progressive Retry Strategy Testing"],"duration":33,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Enhanced Retry Logic Testing Progressive Retry Strategy Testing should track attempt numbers correctly","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"status":"passed","title":"should track attempt numbers correctly"},{"ancestorTitles":["fix-command","Enhanced Retry Logic Testing","Progressive Retry Strategy Testing"],"duration":33,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Enhanced Retry Logic Testing Progressive Retry Strategy Testing should handle retry timing and delays properly","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should handle retry timing and delays properly"},{"ancestorTitles":["fix-command","Comprehensive Logging and Reporting","Log File Creation and Management"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Comprehensive Logging and Reporting Log File Creation and Management should create log file with correct path and flags","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should create log file with correct path and flags"},{"ancestorTitles":["fix-command","Comprehensive Logging and Reporting","Log File Creation and Management"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Comprehensive Logging and Reporting Log File Creation and Management should create log file when claudiomiro folder does not exist","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should create log file when claudiomiro folder does not exist"},{"ancestorTitles":["fix-command","Comprehensive Logging and Reporting","Log File Creation and Management"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Comprehensive Logging and Reporting Log File Creation and Management should handle different claudiomiro folder paths","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle different claudiomiro folder paths"},{"ancestorTitles":["fix-command","Comprehensive Logging and Reporting","Log Content and Formatting"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Comprehensive Logging and Reporting Log Content and Formatting should write proper log headers with timestamps and separators","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"status":"passed","title":"should write proper log headers with timestamps and separators"},{"ancestorTitles":["fix-command","Comprehensive Logging and Reporting","Log Content and Formatting"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Comprehensive Logging and Reporting Log Content and Formatting should capture and log stdout output correctly","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should capture and log stdout output correctly"},{"ancestorTitles":["fix-command","Comprehensive Logging and Reporting","Log Content and Formatting"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Comprehensive Logging and Reporting Log Content and Formatting should capture and log stderr output correctly","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should capture and log stderr output correctly"},{"ancestorTitles":["fix-command","Comprehensive Logging and Reporting","Log Content and Formatting"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Comprehensive Logging and Reporting Log Content and Formatting should handle mixed stdout and stderr output","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle mixed stdout and stderr output"},{"ancestorTitles":["fix-command","Comprehensive Logging and Reporting","Error Logging and Stack Traces"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Comprehensive Logging and Reporting Error Logging and Stack Traces should log process errors with proper formatting","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should log process errors with proper formatting"},{"ancestorTitles":["fix-command","Comprehensive Logging and Reporting","Error Logging and Stack Traces"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Comprehensive Logging and Reporting Error Logging and Stack Traces should log error details in execution context","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should log error details in execution context"},{"ancestorTitles":["fix-command","Comprehensive Logging and Reporting","Error Logging and Stack Traces"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Comprehensive Logging and Reporting Error Logging and Stack Traces should handle errors during different execution phases","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle errors during different execution phases"},{"ancestorTitles":["fix-command","Comprehensive Logging and Reporting","Log Stream Management"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Comprehensive Logging and Reporting Log Stream Management should properly end log stream on successful completion","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should properly end log stream on successful completion"},{"ancestorTitles":["fix-command","Comprehensive Logging and Reporting","Log Stream Management"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Comprehensive Logging and Reporting Log Stream Management should properly end log stream on command failure","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should properly end log stream on command failure"},{"ancestorTitles":["fix-command","Comprehensive Logging and Reporting","Log Stream Management"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Comprehensive Logging and Reporting Log Stream Management should properly end log stream on process error","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should properly end log stream on process error"},{"ancestorTitles":["fix-command","Comprehensive Logging and Reporting","Concurrent Logging Scenarios"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Comprehensive Logging and Reporting Concurrent Logging Scenarios should handle multiple commands logging simultaneously","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should handle multiple commands logging simultaneously"},{"ancestorTitles":["fix-command","Comprehensive Logging and Reporting","Concurrent Logging Scenarios"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Comprehensive Logging and Reporting Concurrent Logging Scenarios should handle log stream write failures gracefully","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"status":"passed","title":"should handle log stream write failures gracefully"},{"ancestorTitles":["fix-command","Comprehensive Logging and Reporting","Log Content Validation"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Comprehensive Logging and Reporting Log Content Validation should maintain consistent log format across different platforms","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should maintain consistent log format across different platforms"},{"ancestorTitles":["fix-command","Comprehensive Logging and Reporting","Log Content Validation"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Comprehensive Logging and Reporting Log Content Validation should handle special characters in log output","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle special characters in log output"},{"ancestorTitles":["fix-command","Comprehensive Logging and Reporting","Log Content Validation"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Comprehensive Logging and Reporting Log Content Validation should handle very long log entries","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should handle very long log entries"},{"ancestorTitles":["fix-command","Comprehensive Logging and Reporting","Log Performance and Resource Management"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Comprehensive Logging and Reporting Log Performance and Resource Management should handle high-frequency log writes efficiently","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should handle high-frequency log writes efficiently"},{"ancestorTitles":["fix-command","Comprehensive Logging and Reporting","Log Performance and Resource Management"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"fix-command Comprehensive Logging and Reporting Log Performance and Resource Management should clean up log resources properly on errors","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should clean up log resources properly on errors"}],"endTime":1764343153953,"message":"\u001b[1m\u001b[31m  \u001b[1m● \u001b[22m\u001b[1mfix-command › executeCommand › should handle successful command execution\u001b[39m\u001b[22m\n\n    ReferenceError: logger is not defined\n\u001b[2m\u001b[22m\n\u001b[2m    \u001b[0m \u001b[90m 271 |\u001b[39m\u001b[22m\n\u001b[2m     \u001b[90m 272 |\u001b[39m                 executeCommand(\u001b[32m'ls'\u001b[39m)\u001b[33m.\u001b[39mthen((result) \u001b[33m=>\u001b[39m {\u001b[22m\n\u001b[2m    \u001b[31m\u001b[1m>\u001b[22m\u001b[2m\u001b[39m\u001b[90m 273 |\u001b[39m                     expect(logger\u001b[33m.\u001b[39msuccess)\u001b[33m.\u001b[39mtoHaveBeenCalledWith(\u001b[32m'Command executed successfully (exit code: 0)'\u001b[39m)\u001b[33m;\u001b[39m\u001b[22m\n\u001b[2m     \u001b[90m     |\u001b[39m                            \u001b[31m\u001b[1m^\u001b[22m\u001b[2m\u001b[39m\u001b[22m\n\u001b[2m     \u001b[90m 274 |\u001b[39m                     expect(result\u001b[33m.\u001b[39msuccess)\u001b[33m.\u001b[39mtoBe(\u001b[36mtrue\u001b[39m)\u001b[33m;\u001b[39m\u001b[22m\n\u001b[2m     \u001b[90m 275 |\u001b[39m                     expect(result\u001b[33m.\u001b[39mexitCode)\u001b[33m.\u001b[39mtoBe(\u001b[35m0\u001b[39m)\u001b[33m;\u001b[39m\u001b[22m\n\u001b[2m     \u001b[90m 276 |\u001b[39m                     resolve()\u001b[33m;\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m\u001b[22m\n\u001b[2m      \u001b[2mat logger (\u001b[22m\u001b[2m\u001b[0m\u001b[36msrc/commands/fix-command/executor.test.js\u001b[39m\u001b[0m\u001b[2m:273:28)\u001b[22m\u001b[2m\u001b[22m\n\n\u001b[1m\u001b[31m  \u001b[1m● \u001b[22m\u001b[1mfix-command › executeCommand › should handle successful command execution\u001b[39m\u001b[22m\n\n    thrown: \"Exceeded timeout of 30000 ms for a test.\n    Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout.\"\n\u001b[2m\u001b[22m\n\u001b[2m    \u001b[0m \u001b[90m 260 |\u001b[39m         })\u001b[33m;\u001b[39m\u001b[22m\n\u001b[2m     \u001b[90m 261 |\u001b[39m\u001b[22m\n\u001b[2m    \u001b[31m\u001b[1m>\u001b[22m\u001b[2m\u001b[39m\u001b[90m 262 |\u001b[39m         test(\u001b[32m'should handle successful command execution'\u001b[39m\u001b[33m,\u001b[39m \u001b[36masync\u001b[39m () \u001b[33m=>\u001b[39m {\u001b[22m\n\u001b[2m     \u001b[90m     |\u001b[39m         \u001b[31m\u001b[1m^\u001b[22m\u001b[2m\u001b[39m\u001b[22m\n\u001b[2m     \u001b[90m 263 |\u001b[39m             fs\u001b[33m.\u001b[39mexistsSync\u001b[33m.\u001b[39mmockReturnValue(\u001b[36mtrue\u001b[39m)\u001b[33m;\u001b[39m\u001b[22m\n\u001b[2m     \u001b[90m 264 |\u001b[39m\u001b[22m\n\u001b[2m     \u001b[90m 265 |\u001b[39m             \u001b[36mreturn\u001b[39m \u001b[36mnew\u001b[39m \u001b[33mPromise\u001b[39m((resolve) \u001b[33m=>\u001b[39m {\u001b[0m\u001b[22m\n\u001b[2m\u001b[22m\n\u001b[2m      \u001b[2mat test (\u001b[22m\u001b[2m\u001b[0m\u001b[36msrc/commands/fix-command/executor.test.js\u001b[39m\u001b[0m\u001b[2m:262:9)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m      \u001b[2mat describe (\u001b[22m\u001b[2m\u001b[0m\u001b[36msrc/commands/fix-command/executor.test.js\u001b[39m\u001b[0m\u001b[2m:130:5)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m      \u001b[2mat Object.describe (\u001b[22m\u001b[2m\u001b[0m\u001b[36msrc/commands/fix-command/executor.test.js\u001b[39m\u001b[0m\u001b[2m:27:1)\u001b[22m\u001b[2m\u001b[22m\n\n\u001b[1m\u001b[31m  \u001b[1m● \u001b[22m\u001b[1mfix-command › executeCommand › should handle failed command execution\u001b[39m\u001b[22m\n\n    ReferenceError: logger is not defined\n\u001b[2m\u001b[22m\n\u001b[2m    \u001b[0m \u001b[90m 290 |\u001b[39m\u001b[22m\n\u001b[2m     \u001b[90m 291 |\u001b[39m                 executeCommand(\u001b[32m'false'\u001b[39m)\u001b[33m.\u001b[39mthen((result) \u001b[33m=>\u001b[39m {\u001b[22m\n\u001b[2m    \u001b[31m\u001b[1m>\u001b[22m\u001b[2m\u001b[39m\u001b[90m 292 |\u001b[39m                     expect(logger\u001b[33m.\u001b[39merror)\u001b[33m.\u001b[39mtoHaveBeenCalledWith(\u001b[32m'Command failed with exit code: 1'\u001b[39m)\u001b[33m;\u001b[39m\u001b[22m\n\u001b[2m     \u001b[90m     |\u001b[39m                            \u001b[31m\u001b[1m^\u001b[22m\u001b[2m\u001b[39m\u001b[22m\n\u001b[2m     \u001b[90m 293 |\u001b[39m                     expect(result\u001b[33m.\u001b[39msuccess)\u001b[33m.\u001b[39mtoBe(\u001b[36mfalse\u001b[39m)\u001b[33m;\u001b[39m\u001b[22m\n\u001b[2m     \u001b[90m 294 |\u001b[39m                     expect(result\u001b[33m.\u001b[39mexitCode)\u001b[33m.\u001b[39mtoBe(\u001b[35m1\u001b[39m)\u001b[33m;\u001b[39m\u001b[22m\n\u001b[2m     \u001b[90m 295 |\u001b[39m                     resolve()\u001b[33m;\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m\u001b[22m\n\u001b[2m      \u001b[2mat logger (\u001b[22m\u001b[2m\u001b[0m\u001b[36msrc/commands/fix-command/executor.test.js\u001b[39m\u001b[0m\u001b[2m:292:28)\u001b[22m\u001b[2m\u001b[22m\n\n\u001b[1m\u001b[31m  \u001b[1m● \u001b[22m\u001b[1mfix-command › executeCommand › should handle failed command execution\u001b[39m\u001b[22m\n\n    thrown: \"Exceeded timeout of 30000 ms for a test.\n    Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout.\"\n\u001b[2m\u001b[22m\n\u001b[2m    \u001b[0m \u001b[90m 279 |\u001b[39m         })\u001b[33m;\u001b[39m\u001b[22m\n\u001b[2m     \u001b[90m 280 |\u001b[39m\u001b[22m\n\u001b[2m    \u001b[31m\u001b[1m>\u001b[22m\u001b[2m\u001b[39m\u001b[90m 281 |\u001b[39m         test(\u001b[32m'should handle failed command execution'\u001b[39m\u001b[33m,\u001b[39m \u001b[36masync\u001b[39m () \u001b[33m=>\u001b[39m {\u001b[22m\n\u001b[2m     \u001b[90m     |\u001b[39m         \u001b[31m\u001b[1m^\u001b[22m\u001b[2m\u001b[39m\u001b[22m\n\u001b[2m     \u001b[90m 282 |\u001b[39m             fs\u001b[33m.\u001b[39mexistsSync\u001b[33m.\u001b[39mmockReturnValue(\u001b[36mtrue\u001b[39m)\u001b[33m;\u001b[39m\u001b[22m\n\u001b[2m     \u001b[90m 283 |\u001b[39m\u001b[22m\n\u001b[2m     \u001b[90m 284 |\u001b[39m             \u001b[36mreturn\u001b[39m \u001b[36mnew\u001b[39m \u001b[33mPromise\u001b[39m((resolve) \u001b[33m=>\u001b[39m {\u001b[0m\u001b[22m\n\u001b[2m\u001b[22m\n\u001b[2m      \u001b[2mat test (\u001b[22m\u001b[2m\u001b[0m\u001b[36msrc/commands/fix-command/executor.test.js\u001b[39m\u001b[0m\u001b[2m:281:9)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m      \u001b[2mat describe (\u001b[22m\u001b[2m\u001b[0m\u001b[36msrc/commands/fix-command/executor.test.js\u001b[39m\u001b[0m\u001b[2m:130:5)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m      \u001b[2mat Object.describe (\u001b[22m\u001b[2m\u001b[0m\u001b[36msrc/commands/fix-command/executor.test.js\u001b[39m\u001b[0m\u001b[2m:27:1)\u001b[22m\u001b[2m\u001b[22m\n\n\u001b[1m\u001b[31m  \u001b[1m● \u001b[22m\u001b[1mfix-command › executeCommand › should handle process error\u001b[39m\u001b[22m\n\n    ReferenceError: logger is not defined\n\u001b[2m\u001b[22m\n\u001b[2m    \u001b[0m \u001b[90m 309 |\u001b[39m\u001b[22m\n\u001b[2m     \u001b[90m 310 |\u001b[39m                 executeCommand(\u001b[32m'nonexistent'\u001b[39m)\u001b[33m.\u001b[39mthen((result) \u001b[33m=>\u001b[39m {\u001b[22m\n\u001b[2m    \u001b[31m\u001b[1m>\u001b[22m\u001b[2m\u001b[39m\u001b[90m 311 |\u001b[39m                     expect(logger\u001b[33m.\u001b[39merror)\u001b[33m.\u001b[39mtoHaveBeenCalledWith(\u001b[32m'Failed to execute command: Command not found'\u001b[39m)\u001b[33m;\u001b[39m\u001b[22m\n\u001b[2m     \u001b[90m     |\u001b[39m                            \u001b[31m\u001b[1m^\u001b[22m\u001b[2m\u001b[39m\u001b[22m\n\u001b[2m     \u001b[90m 312 |\u001b[39m                     expect(result\u001b[33m.\u001b[39msuccess)\u001b[33m.\u001b[39mtoBe(\u001b[36mfalse\u001b[39m)\u001b[33m;\u001b[39m\u001b[22m\n\u001b[2m     \u001b[90m 313 |\u001b[39m                     expect(result\u001b[33m.\u001b[39mexitCode)\u001b[33m.\u001b[39mtoBe(\u001b[33m-\u001b[39m\u001b[35m1\u001b[39m)\u001b[33m;\u001b[39m\u001b[22m\n\u001b[2m     \u001b[90m 314 |\u001b[39m                     expect(result\u001b[33m.\u001b[39merror)\u001b[33m.\u001b[39mtoBe(\u001b[32m'Command not found'\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m\u001b[22m\n\u001b[2m      \u001b[2mat logger (\u001b[22m\u001b[2m\u001b[0m\u001b[36msrc/commands/fix-command/executor.test.js\u001b[39m\u001b[0m\u001b[2m:311:28)\u001b[22m\u001b[2m\u001b[22m\n\n\u001b[1m\u001b[31m  \u001b[1m● \u001b[22m\u001b[1mfix-command › executeCommand › should handle process error\u001b[39m\u001b[22m\n\n    thrown: \"Exceeded timeout of 30000 ms for a test.\n    Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout.\"\n\u001b[2m\u001b[22m\n\u001b[2m    \u001b[0m \u001b[90m 298 |\u001b[39m         })\u001b[33m;\u001b[39m\u001b[22m\n\u001b[2m     \u001b[90m 299 |\u001b[39m\u001b[22m\n\u001b[2m    \u001b[31m\u001b[1m>\u001b[22m\u001b[2m\u001b[39m\u001b[90m 300 |\u001b[39m         test(\u001b[32m'should handle process error'\u001b[39m\u001b[33m,\u001b[39m \u001b[36masync\u001b[39m () \u001b[33m=>\u001b[39m {\u001b[22m\n\u001b[2m     \u001b[90m     |\u001b[39m         \u001b[31m\u001b[1m^\u001b[22m\u001b[2m\u001b[39m\u001b[22m\n\u001b[2m     \u001b[90m 301 |\u001b[39m             fs\u001b[33m.\u001b[39mexistsSync\u001b[33m.\u001b[39mmockReturnValue(\u001b[36mtrue\u001b[39m)\u001b[33m;\u001b[39m\u001b[22m\n\u001b[2m     \u001b[90m 302 |\u001b[39m\u001b[22m\n\u001b[2m     \u001b[90m 303 |\u001b[39m             \u001b[36mreturn\u001b[39m \u001b[36mnew\u001b[39m \u001b[33mPromise\u001b[39m((resolve) \u001b[33m=>\u001b[39m {\u001b[0m\u001b[22m\n\u001b[2m\u001b[22m\n\u001b[2m      \u001b[2mat test (\u001b[22m\u001b[2m\u001b[0m\u001b[36msrc/commands/fix-command/executor.test.js\u001b[39m\u001b[0m\u001b[2m:300:9)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m      \u001b[2mat describe (\u001b[22m\u001b[2m\u001b[0m\u001b[36msrc/commands/fix-command/executor.test.js\u001b[39m\u001b[0m\u001b[2m:130:5)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m      \u001b[2mat Object.describe (\u001b[22m\u001b[2m\u001b[0m\u001b[36msrc/commands/fix-command/executor.test.js\u001b[39m\u001b[0m\u001b[2m:27:1)\u001b[22m\u001b[2m\u001b[22m\n\n\u001b[1m\u001b[31m  \u001b[1m● \u001b[22m\u001b[1mfix-command › executeCommand › should stop spinner and log command execution\u001b[39m\u001b[22m\n\n    ReferenceError: logger is not defined\n\u001b[2m\u001b[22m\n\u001b[2m    \u001b[0m \u001b[90m 357 |\u001b[39m\u001b[22m\n\u001b[2m     \u001b[90m 358 |\u001b[39m                 executeCommand(\u001b[32m'test command'\u001b[39m)\u001b[33m.\u001b[39mthen(() \u001b[33m=>\u001b[39m {\u001b[22m\n\u001b[2m    \u001b[31m\u001b[1m>\u001b[22m\u001b[2m\u001b[39m\u001b[90m 359 |\u001b[39m                     expect(logger\u001b[33m.\u001b[39mstopSpinner)\u001b[33m.\u001b[39mtoHaveBeenCalled()\u001b[33m;\u001b[39m\u001b[22m\n\u001b[2m     \u001b[90m     |\u001b[39m                            \u001b[31m\u001b[1m^\u001b[22m\u001b[2m\u001b[39m\u001b[22m\n\u001b[2m     \u001b[90m 360 |\u001b[39m                     expect(logger\u001b[33m.\u001b[39mcommand)\u001b[33m.\u001b[39mtoHaveBeenCalledWith(\u001b[32m'test command'\u001b[39m)\u001b[33m;\u001b[39m\u001b[22m\n\u001b[2m     \u001b[90m 361 |\u001b[39m                     expect(logger\u001b[33m.\u001b[39mseparator)\u001b[33m.\u001b[39mtoHaveBeenCalled()\u001b[33m;\u001b[39m\u001b[22m\n\u001b[2m     \u001b[90m 362 |\u001b[39m                     resolve()\u001b[33m;\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m\u001b[22m\n\u001b[2m      \u001b[2mat logger (\u001b[22m\u001b[2m\u001b[0m\u001b[36msrc/commands/fix-command/executor.test.js\u001b[39m\u001b[0m\u001b[2m:359:28)\u001b[22m\u001b[2m\u001b[22m\n\n\u001b[1m\u001b[31m  \u001b[1m● \u001b[22m\u001b[1mfix-command › executeCommand › should stop spinner and log command execution\u001b[39m\u001b[22m\n\n    thrown: \"Exceeded timeout of 30000 ms for a test.\n    Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout.\"\n\u001b[2m\u001b[22m\n\u001b[2m    \u001b[0m \u001b[90m 346 |\u001b[39m         })\u001b[33m;\u001b[39m\u001b[22m\n\u001b[2m     \u001b[90m 347 |\u001b[39m\u001b[22m\n\u001b[2m    \u001b[31m\u001b[1m>\u001b[22m\u001b[2m\u001b[39m\u001b[90m 348 |\u001b[39m         test(\u001b[32m'should stop spinner and log command execution'\u001b[39m\u001b[33m,\u001b[39m \u001b[36masync\u001b[39m () \u001b[33m=>\u001b[39m {\u001b[22m\n\u001b[2m     \u001b[90m     |\u001b[39m         \u001b[31m\u001b[1m^\u001b[22m\u001b[2m\u001b[39m\u001b[22m\n\u001b[2m     \u001b[90m 349 |\u001b[39m             fs\u001b[33m.\u001b[39mexistsSync\u001b[33m.\u001b[39mmockReturnValue(\u001b[36mtrue\u001b[39m)\u001b[33m;\u001b[39m\u001b[22m\n\u001b[2m     \u001b[90m 350 |\u001b[39m\u001b[22m\n\u001b[2m     \u001b[90m 351 |\u001b[39m             \u001b[36mreturn\u001b[39m \u001b[36mnew\u001b[39m \u001b[33mPromise\u001b[39m((resolve) \u001b[33m=>\u001b[39m {\u001b[0m\u001b[22m\n\u001b[2m\u001b[22m\n\u001b[2m      \u001b[2mat test (\u001b[22m\u001b[2m\u001b[0m\u001b[36msrc/commands/fix-command/executor.test.js\u001b[39m\u001b[0m\u001b[2m:348:9)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m      \u001b[2mat describe (\u001b[22m\u001b[2m\u001b[0m\u001b[36msrc/commands/fix-command/executor.test.js\u001b[39m\u001b[0m\u001b[2m:130:5)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m      \u001b[2mat Object.describe (\u001b[22m\u001b[2m\u001b[0m\u001b[36msrc/commands/fix-command/executor.test.js\u001b[39m\u001b[0m\u001b[2m:27:1)\u001b[22m\u001b[2m\u001b[22m\n\n\u001b[1m\u001b[31m  \u001b[1m● \u001b[22m\u001b[1mfix-command › fixCommand › should attempt to fix command on failure\u001b[39m\u001b[22m\n\n    ReferenceError: logger is not defined\n\u001b[2m\u001b[22m\n\u001b[2m    \u001b[0m \u001b[90m 461 |\u001b[39m\u001b[22m\n\u001b[2m     \u001b[90m 462 |\u001b[39m             expect(executeClaude)\u001b[33m.\u001b[39mtoHaveBeenCalledWith(\u001b[32m'fix command \"ls\"'\u001b[39m)\u001b[33m;\u001b[39m\u001b[22m\n\u001b[2m    \u001b[31m\u001b[1m>\u001b[22m\u001b[2m\u001b[39m\u001b[90m 463 |\u001b[39m             expect(logger\u001b[33m.\u001b[39minfo)\u001b[33m.\u001b[39mtoHaveBeenCalledWith(\u001b[32m'fix command \"ls\"'\u001b[39m)\u001b[33m;\u001b[39m\u001b[22m\n\u001b[2m     \u001b[90m     |\u001b[39m                    \u001b[31m\u001b[1m^\u001b[22m\u001b[2m\u001b[39m\u001b[22m\n\u001b[2m     \u001b[90m 464 |\u001b[39m         })\u001b[33m;\u001b[39m\u001b[22m\n\u001b[2m     \u001b[90m 465 |\u001b[39m\u001b[22m\n\u001b[2m     \u001b[90m 466 |\u001b[39m         test(\u001b[32m'should create claudiomiro folder if it does not exist'\u001b[39m\u001b[33m,\u001b[39m \u001b[36masync\u001b[39m () \u001b[33m=>\u001b[39m {\u001b[0m\u001b[22m\n\u001b[2m\u001b[22m\n\u001b[2m      \u001b[2mat Object.logger (\u001b[22m\u001b[2m\u001b[0m\u001b[36msrc/commands/fix-command/executor.test.js\u001b[39m\u001b[0m\u001b[2m:463:20)\u001b[22m\u001b[2m\u001b[22m\n","name":"/Users/samuelfajreldines/Desenvolvimento/claudiomiro/src/commands/fix-command/executor.test.js","startTime":1764343032236,"status":"failed","summary":""}],"wasInterrupted":false}
