Test Suites

9 passed, 9 total

Tests

120 passed, 124 total

Snapshots

0 passed, 0 total

{ "resultDir": "/home/runner/work/gs-squad-mcp/gs-squad-mcp/test-results/gs-squad-mcp/unit/", "reportTitle": "gs-squad-mcp Unit Test Results", "reportHeadline": "gs-squad-mcp Unit Test Results", "additionalResultsProcessors": [], "coverageLink": "./coverage/index.html", "resultHtml": "index.html", "resultJson": "jest-results.json" }
{ "numFailedTestSuites": 0, "numFailedTests": 0, "numPassedTestSuites": 9, "numPassedTests": 120, "numPendingTestSuites": 0, "numPendingTests": 0, "numRuntimeErrorTestSuites": 0, "numTodoTests": 4, "numTotalTestSuites": 9, "numTotalTests": 124, "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": 1771062843795, "success": false, "testResults": [ { "leaks": false, "numFailingTests": 0, "numPassingTests": 9, "numPendingTests": 0, "numTodoTests": 0, "openHandles": [], "perfStats": { "end": 1771062849275, "loadTestEnvironmentEnd": 1771062844163, "loadTestEnvironmentStart": 1771062843907, "runtime": 5107, "setupAfterEnvEnd": 1771062848010, "setupAfterEnvStart": 1771062844472, "setupFilesEnd": 1771062844168, "setupFilesStart": 1771062844168, "slow": true, "start": 1771062844168 }, "skipped": false, "snapshot": { "added": 0, "fileDeleted": false, "matched": 0, "unchecked": 0, "uncheckedKeys": [], "unmatched": 0, "updated": 0 }, "testFilePath": "/home/runner/work/gs-squad-mcp/gs-squad-mcp/src/core/engine/process-runner.service.spec.ts", "testResults": [ { "ancestorTitles": [ "ProcessRunnerService" ], "duration": 19, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "ProcessRunnerService should spawn shell command with args and capture IO", "invocations": 1, "location": null, "numPassingAsserts": 3, "retryReasons": [], "startAt": 1771062849188, "status": "passed", "title": "should spawn shell command with args and capture IO" }, { "ancestorTitles": [ "ProcessRunnerService" ], "duration": 5, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "ProcessRunnerService should resolve with collected stderr when process emits an error", "invocations": 1, "location": null, "numPassingAsserts": 1, "retryReasons": [], "startAt": 1771062849208, "status": "passed", "title": "should resolve with collected stderr when process emits an error" }, { "ancestorTitles": [ "ProcessRunnerService" ], "duration": 8, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "ProcessRunnerService should mark execution as timed out and send termination signals", "invocations": 1, "location": null, "numPassingAsserts": 3, "retryReasons": [], "startAt": 1771062849213, "status": "passed", "title": "should mark execution as timed out and send termination signals" }, { "ancestorTitles": [ "ProcessRunnerService" ], "duration": 16, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "ProcessRunnerService should clear the timeout when the process closes before the deadline", "invocations": 1, "location": null, "numPassingAsserts": 2, "retryReasons": [], "startAt": 1771062849221, "status": "passed", "title": "should clear the timeout when the process closes before the deadline" }, { "ancestorTitles": [ "ProcessRunnerService" ], "duration": 10, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "ProcessRunnerService should run multiple processes concurrently without leaking output", "invocations": 1, "location": null, "numPassingAsserts": 5, "retryReasons": [], "startAt": 1771062849240, "status": "passed", "title": "should run multiple processes concurrently without leaking output" }, { "ancestorTitles": [ "ProcessRunnerService" ], "duration": 4, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "ProcessRunnerService should log spawn details when debug flag is enabled", "invocations": 1, "location": null, "numPassingAsserts": 1, "retryReasons": [], "startAt": 1771062849251, "status": "passed", "title": "should log spawn details when debug flag is enabled" }, { "ancestorTitles": [ "ProcessRunnerService" ], "duration": 3, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "ProcessRunnerService should skip stdin closing when a stream is not provided", "invocations": 1, "location": null, "numPassingAsserts": 3, "retryReasons": [], "startAt": 1771062849256, "status": "passed", "title": "should skip stdin closing when a stream is not provided" }, { "ancestorTitles": [ "ProcessRunnerService" ], "duration": 4, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "ProcessRunnerService should tolerate processes without stdout or stderr streams", "invocations": 1, "location": null, "numPassingAsserts": 2, "retryReasons": [], "startAt": 1771062849259, "status": "passed", "title": "should tolerate processes without stdout or stderr streams" }, { "ancestorTitles": [ "ProcessRunnerService" ], "duration": 7, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "ProcessRunnerService should not attempt to send signals when the child lacks a pid", "invocations": 1, "location": null, "numPassingAsserts": 1, "retryReasons": [], "startAt": 1771062849263, "status": "passed", "title": "should not attempt to send signals when the child lacks a pid" } ], "displayName": { "color": "white", "name": "unit" }, "failureMessage": null }, { "leaks": false, "numFailingTests": 0, "numPassingTests": 14, "numPendingTests": 0, "numTodoTests": 0, "openHandles": [], "perfStats": { "end": 1771062849812, "loadTestEnvironmentEnd": 1771062849328, "loadTestEnvironmentStart": 1771062849318, "runtime": 483, "setupAfterEnvEnd": 1771062849373, "setupAfterEnvStart": 1771062849369, "setupFilesEnd": 1771062849329, "setupFilesStart": 1771062849329, "slow": false, "start": 1771062849329 }, "skipped": false, "snapshot": { "added": 0, "fileDeleted": false, "matched": 0, "unchecked": 0, "uncheckedKeys": [], "unmatched": 0, "updated": 0 }, "testFilePath": "/home/runner/work/gs-squad-mcp/gs-squad-mcp/src/core/prompt/prompt-builder.service.spec.ts", "testResults": [ { "ancestorTitles": [ "PromptBuilderService", "buildPromptStateless" ], "duration": 7, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "PromptBuilderService buildPromptStateless should contain role body, task, and footer", "invocations": 1, "location": null, "numPassingAsserts": 6, "retryReasons": [], "startAt": 1771062849742, "status": "passed", "title": "should contain role body, task, and footer" }, { "ancestorTitles": [ "PromptBuilderService", "buildPromptStateless" ], "duration": 6, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "PromptBuilderService buildPromptStateless should format prompt correctly with separators", "invocations": 1, "location": null, "numPassingAsserts": 4, "retryReasons": [], "startAt": 1771062849749, "status": "passed", "title": "should format prompt correctly with separators" }, { "ancestorTitles": [ "PromptBuilderService", "buildPromptStatefulNewChat" ], "duration": 4, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "PromptBuilderService buildPromptStatefulNewChat should contain role body, initial task, and footer", "invocations": 1, "location": null, "numPassingAsserts": 6, "retryReasons": [], "startAt": 1771062849755, "status": "passed", "title": "should contain role body, initial task, and footer" }, { "ancestorTitles": [ "PromptBuilderService", "buildPromptStatefulNewChat" ], "duration": 2, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "PromptBuilderService buildPromptStatefulNewChat should use \"Initial Task\" instead of \"Task\"", "invocations": 1, "location": null, "numPassingAsserts": 2, "retryReasons": [], "startAt": 1771062849759, "status": "passed", "title": "should use \"Initial Task\" instead of \"Task\"" }, { "ancestorTitles": [ "PromptBuilderService", "edge cases and formatting" ], "duration": 3, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "PromptBuilderService edge cases and formatting should keep formatting separators even with surrounding whitespace", "invocations": 1, "location": null, "numPassingAsserts": 3, "retryReasons": [], "startAt": 1771062849761, "status": "passed", "title": "should keep formatting separators even with surrounding whitespace" }, { "ancestorTitles": [ "PromptBuilderService", "edge cases and formatting" ], "duration": 2, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "PromptBuilderService edge cases and formatting should preserve special characters in role body and task", "invocations": 1, "location": null, "numPassingAsserts": 2, "retryReasons": [], "startAt": 1771062849764, "status": "passed", "title": "should preserve special characters in role body and task" }, { "ancestorTitles": [ "PromptBuilderService", "edge cases and formatting" ], "duration": 3, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "PromptBuilderService edge cases and formatting should handle empty role body and task inputs", "invocations": 1, "location": null, "numPassingAsserts": 6, "retryReasons": [], "startAt": 1771062849766, "status": "passed", "title": "should handle empty role body and task inputs" }, { "ancestorTitles": [ "PromptBuilderService", "edge cases and formatting" ], "duration": 2, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "PromptBuilderService edge cases and formatting should include very long role and task values without truncation", "invocations": 1, "location": null, "numPassingAsserts": 3, "retryReasons": [], "startAt": 1771062849769, "status": "passed", "title": "should include very long role and task values without truncation" }, { "ancestorTitles": [ "PromptBuilderService", "edge cases and formatting" ], "duration": 16, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "PromptBuilderService edge cases and formatting should preserve explicit newlines within tasks for existing chats", "invocations": 1, "location": null, "numPassingAsserts": 1, "retryReasons": [], "startAt": 1771062849771, "status": "passed", "title": "should preserve explicit newlines within tasks for existing chats" }, { "ancestorTitles": [ "PromptBuilderService", "buildPromptStatefulExistingChat" ], "duration": 2, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "PromptBuilderService buildPromptStatefulExistingChat should contain task only and footer", "invocations": 1, "location": null, "numPassingAsserts": 5, "retryReasons": [], "startAt": 1771062849787, "status": "passed", "title": "should contain task only and footer" }, { "ancestorTitles": [ "PromptBuilderService", "buildPromptStatefulExistingChat" ], "duration": 5, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "PromptBuilderService buildPromptStatefulExistingChat should not include role information", "invocations": 1, "location": null, "numPassingAsserts": 3, "retryReasons": [], "startAt": 1771062849790, "status": "passed", "title": "should not include role information" }, { "ancestorTitles": [ "PromptBuilderService", "setupReportingFooter" ], "duration": 6, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "PromptBuilderService setupReportingFooter should append footer to all prompt types", "invocations": 1, "location": null, "numPassingAsserts": 3, "retryReasons": [], "startAt": 1771062849795, "status": "passed", "title": "should append footer to all prompt types" }, { "ancestorTitles": [ "PromptBuilderService", "setupReportingFooter" ], "duration": 5, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "PromptBuilderService setupReportingFooter should include instructions about reporting issues", "invocations": 1, "location": null, "numPassingAsserts": 3, "retryReasons": [], "startAt": 1771062849801, "status": "passed", "title": "should include instructions about reporting issues" }, { "ancestorTitles": [ "PromptBuilderService", "setupReportingFooter" ], "duration": 2, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "PromptBuilderService setupReportingFooter should append identical footer text exactly once to every prompt", "invocations": 1, "location": null, "numPassingAsserts": 6, "retryReasons": [], "startAt": 1771062849806, "status": "passed", "title": "should append identical footer text exactly once to every prompt" } ], "displayName": { "color": "white", "name": "unit" }, "failureMessage": null }, { "leaks": false, "numFailingTests": 0, "numPassingTests": 15, "numPendingTests": 0, "numTodoTests": 0, "openHandles": [], "perfStats": { "end": 1771062850198, "loadTestEnvironmentEnd": 1771062849836, "loadTestEnvironmentStart": 1771062849832, "runtime": 361, "setupAfterEnvEnd": 1771062849887, "setupAfterEnvStart": 1771062849880, "setupFilesEnd": 1771062849837, "setupFilesStart": 1771062849837, "slow": false, "start": 1771062849837 }, "skipped": false, "snapshot": { "added": 0, "fileDeleted": false, "matched": 0, "unchecked": 0, "uncheckedKeys": [], "unmatched": 0, "updated": 0 }, "testFilePath": "/home/runner/work/gs-squad-mcp/gs-squad-mcp/src/core/config/squad-config.service.spec.ts", "testResults": [ { "ancestorTitles": [ "SquadConfigService" ], "duration": 3, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "SquadConfigService should provide default values when env vars are not set", "invocations": 1, "location": null, "numPassingAsserts": 7, "retryReasons": [], "startAt": 1771062850133, "status": "passed", "title": "should provide default values when env vars are not set" }, { "ancestorTitles": [ "SquadConfigService" ], "duration": 5, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "SquadConfigService should override defaults with env vars when provided", "invocations": 1, "location": null, "numPassingAsserts": 7, "retryReasons": [], "startAt": 1771062850136, "status": "passed", "title": "should override defaults with env vars when provided" }, { "ancestorTitles": [ "SquadConfigService" ], "duration": 31, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "SquadConfigService should throw error for invalid STATE_MODE", "invocations": 1, "location": null, "numPassingAsserts": 1, "retryReasons": [], "startAt": 1771062850141, "status": "passed", "title": "should throw error for invalid STATE_MODE" }, { "ancestorTitles": [ "SquadConfigService" ], "duration": 1, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "SquadConfigService should auto-select default create-chat template in stateful mode", "invocations": 1, "location": null, "numPassingAsserts": 1, "retryReasons": [], "startAt": 1771062850173, "status": "passed", "title": "should auto-select default create-chat template in stateful mode" }, { "ancestorTitles": [ "SquadConfigService" ], "duration": 3, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "SquadConfigService should resolve create-chat template based on engine when stateful", "invocations": 1, "location": null, "numPassingAsserts": 1, "retryReasons": [], "startAt": 1771062850174, "status": "passed", "title": "should resolve create-chat template based on engine when stateful" }, { "ancestorTitles": [ "SquadConfigService" ], "duration": 2, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "SquadConfigService should return a copy of config", "invocations": 1, "location": null, "numPassingAsserts": 2, "retryReasons": [], "startAt": 1771062850177, "status": "passed", "title": "should return a copy of config" }, { "ancestorTitles": [ "SquadConfigService" ], "duration": 1, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "SquadConfigService should throw error for invalid ENGINE values", "invocations": 1, "location": null, "numPassingAsserts": 1, "retryReasons": [], "startAt": 1771062850179, "status": "passed", "title": "should throw error for invalid ENGINE values" }, { "ancestorTitles": [ "SquadConfigService" ], "duration": 2, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "SquadConfigService should throw error for invalid execution modes provided via CLI", "invocations": 1, "location": null, "numPassingAsserts": 1, "retryReasons": [], "startAt": 1771062850181, "status": "passed", "title": "should throw error for invalid execution modes provided via CLI" }, { "ancestorTitles": [ "SquadConfigService" ], "duration": 7, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "SquadConfigService should prioritize CLI args over env vars for state mode, engine, and execution mode", "invocations": 1, "location": null, "numPassingAsserts": 3, "retryReasons": [], "startAt": 1771062850183, "status": "passed", "title": "should prioritize CLI args over env vars for state mode, engine, and execution mode" }, { "ancestorTitles": [ "SquadConfigService" ], "duration": 1, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "SquadConfigService should respect --sequential flag and override env execution mode", "invocations": 1, "location": null, "numPassingAsserts": 1, "retryReasons": [], "startAt": 1771062850190, "status": "passed", "title": "should respect --sequential flag and override env execution mode" }, { "ancestorTitles": [ "SquadConfigService" ], "duration": 1, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "SquadConfigService should throw when RUN_TEMPLATE_PATH is provided without execution mode", "invocations": 1, "location": null, "numPassingAsserts": 1, "retryReasons": [], "startAt": 1771062850192, "status": "passed", "title": "should throw when RUN_TEMPLATE_PATH is provided without execution mode" }, { "ancestorTitles": [ "SquadConfigService" ], "duration": 1, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "SquadConfigService should clamp negative sequential delay values to zero", "invocations": 1, "location": null, "numPassingAsserts": 1, "retryReasons": [], "startAt": 1771062850193, "status": "passed", "title": "should clamp negative sequential delay values to zero" }, { "ancestorTitles": [ "SquadConfigService" ], "duration": 1, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "SquadConfigService should fallback to 1000ms when sequential delay env var is not a number", "invocations": 1, "location": null, "numPassingAsserts": 1, "retryReasons": [], "startAt": 1771062850194, "status": "passed", "title": "should fallback to 1000ms when sequential delay env var is not a number" }, { "ancestorTitles": [ "SquadConfigService" ], "duration": 0, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "SquadConfigService should throw for invalid engine specified via CLI", "invocations": 1, "location": null, "numPassingAsserts": 1, "retryReasons": [], "startAt": 1771062850195, "status": "passed", "title": "should throw for invalid engine specified via CLI" }, { "ancestorTitles": [ "SquadConfigService" ], "duration": 2, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "SquadConfigService should parse CLI equals syntax for state mode and engine", "invocations": 1, "location": null, "numPassingAsserts": 2, "retryReasons": [], "startAt": 1771062850195, "status": "passed", "title": "should parse CLI equals syntax for state mode and engine" } ], "displayName": { "color": "white", "name": "unit" }, "failureMessage": null }, { "leaks": false, "numFailingTests": 0, "numPassingTests": 11, "numPendingTests": 0, "numTodoTests": 0, "openHandles": [], "perfStats": { "end": 1771062850559, "loadTestEnvironmentEnd": 1771062850231, "loadTestEnvironmentStart": 1771062850225, "runtime": 328, "setupAfterEnvEnd": 1771062850275, "setupAfterEnvStart": 1771062850273, "setupFilesEnd": 1771062850231, "setupFilesStart": 1771062850231, "slow": false, "start": 1771062850231 }, "skipped": false, "snapshot": { "added": 0, "fileDeleted": false, "matched": 0, "unchecked": 0, "uncheckedKeys": [], "unmatched": 0, "updated": 0 }, "testFilePath": "/home/runner/work/gs-squad-mcp/gs-squad-mcp/src/core/roles/role-repository.service.spec.ts", "testResults": [ { "ancestorTitles": [ "RoleRepositoryService" ], "duration": 27, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "RoleRepositoryService should load roles from agents directory", "invocations": 1, "location": null, "numPassingAsserts": 5, "retryReasons": [], "startAt": 1771062850460, "status": "passed", "title": "should load roles from agents directory" }, { "ancestorTitles": [ "RoleRepositoryService" ], "duration": 5, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "RoleRepositoryService should parse frontmatter correctly", "invocations": 1, "location": null, "numPassingAsserts": 4, "retryReasons": [], "startAt": 1771062850488, "status": "passed", "title": "should parse frontmatter correctly" }, { "ancestorTitles": [ "RoleRepositoryService" ], "duration": 4, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "RoleRepositoryService should fallback to roleId when name is missing", "invocations": 1, "location": null, "numPassingAsserts": 3, "retryReasons": [], "startAt": 1771062850493, "status": "passed", "title": "should fallback to roleId when name is missing" }, { "ancestorTitles": [ "RoleRepositoryService" ], "duration": 7, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "RoleRepositoryService should default metadata when markdown lacks frontmatter entirely", "invocations": 1, "location": null, "numPassingAsserts": 4, "retryReasons": [], "startAt": 1771062850497, "status": "passed", "title": "should default metadata when markdown lacks frontmatter entirely" }, { "ancestorTitles": [ "RoleRepositoryService" ], "duration": 9, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "RoleRepositoryService should treat blank frontmatter fields as missing and trim the body", "invocations": 1, "location": null, "numPassingAsserts": 4, "retryReasons": [], "startAt": 1771062850504, "status": "passed", "title": "should treat blank frontmatter fields as missing and trim the body" }, { "ancestorTitles": [ "RoleRepositoryService" ], "duration": 3, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "RoleRepositoryService should return null for unknown role", "invocations": 1, "location": null, "numPassingAsserts": 1, "retryReasons": [], "startAt": 1771062850513, "status": "passed", "title": "should return null for unknown role" }, { "ancestorTitles": [ "RoleRepositoryService" ], "duration": 14, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "RoleRepositoryService should cache roles after first load", "invocations": 1, "location": null, "numPassingAsserts": 2, "retryReasons": [], "startAt": 1771062850516, "status": "passed", "title": "should cache roles after first load" }, { "ancestorTitles": [ "RoleRepositoryService" ], "duration": 5, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "RoleRepositoryService should reload roles when cache is invalidated", "invocations": 1, "location": null, "numPassingAsserts": 2, "retryReasons": [], "startAt": 1771062850530, "status": "passed", "title": "should reload roles when cache is invalidated" }, { "ancestorTitles": [ "RoleRepositoryService" ], "duration": 15, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "RoleRepositoryService should throw a descriptive error when the agents directory is unreadable", "invocations": 1, "location": null, "numPassingAsserts": 1, "retryReasons": [], "startAt": 1771062850535, "status": "passed", "title": "should throw a descriptive error when the agents directory is unreadable" }, { "ancestorTitles": [ "RoleRepositoryService" ], "duration": 4, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "RoleRepositoryService should throw a descriptive error when markdown parsing fails", "invocations": 1, "location": null, "numPassingAsserts": 1, "retryReasons": [], "startAt": 1771062850550, "status": "passed", "title": "should throw a descriptive error when markdown parsing fails" }, { "ancestorTitles": [ "RoleRepositoryService" ], "duration": 5, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "RoleRepositoryService should return consistent data when accessed concurrently", "invocations": 1, "location": null, "numPassingAsserts": 4, "retryReasons": [], "startAt": 1771062850554, "status": "passed", "title": "should return consistent data when accessed concurrently" } ], "displayName": { "color": "white", "name": "unit" }, "failureMessage": null }, { "leaks": false, "numFailingTests": 0, "numPassingTests": 9, "numPendingTests": 0, "numTodoTests": 0, "openHandles": [], "perfStats": { "end": 1771062850819, "loadTestEnvironmentEnd": 1771062850594, "loadTestEnvironmentStart": 1771062850589, "runtime": 224, "setupAfterEnvEnd": 1771062850633, "setupAfterEnvStart": 1771062850629, "setupFilesEnd": 1771062850595, "setupFilesStart": 1771062850595, "slow": false, "start": 1771062850595 }, "skipped": false, "snapshot": { "added": 0, "fileDeleted": false, "matched": 0, "unchecked": 0, "uncheckedKeys": [], "unmatched": 0, "updated": 0 }, "testFilePath": "/home/runner/work/gs-squad-mcp/gs-squad-mcp/src/core/engine/template-renderer.service.spec.ts", "testResults": [ { "ancestorTitles": [ "TemplateRendererService", "render" ], "duration": 5, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "TemplateRendererService render should handle template without chatId", "invocations": 1, "location": null, "numPassingAsserts": 6, "retryReasons": [], "startAt": 1771062850799, "status": "passed", "title": "should handle template without chatId" }, { "ancestorTitles": [ "TemplateRendererService", "render" ], "duration": 2, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "TemplateRendererService render should handle template with chatId", "invocations": 1, "location": null, "numPassingAsserts": 3, "retryReasons": [], "startAt": 1771062850804, "status": "passed", "title": "should handle template with chatId" }, { "ancestorTitles": [ "TemplateRendererService", "render" ], "duration": 2, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "TemplateRendererService render should trim and split args correctly", "invocations": 1, "location": null, "numPassingAsserts": 1, "retryReasons": [], "startAt": 1771062850806, "status": "passed", "title": "should trim and split args correctly" }, { "ancestorTitles": [ "TemplateRendererService", "render" ], "duration": 1, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "TemplateRendererService render should handle single quotes in template", "invocations": 1, "location": null, "numPassingAsserts": 1, "retryReasons": [], "startAt": 1771062850808, "status": "passed", "title": "should handle single quotes in template" }, { "ancestorTitles": [ "TemplateRendererService", "render" ], "duration": 1, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "TemplateRendererService render should handle complex template with multiple variables", "invocations": 1, "location": null, "numPassingAsserts": 8, "retryReasons": [], "startAt": 1771062850810, "status": "passed", "title": "should handle complex template with multiple variables" }, { "ancestorTitles": [ "TemplateRendererService", "render" ], "duration": 2, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "TemplateRendererService render should filter out empty args", "invocations": 1, "location": null, "numPassingAsserts": 2, "retryReasons": [], "startAt": 1771062850811, "status": "passed", "title": "should filter out empty args" }, { "ancestorTitles": [ "TemplateRendererService", "render" ], "duration": 1, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "TemplateRendererService render should handle nested quotes by alternating quote styles", "invocations": 1, "location": null, "numPassingAsserts": 1, "retryReasons": [], "startAt": 1771062850813, "status": "passed", "title": "should handle nested quotes by alternating quote styles" }, { "ancestorTitles": [ "TemplateRendererService", "render" ], "duration": 1, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "TemplateRendererService render should preserve whitespace and special characters inside quoted args", "invocations": 1, "location": null, "numPassingAsserts": 1, "retryReasons": [], "startAt": 1771062850815, "status": "passed", "title": "should preserve whitespace and special characters inside quoted args" }, { "ancestorTitles": [ "TemplateRendererService", "render" ], "duration": 1, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "TemplateRendererService render should throw descriptive error details for malformed templates", "invocations": 1, "location": null, "numPassingAsserts": 3, "retryReasons": [], "startAt": 1771062850817, "status": "passed", "title": "should throw descriptive error details for malformed templates" } ], "displayName": { "color": "white", "name": "unit" }, "failureMessage": null }, { "leaks": false, "numFailingTests": 0, "numPassingTests": 27, "numPendingTests": 0, "numTodoTests": 0, "openHandles": [], "perfStats": { "end": 1771062850930, "loadTestEnvironmentEnd": 1771062844234, "loadTestEnvironmentStart": 1771062843908, "runtime": 6692, "setupAfterEnvEnd": 1771062848029, "setupAfterEnvStart": 1771062844589, "setupFilesEnd": 1771062844238, "setupFilesStart": 1771062844238, "slow": true, "start": 1771062844238 }, "skipped": false, "snapshot": { "added": 0, "fileDeleted": false, "matched": 0, "unchecked": 0, "uncheckedKeys": [], "unmatched": 0, "updated": 0 }, "testFilePath": "/home/runner/work/gs-squad-mcp/gs-squad-mcp/src/cli/mcp-cli.command.spec.ts", "testResults": [ { "ancestorTitles": [ "McpCliCommand", "run" ], "duration": 26, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "McpCliCommand run should create readline interface with correct options", "invocations": 1, "location": null, "numPassingAsserts": 1, "retryReasons": [], "startAt": 1771062850795, "status": "passed", "title": "should create readline interface with correct options" }, { "ancestorTitles": [ "McpCliCommand", "run" ], "duration": 6, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "McpCliCommand run should register line event handler", "invocations": 1, "location": null, "numPassingAsserts": 1, "retryReasons": [], "startAt": 1771062850822, "status": "passed", "title": "should register line event handler" }, { "ancestorTitles": [ "McpCliCommand", "run" ], "duration": 7, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "McpCliCommand run should register close event handler", "invocations": 1, "location": null, "numPassingAsserts": 1, "retryReasons": [], "startAt": 1771062850828, "status": "passed", "title": "should register close event handler" }, { "ancestorTitles": [ "McpCliCommand", "run" ], "duration": 6, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "McpCliCommand run should exit process on close event", "invocations": 1, "location": null, "numPassingAsserts": 1, "retryReasons": [], "startAt": 1771062850836, "status": "passed", "title": "should exit process on close event" }, { "ancestorTitles": [ "McpCliCommand", "handleRequest - initialize" ], "duration": 11, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "McpCliCommand handleRequest - initialize should return correct initialize response", "invocations": 1, "location": null, "numPassingAsserts": 1, "retryReasons": [], "startAt": 1771062850842, "status": "passed", "title": "should return correct initialize response" }, { "ancestorTitles": [ "McpCliCommand", "handleRequest - initialize" ], "duration": 3, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "McpCliCommand handleRequest - initialize should handle initialize without id", "invocations": 1, "location": null, "numPassingAsserts": 2, "retryReasons": [], "startAt": 1771062850853, "status": "passed", "title": "should handle initialize without id" }, { "ancestorTitles": [ "McpCliCommand", "handleRequest - tools/list" ], "duration": 2, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "McpCliCommand handleRequest - tools/list should return correct tools list", "invocations": 1, "location": null, "numPassingAsserts": 5, "retryReasons": [], "startAt": 1771062850857, "status": "passed", "title": "should return correct tools list" }, { "ancestorTitles": [ "McpCliCommand", "handleRequest - tools/call" ], "duration": 2, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "McpCliCommand handleRequest - tools/call should handle list_roles tool call", "invocations": 1, "location": null, "numPassingAsserts": 2, "retryReasons": [], "startAt": 1771062850860, "status": "passed", "title": "should handle list_roles tool call" }, { "ancestorTitles": [ "McpCliCommand", "handleRequest - tools/call" ], "duration": 3, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "McpCliCommand handleRequest - tools/call should handle start_squad_members tool call in stateless mode", "invocations": 1, "location": null, "numPassingAsserts": 3, "retryReasons": [], "startAt": 1771062850862, "status": "passed", "title": "should handle start_squad_members tool call in stateless mode" }, { "ancestorTitles": [ "McpCliCommand", "handleRequest - tools/call" ], "duration": 3, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "McpCliCommand handleRequest - tools/call should handle start_squad_members tool call in stateful mode", "invocations": 1, "location": null, "numPassingAsserts": 2, "retryReasons": [], "startAt": 1771062850866, "status": "passed", "title": "should handle start_squad_members tool call in stateful mode" }, { "ancestorTitles": [ "McpCliCommand", "handleRequest - tools/call" ], "duration": 1, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "McpCliCommand handleRequest - tools/call should return error for unknown tool", "invocations": 1, "location": null, "numPassingAsserts": 2, "retryReasons": [], "startAt": 1771062850869, "status": "passed", "title": "should return error for unknown tool" }, { "ancestorTitles": [ "McpCliCommand", "handleRequest - list_roles" ], "duration": 2, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "McpCliCommand handleRequest - list_roles should call squadService.listRoles", "invocations": 1, "location": null, "numPassingAsserts": 2, "retryReasons": [], "startAt": 1771062850870, "status": "passed", "title": "should call squadService.listRoles" }, { "ancestorTitles": [ "McpCliCommand", "handleRequest - start_squad_members" ], "duration": 2, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "McpCliCommand handleRequest - start_squad_members should call startSquadMembersStateless in stateless mode", "invocations": 1, "location": null, "numPassingAsserts": 2, "retryReasons": [], "startAt": 1771062850872, "status": "passed", "title": "should call startSquadMembersStateless in stateless mode" }, { "ancestorTitles": [ "McpCliCommand", "handleRequest - start_squad_members" ], "duration": 2, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "McpCliCommand handleRequest - start_squad_members should call startSquadMembersStateful in stateful mode", "invocations": 1, "location": null, "numPassingAsserts": 2, "retryReasons": [], "startAt": 1771062850874, "status": "passed", "title": "should call startSquadMembersStateful in stateful mode" }, { "ancestorTitles": [ "McpCliCommand", "handleRequest - error handling" ], "duration": 1, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "McpCliCommand handleRequest - error handling should return error for unknown method", "invocations": 1, "location": null, "numPassingAsserts": 2, "retryReasons": [], "startAt": 1771062850876, "status": "passed", "title": "should return error for unknown method" }, { "ancestorTitles": [ "McpCliCommand", "handleRequest - error handling" ], "duration": 2, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "McpCliCommand handleRequest - error handling should catch and return internal errors", "invocations": 1, "location": null, "numPassingAsserts": 2, "retryReasons": [], "startAt": 1771062850877, "status": "passed", "title": "should catch and return internal errors" }, { "ancestorTitles": [ "McpCliCommand", "handleRequest - error handling" ], "duration": 10, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "McpCliCommand handleRequest - error handling should handle non-Error exceptions", "invocations": 1, "location": null, "numPassingAsserts": 1, "retryReasons": [], "startAt": 1771062850879, "status": "passed", "title": "should handle non-Error exceptions" }, { "ancestorTitles": [ "McpCliCommand", "sendResponse" ], "duration": 3, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "McpCliCommand sendResponse should write JSON response to stdout", "invocations": 1, "location": null, "numPassingAsserts": 1, "retryReasons": [], "startAt": 1771062850889, "status": "passed", "title": "should write JSON response to stdout" }, { "ancestorTitles": [ "McpCliCommand", "sendResponse" ], "duration": 5, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "McpCliCommand sendResponse should handle responses without id", "invocations": 1, "location": null, "numPassingAsserts": 1, "retryReasons": [], "startAt": 1771062850893, "status": "passed", "title": "should handle responses without id" }, { "ancestorTitles": [ "McpCliCommand", "line event handler" ], "duration": 4, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "McpCliCommand line event handler should parse valid JSON request and send response", "invocations": 1, "location": null, "numPassingAsserts": 2, "retryReasons": [], "startAt": 1771062850898, "status": "passed", "title": "should parse valid JSON request and send response" }, { "ancestorTitles": [ "McpCliCommand", "line event handler" ], "duration": 5, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "McpCliCommand line event handler should handle invalid JSON gracefully", "invocations": 1, "location": null, "numPassingAsserts": 1, "retryReasons": [], "startAt": 1771062850902, "status": "passed", "title": "should handle invalid JSON gracefully" }, { "ancestorTitles": [ "McpCliCommand", "line event handler" ], "duration": 4, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "McpCliCommand line event handler should not send response for notifications (no id)", "invocations": 1, "location": null, "numPassingAsserts": 1, "retryReasons": [], "startAt": 1771062850907, "status": "passed", "title": "should not send response for notifications (no id)" }, { "ancestorTitles": [ "McpCliCommand", "line event handler" ], "duration": 2, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "McpCliCommand line event handler should extract id from malformed JSON for error response", "invocations": 1, "location": null, "numPassingAsserts": 0, "retryReasons": [], "startAt": 1771062850911, "status": "passed", "title": "should extract id from malformed JSON for error response" }, { "ancestorTitles": [ "McpCliCommand", "CLI option parsing" ], "duration": 2, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "McpCliCommand CLI option parsing should parse engine option", "invocations": 1, "location": null, "numPassingAsserts": 1, "retryReasons": [], "startAt": 1771062850913, "status": "passed", "title": "should parse engine option" }, { "ancestorTitles": [ "McpCliCommand", "CLI option parsing" ], "duration": 5, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "McpCliCommand CLI option parsing should parse execution mode option", "invocations": 1, "location": null, "numPassingAsserts": 1, "retryReasons": [], "startAt": 1771062850915, "status": "passed", "title": "should parse execution mode option" }, { "ancestorTitles": [ "McpCliCommand", "CLI option parsing" ], "duration": 5, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "McpCliCommand CLI option parsing should parse sequential flag", "invocations": 1, "location": null, "numPassingAsserts": 1, "retryReasons": [], "startAt": 1771062850920, "status": "passed", "title": "should parse sequential flag" }, { "ancestorTitles": [ "McpCliCommand", "CLI option parsing" ], "duration": 2, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "McpCliCommand CLI option parsing should parse state mode option", "invocations": 1, "location": null, "numPassingAsserts": 1, "retryReasons": [], "startAt": 1771062850925, "status": "passed", "title": "should parse state mode option" } ], "displayName": { "color": "white", "name": "unit" }, "failureMessage": null }, { "leaks": false, "numFailingTests": 0, "numPassingTests": 0, "numPendingTests": 0, "numTodoTests": 4, "openHandles": [], "perfStats": { "end": 1771062851057, "loadTestEnvironmentEnd": 1771062851020, "loadTestEnvironmentStart": 1771062851012, "runtime": 37, "setupAfterEnvEnd": 1771062851051, "setupAfterEnvStart": 1771062851048, "setupFilesEnd": 1771062851020, "setupFilesStart": 1771062851020, "slow": false, "start": 1771062851020 }, "skipped": false, "snapshot": { "added": 0, "fileDeleted": false, "matched": 0, "unchecked": 0, "uncheckedKeys": [], "unmatched": 0, "updated": 0 }, "testFilePath": "/home/runner/work/gs-squad-mcp/gs-squad-mcp/src/core/telemetry/squad-telemetry.service.spec.ts", "testResults": [ { "ancestorTitles": [ "SquadTelemetryService" ], "duration": null, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "SquadTelemetryService ensures session and updates lastActivityAt", "invocations": 1, "location": null, "numPassingAsserts": 0, "retryReasons": [], "startAt": 1771062851055, "status": "todo", "title": "ensures session and updates lastActivityAt" }, { "ancestorTitles": [ "SquadTelemetryService" ], "duration": null, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "SquadTelemetryService creates squad with label and originatorId FK", "invocations": 1, "location": null, "numPassingAsserts": 0, "retryReasons": [], "startAt": 1771062851055, "status": "todo", "title": "creates squad with label and originatorId FK" }, { "ancestorTitles": [ "SquadTelemetryService" ], "duration": null, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "SquadTelemetryService creates agent with starting status and prompt", "invocations": 1, "location": null, "numPassingAsserts": 0, "retryReasons": [], "startAt": 1771062851057, "status": "todo", "title": "creates agent with starting status and prompt" }, { "ancestorTitles": [ "SquadTelemetryService" ], "duration": null, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "SquadTelemetryService updates agent status to done/error with timestamps", "invocations": 1, "location": null, "numPassingAsserts": 0, "retryReasons": [], "startAt": 1771062851057, "status": "todo", "title": "updates agent status to done/error with timestamps" } ], "displayName": { "color": "white", "name": "unit" }, "failureMessage": null }, { "leaks": false, "numFailingTests": 0, "numPassingTests": 29, "numPendingTests": 0, "numTodoTests": 0, "openHandles": [], "perfStats": { "end": 1771062851091, "loadTestEnvironmentEnd": 1771062844269, "loadTestEnvironmentStart": 1771062843919, "runtime": 6818, "setupAfterEnvEnd": 1771062848073, "setupAfterEnvStart": 1771062844575, "setupFilesEnd": 1771062844273, "setupFilesStart": 1771062844273, "slow": true, "start": 1771062844273 }, "skipped": false, "snapshot": { "added": 0, "fileDeleted": false, "matched": 0, "unchecked": 0, "uncheckedKeys": [], "unmatched": 0, "updated": 0 }, "testFilePath": "/home/runner/work/gs-squad-mcp/gs-squad-mcp/src/core/mcp/squad.service.spec.ts", "testResults": [ { "ancestorTitles": [ "SquadService", "listRoles" ], "duration": 24, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "SquadService listRoles should return expected shape", "invocations": 1, "location": null, "numPassingAsserts": 1, "retryReasons": [], "startAt": 1771062850790, "status": "passed", "title": "should return expected shape" }, { "ancestorTitles": [ "SquadService", "listRoles" ], "duration": 6, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "SquadService listRoles should reflect updated agents", "invocations": 1, "location": null, "numPassingAsserts": 2, "retryReasons": [], "startAt": 1771062850815, "status": "passed", "title": "should reflect updated agents" }, { "ancestorTitles": [ "SquadService", "startSquadMembersStateless" ], "duration": 7, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "SquadService startSquadMembersStateless single member happy path", "invocations": 1, "location": null, "numPassingAsserts": 7, "retryReasons": [], "startAt": 1771062850821, "status": "passed", "title": "single member happy path" }, { "ancestorTitles": [ "SquadService", "startSquadMembersStateless" ], "duration": 4, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "SquadService startSquadMembersStateless multiple members in one call", "invocations": 1, "location": null, "numPassingAsserts": 4, "retryReasons": [], "startAt": 1771062850829, "status": "passed", "title": "multiple members in one call" }, { "ancestorTitles": [ "SquadService", "startSquadMembersStateless" ], "duration": 47, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "SquadService startSquadMembersStateless serializes members when engine uses cursor-agent", "invocations": 1, "location": null, "numPassingAsserts": 3, "retryReasons": [], "startAt": 1771062850833, "status": "passed", "title": "serializes members when engine uses cursor-agent" }, { "ancestorTitles": [ "SquadService", "startSquadMembersStateless" ], "duration": 90, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "SquadService startSquadMembersStateless missing role error handling", "invocations": 1, "location": null, "numPassingAsserts": 1, "retryReasons": [], "startAt": 1771062850880, "status": "passed", "title": "missing role error handling" }, { "ancestorTitles": [ "SquadService", "startSquadMembersStateless" ], "duration": 3, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "SquadService startSquadMembersStateless status mapping (exitCode/timeouts)", "invocations": 1, "location": null, "numPassingAsserts": 3, "retryReasons": [], "startAt": 1771062850971, "status": "passed", "title": "status mapping (exitCode/timeouts)" }, { "ancestorTitles": [ "SquadService", "startSquadMembersStateless" ], "duration": 7, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "SquadService startSquadMembersStateless escapes prompts with shell metacharacters", "invocations": 1, "location": null, "numPassingAsserts": 6, "retryReasons": [], "startAt": 1771062850974, "status": "passed", "title": "escapes prompts with shell metacharacters" }, { "ancestorTitles": [ "SquadService", "startSquadMembersStateless" ], "duration": 4, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "SquadService startSquadMembersStateless throws when run template rendering fails", "invocations": 1, "location": null, "numPassingAsserts": 1, "retryReasons": [], "startAt": 1771062850981, "status": "passed", "title": "throws when run template rendering fails" }, { "ancestorTitles": [ "SquadService", "startSquadMembersStateless" ], "duration": 3, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "SquadService startSquadMembersStateless throws when run template renders to empty command", "invocations": 1, "location": null, "numPassingAsserts": 1, "retryReasons": [], "startAt": 1771062850985, "status": "passed", "title": "throws when run template renders to empty command" }, { "ancestorTitles": [ "SquadService", "startSquadMembersStateless" ], "duration": 18, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "SquadService startSquadMembersStateless forces sequential execution when PROCESS_RUNNER_SERIALIZE=true", "invocations": 1, "location": null, "numPassingAsserts": 1, "retryReasons": [], "startAt": 1771062850988, "status": "passed", "title": "forces sequential execution when PROCESS_RUNNER_SERIALIZE=true" }, { "ancestorTitles": [ "SquadService", "startSquadMembersStateless" ], "duration": 7, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "SquadService startSquadMembersStateless forces parallel execution when PROCESS_RUNNER_SERIALIZE=false", "invocations": 1, "location": null, "numPassingAsserts": 1, "retryReasons": [], "startAt": 1771062851006, "status": "passed", "title": "forces parallel execution when PROCESS_RUNNER_SERIALIZE=false" }, { "ancestorTitles": [ "SquadService", "startSquadMembersStateless" ], "duration": 2, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "SquadService startSquadMembersStateless propagates process runner errors", "invocations": 1, "location": null, "numPassingAsserts": 1, "retryReasons": [], "startAt": 1771062851014, "status": "passed", "title": "propagates process runner errors" }, { "ancestorTitles": [ "SquadService", "startSquadMembersStateless" ], "duration": 1, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "SquadService startSquadMembersStateless prefers timeout status even if exit code is zero", "invocations": 1, "location": null, "numPassingAsserts": 1, "retryReasons": [], "startAt": 1771062851016, "status": "passed", "title": "prefers timeout status even if exit code is zero" }, { "ancestorTitles": [ "SquadService", "startSquadMembersStateful" ], "duration": 3, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "SquadService startSquadMembersStateful new chat returns chatId", "invocations": 1, "location": null, "numPassingAsserts": 3, "retryReasons": [], "startAt": 1771062851018, "status": "passed", "title": "new chat returns chatId" }, { "ancestorTitles": [ "SquadService", "startSquadMembersStateful" ], "duration": 5, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "SquadService startSquadMembersStateful errors when create-chat template renders empty command", "invocations": 1, "location": null, "numPassingAsserts": 1, "retryReasons": [], "startAt": 1771062851021, "status": "passed", "title": "errors when create-chat template renders empty command" }, { "ancestorTitles": [ "SquadService", "startSquadMembersStateful" ], "duration": 5, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "SquadService startSquadMembersStateful existing chat reuses chatId", "invocations": 1, "location": null, "numPassingAsserts": 3, "retryReasons": [], "startAt": 1771062851026, "status": "passed", "title": "existing chat reuses chatId" }, { "ancestorTitles": [ "SquadService", "startSquadMembersStateful" ], "duration": 2, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "SquadService startSquadMembersStateful failure in create-chat handled gracefully", "invocations": 1, "location": null, "numPassingAsserts": 1, "retryReasons": [], "startAt": 1771062851031, "status": "passed", "title": "failure in create-chat handled gracefully" }, { "ancestorTitles": [ "SquadService", "startSquadMembersStateful" ], "duration": 2, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "SquadService startSquadMembersStateful role not found throws error", "invocations": 1, "location": null, "numPassingAsserts": 1, "retryReasons": [], "startAt": 1771062851034, "status": "passed", "title": "role not found throws error" }, { "ancestorTitles": [ "SquadService", "startSquadMembersStateful" ], "duration": 2, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "SquadService startSquadMembersStateful empty chatId from create-chat throws error", "invocations": 1, "location": null, "numPassingAsserts": 1, "retryReasons": [], "startAt": 1771062851037, "status": "passed", "title": "empty chatId from create-chat throws error" }, { "ancestorTitles": [ "SquadService", "startSquadMembersStateful" ], "duration": 2, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "SquadService startSquadMembersStateful throws when create-chat template rendering fails", "invocations": 1, "location": null, "numPassingAsserts": 1, "retryReasons": [], "startAt": 1771062851040, "status": "passed", "title": "throws when create-chat template rendering fails" }, { "ancestorTitles": [ "SquadService", "startSquadMembersStateful" ], "duration": 2, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "SquadService startSquadMembersStateful throws when run template renders empty string", "invocations": 1, "location": null, "numPassingAsserts": 1, "retryReasons": [], "startAt": 1771062851043, "status": "passed", "title": "throws when run template renders empty string" }, { "ancestorTitles": [ "SquadService", "startSquadMembersStateful" ], "duration": 3, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "SquadService startSquadMembersStateful treats empty chatId input as request for new chat", "invocations": 1, "location": null, "numPassingAsserts": 4, "retryReasons": [], "startAt": 1771062851046, "status": "passed", "title": "treats empty chatId input as request for new chat" }, { "ancestorTitles": [ "SquadService", "startSquadMembersStateful" ], "duration": 3, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "SquadService startSquadMembersStateful throws when run template rendering fails", "invocations": 1, "location": null, "numPassingAsserts": 1, "retryReasons": [], "startAt": 1771062851049, "status": "passed", "title": "throws when run template rendering fails" }, { "ancestorTitles": [ "SquadService", "startSquadMembersStateful" ], "duration": 12, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "SquadService startSquadMembersStateful propagates errors from run command execution", "invocations": 1, "location": null, "numPassingAsserts": 1, "retryReasons": [], "startAt": 1771062851052, "status": "passed", "title": "propagates errors from run command execution" }, { "ancestorTitles": [ "SquadService", "startSquadMembersStateful" ], "duration": 3, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "SquadService startSquadMembersStateful sets timeout status even when exit code indicates success", "invocations": 1, "location": null, "numPassingAsserts": 1, "retryReasons": [], "startAt": 1771062851064, "status": "passed", "title": "sets timeout status even when exit code indicates success" }, { "ancestorTitles": [ "SquadService", "startSquadMembersStateful" ], "duration": 12, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "SquadService startSquadMembersStateful serializes stateful members when executionMode requests sequential", "invocations": 1, "location": null, "numPassingAsserts": 1, "retryReasons": [], "startAt": 1771062851067, "status": "passed", "title": "serializes stateful members when executionMode requests sequential" }, { "ancestorTitles": [ "SquadService", "startSquadMembersStateful" ], "duration": 7, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "SquadService startSquadMembersStateful runs stateful members in parallel when executionMode=parallel", "invocations": 1, "location": null, "numPassingAsserts": 1, "retryReasons": [], "startAt": 1771062851079, "status": "passed", "title": "runs stateful members in parallel when executionMode=parallel" }, { "ancestorTitles": [ "SquadService", "escapePromptForShell" ], "duration": 2, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "SquadService escapePromptForShell handles various whitespace and control characters", "invocations": 1, "location": null, "numPassingAsserts": 1, "retryReasons": [], "startAt": 1771062851086, "status": "passed", "title": "handles various whitespace and control characters" } ], "displayName": { "color": "white", "name": "unit" }, "failureMessage": null }, { "leaks": false, "numFailingTests": 0, "numPassingTests": 6, "numPendingTests": 0, "numTodoTests": 0, "openHandles": [], "perfStats": { "end": 1771062851473, "loadTestEnvironmentEnd": 1771062850852, "loadTestEnvironmentStart": 1771062850848, "runtime": 621, "setupAfterEnvEnd": 1771062850886, "setupAfterEnvStart": 1771062850882, "setupFilesEnd": 1771062850852, "setupFilesStart": 1771062850852, "slow": false, "start": 1771062850852 }, "skipped": false, "snapshot": { "added": 0, "fileDeleted": false, "matched": 0, "unchecked": 0, "uncheckedKeys": [], "unmatched": 0, "updated": 0 }, "testFilePath": "/home/runner/work/gs-squad-mcp/gs-squad-mcp/src/nest/app.module.spec.ts", "testResults": [ { "ancestorTitles": [ "AppModule", "metadata definition" ], "duration": 1, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "AppModule metadata definition should register all expected providers", "invocations": 1, "location": null, "numPassingAsserts": 2, "retryReasons": [], "startAt": 1771062851404, "status": "passed", "title": "should register all expected providers" }, { "ancestorTitles": [ "AppModule", "metadata definition" ], "duration": 1, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "AppModule metadata definition should export SquadService for downstream modules", "invocations": 1, "location": null, "numPassingAsserts": 1, "retryReasons": [], "startAt": 1771062851405, "status": "passed", "title": "should export SquadService for downstream modules" }, { "ancestorTitles": [ "AppModule", "metadata definition" ], "duration": 0, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "AppModule metadata definition should keep controllers empty and only import DbModule", "invocations": 1, "location": null, "numPassingAsserts": 3, "retryReasons": [], "startAt": 1771062851406, "status": "passed", "title": "should keep controllers empty and only import DbModule" }, { "ancestorTitles": [ "AppModule", "dependency injection" ], "duration": 43, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "AppModule dependency injection should resolve every registered provider instance", "invocations": 1, "location": null, "numPassingAsserts": 7, "retryReasons": [], "startAt": 1771062851406, "status": "passed", "title": "should resolve every registered provider instance" }, { "ancestorTitles": [ "AppModule", "dependency injection" ], "duration": 9, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "AppModule dependency injection should inject the same SquadService and config instances into the CLI command", "invocations": 1, "location": null, "numPassingAsserts": 2, "retryReasons": [], "startAt": 1771062851449, "status": "passed", "title": "should inject the same SquadService and config instances into the CLI command" }, { "ancestorTitles": [ "AppModule", "dependency injection" ], "duration": 15, "failing": false, "failureDetails": [], "failureMessages": [], "fullName": "AppModule dependency injection should expose the exported SquadService to importing modules", "invocations": 1, "location": null, "numPassingAsserts": 1, "retryReasons": [], "startAt": 1771062851458, "status": "passed", "title": "should expose the exported SquadService to importing modules" } ], "displayName": { "color": "white", "name": "unit" }, "failureMessage": null } ], "wasInterrupted": false }
{ "bail": 0, "changedFilesWithAncestor": false, "ci": true, "collectCoverage": true, "collectCoverageFrom": [ "**/*.(t|j)s", "!**/*.module.ts", "!**/index.ts", "!**/*.d.ts", "!**/*.spec.ts", "!**/*.test.ts" ], "coverageDirectory": "/home/runner/work/gs-squad-mcp/gs-squad-mcp/test-results/gs-squad-mcp/unit/coverage", "coverageProvider": "babel", "coverageReporters": [ "json", "text", "lcov", "clover", "json-summary", "html" ], "detectLeaks": false, "detectOpenHandles": false, "errorOnDeprecated": false, "expand": false, "findRelatedTests": false, "forceExit": false, "json": false, "lastCommit": false, "listTests": false, "logHeapUsage": false, "maxConcurrency": 5, "maxWorkers": 3, "noStackTrace": false, "nonFlagArgs": [], "notify": false, "notifyMode": "failure-change", "onlyChanged": false, "onlyFailures": false, "openHandlesTimeout": 1000, "passWithNoTests": true, "projects": [], "reporters": [ [ "default", {} ], [ "/home/runner/work/gs-squad-mcp/gs-squad-mcp/node_modules/jest-stare/lib/index.js", { "resultDir": "/home/runner/work/gs-squad-mcp/gs-squad-mcp/test-results/gs-squad-mcp/unit/", "reportTitle": "gs-squad-mcp Unit Test Results", "reportHeadline": "gs-squad-mcp Unit Test Results", "additionalResultsProcessors": [], "coverageLink": "./coverage/index.html", "resultHtml": "index.html", "resultJson": "jest-results.json" } ], [ "/home/runner/work/gs-squad-mcp/gs-squad-mcp/node_modules/jest-junit/index.js", { "outputDirectory": "/home/runner/work/gs-squad-mcp/gs-squad-mcp/test-results/gs-squad-mcp/unit", "outputName": "junit.xml", "suiteName": "gs-squad-mcp Unit Tests", "classNameTemplate": "{classname}", "titleTemplate": "{title}", "ancestorSeparator": " › ", "usePathForSuiteName": "false" } ] ], "rootDir": "/home/runner/work/gs-squad-mcp/gs-squad-mcp/src", "runInBand": false, "runTestsByPath": false, "seed": 802135579, "skipFilter": false, "snapshotFormat": { "escapeString": false, "printBasicPrototype": false }, "testFailureExitCode": 1, "testPathPatterns": { "patterns": [], "type": "TestPathPatterns" }, "testSequencer": "/home/runner/work/gs-squad-mcp/gs-squad-mcp/node_modules/@jest/test-sequencer/build/index.js", "updateSnapshot": "none", "useStderr": false, "verbose": true, "waitForUnhandledRejections": false, "watch": false, "watchAll": false, "watchman": true, "workerThreads": false }