E2E infrastructure cleanup (#9163)

This commit is contained in:
Javier Calvarro Nelson 2019-04-10 17:19:52 +02:00 committed by GitHub
parent 3b32f43453
commit 6f13e7b77a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 7 additions and 6 deletions

View File

@ -3,21 +3,20 @@
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Threading.Tasks;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Remote;
using Xunit;
using Xunit.Abstractions;
namespace Microsoft.AspNetCore.E2ETesting
{
public class BrowserFixture : IDisposable
public class BrowserFixture : IAsyncLifetime
{
private ConcurrentDictionary<string, Task<(IWebDriver browser, ILogs log)>> _browsers = new ConcurrentDictionary<string, Task<(IWebDriver, ILogs)>>();
private List<IWebDriver> _browsersToDispose = new List<IWebDriver>();
public BrowserFixture(IMessageSink diagnosticsMessageSink)
{
@ -52,9 +51,10 @@ namespace Microsoft.AspNetCore.E2ETesting
}
}
public void Dispose()
public async Task DisposeAsync()
{
foreach (var browser in _browsersToDispose)
var browsers = await Task.WhenAll(_browsers.Values);
foreach (var (browser, log) in browsers)
{
browser.Dispose();
}
@ -71,6 +71,8 @@ namespace Microsoft.AspNetCore.E2ETesting
return _browsers.GetOrAdd(isolationContext, CreateBrowserAsync, output);
}
public Task InitializeAsync() => Task.CompletedTask;
private async Task<(IWebDriver browser, ILogs log)> CreateBrowserAsync(string context, ITestOutputHelper output)
{
var opts = new ChromeOptions();
@ -115,7 +117,6 @@ namespace Microsoft.AspNetCore.E2ETesting
driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(1);
var logs = new RemoteLogs(driver);
_browsersToDispose.Add(driver);
return (driver, logs);
}
catch