namespace MBN_STOCK_WEBVIEW.LegacyWeb.Tests; public sealed class LegacyPackageAppearanceSmokeContractTests { private static readonly string Root = FindRepositoryRoot(); private static readonly string Wrapper = Read( "scripts", "Invoke-LegacyPackageAppearanceSmoke.ps1"); private static readonly string Harness = Read( "scripts", "Test-LegacyPackageAppearanceSmoke.mjs"); [Fact] public void Dedicated_runner_reuses_exact_debug_package_dryrun_and_close_guards() { Assert.Contains("-BuildFlavor DebugAppX", Wrapper, StringComparison.Ordinal); Assert.Contains("-DefinitionsOnly", Wrapper, StringComparison.Ordinal); Assert.Contains("Get-ExactDevelopmentPackage", Wrapper, StringComparison.Ordinal); Assert.Contains("Assert-LocalConfigurationIsDryRun", Wrapper, StringComparison.Ordinal); Assert.Contains("Assert-NoTornadoConnection", Wrapper, StringComparison.Ordinal); Assert.Contains("Start-ExactAppearanceApplication $registration 1", Wrapper, StringComparison.Ordinal); Assert.Contains("Start-ExactAppearanceApplication $registration 2", Wrapper, StringComparison.Ordinal); Assert.Contains( "Wait-StartupIntroDismissed $application $Registration.Executable", Wrapper, StringComparison.Ordinal); Assert.Equal(2, CountOccurrences(Wrapper, "Close-ExactAppearanceApplication $")); Assert.DoesNotContain("Stop-Process", Wrapper, StringComparison.OrdinalIgnoreCase); Assert.DoesNotContain("taskkill", Wrapper, StringComparison.OrdinalIgnoreCase); Assert.DoesNotMatch(@"(?i)C:\\Users\\[^\\]+", Wrapper); } [Fact] public void Three_selects_use_trusted_windows_mouse_and_keyboard_once_per_phase() { Assert.Contains("SendApplicationClick(", Wrapper, StringComparison.Ordinal); Assert.Contains("SendClosedSelectKeys(", Wrapper, StringComparison.Ordinal); Assert.Contains("[FieldOffset(0)] public MouseInput Mouse", Wrapper, StringComparison.Ordinal); Assert.Contains("[FieldOffset(0)] public KeyboardInput Keyboard", Wrapper, StringComparison.Ordinal); Assert.Contains("[FieldOffset(0)] public HardwareInput Hardware", Wrapper, StringComparison.Ordinal); Assert.Contains("IntPtr.Size == 8 ? 40 : 28", Wrapper, StringComparison.Ordinal); Assert.Contains("inputSize != ExpectedInputStructureBytes()", Wrapper, StringComparison.Ordinal); Assert.Contains("event.isTrusted === true", Harness, StringComparison.Ordinal); Assert.Contains("trustedChange: true", Harness, StringComparison.Ordinal); Assert.Contains("physicalKeyCounts:", Harness, StringComparison.Ordinal); Assert.Contains("home: ack.homeKeyCalls", Harness, StringComparison.Ordinal); Assert.Contains("arrowDown: ack.arrowDownKeyCalls", Harness, StringComparison.Ordinal); Assert.Contains("enter: ack.enterKeyCalls", Harness, StringComparison.Ordinal); Assert.Contains("A native HTML