using Avalonia; using foodmarket.Pos.Tooling; namespace foodmarket.Pos; internal static class Program { [STAThread] public static int Main(string[] args) { PosFormat.Apply(); // единый формат чисел (KZ/RU: «3 422 ₸», «1,235 кг») // CLI-режимы (без интерактивного окна): // --smoke : прогон сценария кассы через логику (без UI), печать результатов. // --screenshots : headless-рендер экранов в docs/pos-screenshots (1920×1080 + 1366×768). // --uitest : headless UI-автотест экрана продажи (Avalonia.Headless, для CI/xvfb). if (args.Contains("--smoke")) return SmokeRunner.Run(args); if (args.Contains("--screenshots")) return ScreenshotRunner.Run(args); if (args.Contains("--uitest")) return UiTestRunner.Run(args); // --demo : показать реальное окно с примерами данных (для скриншота на Windows). if (args.Contains("--demo")) App.DemoMode = true; BuildAvaloniaApp().StartWithClassicDesktopLifetime(args); return 0; } public static AppBuilder BuildAvaloniaApp() { var b = AppBuilder.Configure().UsePlatformDetect(); // Демо-скриншот на headless VM (без GPU) — ПО-рендеринг, иначе окно чёрное. if (App.DemoMode && OperatingSystem.IsWindows()) b = b.With(new Avalonia.Win32PlatformOptions { RenderingMode = new[] { Avalonia.Win32RenderingMode.Software }, }); return b.WithInterFont().LogToTrace(); } }