From 9174ca79fa1e2c95295f0705468b993c23223c36 Mon Sep 17 00:00:00 2001 From: Steve Sanderson Date: Wed, 6 Sep 2017 12:14:26 +0100 Subject: [PATCH] Test both dev and published apps --- test/Templates.Test/EmptyWebTemplateTest.cs | 7 ++-- test/Templates.Test/Helpers/AspNetProcess.cs | 32 +++++++++++++++---- .../Helpers/TemplateTestBase.cs | 4 +-- test/Templates.Test/MvcTemplateTest.cs | 22 ++++++++----- test/Templates.Test/RazorPagesTemplateTest.cs | 22 ++++++++----- test/Templates.Test/SpaTemplateTest.cs | 10 +++--- test/Templates.Test/WebApiTemplateTest.cs | 9 ++++-- 7 files changed, 73 insertions(+), 33 deletions(-) diff --git a/test/Templates.Test/EmptyWebTemplateTest.cs b/test/Templates.Test/EmptyWebTemplateTest.cs index ee2ae747cb..de7f327df0 100644 --- a/test/Templates.Test/EmptyWebTemplateTest.cs +++ b/test/Templates.Test/EmptyWebTemplateTest.cs @@ -11,9 +11,12 @@ namespace Templates.Test { RunDotNetNew("web", targetFrameworkOverride); - using (var aspNetProcess = StartAspNetProcess(targetFrameworkOverride)) + foreach (var publish in new[] { false, true }) { - aspNetProcess.AssertOk("/"); + using (var aspNetProcess = StartAspNetProcess(targetFrameworkOverride, publish)) + { + aspNetProcess.AssertOk("/"); + } } } } diff --git a/test/Templates.Test/Helpers/AspNetProcess.cs b/test/Templates.Test/Helpers/AspNetProcess.cs index 6422453455..80396f4f93 100644 --- a/test/Templates.Test/Helpers/AspNetProcess.cs +++ b/test/Templates.Test/Helpers/AspNetProcess.cs @@ -18,26 +18,45 @@ namespace Templates.Test.Helpers private readonly Uri _listeningUri; private readonly HttpClient _httpClient; - public AspNetProcess(string workingDirectory, string projectName, string targetFrameworkOverride) + public AspNetProcess(string workingDirectory, string projectName, string targetFrameworkOverride, bool publish) { _httpClient = new HttpClient(); - var buildProcess = ProcessEx.Run(workingDirectory, "dotnet", "build --no-restore -c Debug"); - buildProcess.WaitForExit(assertSuccess: true); + var framework = string.IsNullOrEmpty(targetFrameworkOverride) ? DefaultFramework : targetFrameworkOverride; + if (publish) + { + ProcessEx + .Run(workingDirectory, "dotnet", "publish -c Release") + .WaitForExit(assertSuccess: true); + workingDirectory = Path.Combine(workingDirectory, "bin", "Release", framework, "publish"); + } + else + { + ProcessEx + .Run(workingDirectory, "dotnet", "build --no-restore -c Debug") + .WaitForExit(assertSuccess: true); + } var envVars = new Dictionary { { "ASPNETCORE_URLS", "http://127.0.0.1:0" } }; - var framework = string.IsNullOrEmpty(targetFrameworkOverride) ? DefaultFramework : targetFrameworkOverride; + if (!publish) + { + envVars["ASPNETCORE_ENVIRONMENT"] = "Development"; + } + if (framework.StartsWith("netcore")) { - _process = ProcessEx.Run(workingDirectory, "dotnet", $"exec bin/Debug/{framework}/{projectName}.dll", envVars: envVars); + var dllPath = publish ? $"{projectName}.dll" : $"bin/Debug/{framework}/{projectName}.dll"; + _process = ProcessEx.Run(workingDirectory, "dotnet", $"exec {dllPath}", envVars: envVars); } else { - var exeFullPath = Path.Combine(workingDirectory, "bin", "Debug", framework, $"{projectName}.exe"); + var exeFullPath = publish + ? Path.Combine(workingDirectory, $"{projectName}.exe") + : Path.Combine(workingDirectory, "bin", "Debug", framework, $"{projectName}.exe"); _process = ProcessEx.Run(workingDirectory, exeFullPath, envVars: envVars); } @@ -71,6 +90,7 @@ namespace Templates.Test.Helpers public IWebDriver VisitInBrowser() { + Console.WriteLine($"Opening browser at {_listeningUri}..."); var driver = WebDriverFactory.CreateWebDriver(); driver.Navigate().GoToUrl(_listeningUri); return driver; diff --git a/test/Templates.Test/Helpers/TemplateTestBase.cs b/test/Templates.Test/Helpers/TemplateTestBase.cs index 9efbce8989..47db2292ca 100644 --- a/test/Templates.Test/Helpers/TemplateTestBase.cs +++ b/test/Templates.Test/Helpers/TemplateTestBase.cs @@ -105,9 +105,9 @@ namespace Templates.Test return File.ReadAllText(Path.Combine(TemplateOutputDir, path)); } - protected AspNetProcess StartAspNetProcess(string targetFrameworkOverride) + protected AspNetProcess StartAspNetProcess(string targetFrameworkOverride, bool publish = false) { - return new AspNetProcess(TemplateOutputDir, ProjectName, targetFrameworkOverride); + return new AspNetProcess(TemplateOutputDir, ProjectName, targetFrameworkOverride, publish); } public void Dispose() diff --git a/test/Templates.Test/MvcTemplateTest.cs b/test/Templates.Test/MvcTemplateTest.cs index 862498ea83..1aa8967ae6 100644 --- a/test/Templates.Test/MvcTemplateTest.cs +++ b/test/Templates.Test/MvcTemplateTest.cs @@ -26,11 +26,14 @@ namespace Templates.Test Assert.DoesNotContain("Microsoft.EntityFrameworkCore.Tools.DotNet", projectFileContents); Assert.DoesNotContain("Microsoft.Extensions.SecretManager.Tools", projectFileContents); - using (var aspNetProcess = StartAspNetProcess(targetFrameworkOverride)) + foreach (var publish in new[] { false, true }) { - aspNetProcess.AssertOk("/"); - aspNetProcess.AssertOk("/Home/About"); - aspNetProcess.AssertOk("/Home/Contact"); + using (var aspNetProcess = StartAspNetProcess(targetFrameworkOverride, publish)) + { + aspNetProcess.AssertOk("/"); + aspNetProcess.AssertOk("/Home/About"); + aspNetProcess.AssertOk("/Home/Contact"); + } } } @@ -52,11 +55,14 @@ namespace Templates.Test Assert.Contains("Microsoft.EntityFrameworkCore.Tools.DotNet", projectFileContents); Assert.Contains("Microsoft.Extensions.SecretManager.Tools", projectFileContents); - using (var aspNetProcess = StartAspNetProcess(targetFrameworkOverride)) + foreach (var publish in new[] { false, true }) { - aspNetProcess.AssertOk("/"); - aspNetProcess.AssertOk("/Home/About"); - aspNetProcess.AssertOk("/Home/Contact"); + using (var aspNetProcess = StartAspNetProcess(targetFrameworkOverride, publish)) + { + aspNetProcess.AssertOk("/"); + aspNetProcess.AssertOk("/Home/About"); + aspNetProcess.AssertOk("/Home/Contact"); + } } } } diff --git a/test/Templates.Test/RazorPagesTemplateTest.cs b/test/Templates.Test/RazorPagesTemplateTest.cs index d1e663b770..a57c049bad 100644 --- a/test/Templates.Test/RazorPagesTemplateTest.cs +++ b/test/Templates.Test/RazorPagesTemplateTest.cs @@ -21,11 +21,14 @@ namespace Templates.Test Assert.DoesNotContain("Microsoft.EntityFrameworkCore.Tools.DotNet", projectFileContents); Assert.DoesNotContain("Microsoft.Extensions.SecretManager.Tools", projectFileContents); - using (var aspNetProcess = StartAspNetProcess(targetFrameworkOverride)) + foreach (var publish in new[] { false, true }) { - aspNetProcess.AssertOk("/"); - aspNetProcess.AssertOk("/About"); - aspNetProcess.AssertOk("/Contact"); + using (var aspNetProcess = StartAspNetProcess(targetFrameworkOverride, publish)) + { + aspNetProcess.AssertOk("/"); + aspNetProcess.AssertOk("/About"); + aspNetProcess.AssertOk("/Contact"); + } } } @@ -46,11 +49,14 @@ namespace Templates.Test Assert.Contains("Microsoft.EntityFrameworkCore.Tools.DotNet", projectFileContents); Assert.Contains("Microsoft.Extensions.SecretManager.Tools", projectFileContents); - using (var aspNetProcess = StartAspNetProcess(targetFrameworkOverride)) + foreach (var publish in new[] { false, true }) { - aspNetProcess.AssertOk("/"); - aspNetProcess.AssertOk("/About"); - aspNetProcess.AssertOk("/Contact"); + using (var aspNetProcess = StartAspNetProcess(targetFrameworkOverride, publish)) + { + aspNetProcess.AssertOk("/"); + aspNetProcess.AssertOk("/About"); + aspNetProcess.AssertOk("/Contact"); + } } } } diff --git a/test/Templates.Test/SpaTemplateTest.cs b/test/Templates.Test/SpaTemplateTest.cs index bc12b0ec39..bd2ed1c2c5 100644 --- a/test/Templates.Test/SpaTemplateTest.cs +++ b/test/Templates.Test/SpaTemplateTest.cs @@ -1,5 +1,4 @@ using OpenQA.Selenium; -using System; using Templates.Test.Helpers; using Xunit; @@ -21,15 +20,18 @@ namespace Templates.Test { RunDotNetNew(template, targetFrameworkOverride); RunNpmInstall(); + TestApplication(targetFrameworkOverride, publish: false); + TestApplication(targetFrameworkOverride, publish: true); + } - using (var aspNetProcess = StartAspNetProcess(targetFrameworkOverride)) + private void TestApplication(string targetFrameworkOverride, bool publish) + { + using (var aspNetProcess = StartAspNetProcess(targetFrameworkOverride, publish)) { aspNetProcess.AssertOk("/"); if (WebDriverFactory.HostSupportsBrowserAutomation) { - Console.WriteLine("Starting browser automation tests..."); - using (var browser = aspNetProcess.VisitInBrowser()) { TestBasicNavigation(browser); diff --git a/test/Templates.Test/WebApiTemplateTest.cs b/test/Templates.Test/WebApiTemplateTest.cs index bdabe0368a..6da33297ef 100644 --- a/test/Templates.Test/WebApiTemplateTest.cs +++ b/test/Templates.Test/WebApiTemplateTest.cs @@ -11,10 +11,13 @@ namespace Templates.Test { RunDotNetNew("api", targetFrameworkOverride); - using (var aspNetProcess = StartAspNetProcess(targetFrameworkOverride)) + foreach (var publish in new[] { false, true }) { - aspNetProcess.AssertOk("/api/values"); - aspNetProcess.AssertNotFound("/"); + using (var aspNetProcess = StartAspNetProcess(targetFrameworkOverride, publish)) + { + aspNetProcess.AssertOk("/api/values"); + aspNetProcess.AssertNotFound("/"); + } } } }