Quality of life improvements

This commit is contained in:
Pranav K 2020-05-26 18:15:24 -07:00
parent ae2017f31e
commit 81007200b5
No known key found for this signature in database
GPG Key ID: F748807460A27E91
4 changed files with 46 additions and 8 deletions

View File

@ -60,6 +60,7 @@ namespace Microsoft.AspNetCore.Components.WebAssembly.Build
// Suppresses the 'Welcome to .NET Core!' output that times out tests and causes locked file issues.
// When using dotnet we're not guarunteed to run in an environment where the dotnet.exe has had its first run experience already invoked.
processStartInfo.EnvironmentVariables["DOTNET_SKIP_FIRST_TIME_EXPERIENCE"] = "true";
processStartInfo.EnvironmentVariables["_BlazorWebAssemblyBuildTest_BrotliCompressionLevel_NoCompression"] = "1";
var processResult = await RunProcessCoreAsync(processStartInfo, timeout);

View File

@ -54,7 +54,13 @@ namespace Microsoft.AspNetCore.Components.WebAssembly.Build.BrotliCompression
using var sourceStream = File.OpenRead(inputPath);
using var fileStream = new FileStream(targetCompressionPath, FileMode.Create);
using var stream = new BrotliStream(fileStream, CompressionLevel.Optimal);
var compressionLevel = CompressionLevel.Optimal;
if (Environment.GetEnvironmentVariable("_BlazorWebAssemblyBuildTest_BrotliCompressionLevel_NoCompression") == "1")
{
compressionLevel = CompressionLevel.NoCompression;
}
using var stream = new BrotliStream(fileStream, compressionLevel);
sourceStream.CopyTo(stream);
}

View File

@ -67,7 +67,7 @@ namespace Microsoft.AspNetCore.E2ETesting
var browsers = await Task.WhenAll(_browsers.Values);
foreach (var (browser, log) in browsers)
{
browser.Dispose();
browser?.Dispose();
}
await DeleteBrowserUserProfileDirectoriesAsync();
@ -163,6 +163,7 @@ namespace Microsoft.AspNetCore.E2ETesting
var attempt = 0;
const int maxAttempts = 3;
Exception innerException;
do
{
try
@ -189,13 +190,14 @@ namespace Microsoft.AspNetCore.E2ETesting
catch (Exception ex)
{
output.WriteLine($"Error initializing RemoteWebDriver: {ex.Message}");
innerException = ex;
}
attempt++;
} while (attempt < maxAttempts);
throw new InvalidOperationException("Couldn't create a Selenium remote driver client. The server is irresponsive");
throw new InvalidOperationException("Couldn't create a Selenium remote driver client. The server is irresponsive", innerException);
}
private string UserProfileDirectory(string context)

View File

@ -1,6 +1,8 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using System.Runtime.ExceptionServices;
using System.Threading;
using System.Threading.Tasks;
using OpenQA.Selenium;
@ -16,13 +18,32 @@ namespace Microsoft.AspNetCore.E2ETesting
private static readonly AsyncLocal<ILogs> _logs = new AsyncLocal<ILogs>();
private static readonly AsyncLocal<ITestOutputHelper> _output = new AsyncLocal<ITestOutputHelper>();
private ExceptionDispatchInfo _exceptionDispatchInfo;
private IWebDriver _browser;
public BrowserTestBase(BrowserFixture browserFixture, ITestOutputHelper output)
{
BrowserFixture = browserFixture;
_output.Value = output;
}
public IWebDriver Browser { get; set; }
public IWebDriver Browser
{
get
{
if (_exceptionDispatchInfo != null)
{
_exceptionDispatchInfo.Throw();
throw _exceptionDispatchInfo.SourceException;
}
return _browser;
}
set
{
_browser = value;
}
}
public static IWebDriver BrowserAccessor => _asyncBrowser.Value;
@ -55,11 +76,19 @@ namespace Microsoft.AspNetCore.E2ETesting
protected async Task InitializeBrowser(string isolationContext)
{
var (browser, logs) = await BrowserFixture.GetOrCreateBrowserAsync(Output, isolationContext);
_asyncBrowser.Value = browser;
_logs.Value = logs;
try
{
var (browser, logs) = await BrowserFixture.GetOrCreateBrowserAsync(Output, isolationContext);
_asyncBrowser.Value = browser;
_logs.Value = logs;
Browser = browser;
Browser = browser;
}
catch (Exception ex)
{
_exceptionDispatchInfo = ExceptionDispatchInfo.Capture(ex);
throw;
}
}
}
}