#nullable enable using System.Collections; using System.Reflection; using Demo2.Domain; using Demo2.ECS; using Demo2.Runtime; using NUnit.Framework; using ShrinkContext.AppAdapter; using Unity.Entities; using UnityEngine; using UnityEngine.SceneManagement; using UnityEngine.TestTools; using UnityEngine.UIElements; namespace Demo2.Tests { public sealed class Demo2PlayModeTests { [UnityTest] public IEnumerator SceneEntry_OpensTitleAndStartsTheRealFactoryScreen() { yield return SceneManager.LoadSceneAsync("Demo2", LoadSceneMode.Single); yield return null; var controller = Object.FindObjectOfType(); Assert.That(controller, Is.Not.Null); for (var frame = 0; frame < 30 && (ShrinkAppLoaderBootstrapper.Instance == null || !ShrinkAppLoaderBootstrapper.Instance.Host.IsRunning); frame++) yield return null; var appHost = ShrinkAppLoaderBootstrapper.Instance; Assert.That(appHost, Is.Not.Null); Assert.That(appHost!.Host.IsRunning, Is.True); Assert.That(appHost.Host.ActiveModuleIds, Does.Contain("demo2.rule-factory")); Assert.That(appHost.Host.Services.TryGet(out var appService), Is.True); Assert.That(appService, Is.Not.Null); var document = controller!.GetComponentInChildren(); Assert.That(document, Is.Not.Null); var solo = document!.rootVisualElement.Q