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;
using System.Collections.Concurrent; using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Reflection; using System.Reflection;
using System.Threading.Tasks; using System.Threading.Tasks;
using OpenQA.Selenium; using OpenQA.Selenium;
using OpenQA.Selenium.Chrome; using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Remote; using OpenQA.Selenium.Remote;
using Xunit;
using Xunit.Abstractions; using Xunit.Abstractions;
namespace Microsoft.AspNetCore.E2ETesting 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 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) 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(); browser.Dispose();
} }
@ -71,6 +71,8 @@ namespace Microsoft.AspNetCore.E2ETesting
return _browsers.GetOrAdd(isolationContext, CreateBrowserAsync, output); return _browsers.GetOrAdd(isolationContext, CreateBrowserAsync, output);
} }
public Task InitializeAsync() => Task.CompletedTask;
private async Task<(IWebDriver browser, ILogs log)> CreateBrowserAsync(string context, ITestOutputHelper output) private async Task<(IWebDriver browser, ILogs log)> CreateBrowserAsync(string context, ITestOutputHelper output)
{ {
var opts = new ChromeOptions(); var opts = new ChromeOptions();
@ -115,7 +117,6 @@ namespace Microsoft.AspNetCore.E2ETesting
driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(1); driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(1);
var logs = new RemoteLogs(driver); var logs = new RemoteLogs(driver);
_browsersToDispose.Add(driver);
return (driver, logs); return (driver, logs);
} }
catch catch