Default to headless, add Firefox, update Chrome

This commit is contained in:
Dennis Reimann 2021-01-25 15:01:53 +01:00
parent 4638f781f9
commit 7926b689fd
No known key found for this signature in database
GPG key ID: 5009E1797F03F8D0
2 changed files with 37 additions and 16 deletions

View file

@ -21,9 +21,10 @@
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.6.1" />
<PackageReference Include="Newtonsoft.Json.Schema" Version="3.0.13" />
<PackageReference Include="Selenium.Firefox.WebDriver" Version="0.27.0" />
<PackageReference Include="Selenium.Support" Version="3.141.0" />
<PackageReference Include="Selenium.WebDriver" Version="3.141.0" />
<PackageReference Include="Selenium.WebDriver.ChromeDriver" Version="87.0.4280.8800" />
<PackageReference Include="Selenium.WebDriver.ChromeDriver" Version="88.0.4324.9600" />
<PackageReference Include="xunit" Version="2.4.1" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.2">
<PrivateAssets>all</PrivateAssets>

View file

@ -16,6 +16,7 @@ using BTCPayServer.Views.Wallets;
using NBitcoin;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Firefox;
using Xunit;
namespace BTCPayServer.Tests
@ -34,27 +35,46 @@ namespace BTCPayServer.Tests
public async Task StartAsync()
{
await Server.StartAsync();
ChromeOptions options = new ChromeOptions();
if (Server.PayTester.InContainer)
{
// this must be first option https://stackoverflow.com/questions/53073411/selenium-webdriverexceptionchrome-failed-to-start-crashed-as-google-chrome-is#comment102570662_53073789
options.AddArgument("no-sandbox");
}
var isDebug = !Server.PayTester.InContainer;
if (!isDebug)
var runHeadless = true; // Set to false to view in browser
var useFirefox = !runHeadless;
var windowSize = (Width: 1200, Height: 1000);
if (useFirefox)
{
options.AddArguments("headless"); // Comment to view browser
options.AddArguments("window-size=1200x1000"); // Comment to view browser
var options = new FirefoxOptions();
if (runHeadless)
{
options.AddArguments("-headless");
}
options.AddArguments($"--window-size {windowSize.Width},{windowSize.Height}");
Driver = new FirefoxDriver(options);
}
options.AddArgument("shm-size=2g");
Driver = new ChromeDriver(Server.PayTester.InContainer ? "/usr/bin" : Directory.GetCurrentDirectory(), options);
if (isDebug)
else
{
//when running locally, depending on your resolution, the website may go into mobile responsive mode and screw with navigation of tests
var options = new ChromeOptions();
if (Server.PayTester.InContainer)
{
// this must be first option https://stackoverflow.com/questions/53073411/selenium-webdriverexceptionchrome-failed-to-start-crashed-as-google-chrome-is#comment102570662_53073789
options.AddArgument("no-sandbox");
}
if (runHeadless)
{
options.AddArguments("-headless");
}
options.AddArguments($"window-size={windowSize.Width}x{windowSize.Height}");
options.AddArgument("shm-size=2g");
Driver = new ChromeDriver(Server.PayTester.InContainer ? "/usr/bin" : Directory.GetCurrentDirectory(), options);
}
if (!runHeadless)
{
// when running in the browser, depending on your resolution, the website
// may go into mobile responsive mode and screw with navigation of tests
Driver.Manage().Window.Maximize();
}
Logs.Tester.LogInformation("Selenium: Using chrome driver");
Logs.Tester.LogInformation("Selenium: Browsing to " + Server.PayTester.ServerUri);
Logs.Tester.LogInformation($"Selenium: Using {Driver.GetType()}");
Logs.Tester.LogInformation($"Selenium: Browsing to {Server.PayTester.ServerUri}");
Logs.Tester.LogInformation($"Selenium: Resolution {Driver.Manage().Window.Size}");
Driver.Manage().Timeouts().ImplicitWait = ImplicitWait;
GoToRegister();