public ReactTemplateTest(ProjectFactoryFixture projectFactory, BrowserFixture browserFixture, ITestOutputHelper output) : base(projectFactory, browserFixture, output) { }
public ReactReduxTemplateTest(BrowserFixture browserFixture, ITestOutputHelper output) : base(browserFixture, output) { }
public ErrorBoundaryTest(BrowserFixture browserFixture, ToggleExecutionModeServerFixture <Program> serverFixture, ITestOutputHelper output) : base(browserFixture, serverFixture, output) { }
public ServerDynamicComponentRenderingTest(BrowserFixture browserFixture, ToggleExecutionModeServerFixture <Program> serverFixture, ITestOutputHelper output) : base(browserFixture, serverFixture.WithServerExecution(), output) { }
public CompressBobrilFunctionalTest(BrowserFixture browserFixture) : base(browserFixture) { RuntimeTemplate = File.ReadAllText($"{BobrilTestPath}/TestRuntime.html"); }
public ServerKeyTest(BrowserFixture browserFixture, ToggleExecutionModeServerFixture <Program> serverFixture, ITestOutputHelper output) : base(browserFixture, serverFixture.WithServerExecution(), output) { }
public SpaTemplateTestBase( ProjectFactoryFixture projectFactory, BrowserFixture browserFixture, ITestOutputHelper output) : base(browserFixture, output) { ProjectFactory = projectFactory; }
public async Task BlazorServerTemplateWorks_NoAuth() { // Additional arguments are needed. See: https://github.com/dotnet/aspnetcore/issues/24278 Environment.SetEnvironmentVariable("EnableDefaultScopedCssItems", "true"); Project = await ProjectFactory.GetOrCreateProject("blazorservernoauth", Output); var createResult = await Project.RunDotNetNewAsync("blazorserver"); Assert.True(0 == createResult.ExitCode, ErrorMessages.GetFailedProcessMessage("create/restore", Project, createResult)); var publishResult = await Project.RunDotNetPublishAsync(); Assert.True(0 == publishResult.ExitCode, ErrorMessages.GetFailedProcessMessage("publish", Project, publishResult)); // Run dotnet build after publish. The reason is that one uses Config = Debug and the other uses Config = Release // The output from publish will go into bin/Release/netcoreappX.Y/publish and won't be affected by calling build // later, while the opposite is not true. var buildResult = await Project.RunDotNetBuildAsync(); Assert.True(0 == buildResult.ExitCode, ErrorMessages.GetFailedProcessMessage("build", Project, buildResult)); using (var aspNetProcess = Project.StartBuiltProjectAsync()) { Assert.False( aspNetProcess.Process.HasExited, ErrorMessages.GetFailedProcessMessageOrEmpty("Run built project", Project, aspNetProcess.Process)); await aspNetProcess.AssertStatusCode("/", HttpStatusCode.OK, "text/html"); if (BrowserFixture.IsHostAutomationSupported()) { aspNetProcess.VisitInBrowser(Browser); TestBasicNavigation(); } else { BrowserFixture.EnforceSupportedConfigurations(); } } using (var aspNetProcess = Project.StartPublishedProjectAsync()) { Assert.False( aspNetProcess.Process.HasExited, ErrorMessages.GetFailedProcessMessageOrEmpty("Run published project", Project, aspNetProcess.Process)); await aspNetProcess.AssertStatusCode("/", HttpStatusCode.OK, "text/html"); if (BrowserFixture.IsHostAutomationSupported()) { aspNetProcess.VisitInBrowser(Browser); TestBasicNavigation(); } else { BrowserFixture.EnforceSupportedConfigurations(); } } }
public BindTest(BrowserFixture browserFixture, DevHostServerFixture <Program> serverFixture) : base(browserFixture, serverFixture) { Navigate(ServerPathBase, noReload: true); MountTestComponent <BindCasesComponent>(); }
public GlobalizationTest(BrowserFixture browserFixture, TServerFixture serverFixture, ITestOutputHelper output) : base(browserFixture, serverFixture, output) { }
public ComponentRenderingTest(BrowserFixture browserFixture, DevHostServerFixture <Program> serverFixture) : base(browserFixture, serverFixture) { Navigate("/", noReload: true); }
public AngularTemplateTest(BrowserFixture browserFixture, ITestOutputHelper output) : base(browserFixture, output) { }
public RazorComponentsTemplateTest(ProjectFactoryFixture projectFactory, BrowserFixture browserFixture, ITestOutputHelper output) : base(browserFixture, output) { ProjectFactory = projectFactory; }
public HostedInAspNetTest(BrowserFixture browserFixture, AspNetSiteServerFixture serverFixture) : base(browserFixture, serverFixture) { serverFixture.BuildWebHostMethod = HostedInAspNet.Server.Program.BuildWebHost; serverFixture.Environment = AspNetEnvironment.Development; }
public BlazorServerTemplateTest(ProjectFactoryFixture projectFactory, BrowserFixture browserFixture, ITestOutputHelper output) : base(browserFixture, output) { ProjectFactory = projectFactory; }
public SpaTemplateTestBase(BrowserFixture browserFixture, ITestOutputHelper output) : base(browserFixture, output) { }
public ServerInteropTest(BrowserFixture browserFixture, ToggleExecutionModeServerFixture <Program> serverFixture, ITestOutputHelper output) : base(browserFixture, serverFixture.WithServerExecution().WithAdditionalArguments(GetAdditionalArguments()), output) { }
private async Task BlazorWasmHostedTemplate_IndividualAuth_Works(bool useLocalDb) { // Additional arguments are needed. See: https://github.com/dotnet/aspnetcore/issues/24278 Environment.SetEnvironmentVariable("EnableDefaultScopedCssItems", "true"); var project = await ProjectFactory.GetOrCreateProject("blazorhostedindividual" + (useLocalDb ? "uld" : ""), Output); var createResult = await project.RunDotNetNewAsync("blazorwasm", args : new[] { "--hosted", "-au", "Individual", useLocalDb ? "-uld" : "" }); Assert.True(0 == createResult.ExitCode, ErrorMessages.GetFailedProcessMessage("create/restore", project, createResult)); var serverProject = GetSubProject(project, "Server", $"{project.ProjectName}.Server"); var serverProjectFileContents = ReadFile(serverProject.TemplateOutputDir, $"{serverProject.ProjectName}.csproj"); if (!useLocalDb) { Assert.Contains(".db", serverProjectFileContents); } var appSettings = ReadFile(serverProject.TemplateOutputDir, "appsettings.json"); var element = JsonSerializer.Deserialize <JsonElement>(appSettings); var clientsProperty = element.GetProperty("IdentityServer").EnumerateObject().Single().Value.EnumerateObject().Single(); var replacedSection = element.GetRawText().Replace(clientsProperty.Name, serverProject.ProjectName.Replace(".Server", ".Client")); var appSettingsPath = Path.Combine(serverProject.TemplateOutputDir, "appsettings.json"); File.WriteAllText(appSettingsPath, replacedSection); var publishResult = await serverProject.RunDotNetPublishAsync(); Assert.True(0 == publishResult.ExitCode, ErrorMessages.GetFailedProcessMessage("publish", serverProject, publishResult)); // Run dotnet build after publish. The reason is that one uses Config = Debug and the other uses Config = Release // The output from publish will go into bin/Release/netcoreappX.Y/publish and won't be affected by calling build // later, while the opposite is not true. var buildResult = await serverProject.RunDotNetBuildAsync(); Assert.True(0 == buildResult.ExitCode, ErrorMessages.GetFailedProcessMessage("build", serverProject, buildResult)); var migrationsResult = await serverProject.RunDotNetEfCreateMigrationAsync("blazorwasm"); Assert.True(0 == migrationsResult.ExitCode, ErrorMessages.GetFailedProcessMessage("run EF migrations", serverProject, migrationsResult)); serverProject.AssertEmptyMigration("blazorwasm"); if (useLocalDb) { var dbUpdateResult = await serverProject.RunDotNetEfUpdateDatabaseAsync(); Assert.True(0 == dbUpdateResult.ExitCode, ErrorMessages.GetFailedProcessMessage("update database", serverProject, dbUpdateResult)); } await BuildAndRunTest(project.ProjectName, serverProject, usesAuth : true); UpdatePublishedSettings(serverProject); if (BrowserFixture.IsHostAutomationSupported()) { using var aspNetProcess = serverProject.StartPublishedProjectAsync(); Assert.False( aspNetProcess.Process.HasExited, ErrorMessages.GetFailedProcessMessageOrEmpty("Run published project", serverProject, aspNetProcess.Process)); await aspNetProcess.AssertStatusCode("/", HttpStatusCode.OK, "text/html"); aspNetProcess.VisitInBrowser(Browser); TestBasicNavigation(project.ProjectName, usesAuth: true); } else { BrowserFixture.EnforceSupportedConfigurations(); } }
public RazorComponentsTemplateTest(BrowserFixture browserFixture, ITestOutputHelper output) : base(browserFixture, output) { }
public ServerAuthTest(BrowserFixture browserFixture, ToggleExecutionModeServerFixture <BasicTestApp.Program> serverFixture, ITestOutputHelper output) : base(browserFixture, serverFixture.WithServerExecution(), output, ExecutionMode.Server) { }
// Rather than using [Theory] to pass each of the different values for 'template', // it's important to distribute the SPA template tests over different test classes // so they can be run in parallel. Xunit doesn't parallelize within a test class. protected async Task SpaTemplateImplAsync( string key, string template, bool useLocalDb = false, bool usesAuth = false) { Project = await ProjectFactory.GetOrCreateProject(key, Output); using var createResult = await Project.RunDotNetNewAsync(template, auth : usesAuth? "Individual" : null, language : null, useLocalDb); Assert.True(0 == createResult.ExitCode, ErrorMessages.GetFailedProcessMessage("create/restore", Project, createResult)); // We shouldn't have to do the NPM restore in tests because it should happen // automatically at build time, but by doing it up front we can avoid having // multiple NPM installs run concurrently which otherwise causes errors when // tests run in parallel. var clientAppSubdirPath = Path.Combine(Project.TemplateOutputDir, "ClientApp"); ValidatePackageJson(clientAppSubdirPath); var projectFileContents = ReadFile(Project.TemplateOutputDir, $"{Project.ProjectName}.csproj"); if (usesAuth && !useLocalDb) { Assert.Contains(".db", projectFileContents); } using var npmRestoreResult = await Project.RestoreWithRetryAsync(Output, clientAppSubdirPath); Assert.True(0 == npmRestoreResult.ExitCode, ErrorMessages.GetFailedProcessMessage("npm restore", Project, npmRestoreResult)); using var lintResult = await ProcessEx.RunViaShellAsync(Output, clientAppSubdirPath, "npm run lint"); Assert.True(0 == lintResult.ExitCode, ErrorMessages.GetFailedProcessMessage("npm run lint", Project, lintResult)); if (template == "react" || template == "reactredux") { using var testResult = await ProcessEx.RunViaShellAsync(Output, clientAppSubdirPath, "npm run test"); Assert.True(0 == testResult.ExitCode, ErrorMessages.GetFailedProcessMessage("npm run test", Project, testResult)); } using var publishResult = await Project.RunDotNetPublishAsync(); Assert.True(0 == publishResult.ExitCode, ErrorMessages.GetFailedProcessMessage("publish", Project, publishResult)); // Run dotnet build after publish. The reason is that one uses Config = Debug and the other uses Config = Release // The output from publish will go into bin/Release/netcoreapp3.0/publish and won't be affected by calling build // later, while the opposite is not true. using var buildResult = await Project.RunDotNetBuildAsync(); Assert.True(0 == buildResult.ExitCode, ErrorMessages.GetFailedProcessMessage("build", Project, buildResult)); // localdb is not installed on the CI machines, so skip it. var shouldVisitFetchData = !(useLocalDb && Project.IsCIEnvironment); if (usesAuth) { using var migrationsResult = await Project.RunDotNetEfCreateMigrationAsync(template); Assert.True(0 == migrationsResult.ExitCode, ErrorMessages.GetFailedProcessMessage("run EF migrations", Project, migrationsResult)); Project.AssertEmptyMigration(template); if (shouldVisitFetchData) { using var dbUpdateResult = await Project.RunDotNetEfUpdateDatabaseAsync(); Assert.True(0 == dbUpdateResult.ExitCode, ErrorMessages.GetFailedProcessMessage("update database", Project, dbUpdateResult)); } } using (var aspNetProcess = Project.StartBuiltProjectAsync()) { Assert.False( aspNetProcess.Process.HasExited, ErrorMessages.GetFailedProcessMessageOrEmpty("Run built project", Project, aspNetProcess.Process)); await WarmUpServer(aspNetProcess); await aspNetProcess.AssertStatusCode("/", HttpStatusCode.OK, "text/html"); if (BrowserFixture.IsHostAutomationSupported()) { var(browser, logs) = await BrowserFixture.GetOrCreateBrowserAsync(Output, $"{Project.ProjectName}.build"); aspNetProcess.VisitInBrowser(browser); TestBasicNavigation(visitFetchData: shouldVisitFetchData, usesAuth, browser, logs); } else { BrowserFixture.EnforceSupportedConfigurations(); } } if (usesAuth) { UpdatePublishedSettings(); } using (var aspNetProcess = Project.StartPublishedProjectAsync()) { Assert.False( aspNetProcess.Process.HasExited, ErrorMessages.GetFailedProcessMessageOrEmpty("Run published project", Project, aspNetProcess.Process)); await WarmUpServer(aspNetProcess); await aspNetProcess.AssertStatusCode("/", HttpStatusCode.OK, "text/html"); if (BrowserFixture.IsHostAutomationSupported()) { var(browser, logs) = await BrowserFixture.GetOrCreateBrowserAsync(Output, $"{Project.ProjectName}.publish"); aspNetProcess.VisitInBrowser(browser); TestBasicNavigation(visitFetchData: shouldVisitFetchData, usesAuth, browser, logs); } else { BrowserFixture.EnforceSupportedConfigurations(); } } }
public RoutingTest(BrowserFixture browserFixture, DevHostServerFixture <Program> serverFixture) : base(browserFixture, serverFixture) { _server = serverFixture; Navigate(ServerPathBase, noReload: true); }