using System.Diagnostics; using System.Net; using Microsoft.AspNetCore.Mvc.Routing; namespace Berufsschule_HAM.E2ETests.Helper; public static class AppHelper { public static async Task StartApp(string appUrl) { var startInfo = new ProcessStartInfo { FileName = "/snap/bin/dotnet", Arguments = "run --project ../../../../../src/", WorkingDirectory = AppContext.BaseDirectory, UseShellExecute = false, RedirectStandardOutput = true, RedirectStandardError = true, }; startInfo.EnvironmentVariables["ASPNETCORE_ENVIRONMENT"] = "Development"; var process = new Process { StartInfo = startInfo };// Process process = Process.Start("/snap/bin/dotnet", "run -e Development"); process.Start(); using var client = new HttpClient(); for (int i = 0; i < 60; i++) { try { var response = await client.GetAsync(appUrl); if (response.StatusCode == HttpStatusCode.OK) { return process; } else if (response.StatusCode != HttpStatusCode.RequestTimeout) { throw new Exception($"Server did not start properly? {response.StatusCode}"); } } catch (Exception) { } Thread.Sleep(1000); } throw new Exception("Server did not start within 60 seconds"); } }