Test both dev and published apps
This commit is contained in:
parent
7e8d48cd80
commit
9174ca79fa
|
|
@ -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("/");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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<string, string>
|
||||
{
|
||||
{ "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;
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
|
|
|||
|
|
@ -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");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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("/");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue