unity-mcp/Server/tests/integration
dsarno 711768d064
Async Test Infrastructure & Editor Readiness Status + new refresh_unity tool (#507)
* Add editor readiness v2, refresh tool, and preflight guards

* Detect external package changes and harden refresh retry

* feat: add TestRunnerNoThrottle and async test running with background stall prevention

- Add TestRunnerNoThrottle.cs: Sets editor to 'No Throttling' mode during test runs
  with SessionState persistence across domain reload
- Add run_tests_async and get_test_job tools for non-blocking test execution
- Add TestJobManager for async test job tracking with progress monitoring
- Add ForceSynchronousImport to all AssetDatabase.Refresh() calls to prevent stalls
- Mark DomainReloadResilienceTests as [Explicit] with documentation explaining
  the test infrastructure limitation (internal coroutine waits vs MCP socket polling)
- MCP workflow is unaffected - socket messages provide external stimulus that
  keeps Unity responsive even when backgrounded

* refactor: simplify and clean up code

- Remove unused Newtonsoft.Json.Linq import from TestJobManager
- Add throttling to SessionState persistence (once per second) to reduce overhead
- Critical job state changes (start/finish) still persist immediately
- Fix duplicate XML summary tag in DomainReloadResilienceTests

* docs: add async test tools to README, document domain reload limitation

- Add run_tests_async and get_test_job to main README tools list
- Document background stall limitation for domain reload tests in DEV readme

* ci: add separate job for domain reload tests

Run [Explicit] domain_reload tests in their own job using -testCategory

* ci: run domain reload tests in same job as regular tests

Combines into single job with two test steps to reuse cached Library

* fix: address coderabbit review issues

- Fix TOCTOU race in TestJobManager.StartJob (single lock scope for check-and-set)
- Store TestRunnerApi reference with HideAndDontSave to prevent GC/serialization issues

* docs: update tool descriptions to prefer run_tests_async

- run_tests_async is now marked as preferred for long-running suites
- run_tests description notes it blocks and suggests async alternative

* docs: update README screenshot to v8.6 UI

* docs: add v8.6 UI screenshot

* Update README for MCP version and instructions for v8.7

* fix: handle preflight busy signals and derive job status from test results

- manage_asset, manage_gameobject, manage_scene now check preflight return
  value and propagate busy/retry signals to clients (fixes Sourcery #1)
- TestJobManager.FinalizeCurrentJobFromRunFinished now sets job status to
  Failed when resultPayload.Failed > 0, not always Succeeded (fixes Sourcery #2)

* fix: increase HTTP server startup timeout for dev mode

When 'Force fresh server install' is enabled, uvx uses --no-cache --refresh
which rebuilds the package and takes significantly longer to start.

- Increase timeout from 10s to 45s when dev mode is enabled
- Add informative log message explaining the longer startup time
- Show actual timeout value in warning message

* fix: derive job status from test results in FinalizeFromTask fallback

Apply same logic as FinalizeCurrentJobFromRunFinished: check result.Failed > 0
to correctly mark jobs as Failed when tests fail, even in the fallback path
when RunFinished callback is not delivered.
2026-01-03 12:42:32 -08:00
..
__init__.py Update mirror backend with latest code 2025-11-05 16:08:59 -04:00
conftest.py ManageGameObject/Material + auto-select sole Unity instance (#502) 2026-01-01 21:04:10 -08:00
test_debug_request_context_diagnostics.py Payload-safe paging for hierarchy/components + safer asset search + docs (#490) 2025-12-28 20:57:57 -08:00
test_domain_reload_resilience.py HTTP Server, uvx, C# only custom tools (#375) 2025-11-24 23:21:06 -04:00
test_edit_normalization_and_noop.py HTTP Server, uvx, C# only custom tools (#375) 2025-11-24 23:21:06 -04:00
test_edit_strict_and_warnings.py HTTP Server, uvx, C# only custom tools (#375) 2025-11-24 23:21:06 -04:00
test_editor_state_v2_contract.py Async Test Infrastructure & Editor Readiness Status + new refresh_unity tool (#507) 2026-01-03 12:42:32 -08:00
test_external_changes_scanner.py Async Test Infrastructure & Editor Readiness Status + new refresh_unity tool (#507) 2026-01-03 12:42:32 -08:00
test_find_in_file_minimal.py HTTP Server, uvx, C# only custom tools (#375) 2025-11-24 23:21:06 -04:00
test_get_sha.py HTTP Server, uvx, C# only custom tools (#375) 2025-11-24 23:21:06 -04:00
test_helpers.py HTTP Server, uvx, C# only custom tools (#375) 2025-11-24 23:21:06 -04:00
test_improved_anchor_matching.py HTTP Server, uvx, C# only custom tools (#375) 2025-11-24 23:21:06 -04:00
test_instance_autoselect.py ManageGameObject/Material + auto-select sole Unity instance (#502) 2026-01-01 21:04:10 -08:00
test_instance_routing_comprehensive.py HTTP Server, uvx, C# only custom tools (#375) 2025-11-24 23:21:06 -04:00
test_instance_targeting_resolution.py HTTP Server, uvx, C# only custom tools (#375) 2025-11-24 23:21:06 -04:00
test_json_parsing_simple.py HTTP Server, uvx, C# only custom tools (#375) 2025-11-24 23:21:06 -04:00
test_logging_stdout.py HTTP Server, uvx, C# only custom tools (#375) 2025-11-24 23:21:06 -04:00
test_manage_asset_json_parsing.py feat: Add `manage_material` tool for dedicated material manipulation (#440) 2025-12-07 19:39:52 -08:00
test_manage_asset_param_coercion.py HTTP Server, uvx, C# only custom tools (#375) 2025-11-24 23:21:06 -04:00
test_manage_gameobject_param_coercion.py Payload-safe paging for hierarchy/components + safer asset search + docs (#490) 2025-12-28 20:57:57 -08:00
test_manage_scene_paging_params.py Payload-safe paging for hierarchy/components + safer asset search + docs (#490) 2025-12-28 20:57:57 -08:00
test_manage_script_uri.py HTTP Server, uvx, C# only custom tools (#375) 2025-11-24 23:21:06 -04:00
test_manage_scriptable_object_tool.py feature/Add new manage_scriptable_object tool (#489) 2025-12-28 20:15:50 -08:00
test_read_console_truncate.py HTTP Server, uvx, C# only custom tools (#375) 2025-11-24 23:21:06 -04:00
test_read_resource_minimal.py HTTP Server, uvx, C# only custom tools (#375) 2025-11-24 23:21:06 -04:00
test_refresh_unity_registration.py Async Test Infrastructure & Editor Readiness Status + new refresh_unity tool (#507) 2026-01-03 12:42:32 -08:00
test_refresh_unity_retry_recovery.py Async Test Infrastructure & Editor Readiness Status + new refresh_unity tool (#507) 2026-01-03 12:42:32 -08:00
test_resources_api.py HTTP Server, uvx, C# only custom tools (#375) 2025-11-24 23:21:06 -04:00
test_run_tests_busy_semantics.py Async Test Infrastructure & Editor Readiness Status + new refresh_unity tool (#507) 2026-01-03 12:42:32 -08:00
test_script_editing.py Update mirror backend with latest code 2025-11-05 16:08:59 -04:00
test_script_tools.py HTTP Server, uvx, C# only custom tools (#375) 2025-11-24 23:21:06 -04:00
test_telemetry_endpoint_validation.py HTTP Server, uvx, C# only custom tools (#375) 2025-11-24 23:21:06 -04:00
test_telemetry_queue_worker.py HTTP Server, uvx, C# only custom tools (#375) 2025-11-24 23:21:06 -04:00
test_telemetry_subaction.py HTTP Server, uvx, C# only custom tools (#375) 2025-11-24 23:21:06 -04:00
test_test_jobs_async.py Async Test Infrastructure & Editor Readiness Status + new refresh_unity tool (#507) 2026-01-03 12:42:32 -08:00
test_tool_signatures_paging.py Payload-safe paging for hierarchy/components + safer asset search + docs (#490) 2025-12-28 20:57:57 -08:00
test_transport_framing.py HTTP Server, uvx, C# only custom tools (#375) 2025-11-24 23:21:06 -04:00
test_validate_script_summary.py HTTP Server, uvx, C# only custom tools (#375) 2025-11-24 23:21:06 -04:00