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);
|
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 Uri _listeningUri;
|
||||||
private readonly HttpClient _httpClient;
|
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();
|
_httpClient = new HttpClient();
|
||||||
|
|
||||||
var buildProcess = ProcessEx.Run(workingDirectory, "dotnet", "build --no-restore -c Debug");
|
var framework = string.IsNullOrEmpty(targetFrameworkOverride) ? DefaultFramework : targetFrameworkOverride;
|
||||||
buildProcess.WaitForExit(assertSuccess: true);
|
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>
|
var envVars = new Dictionary<string, string>
|
||||||
{
|
{
|
||||||
{ "ASPNETCORE_URLS", "http://127.0.0.1:0" }
|
{ "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"))
|
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
|
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);
|
_process = ProcessEx.Run(workingDirectory, exeFullPath, envVars: envVars);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -71,6 +90,7 @@ namespace Templates.Test.Helpers
|
||||||
|
|
||||||
public IWebDriver VisitInBrowser()
|
public IWebDriver VisitInBrowser()
|
||||||
{
|
{
|
||||||
|
Console.WriteLine($"Opening browser at {_listeningUri}...");
|
||||||
var driver = WebDriverFactory.CreateWebDriver();
|
var driver = WebDriverFactory.CreateWebDriver();
|
||||||
driver.Navigate().GoToUrl(_listeningUri);
|
driver.Navigate().GoToUrl(_listeningUri);
|
||||||
return driver;
|
return driver;
|
||||||
|
|
|
||||||
|
|
@ -105,9 +105,9 @@ namespace Templates.Test
|
||||||
return File.ReadAllText(Path.Combine(TemplateOutputDir, path));
|
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()
|
public void Dispose()
|
||||||
|
|
|
||||||
|
|
@ -26,11 +26,14 @@ namespace Templates.Test
|
||||||
Assert.DoesNotContain("Microsoft.EntityFrameworkCore.Tools.DotNet", projectFileContents);
|
Assert.DoesNotContain("Microsoft.EntityFrameworkCore.Tools.DotNet", projectFileContents);
|
||||||
Assert.DoesNotContain("Microsoft.Extensions.SecretManager.Tools", projectFileContents);
|
Assert.DoesNotContain("Microsoft.Extensions.SecretManager.Tools", projectFileContents);
|
||||||
|
|
||||||
using (var aspNetProcess = StartAspNetProcess(targetFrameworkOverride))
|
foreach (var publish in new[] { false, true })
|
||||||
{
|
{
|
||||||
aspNetProcess.AssertOk("/");
|
using (var aspNetProcess = StartAspNetProcess(targetFrameworkOverride, publish))
|
||||||
aspNetProcess.AssertOk("/Home/About");
|
{
|
||||||
aspNetProcess.AssertOk("/Home/Contact");
|
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.EntityFrameworkCore.Tools.DotNet", projectFileContents);
|
||||||
Assert.Contains("Microsoft.Extensions.SecretManager.Tools", projectFileContents);
|
Assert.Contains("Microsoft.Extensions.SecretManager.Tools", projectFileContents);
|
||||||
|
|
||||||
using (var aspNetProcess = StartAspNetProcess(targetFrameworkOverride))
|
foreach (var publish in new[] { false, true })
|
||||||
{
|
{
|
||||||
aspNetProcess.AssertOk("/");
|
using (var aspNetProcess = StartAspNetProcess(targetFrameworkOverride, publish))
|
||||||
aspNetProcess.AssertOk("/Home/About");
|
{
|
||||||
aspNetProcess.AssertOk("/Home/Contact");
|
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.EntityFrameworkCore.Tools.DotNet", projectFileContents);
|
||||||
Assert.DoesNotContain("Microsoft.Extensions.SecretManager.Tools", projectFileContents);
|
Assert.DoesNotContain("Microsoft.Extensions.SecretManager.Tools", projectFileContents);
|
||||||
|
|
||||||
using (var aspNetProcess = StartAspNetProcess(targetFrameworkOverride))
|
foreach (var publish in new[] { false, true })
|
||||||
{
|
{
|
||||||
aspNetProcess.AssertOk("/");
|
using (var aspNetProcess = StartAspNetProcess(targetFrameworkOverride, publish))
|
||||||
aspNetProcess.AssertOk("/About");
|
{
|
||||||
aspNetProcess.AssertOk("/Contact");
|
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.EntityFrameworkCore.Tools.DotNet", projectFileContents);
|
||||||
Assert.Contains("Microsoft.Extensions.SecretManager.Tools", projectFileContents);
|
Assert.Contains("Microsoft.Extensions.SecretManager.Tools", projectFileContents);
|
||||||
|
|
||||||
using (var aspNetProcess = StartAspNetProcess(targetFrameworkOverride))
|
foreach (var publish in new[] { false, true })
|
||||||
{
|
{
|
||||||
aspNetProcess.AssertOk("/");
|
using (var aspNetProcess = StartAspNetProcess(targetFrameworkOverride, publish))
|
||||||
aspNetProcess.AssertOk("/About");
|
{
|
||||||
aspNetProcess.AssertOk("/Contact");
|
aspNetProcess.AssertOk("/");
|
||||||
|
aspNetProcess.AssertOk("/About");
|
||||||
|
aspNetProcess.AssertOk("/Contact");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
using OpenQA.Selenium;
|
using OpenQA.Selenium;
|
||||||
using System;
|
|
||||||
using Templates.Test.Helpers;
|
using Templates.Test.Helpers;
|
||||||
using Xunit;
|
using Xunit;
|
||||||
|
|
||||||
|
|
@ -21,15 +20,18 @@ namespace Templates.Test
|
||||||
{
|
{
|
||||||
RunDotNetNew(template, targetFrameworkOverride);
|
RunDotNetNew(template, targetFrameworkOverride);
|
||||||
RunNpmInstall();
|
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("/");
|
aspNetProcess.AssertOk("/");
|
||||||
|
|
||||||
if (WebDriverFactory.HostSupportsBrowserAutomation)
|
if (WebDriverFactory.HostSupportsBrowserAutomation)
|
||||||
{
|
{
|
||||||
Console.WriteLine("Starting browser automation tests...");
|
|
||||||
|
|
||||||
using (var browser = aspNetProcess.VisitInBrowser())
|
using (var browser = aspNetProcess.VisitInBrowser())
|
||||||
{
|
{
|
||||||
TestBasicNavigation(browser);
|
TestBasicNavigation(browser);
|
||||||
|
|
|
||||||
|
|
@ -11,10 +11,13 @@ namespace Templates.Test
|
||||||
{
|
{
|
||||||
RunDotNetNew("api", targetFrameworkOverride);
|
RunDotNetNew("api", targetFrameworkOverride);
|
||||||
|
|
||||||
using (var aspNetProcess = StartAspNetProcess(targetFrameworkOverride))
|
foreach (var publish in new[] { false, true })
|
||||||
{
|
{
|
||||||
aspNetProcess.AssertOk("/api/values");
|
using (var aspNetProcess = StartAspNetProcess(targetFrameworkOverride, publish))
|
||||||
aspNetProcess.AssertNotFound("/");
|
{
|
||||||
|
aspNetProcess.AssertOk("/api/values");
|
||||||
|
aspNetProcess.AssertNotFound("/");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue